有时一些可以在rviz中显示的模型无法在Gazebo中显示,Gazebo运行时也没有出现报错信息。这有可能是因为没有在xarco模型里加上碰撞参数<collision>和惯性参数<inertial>。
参考以下例子:
只有<visual>标签时:
<link name="base_link">
<visual>
<geometry>
<cylinder length="1" radius="1" />
</geometry>
<origin xyz="0.0 0 0 " rpy=" 0 0 0" />
</visual>
</link>
并没有显示模型中描述的圆柱体 现在我们为模型加上碰撞和惯性的描述:
<link name="base_link">
<visual>
<geometry>
<cylinder length="1" radius="1" />
</geometry>
<origin xyz="0.0 0 0 " rpy=" 0 0 0" />
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<cylinder length="1" radius="1" />
</geometry>
</collision>
<inertial>
<origin xyz="0 0 0" />
<mass value="100" />
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0" />
</inertial>
</link>
此时就可以看到Gazebo中显示出的圆柱体:
一些只用于展示形状效果的urdf模型文件或者xarco文件往往可能只有<visual>可视标签来描述模型。显然当我们需要使用Gazebo进行仿真时就需要为他们加上对应的物理性质。
本例中的完整代码:
<?xml version="1.0"?>
<robot name="fw" xmlns:xacro="http://www.ros.org/wiki/xacro">
<xacro:macro name="fw">
<link name="base_link">
<visual>
<geometry>
<cylinder length="1" radius="1" />
</geometry>
<origin xyz="0.0 0 0 " rpy=" 0 0 0" />
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<cylinder length="1" radius="1" />
</geometry>
</collision>
<inertial>
<origin xyz="0 0 0" />
<mass value="100" />
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0" />
</inertial>
</link>
</xacro:macro>
</robot>