1.首先创建一个简单的模型
创建01-myfirst.urdf文件
<?xml version="1.0"?>
<robot name="myfirst">
<link name="base_link">
<visual>
<geometry>
<cylinder length="0.6" radius="0.2"/>
</geometry>
</visual>
</link>
</robot>
查看这个模型
roslaunch urdf_tutorial display.launch model:=./01-myfirst.urdf
这个命令做了三件事
1. 加载模型到参数服务器
2. 运行一个结点 发布一些消息
3. 打开RVIZ
2.接下来创建多个形状
创建文件02-multipleshapes.urdf
<?xml version="1.0"?>
<robot name="multipleshapes">
<link name="base_link">
<visual>
<geometry>
<cylinder length="0.6" radius="0.2"/>
</geometry>
</visual>
</link>
<link name="right_leg">
<visual>
<geometry>
<box size="0.6 0.2 0.1"/>
</geometry>
</visual>
</link>
<joint name="base_to_right_leg" type="fixed">
<parent link="base_link"/>
<child link="right_leg" />
</joint>
</robot>
3.origin标签
创建文件03-originTag.urdf
<?xml version="1.0"?>
<robot name="originTag">
<link name="base_link">
<visual>
<geometry>
<cylinder length="0.6" radius="0.2"/>
</geometry>
</visual>
</link>
<link name="right_leg">
<visual>
<geometry>
<box size="0.6 0.2 0.1"/>
</geometry>
<origin rpy="0 1.57075 0" xyz=" 0 0 -0.3"/>
</visual>
</link>
<joint name="base_to_right_leg" type="fixed">
<parent link="base_link"/>
<child link="right_leg" />
<origin xyz="0.22 0 0.25"/>
</joint>
</robot>
打开rviz观察
roslaunch urdf_tutorial display.launch model:=./03-originTag.urdf
note:
1.可以观察得到base_link的中心和base_to_right_leg处有2个TF
2.可以观察到right_leg的原点是base_to_right_leg关节
4.使用material标签
<?xml version="1.0"?>
<robot name="multipleshapes">
<link name="base_link">
<visual>
<geometry>
<cylinder length="0.6" radius="0.2"/>
</geometry>
<material name="blue">
<color rgba="0 0 0.8 1"/>
</material>
</visual>
</link>
<link name="right_leg">
<visual>
<geometry>
<box size="0.6 0.2 0.1"/>
</geometry>
<origin rpy="0 1.57075 0" xyz=" 0 0 -0.3"/>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
</visual>
</link>
<joint name="base_to_right_leg" type="fixed">
<parent link="base_link"/>
<child link="right_leg" />
<origin xyz="0.22 0 0.25"/>
</joint>
<link name="left_leg">
<visual>
<geometry>
<box size="0.6 0.2 0.1"/>
</geometry>
<origin rpy="0 1.57075 0" xyz=" 0 0 -0.3"/>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
</visual>
</link>
<joint name="base_to_left_leg" type="fixed">
<parent link="base_link"/>
<child link="right_leg" />
<origin xyz="-0.22 0 0.25"/>
</joint>
</robot>
note:
<robot name="xxx"></robot> 包含整个urdf文件
<link name="base_link"></link> 一个部件
<visual></visual> 包含部件中的可视化元素
<geometry></geometry> 包含几何体
<origin rpy="x x x" xyz="x x x"/> 用于指定link的位置
<cylinder length="xx" radius="xx" /> 圆柱体
<box size="higth width len"/> 长方体
<material name="xx"></ material> 包含描述link的材料信息
定义了的material可以在下文中引用(而不需要重复写内部的东西)
<material name="xx" />
<color rgba="x x x x"/> 定义颜色
<joint name="xx" type="fixed/slider"> 用于连接两个link
</joint>
parent/child用在joint标签中连接两个link
<parent link="link_name" />
<child link="link_name" />