RobWork机器人框架(1):RobWork的基本介绍

1,364 阅读4分钟

RobWork是一个基于C++开发的机器人工具的集合,主要用于机器人系统的仿真和控制。 RobWork可用于机器人的教学、研究和企业的产品开发。 RobWork包含如下的一些特性:

  1. 各种工业机械臂的运动学建模,如串联(UR/Aubo/Elite/ABB/KUKA/Fanuc等工业操作臂)、并联(Delta并联机器人)和树形机器人(双臂机器人,人性机器人,移动小车,自动驾驶汽车等)。
  2. 通用的路径规划(目前实现的规划算法比较少,只有AWA/RRT/SBL/PRM/Z3这5个规划算法)、路径优化、碰撞检测(目前集成了PQP/FCL/Yaobi/RWPROX,PQP/FCL/Yaobi是第三方的开源碰撞检测库,其中PQP/FCL出自同一个实验室(美国北卡罗来纳大学教堂山分校的GAMMA实验室),其中FCL是该实验室的博士生潘佳写的,当然背后离不开GAMMA实验室在碰撞检测方面多年的技术积累,而Yaobi是瑞典皇家理工学院的一名博士生写的,相关的源码可以从 yaobi.sourceforge.net/ 中下载,Yaobi框架的详细论述可以参考Morten Strandberg博士的毕业论文《Robot Path Planning: An Object-Oriented Approach(2004)》。RobWork对上述3个开源库进行了接口层级的封装,从而用户提供碰撞检测功能,而RWPROX是RobWork官方自己实现的碰撞检测库)和逆运动学算法(提供现成的如UR机械臂和KUKA IIWA机械臂的封闭逆解算法,此外还提供了基于雅可比数值迭代和二次优化的数值迭代逆解算法)。
  3. 机械臂的运动学和动力学仿真、控制器和传感器等。
  4. 吸盘、平行二指夹爪和灵巧手的抓取仿真插件。
  5. 简单可扩展的图形用户界面(RobWorkStudio)及其插件系统,用户可以基于该插件系统编写自己的算法插件并可视化。
  6. 基于SWIG的脚本接口,它将RobWork扩展到多种脚本语言,如Python/Lua/Java等。

RobWork工具集除了核心模块RobWork外,还提供了:

  1. 图形用户界面RobWorkStudio, 用户可基于该图形用户界面可视化仿真运动学、碰撞检测和路径规划等算法。
  2. RobWorkSim提供了动力学仿真的功能。
  3. RobWorkHardware提供了诸多硬件驱动程序,用户可以基于这些硬件驱动程序与RobWork核心模块,开发自己的机器人项目。

RobWork的目标受众:

  1. 需要一个通用的机器人软件框架来辅助实验的研究人员。
  2. 想学习机器人技术的在校大学生。
  3. 机器人产品开发者。

RobWork项目是由南丹麦大学的SDU机器人实验室开发的。该项目由马士基麦肯尼莫勒学院的博士和硕士生于2006年启动。RobWork聚焦于认知和应用机器人。包括工业机器人、机器人控制、数学建模与仿真、康复机器人和外科机器人等领域。

上述就是本文对于RobWork框架的简单介绍,接下来关于RobWork的系列技术文章,将围绕RobWork的编译和安装、RobWork和RobWorkStudio的基本用法展开,并以此为工具,手把手教你机器人的运动学建模和公式推导及算法实现、场景建模、碰撞检测、路径规划、轨迹插补等。 在这个过程中,我会简单的讲解一些机器人学的基本原理,但是不会特别细致入微,因为相关的原理随便一本机器人学的教材都会有详细的介绍。接下来的系列技术文章主要聚焦于机器人学技术的代码实现,即从技术落地的角度去传授机器人学知识,希望能给读者带来不一样的视角。

==================================我是分割线=================================

本人有四年的RobWork使用经验,在日常工作中主要以RobWork作为算法仿真和验证的工具。虽然我在研究生阶段没少花时间学习ROS,但是作为一个机器人行业的从业者,真心觉得ROS太重量级了,门槛过高,虽然资料丰富,但是各种工具包质量参差不齐,初学者通常云里雾里,技术层面很难一杆子插到底,当部门同事想学习机器人技术问我ROS怎么样的时候,我会直接推荐RobWork,而不是ROS。