Modelagem e simulação de robôs (1) -Formato de descrição de robô unificado-URDF
Visão geral
URDF (Unified Robot Description Format) é um formato de descrição de modelo de robô muito importante no ROS. O ROS também fornece um analisador C ++ para arquivos URDF, que pode analisar modelos de robô descritos no formato XML em arquivos URDF.
Antes de usar o arquivo URDF para construir o modelo do robô, é necessário entender as marcas XML comumente usadas no arquivo URDF.
1. tag <link>
A tag <link> é usada para descrever a aparência e as propriedades físicas de uma parte do corpo rígido do robô, incluindo tamanho, cor, forma, matriz inercial, propriedades de colisão, etc.
A estrutura do link do robô é geralmente conforme mostrado na figura, e a sintaxe de descrição URDF básica é a seguinte:
<link name="my_link">
<inertial>
<origin xyz="0 0 0.5" rpy="0 0 0"/>
<mass value="1"/>
<inertia ixx="100" ixy="0" ixz="0" iyy="100" iyz="0" izz="100" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<box size="1 1 1" />
</geometry>
<material name="Cyan">
<color rgba="0 1.0 1.0 1.0"/>
</material>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<cylinder radius="1" length="0.5"/>
</geometry>
</collision>
</link>
Incluindo 3 sub-tags
<inercial>: descreve os parâmetros inerciais do link, usados principalmente na parte de cálculo da dinâmica do robô;
<visual>: descreve os parâmetros de aparência da parte do link do robô, tamanho, cor, forma e outra aparência informações;
<colisão>: descreve as propriedades de colisão do
link ; há outra parte-chave do
link , ou seja, o sistema de coordenadas. A origem do link é a coordenada inicial. Quando todo o link é criado, ele é criado em relação ao link sistema de coordenadas de origem;
2. tag <joint>
A tag <join> é usada para conectar duas partes específicas do link; ela descreve as propriedades cinemáticas e dinâmicas da junta do robô, incluindo a posição e o limite de velocidade do movimento da junta. De acordo com a forma de movimento das articulações, ela pode ser dividida em seis tipos.
Como as articulações humanas, a principal função das articulações do robô é conectar dois elos de corpo rígido, que são chamados de elo pai e elo filho, respectivamente, conforme mostrado na figura.
A junta azul representa um eixo de movimento e a junta azul pode girar em torno do eixo azul, ou seja, o link filho pode girar para cima e para baixo em torno da junta.
Junção serve para conectar dois links, que precisam ser divididos em um relacionamento primário e secundário. A junção primária é o link pai e a junção filho é o link filho. Na descrição em formato xml, esses dois links devem existir.
A sintaxe de descrição da tag <join> é a seguinte:
<joint name="my_joint" type="floating">
<origin xyz="0 0 1" rpy="0 0 3.1416"/>
<parent link="link1"/>
<child link="link2"/>
<calibration rising="0.0"/>
<dynamics damping="0.0" friction="0.0"/>
<limit effort="30" velocity="1.0" lower="-2.2" upper="0.7" />
<safety_controller k_velocity="10" k_position="15" soft_lower_limit="-2.0" soft_upper_limit="0.5" />
</joint>
O link pai e o link filho da junta devem ser especificados, e outras propriedades da junta também podem ser definidas. Subtags
:
<calibração>: a posição de referência da junta, usada para calibrar a posição absoluta da junta;
<dinâmica>: descreve as propriedades físicas da junta, como valor de amortecimento, atrito físico estático, etc., que são frequentemente usado na simulação dinâmica;
<limite>: Descreve alguns valores limites de movimento, incluindo as posições dos limites superior e inferior do movimento da articulação, limite de velocidade, limite de torque, etc .;
<mimic>: descreve a relação entre a articulação e o juntas;
<safety_controller>: descreve os parâmetros do controlador de segurança. Proteja o movimento das articulações do robô;
3. tag <robot>
<robot> é a marca superior do modelo completo do robô. Ambas as marcas <link> e <joint> devem ser incluídas na marca <robot>. Conforme mostrado na figura, um modelo de robô completo consiste em uma série de <link> e <junta>.
O nome do robô pode ser definido na tag <robot> e sua sintaxe básica é a seguinte:
<robot name="pr2">
<link> ... </link>
<link> ... </link>
<link> ... </link>
<joint> .... </joint>
<joint> .... </joint>
<joint> .... </joint>
</robot>
4. A tag <gazebo>
A tag <gazebo> é usada para descrever os parâmetros necessários para a simulação do modelo do robô no Gazebo, incluindo as propriedades do material do robô, o plug-in do gazebo e assim por diante. Esta tag não é uma parte necessária do modelo do robô e só precisa ser adicionada durante a simulação do Gazebo.
A sintaxe básica da tag é a seguinte:
<gazebo reference="link_1">
<material>Gz=azebo/Black</material>
</gazebo>