基于ROS的空间机器人人机交互系统设计
2015-12-20左轩尘韩亮亮石琪琦
左轩尘,韩亮亮,庄 杰,石琪琦,黄 炜
(1.电子科技大学 通信与信息工程学院,四川 成都611731;2.上海宇航系统工程研究所,上海201109)
0 引 言
随着空间机器人技术的发展,传统的摇杆按键等远程机器人操控方式[1,2]越来越展现出操作繁琐、临场感不强等缺点,因此基于姿态识别[3]和语音识别[4,5]的人机交互方式越来越受到人们的关注,但空间机器人的各项人机交互能力日趋完善的同时,为机器人编写软件这一工作也变得越来越复杂繁重,大量的冗余代码、可移植性差的平台、功能层次性差、仿真的通用性差等各种问题也凸显出来。机器人操作系统ROS (robot operating system)很好地解决了机器人软件开发过程中的代码冗余、可移植性差等问题[6],同时兼有多编程语言、跨平台、软件资源丰富等多个优点于一身[7],越来越多地成为机器人开发领域的首选工具。
本文在基于ROS平台的基础上,设计了操作者使用手臂姿态和语音控制的空间机器人人机交互系统,并通过双虚拟机械臂反馈的方式,来避免视频反馈带来的延迟感,从而实现操作者在虚拟现实环境中对空间机器人的遥操作,改善了传统机器人操作繁琐、临场感差等缺点,为新型空间机器人的人机交互方式提供了基础。
1 ROS系统框架
ROS起源于2007年斯坦福大学人工智能实验室与Willow Garage公司的个人机器人项目PRP (personal robots program)之间的合作。随着2010年Willow Garage正式发布了开源ROS系统,机器人领域展开了学习和使用ROS的热潮[8]。
ROS是开源的机器人软件平台,能为异质计算机集群提供用于机器人的次级操作系统,目标是在机器人研发领域提高代码复用率,主要特点有点对点设计、多语言支持、精简与集成、丰富的工具包、免费开源等。ROS的总体框架结构如图1所示。
图1 ROS总体框架
计算图级主要是描述程序是如何运行的,这一级主要包括节点 (node)、消息 (message)、主题 (topic)和服务(service),其中节点是指执行运算任务的进程,节点之间通过消息进行通讯,消息以一种发布或订阅主题的方式进行传递,ROS控制器则提供了主题发布的服务。其结构如图2所示。
图2 ROS计算图级组织结构
图2中,节点1 将发送数据给需要的节点,因此在ROS控制器上注册了对应的主题和服务;而节点2需要接收对应的消息,因此节点2在ROS控制器上订阅了对应的主题,从而获得该主题发布者的地址与端口,进而与节点1进行通信协商,最终接收到需要的消息数据[9]。ROS计算图级结构可以允许同时多个节点发布或者订阅同一个主题的消息,因此发布节点和接收节点仅需要知道自己所需要的消息的主题,而不必记住其发布节点的名称,这样便可以保证传输的简洁性、统一性和可靠性。
文件系统级主要包括包 (package)和堆 (stack)两个结构。ROS的软件以包的方式组织起来,并提供一种易于使用的结构以便于重复使用。堆是包的集合,提供一个完整的功能给开发者或用户使用,如图3所示。
图3 ROS的文件系统级组织结构
社区级的概念是指网络上发布代码的软件仓库,开发者可以很方便的将自己开发的ROS包或ROS堆共享到社区,也可以从分布式社区结构中找到自己需要的资源。
2 人机交互系统设计
空间机器人人机交互系统的ROS整体结构包括人机交互控制端的ROS堆和远程机械臂端的ROS堆两部分组成,如图4所示。
图4 空间机器人人机交互系统ROS结构
人机交互控制端ROS堆通过人体姿态识别和语音识别获取人的控制信息,将人体的控制信息显示在双虚拟机械臂显示系统上。远程机械臂端的ROS堆负责将收到的控制端姿态信息进行解算,并驱动机械臂进行工作,同时对机械臂当前的姿态情况进行识别,并反馈机械臂的指令执行情况和周围环境情况到人机交互控制端。两个ROS堆之间通过无线网络进行数据的实时同步和交互,并显示在双虚拟机械臂的主显示界面上。
3 人机交互控制端
人机交互控制端ROS堆包括人体姿态识别包、自适应语音识别包和双虚拟机械臂演示包3个部分。人机交互控制端通过人体姿态识别和语音识别获取人的控制信息,并同时接收来自远程机械臂端的机械臂姿态信息和机械臂周边环境的激光数据,将人体姿态、机械臂姿态及虚拟现实环境显示在双虚拟机械臂显示系统上。
3.1 人体姿态识别包
人体姿态识别包的工作流程如图5所示。ROS人体姿态识别包通过陀螺仪传感器和加速度传感器实时获取手臂姿态的角速度信息与加速度信息,采用递归滤波器组的方法进行滤波后,解算出姿态角信息,将获取到的姿态角主题发布到ROS控制端,双虚拟机械臂显示系统通过订阅该主题获得姿态角信息。
图5 人体姿态识别包工作流程
佩戴在人体上的多维传感器阵列会受到人体自然轻微抖动的干扰,产生频率较为集中的干扰噪声。本文中,人体姿态识别包采用复杂度低的均值滤波、卡尔曼滤波(Kalman filter)和利用凯撒 (Kaiser)窗函数设计的有限冲击响应 (finite impulse response,FIR)低通滤波组成的滤波器组,来针对性地滤除人体自然抖动的噪声,从而输出稳定可靠的加速度信号。图6为一次人体姿态运动采集到的加速度信号在经过上述滤波器前后的对比。
姿态传感器采集到的原始加速度数据与真实值的噪声方差约为2.125×10-3,滤波后的噪声方差约为1.76×10-8,较传统卡尔曼滤波后的10-5数量级噪声方差有了明显的提高,可见该滤波器组对于人体自然抖动噪声有了很好的抑制,从而获得了更为精准的人体姿态数据。
姿态角解算采用地理坐标系与设备坐标系两种坐标系对姿态的变化进行研究[10],其中地理坐标系为参考坐标系。传感器运动时,设备坐标系与参考坐标系产生的角度即为姿态角,分别为旋转角γ(Roll)、倾斜角θ(Pitch)和偏移角φ(Yaw)来表示,如图7所示。
图6 姿态传感器加速度信号滤波前后对比
图7 传感器姿态角
若通过角速度求解姿态角,四元素法与坐标系变换理论相结合的方法[11]可以对姿态角进行解算,但涉及到大量的矩阵变换和系数反解,运算复杂度较高。为降低运算复杂度,本文采用欧拉角法进行姿态角解算[12]。传感器三轴姿态角速度分别为wx、wy和wz,从参考坐标系依次转过γ、θ和φ 角则可以得到设备坐标系,即
对式 (1)进行矩阵运算后可以得出
求解式 (2)中矩阵的逆,得到姿态角的表达式
对式 (3)求解便可得到γ、θ和φ 这3个姿态角参数。本文中,双虚拟机械臂显示包通过订阅姿态角发布主题/robot/attitude来获得姿态角信息。
3.2 语音识别包
ROS使用CMU Sphinx和Festival开源项目中的代码,发布了独立的语音识别包,可以将识别出来的语音转换成文字,并交给双虚拟机械臂显示系统进行实时处理[8]。其中的核心文件recognizer.py通过麦克风收集语音消息,并调用语音识别库进行识别生成文本信息,如图8所示。
图8 ROS语音识别程序框架
本系统中添加了up (向上)、down (向下)、turn left(向左)、turn right(向右)、left rotate(向左旋转)、right rotate(向右旋转)、catch (抓取)和release (释放)8 个语音指令到离线语音包robocup.corpus文件中,将其在线生成的语音字典robocup.dic文件和语法文件robocup.lm下载并导入到本地,使用命令roslaunch 来运行语音识别程序robocup.launch即可实现语音识别并控制机械臂执行简单的动作。识别生成的文本信息通过/recognizer/output主题发布消息,其余节点订阅该主题即可获得文本消息。
3.3 双虚拟机械臂显示包
为了改进视频反馈方式的实时性差、不能真实模拟工作环境的缺陷,提高遥操作机器人的精度,本文采用在虚拟现实的主显示界面同时显示双虚拟机械臂的方法。其中虚拟机械臂1订阅了人体姿态识别包的姿态角主题,实时显示人体姿态的运动情况,同时发送姿态信息到远程机械臂端的ROS堆;虚拟机械臂2则接收来自远程机械臂堆的真实机械臂姿态和周围环境的情况,并通过虚拟现实技术实时显示在主显示界面上,达到操作者通过观看主界面遥操作机械手的目的,如图9所示。
图9 虚拟机械臂1 (左)和虚拟机械臂2 (右)显示界面
双虚拟机械臂显示ROS包接收来自远程机械臂姿态识别系统中激光传感器和深度传感器测量出来的周边环境的激光数据,然后使用gmaping工具包生成虚拟现实的环境地图,通过ROS 中的3D 可视化工具rviz显示在主显示界面上。
4 远程机械臂端
远程机械臂端ROS堆包括机械臂舵机控制包、机械臂姿态识别包和机械臂姿态运算包3个部分,负责将收到的控制端姿态信息进行解算,并驱动机械臂进行工作,同时采用传感器组对机械臂当前的姿态和周围环境进行探测,并反馈探测到的数据到人机交互控制端。
机械臂姿态运算ROS包接收来自人机交互控制端的人体姿态数据,将姿态信息进行运算,分解成机械手每个舵机的运动角度。机械臂舵机控制包则通过远程ROS控制核心订阅这些舵机运动角度信息,实时驱动机械臂进行运动。本实验系统以六自由度的舵机控制机械手为例,演示了姿态控制机械手的具体实现过程。图10为机械臂舵机控制包根据人体姿态控制机械臂的实验。
图10 远程ROS机械手控制堆演示实验
机械臂姿态识别ROS包通过读取机械臂上的曲度传感器和激光传感器,获取机械臂的运动姿态和周围环境的深度数据,反馈给本地人机交互系统进行处理,操作者便可以通过主显示界面直观地看到远程机械臂的工作状态。
5 结束语
本文设计了一种基于ROS机器人操作系统的空间机器人人机交互系统。该系统通过采集人体的姿态信息和语音控制信息,通过对采集到的信息进行分析处理来控制远程机械臂进行运动,并将机械臂的实时姿态反馈至主显示界面;同时,系统采用激光传感器采集激光数据,并使用ROS包生成机械臂周围的虚拟现实环境,解决了传统空间机器人操控方式的操作繁琐、系统延时大、现场感不强等缺点,使操作人员有如身临其境地操作远程机械臂,能高效地完成机械臂控制作业。
[1]TANG Xinxing,NI Tao,Hironao Yamada,et al.Haptic feedback for master-slave construction tele-robot based on virtual reality technology [J].Machine Tool & Hydraulics,2013,41 (21):29-33 (in Chinese). [唐新星,倪涛,山田宏尚,等.主从遥操作工程机器人的虚拟触觉反馈 [J].机床与液压,2013,41 (21):29-33.]
[2]TIAN Guo.Research of control strategies on tele-operated construction robot system based on wireless network [D].Guangdong:Guangdong University of Technology,2014 (in Chinese).[田果.基于无线通信网络的遥操作工程机器人系统控制策略研究 [D].广东:广东工业大学,2014.]
[3]CHEN Yimin,ZHANG Yunhua.Research on human-robot interaction technique based on hand gesture recognition [J].Robot,2009,31 (4):351-356 (in Chinese). [陈一民,张云华.基于手势识别的机器人人机交互技术研究 [J].机器人,2009,31 (4):351-356.]
[4]SU Minfa.Home service robot control system based on speech signals recognition [D].Guangdong:Guangdong University of Technology,2014 (in Chinese). [苏敏发.基于语音识别的家用服务机器人控制系统 [D].广东:广东工业大学,2014.]
[5]JIN Zuguang,CHEN Chao,TANG Jian.Design of the RFIDbased voice interaction system of indoor guide robot for the blind [J].Process Automation Instrumentation,2014,35(3):73-76 (in Chinese). [靳祖光,陈超,唐坚.一种室内导盲机器人的RFID-语音交互系统设计 [J].自动化仪表,2014,35 (3):73-76.]
[6]HUANG Kaihong,YANG Xingrui,ZENG Zhiwen,et al.Design of outdoor mobile robot software system based on ROS[J].Robot Technique and Application,2013,26 (4):37-41(in Chinese).[黄开宏,杨兴锐,曾志文,等.基于ROS户外移动机器人软件系统构建 [J].机器人技术与应用,2013,26 (4):37-41.]
[7]ZHANG Jianwei,ZHANG Liwei,HU Ying,et al.Opensource robot operating system—ROS [M].Beijing:Science Press,2012 (in Chinese).[张建伟,张立伟,胡颖,等.开源机器人操作系统—ROS [M].北京:科学出版社,2012.]
[8]ROS Summarize [EB/OL]. [2013-10-1].http://robotdu.com/thread-213-1-1.html,2013 (in Chinese). [ROS探索总结 [EB/OL]. [2013-10-1].http://robotdu.com/thread-213-1-1.html,2013.]
[9]GAO Ya,LI Xiaojuan,GUAN Yong,et al.Theorem prover ACL2-based verification of node communication in the robot operating system ROS [J].Journal of Chinese Computer Systems,2014,35 (9):2126-2130 (in Chinese).[高雅,李晓娟,关永,等.运用定理证明器ACL2 验证机器人操作系统ROS节点间通信 [J].小型微型计算机系统,2014,35 (9):2126-2130.]
[10]XIAO Qian,YANG Ping,XU Libo.A gesture recognition method based on MEMS IMU [J].Journal of Transduction Technology,2013,26 (5):611-615 (in Chinese). [肖茜,杨平,徐立波.一种基于MEMS惯性传感器的手势识别方法[J].传感技术学报,2013,26 (5):611-615.]
[11]Yun X,Bachmann E R,McGhee R B.A simplified quaternion-based algorithm for orientation estimation from earth gravity and magnetic field measurements[J].IEEE Transactions on Instrumentation and Measurement,2008,57 (3):638-650.
[12]LIU Xing.The attitude test algorithm based on MEMS multidimensional inertial sensors [D].Harbin:Harbin Engineering University,2013 (in Chinese).[刘星.多维MEMS惯性传感器的姿态解算算法研究 [D].哈尔滨:哈尔滨工程大学,2013.]