来源:https://www.zhihu.com/question/437857717/answer/1897953312235586570
作者:huyoust
链接:https://www.zhihu.com/question/437857717/answer/1897953312235586570
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
机械臂是怎么运动的?(1);刚好这里面有作者推荐一些软件包。
动力学建模库
对于机器人运动学和动力学建模,我的首选是Pinocchio,Drake, MuJoCo。它们都是积极开发的现代框架,使用 C++ 开发,但提供一流的 Python 绑定。您可能会看到的其他工具包括 Peter Corke 的Robotics Toolbox for Python和MATLAB Robotics System Toolbox。当然,所有这些工具都可以使用URDF文件,从而实现与实际设计的互操作性。


Drake

关于URDF文件可以参考:开源URDF文件数据集
碰撞检查库
包括 Bullet和 Flexible Collision Library (FCL)(用于 MoveIt、Drake 和 Tesseract)。匹诺曹的作者创建了自己的 FCL 变体和改进版,命名为 HPP-FCL。有趣的事实是:HPP 是 Humanoid Path Planner 的缩写,而不是 C++ 头文件的扩展名……不过没关系,因为它正在被重命名。
如果考虑动力学+运动规划
回到我的 “三大 ”模型表示库: 选择应考虑的工具的一种方法是看它们如何与运动规划相连接。
- Pinocchio并不直接支持运动规划,因为它的设计目的是支持规划和控制算法的开发。有一些基于 Pinocchio 的开源最优控制软件包非常出色,如 Crocoddyl 和 OCS2。
- MuJoCo更像是一个建模和仿真框架,因此也不提供太多规划功能。凯文-扎卡(Kevin Zakka)提供了一些不错的示例,展示了 MuJoCo 在机器人机械手控制和逆运动学方面的应用。在撰写本文时,MuJoCo 即将发布对有符号距离场(SDF)的支持,这也是值得考虑的一点。
- Drake有几种内置运动规划算法,但一般都偏向于麻省理工学院 Russ Tedrake 教授研究小组和丰田研究所的研究成果。Drake 提供最先进的基于优化的逆运动学和轨迹优化实现,以及凸集图(GCS)。它还为仿真用例提供了一些高保真流体弹性接触建模支持。
如果只考虑运动规划
- 开放运动规划库 (OMPL): 基于 C++ 的库,用于基于采样的运动规划(与 Python 绑定)。它由 Willow Garage 和莱斯大学开发,于 2012 年发布,支持高自由度机器人,如 Willow Garage 著名的 PR2机器人。OMPL 实现了大量基于采样的规划算法,因此对基准测试和设计探索很有吸引力。尽管年代久远,OMPL 仍在不断更新,并一直是基于采样规划的标准。
- MoveIt: ROS 生态系统事实上的运动规划框架,最初由 Willow Garage 开发,也用于 PR2 用例。由于 Ioan Șucan 参与了这两个项目,因此它主要以基于采样的运动规划而闻名,因为它封装了 OMPL。不过,MoveIt 提供了一个基于插件的系统,用于集成其他逆运动学、运动规划、运动适配器和碰撞检查算法。虽然 MoveIt 有时也会遇到与 OMPL 一样的老化问题,但它仍在不断得到维护,并与 ROS 保持着最紧密的联系。如果您正在使用运行 ROS 的机器人,不妨试试 MoveIt。
- Tesseract:另一个基于 ROS 的运动规划框架,由西南研究院开发,是 ROS-Industrial 联盟的主要成员。它与 MoveIt 有很多相同的设计理念和概念,但它是一个较新的软件包。这意味着,虽然在撰写本文时它还不太流行,但作者已经有机会修正他们在 MoveIt 中发现的一些缺点,如更好地解耦核心功能和 ROS,并通过这种更 “适当”、更易用的 Python 绑定。Tesseract 目前对 TrajOpt 的支持也是最好的。
- cuRobo: 英伟达™(NVIDIA®)公司推出的一款相对较新的产品,它是一个完整的运动规划堆栈,能尽可能多地利用 GPU 加速来展示真正引人注目的结果(并销售 RTX 显卡)。它使用 nvblox 库进行 GPU 加速带符号距离场计算,同时还实现了高度并行化的逆运动学、轨迹优化和碰撞检查。它包含在英伟达 Isaac Manipulator 软件包中,这意味着它与 Isaac Sim 和 Omniverse完美集成。
PyRoboPlan
PyRoboPlan使用Pinocchio来建模机器人运动学和动力学,但是提供更友好的操作与可视化效果。
这些工具中有很多都非常强大,但在我看来,它们并不太适合新手。这就是我创建 PyRoboPlan的原因,这篇文章中的几张截图就来自 PyRoboPlan。它是使用 Pinocchio Python 绑定构建的,但所有运动规划算法都是从头开始开发的,目标是易于理解和修改,而不是太注重性能。我希望你能查看它,运行示例,并通过这种方式自学运动规划!我也非常希望得到反馈和贡献。

推荐Pinocchio,说一些我觉得好的特性:
- Linux系统下安装非常简单、一路畅通,不会出现安装RBDL那样无穷尽的bug(这也是我没选择RBDL的原因之一);
- 教程比较丰富,认真看一段时间就可以上手。特别是支持C++和python两种编程方式,初期可以用python进行代码功能验证,后期再用C++写入机器人控制器;
- 支持URDF模型导入,利用内部封装函数可以快速开展动力学验证;
- 支持前向动力学、雅可比矩阵及其导(Hessian矩阵)、逆向动力学(迭代的牛顿欧拉算法),而且可以计算动力学方程的M, C, G项(其中科氏力矩阵满足dM/dt – 2*C反对称特性),这对后续基于model-based control方法的机械臂或四足机器人控制来说是至关重要的参数;
- 计算速度足够快(DLR LWR 7自由度机械臂逆动力学计算时间不到1us,release模式)。


我以kuka iiwa7为例,写了一个简单的python测试脚本,里面涉及到计算逆动力学的一些函数,我也做了详细的注释,方便大家快速入手Pinocchio,链接如下:
觉得有用的话记得给我来颗星星呀,哈哈~

评论0