Ros2 - Moveit2 - 使用 Bullet 进行碰撞检查
除了灵活碰撞库 (FCL) 之外,Bullet 碰撞检测也可用作碰撞检查器。本教程以可视化碰撞教程为基础,展示碰撞。
此外,还提供连续碰撞检测(CCD),并通过 Bullet 进行演示。
入门
如果您还没有这样做,请确保您已经完成入门指南中的步骤。
运行代码
使用 Roslaunch 启动文件直接从 moveit_tutorials 运行代码:
roslaunch moveit_tutorials bullet_collision_checker_tutorial.launch
现在您应该可以看到熊猫机器人和一个带有可拖动交互式标记的框。请注意,与 FCL 不同,Bullet 不会计算形状的所有单个接触点,而只会计算最深穿透点。
左图:FCL 碰撞结果。右图:子弹碰撞结果。
请注意,由于内部碰撞管理器是可变成员,因此 Bullet 作为碰撞检测器的当前实现不是线程安全的。
持续碰撞检测
此外,Bullet 具有连续碰撞能力。这意味着可以保证在两个离散机器人状态与环境之间的过渡期间不会发生碰撞。要获得 CCD 的演示,请单击RViz 左下角面板上Next
的按钮moveit_visual_tools
。交互式机器人消失,机器人出现在手就在箱子后面的状态。再次按下下一步时,机器人跳转到手就在箱子前面的配置。在这两种状态下,均未检测到碰撞(参见终端输出)。
左图:配置 1 中的机器人。右图:配置 2 中的机器人。
接下来Next
,使用铸造机器人模型在两个离散姿势之间执行 CCD。报告碰撞(有关详细信息,请参阅终端输出)。