有时一些可以在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>

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐