随着机器人控制技术的迅猛发展,各类机器人已广泛应用于工业、农业、国防、科研、教育以及人们的日常生活等诸多领域。但目前机器人的操控方式却不乏单调,传统意义上的控制基本上是通过遥控器、按钮、操作手柄来实现的。文中则提供了一种新的控制方式——体感控制,即操作者可直接通过手势对机器人进行控制,巧妙地将Kinect体感技术与机器人控制技术结合,创造性地实现了机器人控制方式上的创新,实现更加自然的人机交互。
1 总体结构与工作原理
本控制系统以Kinect体感传感器作为图像采集工具,结合机器人控制技术,实现了人体动作对机器人的控制,使机器人更加智能化。装置由主机和从机两部分组成,系统总体结构如图1所示。主机用于人体动作信息采集,然后进行图像处理,识别出入体动作,并负责把人体动作信息无线传送给从机。
主机系统由PC机、Kinect体感传感器、XL02—232AP1无线传输模块组成。主机用于人体动作信息采集,然后进行图像处理,识别出人体动作,并负责把人体动作信息无线传送给从机。
从机则是一个动作执行机器人,它的控制系统由AVRatmega128单片机、无线传输模块、语音模块、BT37970B直流电机驱动模块等组成。它的机械结构主要由多自由度的手臂和四轮驱动的底盘构成。从机对信息进行实时处理,控制机器人手臂各个关节旋转相应的角度,从而完成相应的动作。
2 系统硬件设计
2.1 主机
1)Kinect体感传感器它是2010年由微软对XBOX360体感周边外设正式发布的名字,具有动态捕捉,影像辨识,语音识别等功能。基于该技术,可以利用手势在游戏中开车、与其他玩家互动、通过互联网与其他Xbox玩家分享图片和信息等,这也显示了它具有非常强大的图像采集与处理功能。
Kinect可以同时获取RGB和深度图像数据,支持实时的全身的骨骼追踪,并可以识別一系列的动作。图2是它的外观图,左边镜头为红外线发射器,中间镜头是一般常见的RGB彩色摄像头,右边镜头是红外线CMOS摄像头所构成的3D深度传感器。微软在2011年6月推出的Kinect for Windows SDK Beta使开发人员可以直接取得距离传感器、彩色摄像机以及四单元麦克风数组的原始数据流进行应用程序开发。此套SDK能够追踪Kinect视野内一位或两位用户的骨架映像,便于建立以体感操作的应用程序。
Kinect不同于普通摄像头的是,它有感知世界的CMOS红外传感器。该传感器通过黑白光谱的方式来感知环境,纯黑代表无穷远,纯白代表无穷近,黑白间的灰色地带对应物体到传感器的距离。它收集视野范围内的每一点,并形成一幅代表周围环境的景深图像。传感器以每秒30帧的速度生成深度图像流,实时3D地再现周围环境。
利用Kinect采集到的深度图信息,可以得到一个20点的人体骨架结构,其二维投影如图3所示,前景分割与骨架提取该系统直接调用了SDK封装函数,得到人体20个节点的3维空间坐标以及节点方向信息,进而得到完整的人体骨架信息。
运用这些信息可以提取出人体姿态特征以及运动特征,用于人体基本动作的识别。譬如,通过比较右手与头部的Y轴坐标差值的阈值变化,可以解析出右手是否举起,如图4所示。
2)通讯模块XL02—232AP1无线模块是UART接口半双工无线传输模块,可以工作在433 MHz公用频段。其传输距离约300 m,其工作电压+5 V,低功耗,可以与单片机I/O口直接相连,发射模式下串口速率为1.2~115.2 kbps,抗干扰能力强。连接电路如图5所示。
2.2 从机
1)动作执行机器人
①手臂动作控制
本作品所使用的机器人有两种结构形式,分别是类人机器人和轮式机器人,不同点是一个是双足站立的,一个是轮式的,它们每条手臂均由4个舵机构成,通过控制每个舵机的旋转角度可以得到不同的手臂动作和腿部动作,每8个舵机角度数据对应于一个特定的手臂动作。可以将每个手臂动作对应的8个舵机角度封装在一个结构体数组中,需要时可以直接调用。类人机器人的腿部动作的控制也是如此。
机器人手臂动作的执行有两种方式:根据从上位机传来的动作指令,做出对应的预先设定的一套动作;对人体的当前动作进行实时模仿,人体的动作信息解析出来后,在上位机中计算山对应的各个角度数据,然后将这些角度数据通过无线传输单元实时地传送到机器人,机器人做出响应,模仿当前人体手臂动作。
②机器人平面运动控制
机器人平面运动的控制针对的是轮式机器人,机器人的平面运动方式大致有4种,分别是前进,后退,左转,右转。这4种运动方式对应于4个指令数据,也同时对应着4个操作者的手势动作。通过真实的开车旋转方向盘来控制机器车的旋转,通过右手相对于左手的超前或落后来控制车的前进和后退,解析出这4个动作后,只需发送对应的4个指令数据即可。机器人硬件结构如图6所示。
2)通讯模块 同主机。
3)电机驱动模块BT37970B直流电机驱动,这是一款H桥有刷直流电机驱动模块,适用3~24 V的大功率直流电机,DC 10~29 V输入直流电压。在25 V电压下,额定持续输出10 A电流,适用于锂电池直接供电。供电为25 V 10 A时测得芯片工作频率高达1 MHz,驱动能力有了明显的提高,响应速度快。两路PWM输入,占空比可以在0~100%,是一般驱动所达不到的。具有瞬间制动能力以及做到全程速度精确控制。适用于锂电池直接供电驱动的机器人或车模比赛。控制方式简单,仅需要接3根输入线即可控制电机制动及正反转,其中GND引脚与单片机的GND相连,P引脚接单片机的PWM输出引脚,R引脚接单片机的PC0引脚,用于对电机转动方向的控制。连接图如图7所示。
4)语音模块最大输出功率为25W,具有30M存储容量,可以通过8个按键触发8段语音,也可以通过RS485/232给模块指令触发220段语音。
5)电源部分采用的是3S锂电池,容量为1500 mAh,额定电压11.1 V,35C超大放电能力。
3 系统软件设计
软件设计采用模块化处理方法,主机程序主要由主程序、Kinect初始化、图像辨识、语音识別、串口通信等模块组成,采用C#编写,编译环境为VS2010,使用部分环境库函数。从机程序主要有主程序、串口通信、电机驱动、舵机驱动、动作函数等模块组成。采用C语言编写,编泽环境为Avrstudi04,使用部分环境库函数。系统程序流程如图8所示。
Kinect将采集到的图像信息传送给上位机,上位机经过图像处理后识别出人体动作,并将处理后的结果输出,如图9所示。机器人实时模仿人体动作测试情况如图10所示。
4 结论
操作者可以站在离Kinect体感传感器3 m左右的距离对机器人进行体感操控。目前该机器人能够实时模仿左、右手各6个简单的动作:高举、半举、乎举、拥抱、架起、放下。以及实时模仿单腿抬起动作。你还可以通过双手模拟方向盘实时控制机器车的前后左右运动,亦可通过语音forward、back、turn left、turn right宋控制机器人的前后左右运动。
机器人在人们牛活中承担着越来越重要的作用,该系统则提供了一种新的控制方式——体感控制,使机器人的控制更加灵活多样,实现了更加自然的人机交互,具有较高的理论研究价值和先进性。同时,通过手势实时控制机器人的方式,能应用于排爆、救援、医疗等诸多行业,具有广阔的市场前景。在此基础上可以根据工业生产等需要,研发出更多种类的自动化机器人,为创建自动化机器人体系提供积极的支持和帮助。