曹洪鑫,张向慧,张忠海, 王红伟, 王漪梦
(1.北方工业大学 机械与材料工程学院,北京 100144;2.北京航天测控技术有限公司,北京 100041)
机械臂从诞生到现在已经快要一个世纪,研究学者们对机械臂的热情非但没有减弱,反而越来越强烈。现如今,机械臂应用的场合越来越广泛,比如:航空航天、船舶工程、生物医疗、轻工业等。机械臂给人类生产生活带来极大的便利,甚至现在一些机械臂能出色的代替人完成任务。
ROS是一个针对机器人的开源、元级操作系统。它提供了用户在操作系统上所期望的服务,包括硬件抽象、低层设备控制、常用功能的实现、进程之间的信息传递以及包管理。它还提供了在多台计算机上获取、生成、编写以及运行代码的工具和库。国内目前可以使用GitHub、ROS wiki进行使用,同时gitee码云平台也包含了许许多多开发者们的代码分享。
ROS中的核心称为节点。节点通常为使用Python或C++编写的小程序,用于执行一些相对简单的任务或过程。节点可以相互独立的启动和停止,并通过传递消息进行通信。节点可以在某些主题上发布消息或向其他节点提供服务。如控制执行器、运行导航算法、处理图像、发布传感器数据等。节点可以定义一个或多个服务。当从一个节点发送请求时,ROS服务会产生某个行为或发送应答[1],比如当给定一个目标位置和机器人的初始位姿时,返回一个机械臂运动规划的服务。
国内外都在为了充分发挥机器人机械臂的工作效率和工作能力而进行研究,尤其是实时控制系统的开发也是各企业科技平台的必争之地,对于机器人机械臂的实时控制系统开发不论是对个人还是企业来说都至关重要。
机械臂是一个复合产品,其中包含了比如机械结构、机电系统运动学和动力学、传感器及其信号处理技术、线性与非线性系统分析、控制系统设计、终端展示界面等知识,整个机械臂系统就是一个小型的现代科技知识集合体,美国在这一方面走在了时代的前面,早在1920年就已经有了完成重复的人类工作的机械臂产品[2]。
Demir[4]等人的机器人手臂。如图1,机械臂控制系统中执行人和机械臂是分开进行的,分别采用Kinect 技术和虚拟现实技术,可以实时的对人的动作进行复制,控制机械臂完成人手的动作,在研究中也通过空荡的房屋等条件保证实时性体验、排除其他因素的干扰。文献[5]进行了多自由度机械臂控制系统的研究,其中包括机电系统动力学知识、机械臂路径规划算法、运动逻辑控制问题以及针对不同要求设计机械臂末端轨迹点的插值算法等。它所用的开发工具是主要包括 STM32 控制板和搭载有机械臂控制系统的工控机等,搭载在工控机上的软件实现了机械臂运动控制可视化以及机械臂与工控机的通信。实验结果表明,在一定程度的实时性和稳定性下,该控制系统能够准确跟踪机器人的轨迹。
图1 Demir 中机械臂控制系统
现在,ROS已经随着时间的推移成为了一个不可或缺的机器人开发平台,各种各样的机器人层出不穷,图2是 PR 2 机器人在日常生活场景中的应用,从中可以看出机器人已经从实验室产品逐渐变为了生活的帮手,能够更好地服务人类活动[6]。
图2 PR2 机器人完成各项任务
太空机器人 R2(Robonaut2)[7]也使用 ROS 作为控制平台,它由 NASA 和通用汽车公司合作开发,目的就是为了在太空中代替人类进行空间作业。如图3所示,目前,R2型机器人已经在国际空间站进行了许多年的试验研究,近年来将它的功能与生产实际相结合,与移动平台进行整合,进一步的拓展它在生产生活中的使用场景。针对于ROS 2的升级版本还在进行开发,随着ROS的版本发展,ROS 2的发展也就可以预见了,这也说明了 ROS 系统的控制能力和功能拓展的前景值得肯定。
图3 太空机器人R2
当今技术比较完善的是瑞士苏黎世的Neuronics公司的Katana 机械臂和德国宇航中心的 LWR Ⅲ轻便型机械臂。
瑞士 Neuronics 公司最新发布的机械臂 Katana 1.2[6]。这是一个常规的六自由度机械臂,但是它的主板功能强大,提供了充足的外设接口,这些外设接口可以让开发者们充分发挥才智,针对不同的环境集成到不同的环境中去,也是因为这个强大的主板,两个或者多个机械臂之间可以协作完成任务。主板采用了高端的PowerPC处理器,该处理器包含USB,CAN Open,Ethernet,串口以及一些标准数字 I/O 接口。主板具有自主开发的实时最优的嵌入式 Linux 内核,运行ROS平台毫无压力,同时为了充分发挥它的功能,便于连接、可以进行多方配置、标准 API 可用性、断网单机操作等方面都进行了功能的添加。图4展示了机械臂本体和基于ROS平台的操作界面。
图4 Katana 机械臂和抓持器
国内ROS的研究者与研究机构也越来越多。文献[8]使用ROS平台进一步探索应用场景,根据用户需求,采用搭载了ROS的工控机将不同模块的接口进行统一化,解决了轮椅控制系统中的控制问题,同时添加了语音导航,让轮椅更加智能,更好地服务人类。文献[9]则又在另一个场景也进行了积极的探索,将ROS平台带上了最近热火的无人机研究中,如图5所示,配置了位置GPS以及位姿惯性导航传感器,无人机上安装有小型的工控机,自行编写 ROS 节点进行通讯以及控制,为了能够在地面操控无人机,专门设置了地面站系统。文献[11]将应用场景瞄准了移动机器人,采用ROS平台与移动机器人进行结合,主要用途是采样任务,本体是五自由度机械臂,将各个模块进行整合设计出了一整套完整可靠的控制系统,可以协调的实现采样功能。文献[12]在学位课题中应用ROS对码垛机器人的控制系统进行研究,这个系统可以直观的显示在Gazebo中,能够清晰的显示仿真过程。
图5 空中机器人平台
同时文献[13]基于ROS进行打磨机器人控制系统的相关研究,通过实体机械臂进行实验,工控机上采用了Xenomai+Linux双内核实时系统,将实体机械臂、工控机、打磨砂带机进行配合完成实验,其中机械臂末端为打磨工件,这个打磨工件可以根据路径规划的情况实现零件的打磨形状的控制;控制系统底层搭建了 EtherCAT 总线协议的主从站系统,控制系统上层使用 ROS 控制器发布控制消息。
图6 机械臂走曲线轨迹的仿真过程
图7 实体机械臂曲线运动
在软件层面,目前在国内的各种资源网站上,已经可以找到的是各个开发者们基于机械臂进行优化所得到的各种软件仓库,比如多自由度机械臂所需要的正逆运动学解算器库(KDL,kinematics and dynamics library),开源路径规划算法库(OMPL,the open motion planning library),以及将上述两个打包组合在一起并集合了倒入模型,设置模型为一体的方便开发者集中调用的MoveIt工具软件,最后就是对机械臂进行方针的Gazebo仿真软件,其中MoveIt工具软件的节点为ros_control,这样可以更方便开发者掌握基本的使用逻辑。在实际应用中,典型的就是在UR5 机械臂[15]、aubo机械臂、国产自研机械臂、PR 2 等机器人平台上进行测试,基于ROS进行多场景的实验与开发。图8就是五自由度移动作业臂的开发实例。
图8 五自由度移动作业臂
文献[16]在移动平台样机上搭建ROS,实现SLAM和导航功能,使用七自由度冗余机械臂与双目立体视觉相机基于SURF算法检测标签类型和数据,使用移动机器人平台进行开门实验,并在Gazebo中进行移动机器人的仿真模型演示,成功完成了对旋转门和侧拉门的打开。演示结果如图9所示。
图9 机器人开门实验步骤
Linux是一个分时系统,但是基于Linux进行机械臂的实时控制系统研究就要首先考虑到实时性问题,如何让机械臂准确,实时的对工控机进行响应就至关重要,为了解决这个问题,许多实时操作平台就产生了, Windows CE、RTLinux、RTAI、BlueCat、TimeSys Linux等,下面介绍一下其中两种解决方案:
文献[13]采用搭载打磨机械臂的EtherCAT总线主站、Xenomai+Linux双内核实时操作系统及ROS控制系统的工控机进行上位机控制,EtherCAT总线是一种现场总线技术,在工业中使用较多,具备高实时性,高同步性等优点,最快的传输速度可以达到100 Mbit/s,同步网段内精度可以达到1 μs,同时采用CAN Open作为伺服控制协议,上位机基于Linux系统进行设计,使用ROS控制系统来执行实时任务,其构建了使用Xenomai作为Linux系统实时补丁的方法来解决。大致原理如图10所示。
图10 Xenomai实时系统框架
其设计的打磨机械臂控制系统的总体框架显示如图11所示。
图11 控制系统总体框架
文献[17]采用在Linux系统中加入RT补丁进行实时性改造的方法来实现机械臂的实时系统搭建,其基本原理为使用RT补丁工具集将实时性任务设置为优先性,经过改造以后的实时系统进行实验,测试结果显示系统的最大延迟时间为436 μs,平均延迟时间为193 μs,Linux系统实施改造可以达到要求。其实时系统的组成图如图12所示。
图12 机械臂控制系统示意图
第一种方式是对Linux系统内核[23-26]进行改造的方法进行实时性任务的处理,第二种方式是对Linux系统进行补丁[21-22,27-28]的方式进行系统的实时性任务处理,都是为了解决Linux系统是典型分时系统的实时性解决方案,由于现在ROS平台的应用越来越多,相应更多的实时性解决方案涌现,2020年ROS 2版本发布,这一版本本身具有更加优秀的实时性体验,期待着更多的软件开发者投身入开发行列,不断丰富ROS的实时性功能。
2.2.1 机械臂移动操作
现在基于ROS系统的实时控制系统搭建过程中,普遍使用强大的集成运动功能包:即MoveIt,例如文献[18]针对传统机械臂系统设计工作量大,可移植性差的缺点,以自制SCARA型机械臂开发出机械臂控制系统,它使用MoveIt平台将机械臂SolidWorks三维机械模型转换成机器人描述格式URDF文件(unified robot description format),以编程语言的形式抽象的将机器人各个关节数据和大小、运动模型、动力模型、碰撞模型等进行描述。
接着通过C++进行具体的项目点的规划,或者给定起始点和终止点,ROS就会基于随机采样的运动规划算法库OMPL完成轨迹规划等任务,同时由于建模的文件格式中采用了碰撞模型,所以规划的轨迹会避开障碍物和自身干涉等碰撞状态。其基本交互逻辑如图13所示。
图13 MoveIt基本交互逻辑演示图
MoveIt是一个机器人移动操作相关的工具集软件,集成了各种SOTA库,包括:运动规划、轨迹插值、机械臂操作、3D感知、运动学、碰撞检测、控制、导航、交互等功能包,其核心节点为move_group,集成了各种组件,用于提供各种ROS动作和服务供用户使用。
MoveIt是现在实现机械臂正逆运动学的有力工具之一,现在的开发者都在积极的使用此工具平台进行机械臂的控制系统开发工作,向上面提到的将已经有的CAD三维模型文件进行转化,转化成为URDF格式的文件,导入到MoveIt Setup Assistant中进行模型的匹配,此工具可以标定机械臂关节数、关节链接情况、关节大小、配合、运动约束、碰撞情况、限位等参数情况;完善运动学模型,依托于ROS平台进行与其他模块的通讯,服务于项目开发。
2.2.2 运动规划算法
在MoveIt中通过插件机制与运动规划器插件进行交互,可以使用多个库的不同运动规划器,使得其扩展性更强,其中默认使用的运动规划器是OMPL(open motion planning library)库。它是一个基于采样方法的开源机器人运动规划库(基于C++),其中的算法大多是基于RRT和RPM衍生出来的,比如RRTStar、RRT-Connect等等。正是由于OMPL其模块化的设计,前端GUI的支持、稳定的更新,已经成为目前最主流的运动规划软件(ROS默认使用OMPL)。
文献[15]基于ROS进行移动操作机械臂的底层规划以及运动仿真介绍了两种基于随机采样的路径规划算法:概率路标法PRM和快速扩展随机树法RRT;正是由于RRT算法在高维空间路径搜索方面具有更强的适应能力,所以其采用了FCL碰撞检测库作为RRT算法碰撞检测的工具,对路径进行优化,用以提高这个算法的搜索效率,下面是其应用OMPL运动规划算法所进行的动态障碍物轨迹规划仿真图,从图14中可以看出使用OMPL运动规划算法库在机械臂进行轨迹规划中可以极大的简化规划过程,更高效的解决实际应用问题。同时由于可以应用C++外接程序进行具体任务的设置,所以极大的提高了项目灵活度和可实施性。
图14 臂动态避障仿真实验末端运动轨迹
文献[19]进行了基于Linux的SCARA型机械臂运动控制系统的研究,在他的研究中使用OMPL运动规划库进行点到点的轨迹规划,通过刀具补偿算法进行轨迹点的设计,把刀具补偿算法规划出来的点下发给ROS,然后根据运动规划库进行行进。轨迹点如图15所示。
图15 SCARA型机械臂运动的实现
同时在各个平台上都有研究机械臂运动规划算法的人,比如文献[20]通过对工业六自由度机械臂的轨迹规划研究,着重介绍了NURBS用于关节空间的轨迹规划,并将NURBS与改进遗传算法相结合得到一条可以减弱运动中冲击的轨迹点,文献中分析了三次样条插值、五次样条插值等各种轨迹规划算法的核心技术点,更能方便理解和掌握OMPL运动规划库中算法的原理与优势。
2.2.3 机械臂仿真演示
Gazebo是Linux系统下的一款机器人仿真器,能够在复杂的室内和室外环境中有效的模拟单个机器人或者机器人群以及一些场景设置,它提供高保真度的物理模拟和一整套的传感器模型,并且是和ROS平台一起使用的,更方便的让我们能够通过ROS平台进行开发演示仿真分析,比如文献[15]的移动机械臂底层规划、文献[13]的打磨机器人控制系统、文献[19]的基于Linux的SCARA型机械臂运动控制系统、文献[18]的机械臂控制系统设计都采用了Gazebo进行模型的仿真演示,从不断的调整中修改参数和模型算法,在仿真器中不断的模拟,成功后进行实体的验证步骤。图16展示了文献[18]Gazebo仿真演示图。
图16 Gazebo中机械臂轨迹规划展示
2.2.4 人机交互控制界面
Rviz是一款三维可视化平台,一方面能够实现对外部信息的图形化显示,另一方面则是可以通过Rviz给对象发布控制信息,从而实现对机器人的检测与控制。
Rviz主要的目的就是以三维方式显示ROS消息,可以将数据进行可视化表达,例如在文献中会有机器人模型和坐标系直观的显示在Rviz中,如图17所示。
图17 机器人模型和坐标系在Rviz中显示
同时可以进行编程显示出界面进行各个数据的信息采集和分析:比如文献中出现的采用GUI界面进行数据流的界面查看如图18所示。
图18 GUI控制界面和数据流查看界面
还有许多用来初步显示实验中各个关节的力矩、位置等参数的控制界面可以在Rviz中实施监控,这样可以在项目和实验中更有说服力,同时一旦出现了问题,也更容易找到问题所在。
目前国内国外基于ROS进行开发的机器人机械臂实时控制系统正在如火如荼地向前发展,而且基于ROS进行相关项目开发也显现出了极大的优势,为了充分发挥当前计算机和传感器等硬件的优势,使用ROS开发机械臂实时控制系统会越来越多。从国内外发展来看,国外发展迅速,国内正迎头赶上,正是由于这种积极的开发氛围,贡献了多种实时系统的解决方案,极大地促进了控制系统的研究。尽管国内外专家取得了很大的进步,但是仍然存在以下几点问题:
1)机械臂控制系统的实时性不足:
经过调研,已有的研究中大多集中在通过离线或者可控智能穿戴设备[29-38]的方式控制机械臂的运动,需要具备更好响应能力的硬件或者是修改ROS版本的底层架构来解决这个实时性不足的问题;
2)机械臂运动精度不足:
实时控制机械臂工作过程中,由于一些内部传感器等问题还是会造成震动、误差等的问题,如何保证高精度的柔顺系统进行实时控制还是当前的主要技术要点之一;
3)ROS控制系统更新迭代过快,后续维护不足:
针对不同版本的ROS平台进行机械臂实时控制系统的开发是亟待解决的问题,不同版本上位机的控制系统在设计过程中结合下位机无法完整的形成一个有效的实时控制器。随着最新的ROS neodic版本的发布,ROS 2的实时性任务处理功能更强,需要更多人员和资源跟进;
4)Linux控制系统个性化明显,规范性不足:
机械臂运动学规划、末端轨迹规划以及避障算法等是研究中亟待解决的问题,所以我们需要使用Linux下的Gazebo、MoveIt、RViz等工具进行正逆运动学规划与仿真模型的问题解决,需要更加注重标准化;
5)缺乏创新意识,拓展性不足:
随着传感器种类越来越丰富,对于机械臂的控制要求越来越高,我们不可避免的就是针对于传感器的优化问题,不能固步自封,要不断的结合新型传感器发觉市场和学术研究方向,不断探索;同时也要设法将ROS的控制系统结合到更加具有前景的行业中。
基于ROS机械臂实时控制系统的发展方向应符合工业自动化、智能化需求,基于其自身技术与市场要求,结合国内外研究现状及重点技术的研究情况,可以将ROS下机械臂实时控制系统发展趋势概括如下。
1)工业自动化和智能化:
随着我国工业设备越来越偏向于高精尖方向发展,对于工业设备的自动化和智能化需求就会越来越强烈,依托 ROS平台的机械臂控制系统在现有的基础上可以在工业设备更新迭代过程中提供更加优秀的机器人解决方案,极大地提高实际工业生产的效率。
2)功能复合化,标准化:
正是由于ROS系统本身的优势,所以可以结合各种传感系统,针对每一种传感系统采用不同的程序算法提取数据,运用数据实现机械臂的实时性控制,随着新型传感器的发展,ROS也会与时俱进,不断的通过新型传感系统丰富自身,在不断积累与实际使用中拓展发展空间,提高实时性和精度,同时针对已经研究透彻的功能包,势必会选择众多解决方案中的最优解,形成标准化的软件功能包。
3)强适应性,支持复杂工况场景:
机械臂的终端具有多样性,基于ROS的机械臂控制系统具有避障、路径规划等功能,针对复杂的工况可以根据产线要求采用不同的终端来实现机械臂的可移植性,可以应用到援救、医疗等行业,适应更加丰富的工作场景,有利于设备的充分利用以及降低成本。
4)软硬件结合,齐头并进:
目前机械臂受限于成本,使用场景等原因,多采用位置控制器,随着力位一体式机械臂的发展,为了提高稳定性和精度,必然开发硬件的更多功能,高效的完成以后的工业任务,让机械臂更加像人手一样工作。
5)技术交叉融合:
现代工业的发展离不开人工智能、物联网、大数据和云计算等技术的支持,基于ROS的机械臂控制系统可以借助高新技术充实自己,打破传统行业的限制,探索更多的可能性,更好的服务人类。
综上所述,机械臂的实时控制系统主要涉及到的发展方向就是控制器的开发优化以及应用已有控制器进行轨迹优化算法与应急避障处理。前者需要进行控制器的整体构建以及开发,而后者是基于已有控制器进行设计规划,使用外接传感器进行信号的采集,针对收集到的信号进行反馈,针对反馈进行调整,这样实现最终的设计目标,满足设计要求。
基于ROS进行机械臂的实时控制系统研究是更加方便开发者进行机械臂控制的新方式新方法,依托于ROS所独有的节点编程原理,简化了以后进行多个传感器的信息的融合等工作,便于机械臂进行精准、快速的操作,同时由于系统的开源,可以借鉴广大系统维护者以及项目开发者的经验,将机械臂用于更加人性化、个性化的应用场景。作为一个ROS的学习者和使用者,就要在实践研究中不断的丰富这个平台,让它更好的为工作生活服务。