URDF(nified Robot Description Format) 統(tǒng)一機(jī)器人描述格式酗电。
我們可以通過(guò)編輯自己的URDF文件來(lái)創(chuàng)建自己的機(jī)器人模型荆烈,以下就通過(guò)構(gòu)建一個(gè)簡(jiǎn)單的小車模型來(lái)說(shuō)明如何創(chuàng)建機(jī)器人模型拯勉。
1.描述整體的結(jié)構(gòu)
整體的結(jié)構(gòu)用部件(Link)和關(guān)節(jié)(Joint)來(lái)描述,關(guān)節(jié)用來(lái)連接部件憔购;
我們要描述一個(gè)帶有4個(gè)輪子的車子宫峦,那么首先有5個(gè)部件(車身、輪子)和4個(gè)關(guān)節(jié):
<robot name="test_robot">
<link name="base_link"/>
<link name="wheel_1"/>
<link name="wheel_2"/>
<link name="wheel_3"/>
<link name="wheel_4"/>
<joint name="joint_base_wheel1" type="fixed">
<parent link="base_link">
<child link="wheel_1">
</joint>
<joint name="joint_base_wheel2" type="fixed">
<parent link="base_link">
<child link="wheel_2">
</joint>
<joint name="joint_base_wheel3" type="fixed">
<parent link="base_link">
<child link="wheel_3">
</joint>
<joint name="joint_base_wheel4" type="fixed">
<parent link="base_link">
<child link="wheel_4">
</joint>
</robot>
我們可以采用 check_urdf xxx.urdf
命令來(lái)檢查我們寫好的urdf文件的語(yǔ)法正確性
2.部件和關(guān)節(jié)的詳細(xì)屬性說(shuō)明
我們的小車各部件還沒(méi)有形狀和大小的描述玫鸟,在URDF中可以用
visual 用來(lái)描述模塊的視覺(jué)效果导绷。
geometry 用來(lái)描述模塊的形狀和大小。
origin 用來(lái)描述模塊的位置屎飘。
添加好上述屬性的urdf文件:
<robot name="test_robot">
<link name="base_link">
<visual>
<geometry>
<box size="0.2 .3 .1"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.05"/>
</visual>
</link>
<link name="wheel_1">
<visual>
<geometry>
<cylinder length="0.05" radius="0.05"/>
</geometry>
<origin rpy="0 1.5 0" xyz="0.1 0.1 0"/>
</visual>
</link>
<link name="wheel_2">
<visual>
<geometry>
<cylinder length="0.05" radius="0.05"/>
</geometry>
<origin rpy="0 1.5 0" xyz="-0.1 0.1 0"/>
</visual>
</link>
<link name="wheel_3">
<visual>
<geometry>
<cylinder length="0.05" radius="0.05"/>
</geometry>
<origin rpy="0 1.5 0" xyz="0.1 -0.1 0"/>
</visual>
</link>
<link name="wheel_4">
<visual>
<geometry>
<cylinder length="0.05" radius="0.05"/>
</geometry>
<origin rpy="0 1.5 0" xyz="-0.1 -0.1 0"/>
</visual>
</link>
<joint name="joint_base_wheel1" type="fixed">
<parent link="base_link"/>
<child link="wheel_1"/>
</joint>
<joint name="joint_base_wheel2" type="fixed">
<parent link="base_link"/>
<child link="wheel_2"/>
</joint>
<joint name="joint_base_wheel3" type="fixed">
<parent link="base_link"/>
<child link="wheel_3"/>
</joint>
<joint name="joint_base_wheel4" type="fixed">
<parent link="base_link"/>
<child link="wheel_4"/>
</joint>
</robot>
3.在rviz中查看增加顏色屬性
<robot name="test_robot">
<link name="base_link">
<visual>
<geometry>
<box size="0.2 .3 .1"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.05"/>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
</visual>
</link>
<link name="wheel_1">
<visual>
<geometry>
<cylinder length="0.05" radius="0.05"/>
</geometry>
<origin rpy="0 1.5 0" xyz="0.1 0.1 0"/>
<material name="black">
<color rgba="0 0 0 1"/>
</material>
</visual>
</link>
<link name="wheel_2">
<visual>
<geometry>
<cylinder length="0.05" radius="0.05"/>
</geometry>
<origin rpy="0 1.5 0" xyz="-0.1 0.1 0"/>
<material name="black"/>
</visual>
</link>
<link name="wheel_3">
<visual>
<geometry>
<cylinder length="0.05" radius="0.05"/>
</geometry>
<origin rpy="0 1.5 0" xyz="0.1 -0.1 0"/>
<material name="black"/>
</visual>
</link>
<link name="wheel_4">
<visual>
<geometry>
<cylinder length="0.05" radius="0.05"/>
</geometry>
<origin rpy="0 1.5 0" xyz="-0.1 -0.1 0"/>
<material name="black"/>
</visual>
</link>
<joint name="joint_base_wheel1" type="fixed">
<parent link="base_link"/>
<child link="wheel_1"/>
</joint>
<joint name="joint_base_wheel2" type="fixed">
<parent link="base_link"/>
<child link="wheel_2"/>
</joint>
<joint name="joint_base_wheel3" type="fixed">
<parent link="base_link"/>
<child link="wheel_3"/>
</joint>
<joint name="joint_base_wheel4" type="fixed">
<parent link="base_link"/>
<child link="wheel_4"/>
</joint>
</robot>
當(dāng)然ROS提供的屬性描述tag還有很多妥曲,具體參見(jiàn):
urdf_description
創(chuàng)建好的模型如下:
car_urdf.png