基于Leap Motion的体感遥控小车设计
2018-03-30卢佳伟张秋菊
卢佳伟,张秋菊
(江南大学 机械工程及其自动化系,无锡 214122)
随着微软Kinect的发展和普及,深度摄像头吸引了越来越多人的注意,各类3D体感设备也是层出不穷[1]。其中,Kinec和Leap Motion均使用光学传感器进行动作采集与跟踪,前者的捕捉对象是全身,难以保证快速地估计手部姿态[2-3]。而后者Leap Motion采用双目红外摄像头成像原理可快速构建手在三维空间的运动信息,实时获取它们的位置、方向和部分手势信息,其追踪精度高达0.01 mm,且价格低廉易于普及[4-5]。在此,通过对Leap Motion系统的进一步开发,实现通过基本的动作、手势来控制遥控小车的运动状态。最终实现通过人体简单的动作、手势来控制遥控小车的运动状态。
1 遥控小车的机械结构设计
由于机械结构影响到遥控小车的灵活性,快速性和抗干扰等,因此机械结构的设计至关重要。从机构的角度讲,遥控小车的整体机构包括动力机构和主体框架2部分[6]。动力机构如图1所示,由直流伺服电机、联轴器、L型支架、轴承座和定位底板组成。其中,电机采用Maxon RE40直流伺服电机,配备14∶1的减速器,扭矩1.25 N·m。传动轴需要根据传递的扭矩和所受弯矩来加工,通过梅花挠性联轴器将电机的输出轴与传动轴进行连接,将电机支架与轴承座全部嵌入定位底板的凹槽内,加工及装配过程要确保电机轴与传动轴的同轴度。整体框架呈正三角形配置,如图2所示,3个全向轮呈120°均匀分布,定位底板与整体框架采用螺栓连接。
图1 遥控小车的动力机构Fig.1 Remote control car power mechanism
图2 遥控小车整体结构Fig.2 Remote control car overall structure
2 遥控小车控制系统设计
整体控制系统包括上层PC控制系统和底层ARM控制系统。
上层PC控制系统通过PC实时处理Leap Motion传感器采集到的手势数据,采用Visual studio作为Leap Motion传感器的开发环境,用VC++语言编写程序,在上位机上进行编译、调试与处理,并将其转化为控制指令,通过无线信号将其发送给下位机,实现对下位机的控制。
底层ARM控制系统以STM32F407ZGT6作为主MCU,用于控制遥控小车具体的运动状态,包括准确的行驶与定位。主MCU与3个直流伺服驱动器之间可建立CAN通讯。同时,若要实现精确行走还需选择合适的定位传感器,在此采用的定位传感器模块可与主MCU建立RS232通讯,把获得的位置与姿态角信息发送给主MCU。整体控制流程如图3所示。
图3 控制流程Fig.3 Control flow chart
3 Leap Motion工作原理及控制手势设计
3.1 Leap Motion数据跟踪列表
Leap Motion传感器遵循右手笛卡尔直角坐标系,坐标原点位于传感器的中心,坐标轴X,Y,Z的方向如图4所示。
图4 Leap Motion直角坐标系Fig.4 Leap Motion cartesian coordinate system
Leap Motion系统以一个数据集合描述在其视野中的手、手指或杆状物体。每帧数据包含1个基本的数据跟踪列表。在Leap Motion中,1个Frame类对象代表1个数据帧,Frame类的成员函数hands()返回1个容器——Handlist类对象,它包含了若干个Hand类的对象,每个Hand类对象包含了Leap Motion检测到的1只手的全部信息[7]。
3.2 控制手势的设计
Leap Motion体感传感器的扫描频率高达290帧/s,通过上一帧与当前帧的相关参数的变化趋势可以计算出相应的手势。Leap Motion通常可以获取比较简单的手势,比如画圆、挥手、点击鼠标、点击屏幕等动作,如图5所示。但是如果手势过于复杂,会出现漏检的现象,出现漏检就会造成对遥控小车的控制延迟。因此在设计时应尽量避免复杂的手势[8]。体感遥控小车对应的控制手势见表1。
图5 典型的手势Fig.5 Typical gestures
表1 控制手势的确定及相应的变化参数Tab.1 Determination of controls gestures and corresponding change parameters
4 无线网络环境的构建
整体控制系统包括上层PC控制系统和底层ARM控制系统,采用ATK-ESP8266模块构建无线网络环境。其中,底层ARM控制系统作为服务器端,初始化时首先检测ATK模块是否在线,然后只需向其发送相应的指令,即可开启服务器模式并处于监听模式以等待客户端的连接。图6所示为ATK模块与MCU的连接关系,两者之间采用UART通讯。
图6 ATK-ESP8266与MCU连接关系Fig.6 ATK-ESP8266 connection with the MCU
5 平面定位系统
要实现遥控小车的准确行走,就必须时刻获取其自身的位置和姿态信息,只有这样才能判定出是否偏移目标位置并做出相应的调整。如图7所示为采用的定位模块,2个全向轮相互垂直,与全向轮同轴有2个编码器,安装板与轮子之间采用滑块导轨连接即可时刻保证轮子与地面的有效接触[9]。
图7 平面定位传感器Fig.7 Plane positioning sensor
该定位模块可以与主MCU建立RS232通讯,直接将其获得的位置和姿态角信息发至主MCU。如图8所示X轴与Y轴的交点即为定位传感器的定位中心。如图9所示,由于平面定位传感器的定位中心与遥控小车的中心不重合,因此需要将定位传感器的中心转换到遥控小车的中心。定位传感器的Y轴与遥控小车的Y轴重合,故转换公式为
式中:XO1,YO1为遥控小车的中心坐标;XO2,YO2为定位模块的中心坐标;L为遥控小车坐标原点与定位模块坐标原点之间的距离。
图8 定位中心(俯视图)Fig.8 Location center
图9 定位中心坐标转换Fig.9 Positioning center coordinate transformation
6 闭环反馈算法的建立及试验结果
6.1 系统运动学模型
在确定了遥控小车的实时位置与姿态角后,有必要确定遥控小车的中心速度与3个轮子之间的转速的对应关系。为了构建遥控小车的闭环控制算法需要对整体数学模型进行分析,如图10所示,3个全向轮呈正三角形分布。
图10 系统运动学模型Fig.10 System kinematics model diagram
根据底盘3个全向轮与底盘运动中心的几何关系,得到底盘运动学方程为
6.2 闭环控制算法的建立
遥控小车前进的过程中会发生实际轨迹与目标轨迹偏离的现象,偏移的原因是因为小车自身的姿态角与设定的目标姿态角发生了偏移,实际位置脱离了目标直线。因此必需建立姿态角闭环和位置闭环控制算法。
姿态角闭环就是在行走的过程中,为遥控小车添加一个旋转速度,以克服其姿态的偏转,使姿态角回到初始值。该旋转速度需要与前进速度进行叠加。姿态角闭环的调整原理如图11所示,假设姿态角度的误差为φ,为遥控小车添加一个右旋的角速度,角速度的值由PID算法计算得出。此时,遥控小车的前进方向就变为初始给定的角度在加上该偏移角度φ。
在底盘前进的过程中,为了保持行进的轨迹为一条直线,需要引入位置闭环,以克服行进过程中的干扰。位置闭环如图12所示,假定,Vx为给定的前进速度,Vy为底盘的总速度,V为调节量,此时底盘的中心点与目标直线的距离为D。
图11 姿态角闭环的调整方法Fig.11 Adjustment method of attitude angle closed loop
图12 位置闭环的调整方法Fig.12 Location closed loop adjustment method
闭环直线算法需要获取目标速度、目标直线角度、目标姿态角度、实际坐标及实际角度等参数。根据这些参数可计算出实际位置与期望直线的距离,通过 PID算法,计算得到对距离和姿态的调节量,将最终计算结果分解到3个电机的转速上,最后通过调用驱动层函数向电机发出命令,实现到直线距离以及底盘角度的负反馈[10]。
6.3 试验结果
遥控小车在走三角形时,根据定位模块获取的位姿参数绘制出位置曲线,如图13所示。由图可见,实际轨迹与理想轨迹大致拟合,误差在1 cm范围内。在三角形的3个顶点有一个调整坐标点的过程,只有遥控小车准确地到达了目标点才会开始执行下一个任务。因此,该遥控小车满足使用要求,同时也验证了位置闭环控制算法的合理性。
遥控小车在行走过程中的姿态角曲线,如图14所示,其曲线横坐标轴表示采样个数,采样频率为5ms。由图可见,姿态角波动剧烈,但是波动的最大正负偏差<0.3°。因此姿态角闭环控制算法的设计合理。
图13 位置曲线Fig.13 Position curve
图14 姿态角曲线Fig.14 Attitude angle curve
7 结语
本设计很好地将Leap Motion体感传感器与实际应用相结合,通过简单的动作手势实现了对遥控小车的准确控制,解决了传统机械类按键控制方式的单一性问题。同时,设计了遥控小车的机械本体及其控制系统,在对机械结构的数学模型进行分析后建立了闭环控制算法,从而实现了遥控小车的准确行驶与定位。最后通过试验验证了系统的正确性与合理性。
[1]廖宏建,曲哲.基于Kinect体感交互技术的虚拟装配实验系统开发[J].试验技术与管理,2013,30(7):98-102.
[2]Wu Q,Li X R,Wu G S.Interface design for somatosensory interaction[C]//International Conference of Design,User Experience,and Usability.Springer International Publishing,2014:794-801.
[3]Despinoy F,Sánchez A,Zemiti N,et al.Comparative assessment of a novel optical human-machine interface for laparoscopic telesurgery[C]//International Conference on Information Processing in Computer-Assisted Interventions.Springer International Publishing,2014:21-30.
[4]Bacim F,Nabiyouni M,Bowman D A.Slice-n-Swipe:A free-hand gesture user interface for 3D point cloud annotation[C]//3D User Interfaces(3DUI),2014 IEEE Symposium on.IEEE,2014:185-186.
[5]Curiel-Razo Y I,Icasio-Hernández O,Sepúlveda-Cervantes G,et al.Leap motion controllerthree dimensionalverification and polynomial correction[J].Measurement,2016,93:258-264.
[6]姚冬冬,闵华松.三轮全向移动机器人的研究与设计[J].计算机工程与设计,2013,34(6):2163-2169.
[7]王巍.Leap Motion人机交互应用开发[M].西安:西安电子科技大学出版社,2015.
[8]严利民,杜斌,潘浩,等.基于Leap Motion的三维动态手指姿势识别[J].激光与光电子学进展,2016,53(11):86-92.
[9]李文学,饶运清,戚得众,等.全向轮机器人路径规划与导航系统设计[J].机械设计与制造,2014,35(12):18-22.
[10]吴晨,杜玉红.三轮全向移动平台运动特性分析与仿真控制[J].机械设计,2015,32(2):49-53.