python - 使用凸网格作为碰撞几何体时退出代码 139
问题描述
我试图在德雷克中使用凸网格作为碰撞几何。在我的简单示例中,我有一个地平面作为第一个碰撞几何体,并从下面的 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 需要修补。它没有理由不能支持半空间凸接触。由于某些莫名其妙的原因,它未启用。因为它没有被启用,它最终会沿着一条明确不支持半空格的代码路径螺旋下降,然后默默地出现段错误。
我会更新整箱,当这种情况发生时,德雷克将继承善良。我可能需要几天的时间来修补、测试、审查并传播到 Drake。因此,如果时间框架不起作用,请使用短期“盒子”解决方案。
当 FCL 被修补并且该补丁反映在 Drake 中时,我会更新这个。
推荐阅读
- scala - 如何使用 Scala 在 Spark 数据框中为每个不同的列值创建行 ID 列
- ios - 使用什么 CIFilter 来获得扫描效果?
- wpf - 使用网格控件调整大小时应用程序内存迅速增加
- c# - Unity 的 GetComponent 通过字符串(或通过从另一个脚本传递的其他方法)
- c# - 如何为 WPF 应用程序和 ASP.net 应用程序创建安装程序?
- c++ - 从另一个程序检查 cin 而无需在 OSX 中等待
- javascript - 如何安全地跨域将表单从静态 html 站点提交到服务器端后端?
- file - 将具有特定文件名的文件从一个文件夹移动到另一个文件夹
- r - 在 R 中尝试子设置数据框
- xml - How are empty text-nodes processed?