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

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐