文小冬 裴以建 王群立 刘强
摘 要: 设计一种搭建在移动平台上的机械臂控制系统。利用Leap Motion红外手势传感器进行实时的手部动作采集,计算机的上位机软件Processing通过调用相关的库函数,实现手势动作的捕捉,并通过WiFi将数据传送给Arduino控制板,由此实现机械臂的手势控制。机械臂搭建在一个由Android手机远程控制的、带摄像头的移动小车上,可以实现多种远程的抓取任务。实验结果表明,基于移动平台的手势控制机械臂移动灵活、控制便捷、应用领域广泛。
关键词: 手势识别; 机械臂; 传感器; 上位机软件; 远程控制; 移动平台
中图分类号: TN876?34; TP242.6 文献标识码: A 文章编号: 1004?373X(2018)22?0072?03
Abstract: A mechanical arm control system built on the mobile platform is designed. The Leap Motion infrared hand gesture sensor is used for real?time acquisition of hand movements. The relevant library functions are called by using the computer′s upper?computer software Processing to realize capture of gesture motions. Data is transmitted to the Arduino control panel by means of WiFi, so as to realize gesture control of the mechanical arm. The mechanical arm is built on a mobile car with a camera and remotely controlled by an Android mobile phone, so as to realize multiple remote grasping tasks. The experimental results show that the gesture control mechanical arm based on the mobile platform is flexible to move, easy to control and has a wide application field.
Keywords: gesture recognition; mechanical arm; sensor; upper?computer software; remote control; mobile platform
伴随着信息技术的快速发展,机器人技术也随之成熟,并广泛应用于军事、工业、农业、医学、科学研究等领域,涵盖了人们生活的方方面面。远程控制机器人能够代替人类实现恶劣环境下的作业,因此发展潜力巨大 [1]。体感控制机器人利用体感设备进行动作捕捉,并将动作信息转换为机器人的控制信号,交互方式更加灵活、自然。本系统结合以上两种控制方式,在Android手机上编写了一个APP程序,实现对小车运动方向的无线控制;同时采用Leap Motion手势感应器,将手部运动的数据传递给PC,经过Processing软件处理后,再通过无线方式传递给下位机,达到手势实时控制机械臂的效果 [2]。
本系统采用Leap Motion体感器,利用红外传感器来捕捉使用者的手部动作轨迹和姿态。PC上的Processing调用Leap Motion函数库进行手部坐标和运动帧的分析处理,并将其转换为控制指令,通过WiFi传递到Arduino上,并控制机械臂上的舵机[3]。机械臂搭载在一个搭有摄像头的自制四轮移动小车上,小车是由APP进行远程WiFi控制[4],从而远距离地抓取任务。系统的整体结构如图1所示。
2.1 Leap Motion手势传感器
Leap Motion是由两个红外接收相机和三个红外发射LED组成,它通过双目视觉深度算法构建出手指三维立体空间的运动和坐标信息,是一款专门用来捕捉手部动作姿态的体感设备。Leap Motion可以同时追踪全部10只手指,精度高达0.01 mm。手势跟踪过程中,传感器会每隔单位时间向PC发送一次手部的运动帧信息。Leap Motion根据当前帧和之前帧进行比对,从而得出手的平移向量、旋转角度等,分析出手的运动信息。
2.2 芯片选型
控制板选用的是“飕”多功能Arduino板,处理器型号为ATmega2560,共有75个I/O口,可以实现更多的I/O口的控制[5]。本系统共采用2块Arduino控制板,Arduino(I)板只负责小车的APP控制;Arduino(Ⅱ)板只负责机械臂的手势控制。系统中使用两种类型的WiFi模块:一种是Openwrt?WiFi模块,传输距离较远,用于APP对小车运动的无线控制;另一种是W5500?WiFi模块,传输更为稳定,用于机械臂的无线控制。
2.3 机械臂
本系统的机械臂是使用舵机进行动力输出的一种机械臂。操作者手势的运动数据信息经过上位机软件Processing处理后,转化为舵机转动角度指令,并通过WiFi传递到Arduino(Ⅱ)控制板上,从而实现机械臂的手势控制[6]。
3.1 机械臂的手势控制
机械臂手势识别控制使用Leap Motion官网提供的Windows环境下的开发包工具包:SDK文件、Leap Motion驱动程序(版本号为3.2.0)。上位机采用的是交互式图形编程软件Processing(版本为3.3.5,选择的是Java语言环境)。上位机软件Processing通过调用Leap Motion SDK开发包中的Leap Motion库函数de.voidplus.leapmotion和以太网函数processing.net*,用于手势数据的获取和手势控制数据的无线传输[7]。
Processing中只需读取手部的5个数据:手掌掌心骨骼点在x轴上对应的坐标数值、手掌掌心骨骼点在y轴上对应的坐标数值、手掌掌心骨骼点在z轴上对应的坐标数值、手腕骨骼点顺时针转动的角度值、大拇指指尖和食指指尖的距离数值。处理后的数值依次传值给hand_x,hand_y,hand_z,hand_dir,hand_dist[8],相关程序如图2所示。
在操作者手部动作实时映射到机械臂的控制过程中,map()函数扮演了最重要的角色,在手的5个动作中都有用到。本文中map()函数的功能是:将手在x,y,z轴正负6个方向上的运动范围、手腕关节顺逆时针运动的角度范围、食指和拇指的张合范围,依次线性映射为对应舵机的转动角度范围值(0°~179°),如图3所示。最后通过WiFi将数据传递给下位机Arduino[9]。Arduino接收到数据后,发出舵机控制指令,实现机械臂的实时手势控制。
3.2 小车的手机控制
本系统利用Eclipse软件中的Android SDK,编写了一个简易的控制小车移动的手机APP,其中每按下一个按键,就通过WiFi发送一个相应的控制字符[10]。以“前进”按钮为例,图4为APP操控界面、按钮布局程序,以及按钮按下和弹起后发送不同字符的程序。
控制字符‘a通过WiFi传输到Arduino(I)控制板上。Arduino(I)控制板根据接收到的字符‘a,调用对应的前进函数,实现小车的前进运动。当手指从任意按键上松开,手机就会发送控制小车停止的字符‘l,这样小车就实现了停止。前进和停止程序如图5所示。
本次实验是由Windows 7系统的电脑、Android手机和装有两块Arduino控制板的小车共同完成,实验的具体过程为:
1) 在Android手机的APP上,按下小车的控制按钮,会将对应的字符指令通过WiFi发送到Arduino(I)控制板上,然后调用相应的方向控制函数,实现小车的方向控制[11]。同时摄像头会将图像信息不间断地传送给接收器,实时侦查前方情况。
2) 在Leap Motion手势感应器上,手部做出动作后,手部运动的信息会通过上位机Processing转化为对应的舵机运动角度的范围值,如图6和表1所示。
然后通过WiFi发送到Arduino(Ⅱ)控制板上,控制相应的舵机,从而实现对机械臂的控制。
本文针对基于移动小车平台的机械臂,提出一种新颖的控制方式:手机APP控制小车的运动、手势控制五自由度的舵机机械臂。实验成本低,控制灵活方便,能够到达较为危险的环境,完成远程任务。在军事侦查、教育科研、医学研究等领域都有较好的应用前景。
参考文献
[1] WEICHERT F, BACHMANN D, RUDAK B, et al. Analysis of the accuracy and robustness of the leap motion controller [J]. Sensors, 2013, 13(5): 6380?6393.
[2] 黄俊,景红.基于Leap Motion的手势控制技术初探[J].计算机系统应用,2015,24(10):259?263.
HUANG Jun, JING Hong. Gesture control research based on Leap Motion [J]. Computer systems & applications, 2015, 24(10): 259?263.
[3] 樊博文.基于Leap Motion的仿生机械手的研究与实现[J].电子世界,2017(10):25?26.
FAN Bowen. Research and implementation of bionic mechanical arm based on Leap Motion [J]. Electronics world, 2017(10): 25?26.
[4] 罗回彬,刘春丽,董思奇,等.Leap Motion体感控制器的智能移动机械臂控制系统[J].单片机与嵌入式系统应用,2017,17(1):40?43.
LUO Huibin, LIU Chunli, DONG Siqi, et al. Intelligent mobile manipulator control system based on Leap Motion [J]. Microcontrollers & embedded systems, 2017, 17(1): 40?43.
[5] 谢杰腾,颜晓文.基于Android手机语音和Arduino控制板的机器人控制系統[J].物联网技术,2015,5(3):101?102.
XIE Jieteng, YAN Xiaowen. Robot control system based on Android mobile phone voice and Arduino control board [J]. Internet of Things technologies, 2015, 5(3): 101?102.
[6] 吕伟文.全方位轮移动机构的结构设计[J].机械与电子,2006(12):63?65.
L? Weiwen. The structure design of omni?directional moving mechanism [J]. Machinery & electronics, 2006(12): 63?65.
[7] 康杨雨轩,郑文,李松林,等.基于Leap Motion的机械臂交互控制研究[J].传感器与微系统,2016,35(6):34?37.
KANG Yangyuxuan, ZHENG Wen, LI Songlin, et al. Research on manipulator interactive control based on Leap Motion [J]. Transducer and microsystem technologies, 2016, 35(6): 34?37.
[8] 宁亚楠.基于Leap Motion的手势识别在虚拟沙画中的应用研究[D].太原:中北大学,2017.
NING Yanan. Application research of gesture recognition based on Leap Motion in virtual sand painting [D]. Taiyuan: North University of China, 2017.
[9] 陶林,李凯格,王淼.基于Leap Motion手势识别的机器人控制系统[J].制造业自动化,2015,37(24):64?66.
TAO Lin, LI Kaige, WANG Miao. Robot control system based on Leap Motion gesture recognition [J]. Manufacturing automation, 2015, 37(24): 64?66.
[10] 危思思.基于OpenWrt开源平台的移动智能装备[D].杭州:浙江大学,2014.
WEI Sisi. Mobile intelligent equipment based on OpenWrt open source platform [D]. Hangzhou: Zhejiang University, 2014.
[11] 燕飞.基于Android平台的移动机器人远程控制系统[D].杭州:浙江理工大学,2014.
YAN Fei. Android?based remote control system for mobile robot [D]. Hangzhou: Zhejiang Sci?Tech University, 2014.