1、前言
我最近在进行gezebo中仿真过程中发现,我的机械臂会穿模。
原因我设置的xacro文件的碰撞体的位置不正确。
2、具体分析
xacro文件分析。
<link name="table_link">
<visual>
<geometry>
<mesh filename="file://$(find ur_gazebo)/meshes/table/visual/complete_table.dae"/>
</geometry>
<material name="Grey">
<color rgba="0.4 0.4 0.4 1.0"/>
</material>
<origin xyz="${table_length/2} ${table_length/4} 0" rpy="0 0 0" />
</visual>
<collision>
<origin xyz="${-table_length/2} ${-table_length/2} ${table_height/2}" rpy="0 0 0" />
<geometry>
<box size="${table_length} ${table_length} ${table_height}"/>
</geometry>
<material name="Grey">
<color rgba="0.7 0.7 0.7 1.0"/>
</material>
</collision>
<inertial>
<mass value="50"/>
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
</inertial>
</link>
这个xacro文件是一个开源连接里面写好的。
但是我在使用的时候没有仔细的去看里面的内容。
我发现我的机械臂一直是处于一个穿模的状态。
2.1详细解释xacro文件含义。
主体包含三大块`visual` 、`collision`、`inertial`。
分别代表了显示特性以及碰撞属性、以及惯性属性。
我们最初的碰撞属性是错误的,但是我们有注意到,且没有看到和上面显示属性的不同。
且他的碰撞体的几何形状是一个box。
2.2修改
<link name="table_link">
<visual>
<geometry>
<mesh filename="file://$(find ur_gazebo)/meshes/table/visual/complete_table.dae"/>
</geometry>
<material name="Grey">
<color rgba="0.4 0.4 0.4 1.0"/>
</material>
<origin xyz="${table_length/2} ${table_length/4} 0" rpy="0 0 0" />
</visual>
<collision>
<!-- <origin xyz="${-table_length/2} ${-table_length/2} ${table_height/2}" rpy="0 0 0" /> -->
<origin xyz="${table_length/2} ${table_length/4} 0" rpy="0 0 0" />
<geometry>
<!-- <box size="${table_length} ${table_length} ${table_height}"/> -->
<mesh filename="file://$(find ur_gazebo)/meshes/table/visual/complete_table.dae"/>
</geometry>
<material name="Grey">
<color rgba="0.7 0.7 0.7 1.0"/>
</material>
</collision>
<inertial>
<mass value="50"/>
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
</inertial>
</link>
以上是我修改后的结果。
我们修改了碰撞体设置的位置,且把box换成我们几何体的形状。
3、我是如何知道我的碰撞属性设置错误的呢??
重点:
我们找到我们gazebo上面的栏目有一个view的选项。
然后找到里面的collisions的碰撞特性打上勾。
其带有碰撞特性的 物体就展示出来了。