介绍
在前边提过的rviz中,只负责整体机器人的建模和运动,而在gazebo中集成urdf文件则需要考虑碰撞参数、惯性矩阵等运动学因素,这也导致了这两个环境下的urdf文件略有不同。
两种实现
我们来看看同样是实现一个box形状的物体,在RVIZ和gazebo中的urdf文件区别吧:
- RVIZ下的URDF文件:
<robot name="my_geometry">
<link name="base_link">
<visual>
<!-- 形状 -->
<geometry>
<!-- 长方体的长宽高 -->
<box size="0.5 0.3 0.1" />
</geometry>
<!-- xyz坐标 rpy翻滚俯仰与偏航角度(3.14=180度 1.57=90度) -->
<origin xyz="1 1 1" rpy="0 0 0" />
<!-- 颜色: r=red g=green b=blue a=alpha -->
<material name="black">
<color rgba="0.7 0.5 0 1" />
</material>
</visual>
</link>
</robot>
- GAZEBO下的URDF文件:
<robot name="robot">
<link name="base_link">
<!-- 设置可视化部分 -->
<visual>
<geometry>
<box size="0.5 0.3 0.1" />
</geometry>
<origin xyz="0 0 0" rpy="0 0 0" />
<material name="yellow" >
<!-- 在gezobo中不能使用,透明化了 -->
<color rgba="0.5 0.3 0 0 0.5" />
</material>
</visual>
<!-- 设置碰撞参数 -->
<collision>
<!-- 如果是标准几何体,直接复制visual的geometry和origin即可 -->
<geometry>
<box size="0.5 0.3 0.1" />
</geometry>
<origin xyz="0 0 0" rpy="0 0 0" />
</collision>
<!-- 设置惯性矩阵 和重心有关-->
<inertial>
<!-- 等质的,基本和关节位置一样的 -->
<origin xyz="0 0 0" rpy="0 0 0" />
<!-- 质量/kg -->
<mass value="2" />
<!-- 不同纬度的惯性参数 仿真矩阵-->
<inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1" />
</inertial>
</link>
<!-- gazebo自己的颜色设置 -->
<gazebo reference="base_link">
<material>Gazebo/Red</material>
</gazebo>
</robot>
对比发现
- 创建包时依赖不同:
rviz: urdf 、xacro
gazebo : urdf、xacro、gazebo_ros、gazebo_ros_control、gazebo_plugins - 颜色设置不同;
- gazebo中多了惯性矩阵和碰撞参数。
gaze中的urdf文件
1. 碰撞参数设置
collision: 如果机器人link是标准的几何体形状,和link的 visual 属性设置一致即可。
2.惯性矩阵设置
inertial: 惯性矩阵的设置需要结合link的质量与外形参数动态生成,标准的球体、圆柱与立方体的惯性矩阵公式已封装见下节,如果设置的不对的话,会导致机器人胡乱运动、抖动、刹车失灵等现象。
除base_footprint外,其余均需要设置。
3.颜色设置
<gazebo reference="link节点名称">
<material>Gazebo/Blue</material>
</gazebo>
颜色可以换,大写字母开头。
共通点就是尽量都用英文注释。