我试图在drake中使用凸面网格作为碰撞几何体。在我的简单示例中,我将地平面作为第一个碰撞几何体,并从下面的urdf文件加载对象。其中tri_cube.obj
是来自drake/multibody/parsing/test/urdf_parser_test
的凸网格。当我运行模拟时,它将继续进行,直到立方体撞击地平面。然后它停止,我得到以下错误消息:Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
。任何帮助都将不胜感激
<?xml version="1.0"?>
<robot name="my_ball">
<material name="Black">
<color rgba="0.0 0.0 0.0 1.0"/>
</material>
<link name="base_link">
<inertial>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
<mass value="5"/>
<inertia ixx="0.05" ixy="0" ixz="0" iyy="0.05" iyz="0" izz="0.05"/>
</inertial>
<visual>
<geometry>
<mesh filename="tri_cube.obj" scale="1.0 1.0 1.0">
</mesh>
</geometry>
<material name="Black"/>
</visual>
<collision name='collision'>
<geometry>
<mesh filename="tri_cube.obj" scale="1.0 1.0 1.0">
<drake:declare_convex/>
</mesh>
</geometry>
<drake:proximity_properties>
<drake:mu_dynamic value="1.0" />
<drake:mu_static value="1.0" />
</drake:proximity_properties>
</collision>
</link>
</robot>
我有一个短期和长期的答案:
短期:用顶面与半空间边界共面的大盒子替换地面半空间
长期:FCL有一个需要修补的bug。它没有理由不能支持半空间凸面接触。由于某些无法解释的原因,它没有启用。因为它没有被启用,它最终会沿着一条显式不支持半个空格的代码路径螺旋上升,然后默默地对错误进行分段
我会更新FCL,当这发生时,德雷克将继承善良。我可能需要几天的时间来修补、测试、审查和传播到Drake。因此,如果时间框架不起作用,使用短期“盒子”解决方案
我将在FCL被修补并且该修补反映在Drake中时更新此内容
相关问题 更多 >
编程相关推荐