ROS 2 机器人物理属性配置与 Gazebo 仿真导入
在 Rviz 中,机器人模型往往只是视觉展示,可以穿墙或悬空,因为它不受物理定律约束。而 Gazebo 提供了重力、摩擦力和碰撞检测。如果模型缺乏质量(Mass)或碰撞体积(Collision),它要么会掉进地心,要么会被物理引擎直接剔除。
为了让机器人在仿真环境中真正'活'过来,我们需要完成两个核心步骤:升级 Xacro 文件以添加惯性及碰撞属性,以及编写 Python 启动脚本将机器人实例化到 Gazebo 中。
封装惯性计算宏
手动计算转动惯量涉及复杂的微积分公式,容易出错。利用 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>
<xacro:macro name="inertial_cylinder" params="mass length radius">
<inertial>
<mass value="${mass}"/>
<inertia ixx="${(1/12) * mass * (3*radius*radius + length*length)}" = = = = =/>


