为什么需要 Gazebo 仿真
在 Rviz 里,机器人是可以穿墙的、悬空的,因为它不受物理定律约束。
但在 Gazebo 里,有重力、摩擦力、碰撞。如果我的机器人没有'质量'(Mass)或者'碰撞体积'(Collision),它要么会掉进地心,要么会被物理引擎直接删除。
为了让机器人'活'过来,主要做了两件事:
- Xacro 升级:添加 Inertial(惯性)和 Collision(碰撞)属性。
- Launch 编写:编写 Python 脚本把机器人'生'在 Gazebo 里。
开发步骤
1. 准备惯性宏定义 (Inertial Macros)
给轮子算转动惯量太难了,利用 Xacro 的宏定义功能,封装了球体、圆柱、方块的惯性计算公式。
在 .xacro 文件头部添加宏定义:
<xacro:macro name="inertial_sphere" params="mass radius">
<inertial>
<mass value="${mass}"/>
<inertia ixx="${(2/5) * mass * (radius*radius)}" ixy="0.0" ixz="0.0" iyy="${(2/5) * mass * (radius*radius)}" iyz="0.0" izz="${(2/5) * mass * (radius*radius)}"/>
</inertial>
</xacro:macro>
2. 给部件添加碰撞与惯性
修改 base_link、wheel_link 等部件,在 <visual>(外观)同级目录下,添加 <collision>(碰撞)和宏调用的 <xacro:inertial...>。
以车身为例:
<link name=>



