{"id":1439,"date":"2022-05-20T09:40:33","date_gmt":"2022-05-20T09:40:33","guid":{"rendered":"https:\/\/robotica-facil-con-ros2.es\/?p=1439"},"modified":"2022-07-28T17:01:37","modified_gmt":"2022-07-28T17:01:37","slug":"todo-lo-que-necesitas-saber-de-los-archivos-urdf","status":"publish","type":"post","link":"https:\/\/robotica-facil-con-ros2.es\/?p=1439","title":{"rendered":"Todo lo que necesitas saber de los archivos URDF"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"1439\" class=\"elementor elementor-1439\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4232d04 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4232d04\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6880fea\" data-id=\"6880fea\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f814ef5 elementor-widget elementor-widget-text-editor\" data-id=\"f814ef5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h3>\u00bfQu\u00e9 son y para qu\u00e9 sirven?<\/h3><p>El formato URDF (Unified Robot Description Format) es una especificaci\u00f3n XML que permite describir c\u00f3mo es un robot, de modo que mediante elementos XML se pueden definir las siguientes caracter\u00edsticas del mismo:<\/p><p>\u00a0<\/p><ul><li style=\"list-style-type: none;\"><ul><li style=\"list-style-type: none;\"><ul><li>El aspecto visual.<\/li><li>Su cinem\u00e1tica y din\u00e1mica.<\/li><li>El modelo de colisi\u00f3n.<\/li><\/ul><\/li><\/ul><\/li><\/ul><div>Una vez que tenemos el modelo URDF de nuestro robot podremos usarlo para realizar simulaciones, por ejemplo con GAZEBO o RVIZ2.<\/div>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f39aa3c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f39aa3c\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-a8e335f\" data-id=\"a8e335f\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6eece46 elementor-widget elementor-widget-text-editor\" data-id=\"6eece46\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h3>Descomponiendo nuestro robot en enlaces (links) y articulaciones (joints)<\/h3><div><p>Cada una de las partes (s\u00f3lidos r\u00edgidos) que componen el robot se denomina eslab\u00f3n o <b>link<\/b>. La forma en que se unen dos links entre s\u00ed constituye una articulaci\u00f3n o <b>joint<\/b>.<\/p><\/div><div><p>En funci\u00f3n del tipo de movimiento que permita la uni\u00f3n entre dos partes se tienen diferentes tipos de articulaciones. Las permitidas por la especificaci\u00f3n URDF son las siguientes:<\/p><p>\u00a0<\/p><ul><li style=\"list-style-type: none;\"><ul><li style=\"list-style-type: none;\"><ul><li><b>revolute<\/b>: permite el giro sobre un eje y tiene un rango limitado especificado por los l\u00edmites superior e inferior.<span id=\"line-33\" class=\"anchor\"><\/span><\/li><li><b>continuous<\/b>: permite el giro alrededor de un eje y no tiene l\u00edmites superior e inferior.<span id=\"line-34\" class=\"anchor\"><\/span><\/li><li><b>prismatic<\/b>: permite el deslizamiento a lo largo de un eje y tiene un rango limitado especificado por los l\u00edmites superior e inferior.<span id=\"line-35\" class=\"anchor\"><\/span><\/li><li><b>fixed<\/b>: no permite ning\u00fan tipo de movimiento por lo que realmente no es una articulaci\u00f3n, pero es \u00fatil cuando interesa asociar al enlace un sistema de referencia en un punto concreto, por ejemplo para el caso de sensores o c\u00e1maras.<span id=\"line-36\" class=\"anchor\"><\/span><\/li><li><b>floating<\/b>: permite el movimiento en los 6 grados de libertad.<span id=\"line-37\" class=\"anchor\"><\/span><\/li><li><b>planar<\/b>: permite el movimiento en un plano perpendicular al eje.<\/li><\/ul><\/li><\/ul><\/li><\/ul><p>Dados dos eslabones unidos por una articulaci\u00f3n, el m\u00e1s cercano a la raiz de la estructura (es decir a la base o al ch\u00e1sis del robot) recibe el nombre de <strong>padre<\/strong> y el otro se denomina\u00a0<strong>hijo<\/strong>.<\/p><\/div>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-0b2ea55 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"0b2ea55\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e08bfa3\" data-id=\"e08bfa3\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c020696 elementor-widget elementor-widget-text-editor\" data-id=\"c020696\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>La siguiente foto corresponde al robot manipulador modelo IRB120 del fabricante ABB. Como puede observarse en este caso nuestro robot estar\u00eda compuesto por 6 eslabones (links),\u00a0 unidos mediante 6 articulaciones (joints) de giro.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-68c6016 elementor-widget elementor-widget-image\" data-id=\"68c6016\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/robotica-facil-con-ros2.es\/wp-content\/uploads\/2022\/05\/abb-irb120-degree-of-freedom-1.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"abb irb120 (degree of freedom)\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjE2NywidXJsIjoiaHR0cHM6XC9cL3JvYm90aWNhLWZhY2lsLWNvbi1yb3MyLmVzXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wNVwvYWJiLWlyYjEyMC1kZWdyZWUtb2YtZnJlZWRvbS0xLnBuZyJ9\">\n\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"600\" src=\"https:\/\/robotica-facil-con-ros2.es\/wp-content\/uploads\/2022\/05\/abb-irb120-degree-of-freedom-1.png\" class=\"attachment-full size-full wp-image-2167\" alt=\"\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\"><\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-61b7b8c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"61b7b8c\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-edcb32c\" data-id=\"edcb32c\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-61674e1 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"61674e1\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-40f5ff5\" data-id=\"40f5ff5\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6926949 elementor-widget elementor-widget-text-editor\" data-id=\"6926949\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h3>Definiendo la cadena cinem\u00e1tica<\/h3><p>Dado que un robot puede considerarse como una cadena cinem\u00e1tica compuesta por objetos r\u00edgidos o eslabones (links) unidos entre s\u00ed mediante articulaciones (joints)\u00a0 la posici\u00f3n espacial de cada una de sus partes se puede describir respecto de un sistema de referencia fijo situado en la base del mismo.\u00a0<\/p><p><span style=\"font-style: inherit; font-weight: inherit; background-color: var(--ast-global-color-4); color: var(--ast-global-color-3);\">Para ello en cada eslab\u00f3n es necesario establecer\u00a0 un <\/span><span style=\"font-style: inherit; background-color: var(--ast-global-color-4); color: var(--ast-global-color-3);\"><b>sistema de referencia L<\/b><\/span><span style=\"font-style: inherit; font-weight: inherit; background-color: var(--ast-global-color-4); color: var(--ast-global-color-3);\"> que ubicaremos en la articulaci\u00f3n que lo une al eslab\u00f3n padre, de modo que uno de sus ejes coincida, en funci\u00f3n del tipo de articulaci\u00f3n, con el eje de giro (revolute, continuous) o con la direcci\u00f3n de desplazamiento (prismatic).<\/span><\/p><p>Una vez definidos todos los sistemas de referencia se puede resolver el problema de la cinem\u00e1tica directa para obtener la posici\u00f3n y orientaci\u00f3n en el espacio del extremo del robot en funci\u00f3n de los valores de las variables (\u00e1ngulos y desplazamientos) asociadas a cada uno de los grados de libertad de las articulaciones.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9660ffe elementor-widget elementor-widget-text-editor\" data-id=\"9660ffe\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>En la siguiente figura se muestran dos enlaces unidos por una articulaci\u00f3n de giro donde se han representados los sistemas de referencia propios de cada uno (en naranja) y el sistema de referencia asociado al enlace hijo ubicado en la articulaci\u00f3n con origen en O2.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3ba4b9c elementor-widget elementor-widget-image\" data-id=\"3ba4b9c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/robotica-facil-con-ros2.es\/wp-content\/uploads\/2022\/05\/urdf-frames3.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"urdf-frames3\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjU4MywidXJsIjoiaHR0cHM6XC9cL3JvYm90aWNhLWZhY2lsLWNvbi1yb3MyLmVzXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wNVwvdXJkZi1mcmFtZXMzLnBuZyJ9\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"741\" height=\"814\" src=\"https:\/\/robotica-facil-con-ros2.es\/wp-content\/uploads\/2022\/05\/urdf-frames3.png\" class=\"attachment-full size-full wp-image-2583\" alt=\"\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1f76baf elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1f76baf\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-52ca120\" data-id=\"52ca120\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9738d1b elementor-widget elementor-widget-text-editor\" data-id=\"9738d1b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h3>Contenido de un archivo URDF<\/h3><p>En este apartado vamos a ver como es la estructura b\u00e1sica de un archivo URDF, as\u00ed como los diferentes elementos y atributos que nos permiten definir el modelo de un robot.\u00a0<\/p><p>\u00a0<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-8dea19d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"8dea19d\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e300d80\" data-id=\"e300d80\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f0f3793 elementor-widget elementor-widget-text-editor\" data-id=\"f0f3793\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h4>Estructura b\u00e1sica<\/h4><p>Dado que un archivo URDF contiene c\u00f3digo XML, lo primero que debe aparecer es el encabezado que define este tipo de archivos y a continuaci\u00f3n el elemento <i>&lt;robot&gt;<\/i> el cual encapsula al resto de elementos, que fundamentalmente ser\u00e1n cada una de las partes del robots (links) y las articulaciones que las unen (joints). Es obligatorio que el elemento <i>&lt;robot&gt;<\/i> contenga el atributo <i>name<\/i>, al que asignaremos el nombre que queramos darle a nuestro robot.<\/p><p>\u00a0<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-de7cab9 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"de7cab9\" data-element_type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-de7cab9\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-xonokai\"\n            data-dark-theme=\"mdp-theme-xonokai\"\n        >\n            \n                <pre class=\"language-markup\"data-previewers=\"\"><code>&lt;?xml version=&quot;1.0&quot;?&gt;\n\n&lt;\/robot&gt;\n&lt;robot name=&quot;mi_robot&quot;&gt;\n  &lt;link&gt; ... &lt;\/link&gt;\n  &lt;link&gt; ... &lt;\/link&gt;\n  &lt;link&gt; ... &lt;\/link&gt;\n\n  &lt;joint&gt;  ....  &lt;\/joint&gt;\n  &lt;joint&gt;  ....  &lt;\/joint&gt;\n  &lt;joint&gt;  ....  &lt;\/joint&gt;\n&lt;\/robot&gt;<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_de7cab9 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/robotica-facil-con-ros2.es\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_de7cab9();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_de7cab9 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e5a19bd elementor-widget elementor-widget-text-editor\" data-id=\"e5a19bd\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p style=\"text-align: center;\">Estructura b\u00e1sica de un archivo URDF<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-bf02e8b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"bf02e8b\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6f848c0\" data-id=\"6f848c0\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-106e058 elementor-widget elementor-widget-text-editor\" data-id=\"106e058\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h4>Definiendo cada uno de los enlaces. El elemento &lt;link&gt;<\/h4><div>A continuaci\u00f3n se muestra un ejemplo de c\u00f3digo simple de definici\u00f3n de un enlace con forma de cilindro.<\/div>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7b76f07 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"7b76f07\" data-element_type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-7b76f07\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-xonokai\"\n            data-dark-theme=\"mdp-theme-xonokai\"\n        >\n            \n                <pre class=\"language-markup\"data-previewers=\"\"><code> &lt;link name=&quot;my_link&quot;&gt;\n   &lt;inertial&gt;\n     &lt;origin xyz=&quot;0 0 0.5&quot; rpy=&quot;0 0 0&quot;\/&gt;\n     &lt;mass value=&quot;1&quot;\/&gt;\n     &lt;inertia ixx=&quot;100&quot;  ixy=&quot;0&quot;  ixz=&quot;0&quot; iyy=&quot;100&quot; iyz=&quot;0&quot; izz=&quot;100&quot; \/&gt;\n   &lt;\/inertial&gt;\n\n   &lt;visual&gt;\n     &lt;origin xyz=&quot;0 0 0&quot; rpy=&quot;0 0 0&quot; \/&gt;\n     &lt;geometry&gt;\n       &lt;cylinder radius=&quot;1&quot; length=&quot;0.5&quot;\/&gt;\n     &lt;\/geometry&gt;\n     &lt;material name=&quot;Cyan&quot;&gt;\n       &lt;color rgba=&quot;0 1.0 1.0 1.0&quot;\/&gt;\n     &lt;\/material&gt;\n   &lt;\/visual&gt;\n\n   &lt;collision&gt;\n     &lt;origin xyz=&quot;0 0 0&quot; rpy=&quot;0 0 0&quot;\/&gt;\n     &lt;geometry&gt;\n       &lt;cylinder radius=&quot;1&quot; length=&quot;0.5&quot;\/&gt;\n     &lt;\/geometry&gt;\n   &lt;\/collision&gt;\n &lt;\/link&gt;<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_7b76f07 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/robotica-facil-con-ros2.es\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_7b76f07();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_7b76f07 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-128be66 elementor-widget elementor-widget-text-editor\" data-id=\"128be66\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p style=\"text-align: center;\">Ejemplo de c\u00f3digo de definici\u00f3n de un enlace (link)<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3129b22 elementor-widget elementor-widget-text-editor\" data-id=\"3129b22\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>El elemento <strong>link<\/strong> permite definir como es cada uno de los enlaces de nuestro robot, estableciendo tanto su apariencia visual como sus propiedades f\u00edsicas. Para ello admite a su vez los siguientes elementos, todos ellos opcionales:<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7163e92 elementor-widget elementor-widget-text-editor\" data-id=\"7163e92\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h5 style=\"font-style: normal; padding-left: 40px;\">Asignando las propiedades f\u00edsicas. El elemento &lt;inertial&gt;<\/h5><p style=\"font-size: 15px; font-style: normal; font-weight: 400; padding-left: 40px;\">Permite indicar la masa del enlace y sus momentos de inercia, que se calculan en referencia a un sistema de referencia C ubicado en el centro de gravedad.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e32a208 elementor-widget elementor-widget-text-editor\" data-id=\"e32a208\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h5 style=\"font-style: normal; padding-left: 40px;\">Estableciendo la representaci\u00f3n visual. El elemento &lt;visual&gt;<\/h5><p style=\"font-size: 15px; font-style: normal; font-weight: 400; padding-left: 40px;\">Proporciona la informaci\u00f3n relativa a la representaci\u00f3n visual del enlace, es decir, su posici\u00f3n, orientaci\u00f3n, forma y aspecto.\u00a0<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-785a4dc elementor-widget elementor-widget-text-editor\" data-id=\"785a4dc\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p style=\"padding-left: 40px;\">Para establecer la posici\u00f3n y orientaci\u00f3n es necesario indicar la pose del sistema de referencia V,\u00a0que para las figuras b\u00e1sicas (cilindros, cajas y esferas) que admite la especificaci\u00f3n URDF se encuentra en el centro geom\u00e9trico de las mismas, y para formas m\u00e1s complejas (mallas) se establece durante su dise\u00f1o cuando se emplea un software de modelado como Fusion360 o Solidworks.\u00a0<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f9a5028 elementor-widget elementor-widget-text-editor\" data-id=\"f9a5028\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p style=\"padding-left: 40px;\">Pueden existir varias instancias de <strong>visual<\/strong> para un mismo enlace, en cuyo caso la uni\u00f3n de la geometr\u00eda que definen constituir\u00e1 su representaci\u00f3n visual.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2ca0c7a elementor-widget elementor-widget-text-editor\" data-id=\"2ca0c7a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h5 style=\"font-style: normal; padding-left: 40px;\">Definiendo el modelo de colisi\u00f3n. El elemento &lt;collision&gt;<\/h5><p style=\"font-size: 15px; font-style: normal; font-weight: 400; padding-left: 40px;\">Define c\u00f3mo es la forma que se tendr\u00e1 en cuenta para calcular las posibles colisiones del enlace con otros objetos.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a1fe5ef elementor-widget elementor-widget-text-editor\" data-id=\"a1fe5ef\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p style=\"padding-left: 40px;\">No tiene por qu\u00e9 coincidir con la geometr\u00eda que define el aspecto visual del enlace, ya que a menudo se utilizan modelos de colisi\u00f3n m\u00e1s simples para reducir el tiempo de c\u00e1lculo.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-682f2c5 elementor-widget elementor-widget-text-editor\" data-id=\"682f2c5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p style=\"padding-left: 40px;\">Pueden existir varias instancias de <strong>collision<\/strong> para un mismo enlace, en cuyo caso la uni\u00f3n de la geometr\u00eda que definen constituir\u00e1 la representaci\u00f3n de colisi\u00f3n del enlace.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-564b5b2 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"564b5b2\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1f1e7be\" data-id=\"1f1e7be\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-73fa00f elementor-widget elementor-widget-text-editor\" data-id=\"73fa00f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h5 style=\"font-style: normal; padding-left: 40px;\">Resumen de elementos y atributos admitidos<\/h5><p style=\"font-size: 15px; font-style: normal; font-weight: 400; padding-left: 40px;\">En el siguiente cuadro se resumen todos los elementos y atributos que podemos usar para definir los enlaces de nuestro robot.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3129694 elementor-widget elementor-widget-text-editor\" data-id=\"3129694\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><span style=\"color: #ffffff;\">ELEMENTOS Y ATRIBUTOS ADMITIDOS POR &lt;LINK&gt;<\/span><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-bbdcafb elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"bbdcafb\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4144d9f\" data-id=\"4144d9f\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7a3e530 elementor-widget elementor-widget-text-editor\" data-id=\"7a3e530\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p class=\"line891\" style=\"padding-left: 40px;\"><span style=\"color: #f1505d;\"><strong>&lt;inertial&gt;<\/strong><\/span><em> (opcional: por defecto masa e inercia cero)<\/em><span id=\"line-46\" class=\"anchor\"><\/span><\/p><p class=\"line891\" style=\"padding-left: 80px;\"><span style=\"color: #2084a1;\"><strong>&lt;origin&gt;<\/strong><\/span> <em>(opcional)<\/em><\/p><p class=\"line891\" style=\"padding-left: 80px;\"><span style=\"font-style: inherit; font-weight: inherit; color: var(--ast-global-color-3);\">Indica la posici\u00f3n y la orientaci\u00f3n del sistema de referencia C ubicado en del centro de gravedad del enlace, en relaci\u00f3n al sistema de referencia L ubicado en la articulaci\u00f3n con el enlace padre.\u00a0<\/span><\/p><p class=\"line891\" style=\"padding-left: 120px;\"><strong style=\"font-style: inherit; color: var(--ast-global-color-3);\">xyz\u00a0<\/strong><em style=\"font-weight: inherit; color: var(--ast-global-color-3);\">(opcional: por defecto es vector cero)<\/em><\/p><p class=\"line891\" style=\"padding-left: 120px;\"><span style=\"font-style: inherit; font-weight: inherit; color: var(--ast-global-color-3);\">Representa el vector de posici\u00f3n del origen Co del sistema de referencia C en metros.<\/span><\/p><p class=\"line891\" style=\"padding-left: 120px;\"><strong style=\"font-style: inherit; color: var(--ast-global-color-3);\">rpy\u00a0<\/strong><em style=\"font-weight: inherit; color: var(--ast-global-color-3);\">(opcional: el valor predeterminado es identidad si no se especifica)<\/em><\/p><p class=\"line891\" style=\"padding-left: 120px;\"><span style=\"font-style: inherit; font-weight: inherit; color: var(--ast-global-color-3);\">Representa la orientaci\u00f3n de los vectores unitarios <strong>Cx, Cy, Cz <\/strong>del sistema de referencia C <\/span><span style=\"font-style: inherit; font-weight: inherit; color: var(--ast-global-color-3);\">respecto del sistema de referencia L ubicado en la articulaci\u00f3n, como una secuencia de rotaciones de Euler (rpy) en radianes.\u00a0<\/span><\/p><p class=\"line891\" style=\"padding-left: 80px;\"><span style=\"font-style: inherit; font-weight: inherit; color: var(--ast-global-color-3);\"><span style=\"color: #2084a1;\"><strong>&lt;mass&gt;<\/strong><\/span> <em>(requerido)<\/em><\/span><\/p><p class=\"line891\" style=\"padding-left: 80px;\"><span style=\"font-style: inherit; font-weight: inherit; color: var(--ast-global-color-3);\">Establece la masa del enlace.<\/span><\/p><p class=\"line862\" style=\"padding-left: 120px;\"><strong>value <\/strong><\/p><p class=\"line862\" style=\"padding-left: 120px;\">Valor de la masa.<\/p><p class=\"line862\" style=\"padding-left: 80px;\"><span style=\"color: #2084a1;\"><strong>&lt;inertia&gt;<\/strong><\/span> <em>(requerido)<\/em><\/p><p class=\"line862\" style=\"padding-left: 80px;\">Establece los momentos de inercia de este eslab\u00f3n <strong>ixx, iyy, izz<\/strong>\u00a0y los productos de inercia\u00a0<strong>ixy, ixz, iyz<\/strong> sobre Co (el centro de masa del eslab\u00f3n) para los vectores unitarios <strong>Cx, Cy, Cz<\/strong> del sistema de referencia ubicado en el centro de masa C. Los atributos <strong>ixx, ixy, ixz, iyy, iyz, izz<\/strong> para algunas formas primitivas se pueden obtener <a class=\"https\" href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_moments_of_inertia#List_of_3D_inertia_tensors\">aqu\u00ed<\/a> . URDF asume una convenci\u00f3n de producto de inercia negativa (para m\u00e1s informaci\u00f3n, consulte <a class=\"https\" href=\"https:\/\/www.mathworks.com\/help\/releases\/R2021b\/physmod\/sm\/ug\/specify-custom-inertia.html#mw_b043ec69-835b-4ca9-8769-af2e6f1b190c\">estos documentos de MathWorks <\/a>para trabajar con herramientas CAD). La forma m\u00e1s sencilla de evitar problemas de compatibilidad asociados con la convenci\u00f3n de signos negativos para el producto de inercia es alinear\u00a0<strong>Cx, Cy, Cz<\/strong>\u00a0con las direcciones principales de inercia para que todos los productos de inercia sean cero.<span id=\"line-57\" class=\"anchor\"><\/span><\/p><p>\u00a0<\/p><p>\u00a0<\/p><p class=\"line891\" style=\"padding-left: 40px;\"><span style=\"color: #f1505d;\"><strong>&lt;visual&gt;<\/strong><\/span><em> (opcional)<\/em><span id=\"line-58\" class=\"anchor\"><\/span><\/p><p style=\"padding-left: 40px;\">Recoge las propiedades visuales del enlace. Este elemento permite especificar la forma del enlace (caja, cilindro, esfera o malla), su posici\u00f3n y orientaci\u00f3n, el color y la textura.\u00a0<span id=\"line-60\" class=\"anchor\"><\/span><\/p><p class=\"line891\" style=\"padding-left: 80px;\"><strong>nombre\u00a0<\/strong><em>(opcional)<\/em><span id=\"line-61\" class=\"anchor\"><\/span><\/p><p style=\"padding-left: 80px;\">Especifica un nombre para una parte de la geometr\u00eda de un enlace. Esto es \u00fatil para poder referirse a partes espec\u00edficas de la geometr\u00eda del mismo.<span id=\"line-62\" class=\"anchor\"><\/span><span id=\"line-63\" class=\"anchor\"><\/span><\/p><p class=\"line891\" style=\"padding-left: 80px;\"><em><span style=\"color: #2084a1;\"><strong>&lt;origin&gt;<\/strong><\/span> (opcional)<\/em><span id=\"line-64\" class=\"anchor\"><\/span><\/p><p style=\"padding-left: 80px;\"><span style=\"font-style: inherit; font-weight: inherit; color: var(--ast-global-color-3);\">Indica la posici\u00f3n y la orientaci\u00f3n del sistema de referencia V en relaci\u00f3n al sistema de referencia L ubicado en la articulaci\u00f3n con el enlace padre.\u00a0<\/span><\/p><p class=\"line891\" style=\"padding-left: 120px;\"><strong>xyz\u00a0<\/strong><em>(opcional: por defecto es vector cero)<\/em><span id=\"line-66\" class=\"anchor\"><\/span><\/p><p style=\"padding-left: 120px;\"><span style=\"font-style: inherit; font-weight: inherit; color: var(--ast-global-color-3);\">Representa el vector de posici\u00f3n del origen Vo del sistema de referencia V en metros.<\/span><\/p><p class=\"line891\" style=\"padding-left: 120px;\"><strong>rpy\u00a0<\/strong><em>(opcional: el valor predeterminado es identidad si no se especifica)<\/em><span id=\"line-68\" class=\"anchor\"><\/span><\/p><p style=\"padding-left: 120px;\"><span style=\"font-style: inherit; font-weight: inherit; color: var(--ast-global-color-3);\">Representa la orientaci\u00f3n de los vectores unitarios <strong>Vx, Vy, Vz<\/strong> del sistema de referencia V <\/span><span style=\"font-style: inherit; font-weight: inherit; color: var(--ast-global-color-3);\">respecto del sistema de referencia L ubicado en la articulaci\u00f3n, como una secuencia de rotaciones de Euler (rpy) en radianes.\u00a0<\/span><\/p><p class=\"line891\" style=\"padding-left: 80px;\"><span style=\"color: #2084a1;\"><strong>&lt;geometry&gt; <\/strong><\/span><em>(requerido)<\/em><span id=\"line-70\" class=\"anchor\"><\/span><\/p><p class=\"line862\" style=\"padding-left: 80px;\">Establece la forma visual del enlace. Permite los siguientes elementos:<span id=\"line-71\" class=\"anchor\"><\/span><\/p><p class=\"line891\" style=\"padding-left: 120px;\"><span style=\"color: #2084a1;\"><strong>&lt;box&gt; <\/strong><\/span><em>(opcional)<\/em><\/p><p class=\"line891\" style=\"padding-left: 120px;\"><span id=\"line-72\" class=\"anchor\"><\/span>Define una caja. El origen de la caja est\u00e1 en su centro.<\/p><p class=\"line891\" style=\"padding-left: 160px;\"><strong>size <\/strong><em>(atributo)<\/em> Contiene las tres longitudes laterales de la misma.\u00a0<span id=\"line-73\" class=\"anchor\"><\/span><\/p><p class=\"line891\" style=\"padding-left: 120px;\"><span style=\"color: #2084a1;\"><strong>&lt;cylinder&gt;<\/strong><\/span> <em>(opcional)<\/em><\/p><p class=\"line891\" style=\"padding-left: 120px;\">Define un cilindro. El origen del cilindro est\u00e1 en su centro.<\/p><p class=\"line891\" style=\"padding-left: 160px;\"><strong>radious <\/strong><em>(atributo)<\/em> Radio del cilindro.<\/p><p class=\"line891\" style=\"padding-left: 160px;\"><strong>length<\/strong> . <em>(atributo) Longitud del cilindro.<\/em><span id=\"line-75\" class=\"anchor\"><\/span><\/p><p class=\"line891\" style=\"padding-left: 120px;\"><span style=\"color: #2084a1;\"><strong>&lt;sphere&gt; <\/strong><\/span><em>(opcional)<\/em><\/p><p class=\"line891\" style=\"padding-left: 120px;\">Define una esfera. El origen de la esfera est\u00e1 en su centro.<span id=\"line-76\" class=\"anchor\"><\/span><\/p><p style=\"padding-left: 160px;\"><strong>radious <\/strong><em>(atributo)<\/em> Radio de la esfera.<\/p><p class=\"line891\" style=\"padding-left: 120px;\"><span style=\"color: #2084a1;\"><strong>&lt;mesh&gt; <\/strong><span style=\"color: #333333;\"><em>(opcional) <\/em><\/span><\/span><\/p><p class=\"line891\" style=\"padding-left: 120px;\">Define un elemento malla. Su origen depender\u00e1 de donde se haya fijado el sistema de referencia durante el dise\u00f1o de la malla mediante alg\u00fan programa de modelado 3D.<span id=\"line-78\" class=\"anchor\"><\/span><\/p><p style=\"padding-left: 160px;\"><strong>filename<\/strong> (atributo) Nombre del archivo que contiene la informaci\u00f3n geom\u00e9trica de la malla. Es compatible con los formatos .stl y Collada .dae, aunque el formato recomendado para obtener la mejor compatibilidad con texturas y colores es este \u00faltimo. Hay que prefijar al nombre del archivo de malla\u00a0 <strong>package:\/\/&lt;packagename&gt;\/&lt;path&gt;\/ <\/strong> para hacer que su ruta sea relativa al paquete.<span id=\"line-79\" class=\"anchor\"><\/span><\/p><p style=\"padding-left: 160px;\"><strong>scale<\/strong> <em>(atributo opcional)<\/em> Aplica un factor de escala a la geometr\u00eda definida por la malla.<\/p><p class=\"line891\" style=\"padding-left: 80px;\"><span style=\"color: #2084a1;\"><strong>&lt;material&gt; <\/strong><\/span><em>(opcional)<\/em><span id=\"line-80\" class=\"anchor\"><\/span><\/p><p style=\"padding-left: 80px;\">Establece el material del elemento visual. Se permite especificar un elemento <em>material<\/em> fuera del objeto <em>link<\/em>, en el elemento <em>robot<\/em> de nivel superior, de forma que desde dentro de un elemento <em>link<\/em>, se pueda hacer referencia al material por su nombre.<span id=\"line-81\" class=\"anchor\"><\/span><\/p><p class=\"line891\" style=\"padding-left: 120px;\"><strong>nombre<\/strong> <em>(atributo)<\/em> Nombre del material.<span id=\"line-82\" class=\"anchor\"><\/span><\/p><p class=\"line891\" style=\"padding-left: 120px;\"><span style=\"color: #2084a1;\"><strong>&lt;color&gt; <\/strong><\/span><em>(opcional)<\/em><span id=\"line-83\" class=\"anchor\"><\/span><\/p><p class=\"line891\" style=\"padding-left: 160px;\"><strong>rgba<\/strong> (atributo) El color de un material especificado por un conjunto de cuatro n\u00fameros que representan los canales rojo\/verde\/azul\/alfa, cada uno en el rango de [0,1].<span id=\"line-84\" class=\"anchor\"><\/span><\/p><p class=\"line891\" style=\"padding-left: 120px;\"><span style=\"color: #2084a1;\"><strong>&lt;texture&gt; <\/strong><\/span><em>(opcional)<\/em><span id=\"line-85\" class=\"anchor\"><\/span><\/p><p class=\"line862\" style=\"padding-left: 160px;\"><strong>filename<\/strong> (atributo) Nombre del archivo que contiene la textura del material.<span id=\"line-87\" class=\"anchor\"><\/span><\/p><p>\u00a0<\/p><p>\u00a0<\/p><p class=\"line891\" style=\"padding-left: 40px;\"><span style=\"color: #f1505d;\"><strong>&lt;collision&gt; <\/strong><\/span><em>(opcional)<\/em><span id=\"line-88\" class=\"anchor\"><\/span><\/p><p class=\"line862\" style=\"padding-left: 40px;\">Establece la forma geom\u00e9trica empleada para el c\u00e1lculo de colisi\u00f3n de un enlace.<span id=\"line-90\" class=\"anchor\"><\/span><\/p><p class=\"line891\" style=\"padding-left: 80px;\"><strong>nombre\u00a0<\/strong><em>(opcional)<\/em><span id=\"line-91\" class=\"anchor\"><\/span><\/p><p style=\"padding-left: 80px;\">Especifica un nombre para una parte de la geometr\u00eda de un v\u00ednculo.\u00a0Esto es \u00fatil para poder referirse a bits espec\u00edficos de la geometr\u00eda de un enlace.<span id=\"line-92\" class=\"anchor\"><\/span><\/p><p class=\"line891\" style=\"padding-left: 80px;\"><span style=\"color: #2084a1;\"><strong>&lt;origin&gt; <\/strong><\/span><em>(opcional)<\/em><span id=\"line-93\" class=\"anchor\"><\/span><\/p><p style=\"padding-left: 80px;\">Define el sistema de referencia V del elemento de colisi\u00f3n, relativo al sistema de referencia L del enlace.<span id=\"line-94\" class=\"anchor\"><\/span><\/p><p class=\"line891\" style=\"padding-left: 120px;\"><strong>xyz\u00a0<\/strong><em>(opcional: por defecto es vector cero)<\/em><span id=\"line-95\" class=\"anchor\"><\/span><\/p><p style=\"padding-left: 120px;\"><span style=\"font-style: inherit; font-weight: inherit; color: var(--ast-global-color-3);\">Representa el vector de posici\u00f3n del origen Vo del sistema de referencia V en metros.<\/span><\/p><p class=\"line891\" style=\"padding-left: 120px;\"><strong>rpy\u00a0<\/strong><em>(opcional: el valor predeterminado es identidad si no se especifica)<\/em><span id=\"line-97\" class=\"anchor\"><\/span><\/p><p style=\"padding-left: 120px;\"><span style=\"font-style: inherit; font-weight: inherit; color: var(--ast-global-color-3);\">Representa la orientaci\u00f3n de los vectores unitarios <strong>Vx, Vy, Vz<\/strong> del sistema de referencia V <\/span><span style=\"font-style: inherit; font-weight: inherit; color: var(--ast-global-color-3);\">respecto del sistema de referencia L ubicado en la articulaci\u00f3n, como una secuencia de rotaciones de Euler (rpy) en radianes.\u00a0<\/span><\/p><p>\u00a0<\/p><p class=\"line891\" style=\"padding-left: 80px;\"><span style=\"color: #2084a1;\"><strong>&lt;geometry&gt;<\/strong><\/span><span id=\"line-99\" class=\"anchor\"><\/span><\/p><p style=\"padding-left: 80px;\">Establece la forma del objeto empleado para la detecci\u00f3n de colisiones. Admite los mismos elementos que el descrito para &lt;visual&gt;.<\/p><p class=\"line891\" style=\"padding-left: 120px;\">\u00a0<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e2cbf44 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e2cbf44\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-97a1e26\" data-id=\"97a1e26\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-fc3b15d elementor-widget elementor-widget-text-editor\" data-id=\"fc3b15d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h4>Definiendo cada una de las articulaciones. El elemento &lt;joint&gt;<\/h4>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9c8e811 elementor-widget elementor-widget-text-editor\" data-id=\"9c8e811\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>A continuaci\u00f3n se muestra un ejemplo de c\u00f3digo de definici\u00f3n de una articulaci\u00f3n.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-03fa658 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"03fa658\" data-element_type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-03fa658\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-xonokai\"\n            data-dark-theme=\"mdp-theme-xonokai\"\n        >\n            \n                <pre class=\"language-markup copy-to-clipboard\"data-previewers=\"\"><code> &lt;joint name=&quot;my_joint&quot; type=&quot;floating&quot;&gt;\n    &lt;origin xyz=&quot;0 0 1&quot; rpy=&quot;0 0 3.1416&quot;\/&gt;\n    &lt;parent link=&quot;link1&quot;\/&gt;\n    &lt;child link=&quot;link2&quot;\/&gt;\n\n    &lt;calibration rising=&quot;0.0&quot;\/&gt;\n    &lt;dynamics damping=&quot;0.0&quot; friction=&quot;0.0&quot;\/&gt;\n    &lt;limit effort=&quot;30&quot; velocity=&quot;1.0&quot; lower=&quot;-2.2&quot; upper=&quot;0.7&quot; \/&gt;\n    &lt;safety_controller k_velocity=&quot;10&quot; k_position=&quot;15&quot; soft_lower_limit=&quot;-2.0&quot; soft_upper_limit=&quot;0.5&quot; \/&gt;\n &lt;\/joint&gt;<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_03fa658 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/robotica-facil-con-ros2.es\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_03fa658();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_03fa658 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2d507c9 elementor-widget elementor-widget-text-editor\" data-id=\"2d507c9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>El elemento <strong>joint<\/strong> permite definir la cinem\u00e1tica y la din\u00e1mica de cada una de las articulaciones, as\u00ed como sus l\u00edmites de seguridad. Para ello admite los siguientes elementos, siendo todos ellos opcionales menos <em>&lt;parent&gt;<\/em> y <em>&lt;child&gt;<\/em>.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1a425d5 elementor-widget elementor-widget-text-editor\" data-id=\"1a425d5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h5 style=\"padding-left: 40px;\">Fijando el sistema de referencia del enlace hijo. El elemento &lt;origin&gt;<\/h5><p style=\"padding-left: 40px;\">Este elemento indica la ubicaci\u00f3n y orientaci\u00f3n del sistema de referencia L del enlace hijo. Como ya hemos comentado este sistema de referencia forma parte de la definici\u00f3n de la cadena cinem\u00e1tica y lo ubicaremos en la articulaci\u00f3n con el enlace padre,\u00a0<span style=\"font-style: inherit; font-weight: inherit; background-color: var(--ast-global-color-4); color: var(--ast-global-color-3);\">de modo que uno de sus ejes coincida en funci\u00f3n del tipo de articulaci\u00f3n con el eje de giro (<em>revolute, continuous<\/em>) o con la direcci\u00f3n de desplazamiento (<em>prismatic<\/em>).\u00a0<\/span><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-557836f elementor-widget elementor-widget-text-editor\" data-id=\"557836f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p style=\"padding-left: 40px;\">La pose del sistema de referencia L se establece en relaci\u00f3n al sistema de referencia L del enlace padre.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b81c9ba elementor-widget elementor-widget-text-editor\" data-id=\"b81c9ba\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h5 style=\"padding-left: 40px;\">Estableciendo los enlaces de la articulaci\u00f3n. Los elementos &lt;parent&gt; y &lt;child&gt;<\/h5><p style=\"padding-left: 40px;\">Estos elementos permiten proporcionar la \u00fanica informaci\u00f3n que realmente es obligatoria a la hora de definir una articulaci\u00f3n, que es la definici\u00f3n de los enlaces padre e hijo unidos por la misma.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ac7921d elementor-widget elementor-widget-text-editor\" data-id=\"ac7921d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h5 style=\"padding-left: 40px;\">Indicando el eje asociado al movimiento de la articulaci\u00f3n. El elemento &lt;axis&gt;<\/h5><p style=\"padding-left: 40px;\">Para articulaciones de tipo <em>revolute<\/em>, <em>continuous<\/em> o <em>prismatic<\/em>, el elemento <em>&lt;axis&gt;<\/em> permite indicar cual de los ejes del sistema de referencia L coincide con el eje de giro o de desplazamiento de la articulaci\u00f3n.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-859c330 elementor-widget elementor-widget-text-editor\" data-id=\"859c330\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h5 style=\"padding-left: 40px;\">Estableciendo la din\u00e1mica. El elemento &lt;dynamics&gt;<\/h5><p style=\"padding-left: 40px;\">El elemento <em>&lt;dynamics&gt;<\/em> permite indicar las propiedades din\u00e1micas de la articulaci\u00f3n, estableciendo los coeficientes de rozamiento est\u00e1tico y de amortiguamiento.\u00a0<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-10108f4 elementor-widget elementor-widget-text-editor\" data-id=\"10108f4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h5 style=\"padding-left: 40px;\">Fijando los l\u00edmites de movimiento, velocidad y esfuerzo. El elemento &lt;limit&gt;<\/h5><p style=\"padding-left: 40px;\">El elemento <em>&lt;limit&gt;<\/em> permite establecer el rango del movimiento de la articulaci\u00f3n, as\u00ed como la velocidad m\u00e1xima que puede alcanzar o el esfuerzo m\u00e1ximo que es capaz de desarrollar. Para m\u00e1s informaci\u00f3n consultar la siguiente p\u00e1gina donde se explican los <a href=\"http:\/\/wiki.ros.org\/pr2_controller_manager\/safety_limits\">l\u00edmites de seguridad de una articulaci\u00f3n<\/a>.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d09f870 elementor-widget elementor-widget-text-editor\" data-id=\"d09f870\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h5 style=\"padding-left: 40px;\">Ajustando los l\u00edmites de seguridad. El elemento &lt;safety_controller&gt;<\/h5><p style=\"padding-left: 40px;\">Este elemento permite establecer las relaciones l\u00edmite entre <em>posici\u00f3n\/velocidad<\/em> y <em>velocidad\/esfuerzo<\/em>. El \u00e1rea sombreada en la figura inferior representa la zona de valores permitidos. Para m\u00e1s informaci\u00f3n consultar la siguiente p\u00e1gina donde se explican los <a href=\"http:\/\/wiki.ros.org\/pr2_controller_manager\/safety_limits\">l\u00edmites de seguridad de una articulaci\u00f3n<\/a>.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-07e3619 elementor-widget elementor-widget-image\" data-id=\"07e3619\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/robotica-facil-con-ros2.es\/wp-content\/uploads\/2022\/05\/urdf-safety-limits.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"urdf-safety-limits\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjUzNiwidXJsIjoiaHR0cHM6XC9cL3JvYm90aWNhLWZhY2lsLWNvbi1yb3MyLmVzXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIyXC8wNVwvdXJkZi1zYWZldHktbGltaXRzLnBuZyJ9\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1024\" height=\"357\" src=\"https:\/\/robotica-facil-con-ros2.es\/wp-content\/uploads\/2022\/05\/urdf-safety-limits-1024x357.png\" class=\"attachment-large size-large wp-image-2536\" alt=\"\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-14dce6d elementor-widget elementor-widget-text-editor\" data-id=\"14dce6d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p style=\"text-align: center;\">L\u00edmites de seguridad de la articulaci\u00f3n<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bb2d681 elementor-widget elementor-widget-text-editor\" data-id=\"bb2d681\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h5 style=\"padding-left: 40px;\">Calibrando la articulaci\u00f3n. El elemento &lt;calibration&gt;<\/h5><p style=\"padding-left: 40px;\">Este elemento se utiliza para establecer la posici\u00f3n de referencia de la articulaci\u00f3n, la cual es empleada para calibrar su posici\u00f3n absoluta. Permite lanzar una se\u00f1al con un flanco de subida o de bajada cuando se alcanza la posici\u00f3n de referencia.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9f09800 elementor-widget elementor-widget-text-editor\" data-id=\"9f09800\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h5 style=\"padding-left: 40px;\">Imitando el movimiento de otra articulaci\u00f3n. El elemento &lt;mimic&gt;<\/h5><p style=\"padding-left: 40px;\">Este elemento permite que una articulaci\u00f3n imite los movimientos de otra. Esto es muy \u00fatil por ejemplo cuando estamos modelando una pinza para un brazo manipulador.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b6ef821 elementor-widget elementor-widget-text-editor\" data-id=\"b6ef821\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h5 style=\"padding-left: 40px;\">Resumen de elementos y atributos admitidos<\/h5><p style=\"padding-left: 40px;\">En el siguiente cuadro se recogen todos los elementos, junto con sus atributos, admitidos\u00a0<span style=\"background-color: var(--ast-global-color-4); color: var(--ast-global-color-3);\">por la especificaci\u00f3n URDF para caracterizar las articulaciones.<\/span><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-70352d7 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"70352d7\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-354a278\" data-id=\"354a278\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-83f4158 elementor-widget elementor-widget-text-editor\" data-id=\"83f4158\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><span style=\"color: #ffffff;\">ELEMENTOS Y ATRIBUTOS ADMITIDOS POR &lt;JOINT&gt;<\/span><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-fe58096 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"fe58096\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1551564\" data-id=\"1551564\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c0e5d65 elementor-widget elementor-widget-text-editor\" data-id=\"c0e5d65\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p class=\"line891\" style=\"padding-left: 40px;\"><span style=\"color: #2084a1;\"><strong>&lt;origin&gt; <\/strong><\/span><em>(opcional: el valor predeterminado es la\u00a0 identidad si no se especifica)<\/em><span id=\"line-43\" class=\"anchor\"><\/span><\/p>\n<p style=\"padding-left: 40px;\">Define el sistema de referencia L del enlace, ubicado sobre la articulaci\u00f3n con el enlace padre. Atributos:<span id=\"line-44\" class=\"anchor\"><\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>xyz\u00a0<\/strong><em>(opcional: por defecto es el vector cero)<\/em><span id=\"line-45\" class=\"anchor\"><\/span><\/p>\n<p class=\"line862\" style=\"padding-left: 80px;\"><span style=\"font-size: 16px;\">Origen del sistema de referencia L. Valores<\/span><span style=\"font-size: 16px;\">\u00a0en metros.<\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>rpy\u00a0<\/strong><em>(opcional: por defecto es el vector cero)<\/em><span id=\"line-47\" class=\"anchor\"><\/span><\/p>\n<p style=\"padding-left: 80px;\">Representa\u00a0 la orientaci\u00f3n de los vectores unitarios <strong>Lx, Ly, Lz<\/strong> del sistema de referencia L respecto del sistema de referencia del enlace padre, como una secuencia de rotaciones de Euler (rpy) en radianes.<span id=\"line-48\" class=\"anchor\"><\/span><\/p>\n&nbsp;\n<p class=\"line891\" style=\"padding-left: 40px;\"><span style=\"color: #2084a1;\"><strong>&lt;parent&gt; <\/strong><\/span><em>(requerido)<\/em><span id=\"line-49\" class=\"anchor\"><\/span><\/p>\n<p style=\"padding-left: 40px;\">Nombre del link padre. Atributos:<span id=\"line-50\" class=\"anchor\"><\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>Link<\/strong> <em>(requerido)<\/em><span id=\"line-51\" class=\"anchor\"><\/span><\/p>\n<p style=\"padding-left: 80px;\">El nombre del enlace padre de la articulaci\u00f3n.<span id=\"line-52\" class=\"anchor\"><\/span><\/p>\n&nbsp;\n<p class=\"line891\" style=\"padding-left: 40px;\"><span style=\"color: #2084a1;\"><strong>&lt;child&gt; <\/strong><\/span><em>(requerido)<\/em><span id=\"line-53\" class=\"anchor\"><\/span><\/p>\n<p style=\"padding-left: 40px;\">Nombre del link hijo. Atributos:<span id=\"line-54\" class=\"anchor\"><\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>Link<\/strong> <em>(requerido)<\/em><span id=\"line-55\" class=\"anchor\"><\/span><\/p>\n<p style=\"padding-left: 80px;\">El nombre del enlace hijo de la articulaci\u00f3n.<span id=\"line-56\" class=\"anchor\"><\/span><\/p>\n&nbsp;\n<p class=\"line891\" style=\"padding-left: 40px;\"><span style=\"color: #2084a1;\"><strong>&lt;axis&gt; <\/strong><\/span><em>(opcional: por defecto es (1,0,0))<\/em><span id=\"line-57\" class=\"anchor\"><\/span><\/p>\n<p style=\"padding-left: 40px;\">El eje de uni\u00f3n especificado en el marco de uni\u00f3n. Este es el eje de rotaci\u00f3n para las articulaciones giratorias, el eje de traslaci\u00f3n para las articulaciones prism\u00e1ticas y la superficie normal para las articulaciones planas. El eje se especifica en el sistema de referencia L. Las uniones fijas y flotantes no utilizan este elemento.<span id=\"line-58\" class=\"anchor\"><\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>xyz\u00a0<\/strong><em>(requerido)<\/em><span id=\"line-59\" class=\"anchor\"><\/span><\/p>\n<p class=\"line862\" style=\"padding-left: 80px;\">Representa las <span style=\"font-size: 16px;\">componentes de un vector.\u00a0<\/span><span style=\"font-size: 16px;\">El vector debe ser normalizado.<\/span><\/p>\n<p class=\"line862\" style=\"padding-left: 80px;\"><span style=\"font-size: 16px;\">\u00a0<\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 40px;\"><span style=\"color: #2084a1;\"><strong>&lt;calibration&gt; <\/strong><\/span><em>(opcional)<\/em><span id=\"line-61\" class=\"anchor\"><\/span><\/p>\n<p style=\"padding-left: 40px;\">Define las posiciones de referencia de la articulaci\u00f3n, utilizadas para calibrar la posici\u00f3n absoluta de la misma.<span id=\"line-62\" class=\"anchor\"><\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>rising <\/strong><em>(opcional)<\/em><span id=\"line-63\" class=\"anchor\"><\/span><\/p>\n<p style=\"padding-left: 80px;\">Cuando la articulaci\u00f3n se mueve en una direcci\u00f3n positiva, esta posici\u00f3n de referencia activar\u00e1 un flanco ascendente.<span id=\"line-64\" class=\"anchor\"><\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>falling <\/strong><em>(opcional)<\/em><span id=\"line-65\" class=\"anchor\"><\/span><\/p>\n<p style=\"padding-left: 80px;\">Cuando la articulaci\u00f3n se mueve en una direcci\u00f3n positiva, esta posici\u00f3n de referencia activar\u00e1 un flanco descendente.<span id=\"line-66\" class=\"anchor\"><\/span><\/p>\n&nbsp;\n<p class=\"line891\" style=\"padding-left: 40px;\"><span style=\"color: #2084a1;\"><strong>&lt;dynamics&gt; <\/strong><\/span><em>(opcional)<\/em><span id=\"line-67\" class=\"anchor\"><\/span><\/p>\n<p style=\"padding-left: 40px;\">Especifica las propiedades f\u00edsicas de la articulaci\u00f3n.\u00a0<span id=\"line-68\" class=\"anchor\"><\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>damping <\/strong><em>(opcional, predeterminado en 0)<\/em><span id=\"line-69\" class=\"anchor\"><\/span><\/p>\n<p class=\"line862\" style=\"padding-left: 80px;\">El valor de amortiguamiento de la articulaci\u00f3n (en <em>N\u2219s\/m<\/em> para articulaciones prism\u00e1ticas, y en <em>N<\/em>\u2219<em>m<\/em>\u2219<em>s<\/em>\/<em>rad para las de giro)<\/em><span style=\"font-size: 16px;\">.<\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>friction <\/strong><em>(opcional, por defecto es 0)<\/em><span id=\"line-71\" class=\"anchor\"><\/span><\/p>\n<p class=\"line862\" style=\"padding-left: 80px;\">El valor del coeficiente de rozamiento est\u00e1tico de la articulaci\u00f3n (en N <span style=\"font-size: 16px;\">para las prism\u00e1ticas y en <em>N<\/em>\u2219<em>m <\/em>para las <\/span><span style=\"font-size: 16px;\">de giro).<\/span><\/p>\n&nbsp;\n<p class=\"line891\" style=\"padding-left: 40px;\"><span style=\"color: #2084a1;\"><strong>&lt;limit&gt; <\/strong><\/span><em>(requerido solo para articulaciones de giro y prism\u00e1ticas)<\/em><span id=\"line-73\" class=\"anchor\"><\/span><\/p>\n<p style=\"padding-left: 40px;\">Un elemento puede contener los siguientes atributos:<span id=\"line-74\" class=\"anchor\"><\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>lower <\/strong><em>(opcional, por defecto es 0)<\/em><span id=\"line-75\" class=\"anchor\"><\/span><\/p>\n<p style=\"padding-left: 80px;\">Especifica el l\u00edmite inferior de la articulaci\u00f3n (en radianes para articulaciones de giro, y en metros para las prism\u00e1ticas). Omitir si la articulaci\u00f3n\u00a0 es continua.<span id=\"line-76\" class=\"anchor\"><\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>upper <\/strong><em>(opcional, por defecto es 0)<\/em><span id=\"line-77\" class=\"anchor\"><\/span><\/p>\n<p style=\"padding-left: 80px;\">Especifica el l\u00edmite superior de la articulaci\u00f3n (en radianes para articulaciones de giro, y metros para las prism\u00e1ticas). Omitir si la articulaci\u00f3n es continua.<span id=\"line-78\" class=\"anchor\"><\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>effort <\/strong><em>(requerido)<\/em><span id=\"line-79\" class=\"anchor\"><\/span><\/p>\n<p class=\"line862\" style=\"padding-left: 80px;\">Esfuerzo m\u00e1ximo que puede realizar la articulaci\u00f3n.<\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>velocity <\/strong><em>(requerido)<\/em><span id=\"line-81\" class=\"anchor\"><\/span><\/p>\n<p style=\"padding-left: 80px;\">Velocidad m\u00e1xima que puede alcanzar la articulaci\u00f3n (en <em>rad\/s<\/em> para las de giro y en <em>m\/s<\/em> para las prism\u00e1ticas).<\/p>\n&nbsp;\n<p class=\"line891\" style=\"padding-left: 40px;\"><span style=\"color: #2084a1;\"><strong>&lt;mimic&gt; <\/strong><\/span><em>(opcional)<\/em><span id=\"line-83\" class=\"anchor\"><\/span><\/p>\n<p class=\"line862\" style=\"padding-left: 40px;\">Esta etiqueta se utiliza para especificar que la articulaci\u00f3n que se est\u00e1 definiendo imita otra articulaci\u00f3n existente. El valor de esta articulaci\u00f3n se puede calcular como <em>valor = multiplicador * otro_valor_junta + compensaci\u00f3n<\/em>.\u00a0<span id=\"line-84\" class=\"anchor\"><\/span>Atributos:<span id=\"line-85\" class=\"anchor\"><\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>joint <\/strong><em>(requerido)<\/em><span id=\"line-86\" class=\"anchor\"><\/span><\/p>\n<p style=\"padding-left: 80px;\">Especifica el nombre de la articulaci\u00f3n a imitar.<span id=\"line-87\" class=\"anchor\"><\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>multiplier <\/strong><em>(opcional)<\/em><span id=\"line-88\" class=\"anchor\"><\/span><\/p>\n<p style=\"padding-left: 80px;\">Especifica el factor multiplicativo en la f\u00f3rmula anterior.<span id=\"line-89\" class=\"anchor\"><\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>offset <\/strong><em>(opcional)<\/em><span id=\"line-90\" class=\"anchor\"><\/span><\/p>\n<p style=\"padding-left: 80px;\">Especifica el desplazamiento para agregar en la f\u00f3rmula anterior. El valor predeterminado es 0 (radianes para articulaciones de giro, y metros para las prism\u00e1ticas).<span id=\"line-91\" class=\"anchor\"><\/span><\/p>\n&nbsp;\n<p class=\"line891\" style=\"padding-left: 40px;\"><span style=\"color: #2084a1;\"><strong>&lt;safety_controller&gt; <\/strong><\/span><em>(opcional)<\/em><span id=\"line-92\" class=\"anchor\"><\/span><\/p>\n<p style=\"padding-left: 40px;\">Este elemento puede contener los siguientes atributos:<span id=\"line-93\" class=\"anchor\"><\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>soft_lower_limit\u00a0<\/strong><em>(opcional, por defecto es 0)<\/em><span id=\"line-94\" class=\"anchor\"><\/span><\/p>\n<p class=\"line862\" style=\"padding-left: 80px;\">Especifica el l\u00edmite inferior de la articulaci\u00f3n donde el controlador de seguridad comienza a limitar la posici\u00f3n de la articulaci\u00f3n. Este l\u00edmite debe ser mayor que el l\u00edmite inferior de la articulaci\u00f3n (ver arriba).<span id=\"line-95\" class=\"anchor\"><\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>soft_upper_limit\u00a0<\/strong><em>(opcional, por defecto es 0)<\/em><span id=\"line-96\" class=\"anchor\"><\/span><\/p>\n<p class=\"line862\" style=\"padding-left: 80px;\">Especifica el l\u00edmite superior de la articulaci\u00f3n donde el controlador de seguridad comienza a limitar la posici\u00f3n de la misma. Este l\u00edmite debe ser menor que el l\u00edmite superior (ver arriba).\u00a0<span id=\"line-97\" class=\"anchor\"><\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>k_position\u00a0<\/strong><em>(opcional, por defecto es 0)<\/em><span id=\"line-98\" class=\"anchor\"><\/span><\/p>\n<p class=\"line862\" style=\"padding-left: 80px;\">Relaci\u00f3n entre la posici\u00f3n y los l\u00edmites de velocidad.<span id=\"line-99\" class=\"anchor\"><\/span><\/p>\n<p class=\"line891\" style=\"padding-left: 80px;\"><strong>k_velocity <\/strong><em>(obligatorio)<\/em><span id=\"line-100\" class=\"anchor\"><\/span><\/p>\n<p class=\"line862\" style=\"padding-left: 80px;\">Relaci\u00f3n entre el esfuerzo y los l\u00edmites de velocidad.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u00bfQu\u00e9 son y para qu\u00e9 sirven? El formato URDF (Unified Robot Description Format) es una especificaci\u00f3n XML que permite describir c\u00f3mo es un robot, de modo que mediante elementos XML se pueden definir las siguientes caracter\u00edsticas del mismo: \u00a0 El aspecto visual. Su cinem\u00e1tica y din\u00e1mica. El modelo de colisi\u00f3n. Una vez que tenemos el [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2152,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[5,10],"tags":[12,7,11],"class_list":["post-1439","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ros2","category-simulacion","tag-gazebo","tag-ros2","tag-urdf"],"aioseo_notices":[],"rttpg_featured_image_url":{"full":["https:\/\/robotica-facil-con-ros2.es\/wp-content\/uploads\/2022\/05\/ABB-IRB-120-urdf-model.png",1920,1080,false],"landscape":["https:\/\/robotica-facil-con-ros2.es\/wp-content\/uploads\/2022\/05\/ABB-IRB-120-urdf-model.png",1920,1080,false],"portraits":["https:\/\/robotica-facil-con-ros2.es\/wp-content\/uploads\/2022\/05\/ABB-IRB-120-urdf-model.png",1920,1080,false],"thumbnail":["https:\/\/robotica-facil-con-ros2.es\/wp-content\/uploads\/2022\/05\/ABB-IRB-120-urdf-model-150x150.png",150,150,true],"medium":["https:\/\/robotica-facil-con-ros2.es\/wp-content\/uploads\/2022\/05\/ABB-IRB-120-urdf-model-300x169.png",300,169,true],"large":["https:\/\/robotica-facil-con-ros2.es\/wp-content\/uploads\/2022\/05\/ABB-IRB-120-urdf-model-1024x576.png",1024,576,true],"1536x1536":["https:\/\/robotica-facil-con-ros2.es\/wp-content\/uploads\/2022\/05\/ABB-IRB-120-urdf-model-1536x864.png",1536,864,true],"2048x2048":["https:\/\/robotica-facil-con-ros2.es\/wp-content\/uploads\/2022\/05\/ABB-IRB-120-urdf-model.png",1920,1080,false]},"rttpg_author":{"display_name":"Jose Enrique Cabrera","author_link":"https:\/\/robotica-facil-con-ros2.es\/?author=1"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/robotica-facil-con-ros2.es\/?cat=5\" rel=\"category\">ROS2<\/a> <a href=\"https:\/\/robotica-facil-con-ros2.es\/?cat=10\" rel=\"category\">SIMULACI\u00d3N<\/a>","rttpg_excerpt":"\u00bfQu\u00e9 son y para qu\u00e9 sirven? El formato URDF (Unified Robot Description Format) es una especificaci\u00f3n XML que permite describir c\u00f3mo es un robot, de modo que mediante elementos XML se pueden definir las siguientes caracter\u00edsticas del mismo: \u00a0 El aspecto visual. Su cinem\u00e1tica y din\u00e1mica. El modelo de colisi\u00f3n. Una vez que tenemos el&hellip;","_links":{"self":[{"href":"https:\/\/robotica-facil-con-ros2.es\/index.php?rest_route=\/wp\/v2\/posts\/1439","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/robotica-facil-con-ros2.es\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/robotica-facil-con-ros2.es\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/robotica-facil-con-ros2.es\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/robotica-facil-con-ros2.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1439"}],"version-history":[{"count":612,"href":"https:\/\/robotica-facil-con-ros2.es\/index.php?rest_route=\/wp\/v2\/posts\/1439\/revisions"}],"predecessor-version":[{"id":3291,"href":"https:\/\/robotica-facil-con-ros2.es\/index.php?rest_route=\/wp\/v2\/posts\/1439\/revisions\/3291"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/robotica-facil-con-ros2.es\/index.php?rest_route=\/wp\/v2\/media\/2152"}],"wp:attachment":[{"href":"https:\/\/robotica-facil-con-ros2.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1439"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/robotica-facil-con-ros2.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1439"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/robotica-facil-con-ros2.es\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1439"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}