URDF 机器人模型
URDF 模型的两个重要属性
link
描述机器人某个刚体部分的外观和物理属性;
描述连杆尺寸(size)、颜色(color),形状(shape) 惯性矩阵(inertial matrix),碰撞参数(collision properties)等。
每个Link会成为一个坐标系
<link name="link 4">
<visual>
<geometry>
<mesh filename="link 4.stl"/>
</ geometry>
<origin xyz="0 0 0" rpy="0 0 0"/>
</visual>
<collision>
<geometry>
<cylinder length="0.5" radius="0.1"/>
</ geometry>
<origin xyz="0 0 -o.05"rpy="0 0 0"/>
</ collision>
</ link>
joint
描述两个link之间的关系,分为六种类型;
包括关节运动的位置和速度限制;
描述机器人关节的运动学和动力学属性。
关节类型 | 描述 |
---|---|
continuous | 旋转关节,可以围绕单轴无限旋转 |
revolute | 旋转关节,类似于continuous 但是有旋转的角度极限 |
prismatic | 滑动关节,沿某一轴线性移动的关节,带有位置极限 |
planar | 平面关节,允许在平面正交方向上平移或者旋转 |
floating | 浮动关节,允许进行平移、旋转运动 |
fixed | 固定关节,不允许运动的特殊关节 |
<joint name="joint_2" type="revolute ">
<parent link= "link_1"/>
<child link= "link_2"/>
<origin xyz="0.2 0.2 0" rpy="o o 0"/>
<axis xyz="O 0 1"/>
<limit lower="-3.14" upper="3.14" velocity="1.0"/>
</joint>
创建功能包
catkin_create_pkg mbot_description urdf xacro
安装rviz里的gui
sudo apt-get install ros-melodic-joint-state-publisher-gui
检查 URDF 模型的整体结构
urdf_to_graphiz mbot_base.urdf
xacro
xacro 相比于 urdf 的优点
精简模型代码
- 创建宏定义
- 文件包含
提供可编程接口
- 常量
- 变量
- 数学计算
- 条件语句
常量定义
<xacro:property name="M_PI" value="3.14159"/>
常量使用
<origin xyz="o0o" rpy="${M_PI/2}0 0"/>
数学计算
<origin xyz="0 ${(motor_length+wheel_length)/2} o" rpy="o 0 0"/>
宏定义
<xacro:macro name="name" params="AB C">
···
</xacro:macro>
宏调用
<name A= "A_value" B="B_value" C= "C_value"
文件包含
<xacro:include filename="$(find mbot description)/urdf/mbot base gazebo.xacro"/>