基于红外和彩色图像传感器的机械手臂控制系统
2015-02-23吴旻骏金弘晟汤勇明
朱 锐,吴旻骏,金弘晟,汤勇明*
(1.东南大学信息科学与工程学院,南京210096; 2.东南大学电子科学与工程学院,南京210096)
基于红外和彩色图像传感器的机械手臂控制系统
朱锐1,吴旻骏2,金弘晟2,汤勇明2*
(1.东南大学信息科学与工程学院,南京210096; 2.东南大学电子科学与工程学院,南京210096)
摘要:提出了一种机械手臂控制系统。硬件系统主要由包含红外和彩色图像传感器的Kinect、Atom平台上位机、舵机控制器和机械手臂组成。使用图像分割识别、SVM、线性滤波、人机关节映射等算法实现了机械手臂在多种模式下的实时人体追踪和模仿功能。开发了基于C#的图形用户界面和基于Java3D的三维仿真平台,增强用户开发和使用体验。本系统精度高,延迟小,对环境有较强的鲁棒性,具有较强的应用前景。
关键词:传感器;控制系统;模型;红外;机械手臂;识别; GUI
仿真机械手臂是人体工程学和机器人领域的热点研究方向之一[1]。目前,大型仿真机械臂使用的传感器结构复杂造价昂贵,而民用的机械臂由大多通过设定的指令或操纵杆或者摄像头进行控制[2]。文献[3]提出了一种基于彩色图像特征提取和Hausdorff距离分类的手势识别。文献[4]提出了一种结合了运动信息和基于KL变换的肤色模型的模式识别方法,增强了图像背景比较复杂的情况下的识别鲁棒性。Kinect是Microsoft公司推出的体感传感器,配备有红外测距摄像头(以下简称红外摄像头)和彩色摄像头,其中提供了物体的空间信息,对于机械臂控制有很大的帮助。在利用Kinect传感器控制机械臂方面,文献[5]利用Kinect SDK建立了骨骼模型,文献[6]优化了机械臂运动的路径规划,文献[7]优化了复杂背景下的红外目标特征提取,文献[8]提取了Kinect传感器深度图像的区间分布特征并直接使用机器学习的方法进行训练,实现了对于5个简单手势的识别。
本文结合并改进了现有的一些技术方案,实现了一套完善的软硬件结合的机械手臂控制系统。本方案利用Kinect传感器套件的红外摄像头和彩色摄像头对人体手部和上肢进行数据采集,使用OpenNI开源项目接口获取Kinect的600×400分辨率红外和彩色摄像头源数据并进行分析处理,并实时控制机械手和机械臂的运动。主要功能包括实现机械手实时模拟人体手指动作,机械手臂实时追踪人体手臂运动和手势控制机械手臂运动和抓物等。
1 系统硬件设计
系统由Kinect传感器,基于Windows Embedded 的Atom平台工控主板,无线通信模块,基于Atmel单片机的舵机控制器以及4关节6自由度机械臂和五指仿真机械手组成。部分组件的参数信息如表1所示。
表1 各组件详细参数信息
表1中,舵机MG996R重量为55.0 g,扭力为13.0 kg/cm,转动角度为左右各150°。舵机GS9025重量为14.7 g,扭矩为2.5 kg/cm,转动角度为左右各90°。机械臂使用公版U梁、轴承、多功能支架等搭建而成,实现60 cm×60 cm×60 cm空间内的末端运动覆盖,自由度为6个,可以缩小比例模拟人体上肢的基本运动。机械手使用公版铝制关节和定制的手掌支架结构组成,仿真人体结构。指尖通过拉线固定到舵机盘,控制舵机盘的转动来实现手指的屈伸。
系统工作流程如下:Kinect传感器的红外和彩色摄像头捕捉操作者手臂和手指的动作,数据交由嵌入式平台上的上位机处理,进行建模并计算出每个关节舵机的角度,通过无线模块与舵机控制器实时通讯,舵机控制器上的单片机和控制电路根据命令输出不同占空比的PWM方波到机械手和机械臂的舵机以实现角度调整,模拟人体动作。
2 系统软件设计
系统软件结构如图1所示,主要由嵌入式平台上的上位机软件、通讯模块程序和舵机控制板上的下位机软件组成。
2.1图像源数据的采集
本方案利用OpenNI提供的接口可以获得RGB图像矩阵(600×400像素,每个像素含有R、G、B三值彩色数据)和红外线深度图像(600×400像素,每个像素含有物体距离传感器的像素距离)。值得注意的是,需要把接口返回的以像素为单位的深度数据ddraw转换成以实际距离为单位的距离数据d。转换关系如下:
图1 系统软件结构框图
式中,K=0.1236 m,O=0.037 m。
2.2关键点的提取和手势识别
2.2.1基于阈值分割和聚类算法获取手部图像
图2 左上和右上图:红外图像和截取的手臂像素;左下和右下图:彩色图像和截取的手臂像素
对红外深度图像的像素按照物体距离传感器的像素距离数据进行聚类。平均距离最近的一类认为大部分是手臂的数据。在聚类中心附近取一个距离阈值,在该聚类内部运用该阈值截取出手臂的准确像素集合。此时可以实现将手臂和背景的分离。再利用截取的这些红外像素作为遮罩,从彩色图像像素中截取手臂部分的像素,如图2所示。这样可以获得两份手部的数据源。其中彩色图像的数据可以使用目前成熟的图像识别的方法[3,10]进行后续处理和决策,以辅助红外图像的数据进行处理后进行的决策,提高决策可靠性。下文介绍利用红外数据进行处理和决策。此种方法相较于传统的基于彩色图像数据的图像识别方法的优势在于不受肤色、背景情况、光照条件以及操作者是否戴手套等制约。
在分割完毕手臂数据的基础上,利用K均值算法[11]区分双手和排除障碍物。K均值算法是一种基于函数收敛的N类聚类算法。训练和调节K均值算法的聚类中心阈值参数,可以得到比较理想的聚类效果。如图3所示,在双手同时被检测到的情况下,K均值算法可以得到两个聚类,根据需要选取其中一只手的数据。
图3 生成左右手聚类和障碍物排除
一个聚类的总重,正相关于该聚类的像素数目。如果像素数目低于或者高于一定的阈值则可判别为非人手从而抛弃,起到在部分情况下排除障碍物的效果。图3中,右侧为和手靠近的小块障碍物,聚为一类,可以通过设定的阈值排除。
2.2.2基于Graham扫描算法和角点检测确定指尖和指蹼
图4 关键点的确定示意图
一个包含平面上所有点的最小的凸多边形叫做凸包。手部凸包定义为手臂图像中的端点,比如指尖和手臂外缘点的连线形成的多边形,参见图4的多边形外框。利用Graham扫描算法确定手部的凸包找到手型外部的凸包。Graham扫描算法简单描述如下[12]:
(1)在二维平面上标记点A1,A2,A3,…,An,并建立笛卡尔坐标系;
(2)从横坐标最小的一点(不妨设为A1)开始搜寻。计算A1跟其他点的连线与x轴的角度,取角度最小的一点(不妨设为A2)作为凸包上下一点;
(3)考虑对于A2而言角度最小的点A3.若A2到A3的路径相对于A1到A2的路径是向右转的,则A3不可能是凸包上下一点。再考虑A4作为A2的下一点是否可行。如此往复直到回到A1.此时依此规则找到的所有点依次相连形成的多边形即为凸包。
对手臂的像素点利用Graham扫描算法可以获得手部凸包,如图4中的外围多边形。手部凸包与手臂数据的轮廓的共同点即为指尖(点F1~F5)和手臂下端的位置(取中点得到手臂中心点A)。
2.2.3基于阈值分割和SVM的手势检测
至此,本方案已经初步实现了手臂运动状态的检测和针对单个手指的位置检测,从而可以根据手部的状态判断出操作者的手势(例如,食指自然伸直而其他手指弯曲,可判断操作者试图做出“一”的手势)。但是,由于源数据精度不足、对空间遮挡和手腕运动的鲁棒性不足等问题,识别准确度会下降。本方案以SVM(支持向量机)来提高手势识别的精度。
图5 五指的阈值分割
SVM是机器学习理论中一种常见的分类器,可以根据训练样本进行手势的分类和学习,从而对测试样本进行类别的预测。本文对常见的“一”到“九”的单手手势进行各30个样本的采集,样本中伴随着手腕运动、测试者距离等因素带来的干扰。提取样本的Harr-like特征子[16]作为SVM的输入对SVM进行训练,建立手部的SVM模型。基于阈值分割的手势和基于SVM的手势识别在测试集上准确度如表2所示。
表2 基于阈值分割和基于SVM的手势识别准确度
测试表明,对于复杂或者易混淆的手势,基于机器学习的SVM手势识别在准确度上有一定优势,但是受到运算效率限制,帧数较低。在实际方案中可以考虑优先使用基于阈值分割的识别法,在置信度较低时使用基于SVM的方法进行辅助决策。
2.3数据滤波和模型映射
2.3.1数据的稳定和滤波
Kinect传感器每秒捕获约30帧数据[17],帧数大大超过了控制舵机需要的帧数,同时由于传感器误差、环境干扰和算法不稳定等因素会产生大量的异常数据点,必须剔除这些数据点并完成采样。滤波的主要算法有阈值控制、分组采样和线性拟合、延迟输出等。
首先通过最基本的阈值判断剔除明显存在错误的角度点,然后采用分组抽样的策略,积累10帧数据为一组,进行线性拟合。同时,为了避免数据意外跳变(比如采样点突然消失,算法缺陷等情况),制定如下的延迟输出规则:
(1)跳变后继续维持2个采样时间才被认为是手部执行了大角度变化动作;
(2)意外跳变点用最近一次有效数据填充。
如图6所示。延迟输出有效地滤除了短时间意外跳变,同时带来了约3个采样点的输出延迟,但是延迟仍然控制在可接受范围内。
图6 延迟输出示意图
经过数据点采样和多种滤波,既将数据帧率降到了可以接受的3帧/s,保证了舵机的稳定运行。
图7是滤波前后的五指角度数据,可以看出,滤波算法起到了很好的稳定作用,也是基于阈值分割的手指识别成为了可能。
2.3.2关节角度映射
如图8所示,利用已经获得的手掌位置B,手指根部位置A以及指尖位置C可以在三维坐标系OXYZ内建立向量和.利用下列公式可以计算某根手指和手掌的夹角θ。
图7 五指角度数据滤波前(左)五指角度数据滤波后(右)
机械手的构造如图9所示。固定在手掌上的5只舵机分别控制五根手指。舵机通过调整自身的旋转角度α来转动舵盘,舵盘带动用螺丝与其连接的拉线,舵盘的转动从而带动拉线的伸展和收紧,从而带动手指的屈伸角度θ.反复测试建立θ和α角度之间的映射关系。
图8 利用位置数据建立手指模型计算关节角度数据
以上完成了手指动作的捕捉和映射,实现了机械手对人体手指动作的同步跟随。同样的原理可以实现机械臂对人体手臂动作的跟随。
本方案的另外一个功能是实现机械臂顶端位置即机械手位置对人手或者人头位置的同步跟随,即人手或者头部移动时机械臂的各个关节进行自动调整,使得机械臂顶端始终跟人手或者人头保持在一定的距离内,从而实现递送话筒或者摄像头的效果。
图9 机械手的构造(上)机械臂的构造(下)
图9展示了机械臂的构造。机械臂上有4个舵机,其中K1对应手腕,K2和K3控制机械臂的前倾角度,K4使得上部的机械臂部分实现环绕底座180°的旋转。为了实现机械臂顶端即K1的位置和人手或者头部的跟随,在三维空间中建立如图10的模型。
图10 三维空间中的机械臂跟踪人手部模型
Z1为传感器指对方向的平面即机械臂下方的旋转舵机K4的默认位置的朝向。当手中心坐标在Z1平面内,K4舵机角度维持0°不变,调节K1~K3舵机即可实现人手追踪,此时所有舵机、机械臂和人手中心坐标都在默认的Z1平面内。当人手坐标移出Z1平面内时,传感器捕捉人手中心坐标,计算出偏离角度β,根据β结合几何方法和实测数据计算出舵机K4的旋转角度,控制舵机K4旋转机械臂上部和人手重新回到同一个平面Z2内,即可实现跟随功能。
2.4图形界面和通信模块
2.4.1图形用户界面和三维仿真平台
如图11所示,基于C# GUI编写了上位机的图形用户界面,展示了实时的二维抽象手臂模型和必要的参数。基于Java3D三维图形库[18]开发了跟实际模型参数相同的三维仿真平台,为测试模型数据提供了方便。
2.4.2基于C#的串口通讯模块
图11 上位机图形用户界面(左)和基于Java3D的三维仿真模块(右)
上位机和下位机之间通过字符串转字节流的形式传输每个舵机的编号、转动角度、移动速率、转动到该角度所需的动作时间等参数。根据预订的协议将所有的角度数据编码成字符串,交由基于RS232串口通讯协议开发的C#通讯程序传输至舵机控制器,经由无线局域网的无线通讯模块传输至舵机控制器。在下位机上从SCI缓存区中接收指令字符串并在单片机平台的C语言程序中进行解释,生成每个舵机的PWM方波控制信号,经由舵机控制板的外围电路传送给各个舵机实现实时控制。
3 系统实现效果
该系统实现机械手臂在3种模式下的人体追踪和模仿:模式1:捕捉分析人手指和手臂动作并实现机械手实时模拟人体手指动作,模式2:机械手臂实时跟随人体手臂运动而运动(即实时追踪),模式3:手势控制机械臂运动和抓物等功能。具体指标为:在任何光照条件下在距离传感器50 cm的一个50 cm见方的空间内实现对五指、手掌和手臂的捕捉和建模,识别精度为1 cm,跟随移动时间延迟在0.5 s以内。机械臂实现在60 cm见方的空间内全自由度运动,运动敏捷稳定。
3.1模式1
如图12所示,该模式下能够分别识别五根手指的动作并在机械手上做出同步的模拟,能识别基本的手势,其中上图是对手势“一”的识别。
图12 模式1操作图
3.2模式2
如图13所示,该模式下机械臂顶端载物平台放置摄像头,人手运动时系统能够自动调节机械臂各关节和载物平台的角度使得人手始终在摄像头画面内。该模式可推广至追踪人头部运动的麦克风等场合。图13中,手在最左最右最上最下最近最远约50 cm见方空间内大幅度移动时能始终保持在摄像头画面(中下部框中图像)内,表明机械臂顶端摄像头能很好的跟踪手部运动。
图13 模式2现场操作图
3.3模式3
该模式下GUI上显示上、下、左、右4个虚拟按键,手掌置于这4个虚拟按键区域时可以控制机械臂的机械手执行垂直上下和水平屈伸的运动,从而控制机械手到达待抓物体处。操作者再做出抓取的动作,从而控制机械手臂抓取物体。
4 总结与展望
本文提出了一种基于Kinect红外和彩色传感器的机械手臂控制系统,并测试了相关的性能指标,精度和延迟特性均表现良好。与现有的民用方案相比,本方案实现了全手势控制,可以取代传统的手柄和拨码盘的控制方案;由于使用了红外传感器距离信息的图像作为主数据源,使得剥离背景、手指识别和追踪更加准确,同时对环境的鲁棒性大大增强。机械手臂实现在60 cm见方的空间内全自由度运动,操作稳定延迟小。图形用户界面和模拟平台使得系统对开发者和用户更加友好。同时,本系统可以在3种模式下进行手臂追踪模拟,对应于不同的场景和需求。具有较强的实用性。
本方案的不足之处在于,基于红外和彩色传感器的数据采集仍然存在遮挡的情况,同时系统集成度不高,可以在后续工作中进行改进。
参考文献:
[1]Ummul Azki,Musa.Humanoid Robot Development[D].Durian Tunggal:Universiti Teknikal Malaysia Melaka,2009.
[2]韩峥,刘华平,黄文炳,等.基于Kinect的机械臂目标抓取[J].智能系统学报,2013(4):149-155.
[3]张良国,吴江琴,高文,等.基于Hausdorff距离的手势识别[J].中国图像图形学报(A辑),2002,7(11):1144-1150.
[4]刘寅,滕晓龙,刘重庆.复杂背景下基于傅立叶描述子的手势识别[J].计算机仿真,2005,22(12):158-161.
[5]林海波,梅为林,张毅,等.基于Kinect骨骼信息的机械臂体感交互系统的设计与实现[J].计算机应用与软件,2013,30(2):157-160.
[6]秦勇,臧希喆,王晓宇,等.基于MEMS惯性传感器的机器人姿态检测系统的研究[J].传感技术学报,2007,20(2):298-301.
[7]王江安,朱向前,宗思光,等.红外目标特征分析及融合特征提取[J].传感技术学报,2005,18(2):289-291.
[8]关然,徐向民,罗雅愉,等.基于计算机视觉的手势检测识别技术[J].计算机应用与软件,2013,30(1):155-164.
[9]郑斌珏,赵辽英,王毅轩.基于Kinect深度信息的手指检测与手势识别[J].计算机科学与技术汇刊:中英文版,2014,3(1):9-14.
[10]陈一民,张云华.基于手势识别的机器人人机交互技术研究[J].机器人,2009,31(4):351-356.
[11]李光,王朝英,侯志强.基于K均值聚类与区域合并的彩色图像分割算法[J].计算机应用,2010,30(2):354-358.
[12]Andrew,Alex M.Another Efficient Algorithm for Convex Hulls in Two Dimensions[C]//Information Processing Letters 9.5,1979:216-219.
[13]陈白帆,蔡自兴.基于尺度空间理论的Harris角点检测[J].中南大学学报:自然科学版,2005,36(5):751-754.
[14]杨莉,张弘,李玉山.一种快速自适应RSUSAN角点检测算法[J].计算机科学,2004,31(5):198-200.
[15]Shotton J,Sharp T,Kipman A,et al.Real-Time Human Pose Recognition in Parts from Single Depth Images[J].Communications of the ACM,2013,56(1):116-124.
[16]Lienhart R,Maydt J.An Extended Set of Haar-Like Features for Rapid Object Detection[C]//Image Processing.2002.Proceedings.2002 International Conference on.IEEE,2002,Vol. 1:900-903.
[17]Jarrett Webb,James Ashley.Beginning Kinect Programming with the Microsoft Kinect SDK[M].United State:Apress,2012:87-88,298-299.
[18]李凯里.机械臂虚拟控制中的Java3D设计技术[J].系统仿真学报,2008(z1):117-119.
朱 锐(1993-),男,汉族,江苏省淮安市人,东南大学信息科学与工程学院本科在读,信息工程专业,jerrypiglet@gmail.com;
吴旻骏(1993-),男,汉族,安徽省蚌埠市人,东南大学电子科学与工程学院本科在读,电子科学与技术专业,higsyuhing@126.com;
金弘晟(1993-),男,汉族,江苏省苏州市人,东南大学电子科学与工程学院本科在读,电子科学与技术专业,574189383@qq.com;
汤勇明(1973-),男,汉族,博士,研究员,江苏省江都市人,东南大学电子科学与工程学院,研究方向为显示电子学、光电测试与评估,tym@seu.edu.cn。
Design of LVDS Image Data Cache System Based on USB3.0*
MENG Lingjun*,ZHOU Zhili,WEN Bo,LI Jiachao,ZHAO Panpan
(Key Labratory of Instrumentation Science and Dynamic Measurement North Univercity of China,Ministry of Education,National Key Laboratory For Electronic Measurement Technology North Univercity of China,Taiyuan 030051,China)
Abstract:Due to the limitation of USB2.0 in image data transmission,a design was proposed to achieve storage system of LVDS high speed image data based on USB3.0.The core of the design was FPGA logic control,the design actualizes data stream cache through double DDR2 SDRAM,and image data memory according to the Interleave Two plane Page Program of FLASH.Finally,the high speed data communication between the LVDS image memory system and PC machine realizes through the USB3.0 interface.The results show,the system can realize high speed memory of LVDS image data by 30 Mbyte/s,the rate of memory is increased by double compared with routine program method; upload the image data of the FLASH memorizer to PC machine,and has the advantage of,with the simple interfaces of input and output,a small size,good stability and reliability.
Key words:FPGA; USB3.0; LVDS; interleave two plane page program; DDR2 cache
doi:EEACC:722010.3969/j.issn.1005-9490.2015.04.019
收稿日期:2014-09-10修改日期:2014-09-24
中图分类号:TP212; TP273
文献标识码:A
文章编号:1005-9490(2015)04-0805-07