参考视频271_URDF集成Gazebo_流程下_哔哩哔哩_bilibili
首先,启动Gazebo仿真环境
roslaunch gazebo_ros empty_world.launch
从参数服务器的robot_description加载URDF模型,命名为car
rosrun gazebo_ros spawn_model -urdf -model car -param robot_description
但是报错了:
[INFO] [1682407998.833029, 0.000000]: Loading model XML from ros parameter robot_description
[ERROR] [1682407998.839086, 25.014000]: Invalid XML: mismatched tag: line 22, column 6
应该是URDF文件写得有问题,检查发现是复制的时候,多复制了一个<visual>,再次运行则正常。
但是Gazeb还是没有显示,不报错也不显示模型,注意查看urdf的inertial和inertia有没有拼错,发现真的拼错了,改正如下:
我没出模型的原因是ixy iyy那些必须是1.0,不能是0.0,还有link标签包含三个子标签,完整URDF文件如下:
<robot name="mycar">
<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">
<color rgba="0.5 0.3 0 0.5" />
</material>
</visual>
<!-- 1. 设置碰撞参数 -->
<!--B 如果是标准几何体,直接复制visual的geometry和origin即可 -->
<collision>
<geometry>
<box size="0.5 0.3 0.1" />
</geometry>
<origin xyz="0 0 0" rpy="0 0 0" />
</collision>
<!-- 2. 设置惯性矩阵 -->
<inertial>
<origin xyz="0 0 0" />
<mass value="2" />
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0" />
</inertial>
</link>
<!-- gazebo有自己的颜色设置 -->
<gazebo reference="base_link">
<material>Gazebo/Red</material>
</gazebo>
</robot>
再运行指令就出现了模型