王政博,唐 勇,刘海波,孙东来,栗梦媛
(1.河北水利电力学院 自动化与通信工程学院,河北省沧州市重庆路1号 061001;2.河北省高校水利自动化与信息化应用技术研发中心,河北省沧州市重庆路1号 061001)
随着德国政府在2011年4月的汉诺威工业博览会上正式提出“工业4.0”[1]战略,中国于2015年5月正式提出《中国制造2025》并成为中国实施制造强国战略的第一个十年行动纲领,智能制造已经成为现在工业制造的热门发展方向。在汽车及零部件制造、食品加工、机械加工等领域应用的传统工业机器人价格不断降低,使用量不断增长的背景下,机器人的应用领域变得更加广泛。随着智能机器人的发展,机器人需要完成更多智能化操作,这对机器人的操作精度、柔性等方面提出更高的要求。传统机器人无法满足新兴领域对机器人性能的要求,于是更多的科技公司、科研院所、高校开始研发可以感知环境的智能协作共融机器人。
国外在协作共融机器人领域一直处于领先水平,例如基于机器人操作系统(ROS)的智能机器人Baxter,日本本田公司研制的ASIMO[2]仿人机器人等。在国内却很少有优秀的产品投入使用,比较有代表性的是北京理工大学黄强等人研制的“汇童”仿人机器人和上海交通大学开发的拟人双臂机器人等,而这些高校和科研所研制的机器人离面向市场投产还有一定距离。ROS系统在机器人的研发中提供了标准操作系统服务,例如硬件抽象,底层设备控制,实现进程间消息及数据包管理等功能,并且可以提高开发的代码复用率。
文中主要介绍冗余双臂机器人Baxter的控制原理和Baxter机器人手臂末端进行运动跟随的方法。该方法的创新性在于:利用ROS系统对机械臂运动进行控制;机器人眼内视觉传感器与机械臂运动控制的配合,完成了机械臂对目标物体的精准跟随;跟随轨迹较传统视觉方法有了明显优化。
Baxter[3]机器人是美国Rethink Robotics公司研究并开发的一款双臂协作机器人。作为一款新型的智能协作机器人产品,Baxter机器人已经被国内外众多知名大学和科研机构用于教学、研究工作中。
机器人系统的组成大体上可以分为4部分:操作臂(包括内部传感器)、末端执行器、外部传感器和执行器(比如视觉系统和反馈系统)、控制器,如图1所示。
图1 Baxter机器人的硬件配置Fig.1 Hardware configuration of Baxter robot
Baxter软件系统是基于ROS构建的[3],ROS是一种应用于机器人的分布式计算、通信框架。
ROS分布式计算模型由ROS节点(node)模型、ROS消息(message)/主题(topic)模型以及ROS服务器(service)模型3部分[4]组成。Baxter机器人的主体计算机提供了一个独立的ROS主机用于节点的管理,任何远程计算机都可以通过ROS的API来连接并控制Baxter。
机器人控制系统主要是用户计算机通过局域网、以太网与主体计算机通信,能够向机器人发送指令并实时监测其运行状况(见图2)。主体计算机采用Intel Core i7系列处理器,其最顶层的API是用于接收关节指令和发布关节状态的关节控制器例程、描述机器人模型的URDF以及用于计算关节坐标变换的tf包,等等。嵌入式控制器与主体计算机通信,接收主体计算机传来的指令并转化为驱动电机的控制信号驱动电机运动,同时还采集编码器和霍尔元器件的信号送到主体计算机。
图2 Baxter机器人的控制系统Fig.2 Control system of Baxter robot
目前,机器人视觉伺服控制[5]系统按照摄像机位置的不同,可以分为手眼系统和固定摄像机系统,也可以根据机器人的空间位置或图像特征分为基于位置的视觉伺服系统和基于图像的视觉伺服系统。在Baxter机器人的手眼系统中将视觉传感器装入手臂的末端执行器,以提供物体和障碍物的高分辨率信息,而且各个坐标系统可以更容易地实现转换。固定摄像机系统是将摄像机布置在工作空间之外从而起到感知整个工作空间的作用,此类系统普遍采用Kinect深度传感器布置在机器人的头部以获取整个机器人的周围环境3D信息;或者使用普通摄像头放在机器人头部,先获得机器人手臂的2D俯视图,再通过图像处理来表达机器人的手臂和周围环境。基于图像的视觉伺服系统受噪声的影响较小,但由于不涉及对目标姿态的估计,难以生成准确的三维空间路径,甚至使得目标位置脱离相机的视线。文中关注Baxter机器人手臂对物体的跟随,强调目标检测的准确性和手臂跟随相机的三维空间路径准确性,设计方案选用黄色网球为跟随目标对象,利用颜色检测方法实现视觉引导,采用基于位置的视觉伺服手眼系统解决机械臂在三维空间中的最优路径问题。
另外,在机器人的运动部分,按顺序移动一组媒介完成目标信息的控制,以达到并保持一组期望的相对位置,利用手眼系统进行目标跟随,相对方位测量比相对距离测量更为准确,因此文中实验部分使用相对方位测量以提升机器人运动性能。
物体位置的检测基于相机拍摄到的图像中获取的信息,由图3和图4可知,仅通过一个摄像头无法明确3D对象的坐标信息[6],故通过预先获取对象的一个坐标信息来解决该问题。获取坐标信息可以通过Baxter机器人提供的红外传感器检测末端执行器和物体之间的距离或者将网球固定在桌子上的2种方式,这表明已事先得到了跟随对象的Z坐标。但红外传感器在检测网球等小型物体时性能差,不能准确检测手臂末端距离网球的距离,因此文中选择了将网球固定在水平桌面上的方式,使三维空间环境变为二维图像环境。
图3 单视图不确定性Fig.3 Single view uncertainty
图4 对极几何Fig.4 Opposite pole geometry
平面转换方式
(1)
式中:Px,Py是物体坐标;Cc相机校准因子,设置为0.0025;D是给定的相机与桌子之间的距离;Opx,Opy是图像像素坐标;Opx,Opy是像素中心点坐标;Pcx,Pcy是基于Baxter机器人的相机坐标。
为了获得稳定的输出,一个明亮和光线充足的环境以及适当的颜色检测阈值对于获得正确的跟踪对象十分必要。文中的颜色阈值设置如表1所示。
表1 检测的颜色阈值设置
此外,Baxter手臂上的相机会产生相对较大的噪音,一般会采用高斯滤波器消除噪音,但高斯滤波会模糊掉输入图像中边缘信息,故采用可以让边缘保持平滑的双边滤波器。同时为了避免出现球的轮廓不能被完全检测到,只用膨胀功能而去除了腐蚀功能以达到放大检测到的像素以覆盖轮廓内部的未检测像素的效果。
物体位置检测[7]流程图如图5所示。
图5 物体位置检测流程图Fig.5 Flow chart of object position detection
机器人手臂的运动控制主要执行关节轨迹规划、轨迹插补等算法程序。运动控制由目标识别定位和手臂运动控制的2个节点组成,通过ROS消息主题方式进行通信。手臂在运动过程中,会不断检测关节速度值是否溢出等情况,并及时做出相应处理,直到手臂完成跟随运动。
如图6和图7所示,分析Baxter手臂的运动控制问题时,将N个点的集合标识为V={1,2,…,N},点的位置为{xi},i∈V,节点之间的距离定义[8]为:
Dij=‖xj-xi‖i,j∈V
(2)
βij—方向,Dij—距离,Sij—锥体,r—半径图6 节点的距离定义Fig.6 Distance definition of nodes
Cjj、Qij—相似性度量,βgij—期望的方向、距离图7 节点的方向定义Fig.7 Orientation definition of nodes
方向定义为:
(3)
代价函数:
(4)
(5)
(6)
(7)
=DijCij-Dg,ij
(8)
在代价函数中αb,αd分别对应边缘Eb,Ed的步长。式(4)可以根据式(5)~式(8)求得,其中
fb(c)=1-c,fd(q)=0.5q2。
具体运动控制如图8所示。
图8 运动跟随控制流程图Fig.8 Flow chart of motion following control
文中视觉跟踪对象是一个摆放在水平桌面上半径为0.03m的黄色网球,该物体具有圆形轮廓且具有易与周围环境区分的颜色。Baxter机器人左臂的末端执行器位置设置为垂直于桌面。位置检测系统首先得到小球外形轮廓,计算出轮廓中心点坐标,再对输入信息进行滤波等处理。
图9(a)和图10(a)是HSV图像,检测到的物体为白色,图9(b)和图10(b)是带圆心标记的原始图像。
(a)HSV图像(a)HSV image
(b)圆心标记图像(b)Circle tag image图9 普通检测的输出结果Fig.9 The output of general processing
(a)HSV图像(a)HSV image
(b)圆心标记图像(b)Circle tag image图10 本文图像处理的输出结果Fig.10 Output results of image processing in this paper
对比图9普通检测的输出结果和图10文中图像处理的输出结果:普通检测的结果中未能检测到整个网球,导致网球中心点计算有偏差;本文图像处理结果中可以清楚地看到检测到完整的网球,且网球中心点定位准确。文中的检测性能远远优于普通检测。
图11为手臂跟随轨迹图,图11(a)、图11(b)均为网球移动轨迹为弧线时的轨迹图,其中,红色轨迹为视觉拍到的网球移动路线,蓝色轨迹为机械手臂末端跟随轨迹。通过matlab数据分析功能得到的轨迹图可以看到,机械臂可跟随小球运动,且实时性较好。
(a)手臂跟随轨迹1(a)Arm following track 1
(b)手臂跟随轨迹2(b)Arm following track 2图11 手臂跟随轨迹图Fig.11 Arm following track diagram
图11中轨迹的不完全一致现象是由于Baxter机械臂本身的冗余度、机械臂末端执行器在实际运动过程中的抖动以及其硬件实时计算能力所致。手臂跟随实验数据见表2。
表2 手臂跟随实验数据
分析表2中的数据发现,即使在黑暗环境中,在设置适当的颜色边界之后,跟随的轨迹精度亦可以达到0.2cm,而且在实验中,多次改变网球的运动轨迹,手臂均可实现跟随且精度不会因轨迹的改变而变化。
以Baxter为研究对象,利用ROS平台提出了一种视觉伺服方法,用于Baxter手臂跟随运动。首先根据手臂相机图像识别出要跟随的物体,然后计算出物体中心点位置坐标,最后引导手臂跟随目标物体运动。文中使用机械臂自带的视觉传感器,未增加外置摄像头或昂贵的深度传感器,简单而高效的实现了机械臂运动跟随功能。