其他分享
首页 > 其他分享> > ROS中URDF的学习以及与Xacro的比较

ROS中URDF的学习以及与Xacro的比较

作者:互联网

1.urdf与Xacro简单比较

"URDF" 是最初也是比较简单的机器人描述文件,它的结构简单明了,容易理解。但是这也导致当机器人模型变得复杂时,urdf的结构描述就变得冗长,无法简洁有效的描述机器人部件;
"Xacro" 的出现在一定程度上有效地解决这种问题。在本质上,Xacro与URDF是等价的,但Xacro格式提供了一些更高级的方式来组织和编辑机器人描述。

2.urdf文件结构与Xacro文件结构

URDF--主要部件

示例如下:定义个robot name, 将其他的部件都放在里面,然后针对每一个关键(joint ), 坐标外观(geometry), 材料(material)分别进行描述。 其中,每个child link是以parent link 为原点的三维坐标系位置(Origin), 若没有parent link的origin则是相对于本身原位置的转换。

<?xml version="<?xml version="1.0"?>
<robot name="test_robot">
      <link name="base_link" />
      <link name="link2" />
      <link name="link3" />
      <link name="link4" />

    <link name="base_link">
        <visual>
        <geometry>
          <box size="0.25 .16 .05"/>
        </geometry>
        <origin rpy="0 0 0" xyz="0 0 0"/>
        <material name="blue">
          <color rgba="0 0 .8 1"/>
        </material>
         </visual>
      </link>

     <joint name="joint1" type="continuous">
        <parent link="base_link"/>
        <child link="link2"/>
        <origin xyz="0.3 0 0" rpy="1 0 0" />
      </joint>

     <joint name="joint2" type="continuous">
        <parent link="base_link"/>
        <child link="link3"/>
        <origin xyz="0 0.3 0" rpy="0 1 0" />
      </joint>

     <joint name="joint3" type="continuous">
        <parent link="base_link"/>
        <child link="link4"/>
        <origin xyz="0 0 0.3" rpy="0 0 1" />
      </joint>
</robot>

其他部件标签如: "Collision", "Axis joint", "Limit"暂略.

Xacro--主要部件

3.两种不同机器人描述文件的显示方式

URDF

<launch>
    <arg name="model" />
    <arg name="gui" default="false" />
    <param name="robot_description" textfile="$(find basic_3d_visualizer)/urdf/First01learn.urdf" />
    <param name="use_gui" value="$(arg gui)"/>
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
    <node name="rviz" pkg="rviz" type="rviz" args="-d $(find basic_3d_visualizer)/urdf/urdf_test.rviz" />
</launch>

Xacro

<launch>
    <arg name="model" />
    <arg name="gui" default="true" />
    <param name="robot_description" command="$(find xacro)/xacro --inorder $(find basic_3d_visualizer)/urdf/First01learn.urdf" />
    <param name="use_gui" value="$(arg gui)"/>
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node>
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
    <node name="rviz" pkg="rviz" type="rviz" args="-d $(find urdf_tutorial)/urdf.rviz" />
</launch>

[参考链接]

1. URDF与Xacro的语法比较

2. Xacro文件详述

3. URDF 结构详解

4. URDF初级

5. URDF 链接标签详解

6. 创客智造的一个完整机器人的分步阐述URDF

标签:文件,URDF,Xacro,urdf,部件,机器人,ROS
来源: https://blog.csdn.net/qq_29797957/article/details/96430330