本发明属于机器人技术领域,具体涉及一种基于xtion设备的多功能六足机器人远程控制系统。
背景技术:
六足机器人地形适用性较强,可用于复杂地形,适用范围广,可用于星球探测、灾后救援等领域,除此之外,还可用于家庭服务,如照顾老人、残疾人。总之,六足机器人在生产、生活中有广泛应用。
六足机器人完成较复杂任务,其控制系统起重要作用,然而,现有操作系统对各功能的集成度不高,导致六足机器人的功能有限,无法完成复杂任务。如,现有六足机器人未将slam(simultaneouslocalizationandmapping,同时定位及地图创建)、动作编辑、人机交互、承载能力等功能集合起来,从而使机器人不能完成某些复杂任务。另外,某些机器人操作系统虽然能完成一定较复杂任务,但使用特定控制系统,通用性差。
目前腿式机器人slam面临实时性差,建图精度低的缺点,并且,区别于轮式机器人,六足腿式机器人无法用轮式里程计计算自身位移,以辅助定位。因此,本发明中的slam模块设计了基于多传感器信息融合的slam系统,提高了感知的准确性、快速性和可靠性。
技术实现要素:
本发明提供一种基于xtion设备的多功能六足机器人的远程控制系统,将六足机器人的slam、动作编辑、手势识别和语音识别的功能集合在一起,增加了六足机器人的功能。为了提高系统的通用性,本发明基于ros(robotoperatingsystem,ros),同时,将手势识别、语音识别、动作编辑和slam结合在一起,以便更好完成任务。
一种基于xtion设备的多功能六足机器人的远程控制系统,其特征在于:包括无线网络模块、运动控制单元、动作编辑模块、slam模块、手势识别单元和语音识别模块。
所述无线网络模块实现远程控制系统与六足机器人的控制主板通过pci-e接口通讯,节进而实现远程控制系统对六足机器人的控制。
运动控制单元包括运动模式控制单元与舵机控制单元;其中,运动模式控制单元用来控制六足机器人的运行模式,包括轮行运动、腿式行走和轮腿切换;舵机控制单元用来控制各个驱动舵机上电,进而控制六足机器人开始行走、停止和运动方向。
所述动作编辑模块用来编辑六足机器人的运动动作,包括机器人模型显示子模块、动作设定子模块与操作子模块与动作编辑界面;其中,机器人模型显示子模块用来实时显示由机器人运动状态;动作设定子模块包括条腿足底三轴方向位移设定、绕髋关节、膝关节和踝关节的旋转角度设定与分段时间设定,实现对六足机器人的动作编辑;操作子模块包括姿势预览操作、重置操作、开始控制线程操作、结束控制线程操作、添加姿势操作、删除姿势操作、角度到姿势转换计算操作、生成子轨迹操作、生成轨迹操作、运行轨迹操作、保存轨迹操作、删除轨迹操作与下载轨迹操作。
所述手势识别单元包括手势控制单元与运动控制单元,实现对腿轮复合机器人的手势控制。
所述语音识别模块中预定义有语音指令及与机器人动作的映射关系,通过语音控制六足机器人前进、后退、左转、右转、停止、原地顺时针旋转和原地逆时针旋转运动。
所述的slam模块用于六足机器人定位和创建环境地图;slam模块包括slam模型子模块、二维slam子模块和三维slam子模块。
所述slam模型子模块使用xtionprolive作为视觉传感器,采集的环境信息作为主要信息源,以imu的惯性信息作为补偿,建立机器人的运动模型和相机模型,进而设计多传感器信息融合模型。
二维slam子模块和三维slam子模块均以机器人运动模型、相机模型以及多传感器信息融合模型为基础,使用二维slam算法和三维slam算法构建分别进行二维slam和三维slam。
所述二维slam算法中,令机器人感知到的环境障碍物表面均与地面垂直,由此通过平面栅格地图表示环境信息,采用二维激光扫描仪数据重建环境中物体表面,然后通过匹配算法将单次扫描结果依次拼接、融合,形成整个环境的地图。
所述三维slam算法通过将两帧二维图像提取特征并匹配的方式映射到三维点集,据此计算运动变换;然后采用图优化模型对估计的整体轨迹进行优化,输出最终的地图。
本发明的优点在于:
1、本发明基于xtion设备的多功能六足机器人远程控制系统,基于ros,可移植性强;在六足机器人平台集成了无线网络连接、slam、动作编辑器、手势识别和语音识别功能,使六足机器人能够更好完成任务。
2、本发明基于xtion设备的多功能六足机器人远程控制系统,远程控制界面将无线网络连接、slam、六足机器人动作编辑、手势识别和语音识别集合在一起,便于操作,易于控制六足机器人。
3、本发明基于xtion设备的多功能六足机器人远程控制系统中,slam模块基于ros,且综合考虑处理速度和slam精度,使用基于imu和rgb-d相机的slam算法;且slam模块不仅能用于六足机器人,还能用于四足机器人、轮式机器人、履带式机器人等装有微软kinect或xtionprolive摄像头的其他机器人。
5、本发明基于xtion设备的多功能六足机器人远程控制系统,设计了一种融合imu和rgbd多传感器信息的slam算法,提高了rgbd摄像头slam的精度。
6、本发明基于xtion设备的多功能六足机器人远程控制系统,包含二维slam和三维slam,用户可根据需要选择合适类型。
7、本发明基于xtion设备的多功能六足机器人远程控制系统中,动作编辑器模块通过界面编辑六足机器人的动作,避免了复杂的编程操作,具有简单直观、操作方便的优点,增强了交互的自然性。
8、本发明基于xtion设备的多功能六足机器人远程控制系统中,手势识别单元可移植性强;手势识别单元基于ros,手势识别基于openni框架设计实现,可用于其他机器人控制系统。
9、本发明基于xtion设备的多功能六足机器人远程控制系统中,手势识别单元使用手势控制六足机器人,提高了人与六足机器人交互的自然性,符合人机交互的发展趋势。
10、本发明基于xtion设备的多功能六足机器人远程控制系统中,语音识别模块基于pocketsphinx,使用语音控制六足机器人运动。
11、本发明基于xtion设备的多功能六足机器人远程控制系统中,语音识别模块和手势识别单元互相补充,用户可根据实际情况,选择手势或语音控制六足机器人运动。手势和语音两种交互模式互相补充,既增强了人与机器人交互的自然性,又提高了六足机器人的适用范围。
附图说明
图1为本发明基于xtion设备的多功能六足机器人的远程控制系统所针对的六足机器人结构示意图;
图2为本发明基于xtion设备的多功能六足机器人的远程控制系统所针对的六足机器人控制系统结构框图;
图3为本发明基于xtion设备的多功能六足机器人的远程控制系统结构框图;
图4为本发明基于xtion设备的多功能六足机器人的远程控制系统中slam模块框图;
图5为本发明基于xtion设备的多功能六足机器人的远程控制系统中三维slam算法流程图;
图6为本发明基于xtion设备的多功能六足机器人的远程控制系统中三维slam算法中所应用的位姿变换原理图。
1-本体2-髋关节3-膝关节
4-踝关节5-轮子
具体实施方式
下面结合附图和实施实例对本发明进行详细说明。
本发明一种基于xtion设备的多功能六足机器人的远程控制系统,用于实现搭载有xtion设备的六足机器人定位、导航、动作设计、手势识别控制、语音识别控制,以及六足机器人的无线连接。
上述六足机器人本体1周向均布六条腿,每条腿有三个关节,即:髋关节2、膝关节3和踝关节4,各关节由驱动舵机驱动转动,如图1所示;且六足机器人腿部装有轮子5,在行进过程中可通过对各关节的控制,使六足机器人在移动过程中,可根据地形进行轮行与腿行间的切换,具有很好的地形适应性。本发明中六足机器人分层搭载有xtionprolive摄像头、imu(惯性导航单元)、机载系统、舵机驱动板与电池盒。如图2所示,摄像头用来采集环境信息,并且用来获取人体的信息,用于人机交互。摄像头包含一个rgb相机及一个深度相机;且摄像头两侧的麦克组成麦克阵列,能够有效地获取环境中的声音信息,可用于实现语音控制等自然人机交互方式。imu用于获得六足机器人的自身姿态,辅助定位和创建环境地图。舵机驱动板用于控制六足机器人的6条腿各关节对应的驱动舵机运动。机载系统用于用户管理、信息采集、地形构建、任务管理、路径规划和处理传感器信息;机载系统中的控制主板为控制核心,与摄像头间通过usb接口通讯;与imu通过rs232通讯;与舵机驱动板通过i2c接口通讯,可实现对摄像头与imu的数据采集及数据处理、以及对舵机驱动板的管理。电池盒内置一块12v锂电池和一块7.4v锂电池,用于为六足机器人供电。
针对上述六足机器人,本发明设计的远程控制系统采用分布式架构,包括无线网络模块、运动控制单元、动作编辑模块、slam模块、手势识别单元和语音识别模块,如图3所示。
所述无线网络模块用来实现六足机器人与六足机器人的控制主板通过pci-e接口通讯,实现远程控制系统对六足机器人的控制。
运动控制单元包括运动模式控制单元与舵机控制单元。其中,运动模式控制单元用来控制六足机器人的运行模式,包括轮行运动、腿式行走和轮腿切换。舵机控制单元用来控制各个驱动舵机上电,进而控制六足机器人开始行走、停止和运动方向。
所述动作编辑模块用来通过gui界面编辑六足机器人的运动动作,包括机器人模型显示子模块、动作设定子模块与操作子模块与动作编辑界面,如图2所示。
其中,机器人模型显示子模块通过ros(机器人操作系统)中的rviz(三维可视化模拟工具)生成,用来实时显示由机器人运动状态。
如图2所示,动作设定子模块包括6条腿足底位移(x、y、z三轴方向位移)设定、绕髋关节、膝关节和踝关节的旋转角度设定与分段时间设定,实现对六足机器人的动作编辑。分段时间设定用于子轨迹的步长时间设定,不同子轨迹可设置为不同的分段时间。如图2中的左上角的(0,63.5,-45.9,0,0,-100)分别为第一条腿的足底位移和绕髋关节、膝关节和踝关节的旋转角度,其中0、0、-100分别为第一条腿x、y、z三轴的位移。0、63.5、-45.9分别为第一条腿绕髋关节、膝关节和踝关节的旋转角度。
操作子模块包括姿势预览操作、重置操作、开始控制线程操作、结束控制线程操作、添加姿势操作、删除姿势操作、角度到姿势转换计算操作、生成子轨迹操作、生成轨迹操作、运行轨迹操作、保存轨迹操作、删除轨迹操作与下载轨迹操作,
其中,姿势预览操作用来使机器人模型显示部分中显示动作设定部分内编辑好的动作。在用户未编辑动作时,通过姿势预览操作可使机器人模型显示部分显示预设的六足机器人初始状态(六足站立)。在用户进行姿势预览操作时,若无法正常在机器人模型显示部分中显示,则可通过重置操作,使机器人模型显示部分显示六足机器人初始状态。
开始控制线程操作用来关联动作设定子模块和机器人模型显示单元,使用户可以通过动作设定子模块为六足机器人编辑动作。若进行重置操作后,无法正常在六足机器人模型显示单元显示六足机器人初始状态,表明动作设定子模块与机器人模型显示子模块未关联,则通过开始控制线程操作进行关联即可。
结束控制线程操作用来结束动作设定子模块和机器人模型显示子模块间的关联;此时,用户无法通过动作设定子模块对六足机器人编辑动作。
添加姿势操作用来生成动作设定子模块中设定的六足机器人动作,且可为所设定的动作命名。
删除姿势操作用来删除由添加姿势单元所生成的机器人动作。
角度到姿势转换计算操作用来根据用户在动作设定子模块中设定的机器人某一关节角度计算机器人模型的姿势,并在机器人模型显示单元中进行实时显示。
生成子轨迹操作用来将添加姿势操作所生成的动作生产一段动作序列。
生成轨迹单元用来将生成上述全部动作序列的整体轨迹。
运行轨迹单元用来通过机器人模型显示子模块按照生成轨迹单元生成的整体轨迹,显示出六足机器人的实际运动。
保存轨迹单元,用来保存生成的整体轨迹。
删除轨迹单元,用来删除一段动作序列。
下载轨迹单元,用来载入之前保存的轨迹。
用户可通过动作编辑界面查看编辑好的动作,且只需要点击动作编辑器界面中编辑的动作,便可通过六足机器人模型实时看到相应动作。
所述手势识别单元包括手势控制单元与运动控制单元,实现对腿轮复合机器人的手势控制。本发明中手势识别单元基于linuxubuntu12.04上安装的机器人操作系统(robotoperatingsystem,ros)的hydro版本设计,将手势识别单元与运动控制单元抽象为整个机器人操作系统中的不同节点,则手势识别单元与运动控制单元间的通信可看作不同结点间通信,故模块间以ros(机器人操作系统)中topic(话题)的形式通信,通信的内容即为topic中的message(消息)。
上述手势识别单元包括动态手势识别子模块和静态手势识别子模块,用户可根据需要选择适当的手势识别方法,其中,动态手势识别基于openni(opennaturalinteraction)软件设计,用于实现动态手势识别;openni为开发者提供一个多语言、跨平台的框架,并提供其自然交互的api接口。openniapi(applicationprogramminginterface,应用程序编程接口)便是一组编写自然交互应用的接口。openni的主要目的是形成一个标准应用程序编程接口,以此来搭建视觉和音频传感器与视觉和音频感知中间件通信的桥梁。nite是openni的中间层,主要用来实现手势识别。nite主要通过手势检测器来实现,这些检测器在nite程序中以类的形式出现,用来实现特定手势的识别。本发明中的动态手势识别子模块基于nite设计实现,所使用手势检测器包括稳定检测器(steadydetector)、画圆检测器(circledetector)、推检测器(pushdetector)、移动检测器(swipedetector)。其中,稳定检测器用于识别当前活跃的手部是否处于稳定状态,画圆检测器用于识别当前活跃手部的画圆运动,推检测器用于识别当前活跃手的前推动作(即,手部垂直于身体前推),移动检测器用于识别当前活跃手的击打动作(即,手沿身体正面的平面运动)。
在进行手势识别时,首先通过xtionprolive摄像头采集动态手势的rgb图像信息;随后基于openni软件对采集的图像进行处理,提取手势的运动轨迹,并通过稳定检测器、画圆检测器、推检测器、移动检测器识别手静止不动、画圆、推和移动的手势;随后稳定检测器、画圆检测器、推检测器、移动检测器将各自的回调函数中输出识别结果,并在机器人操作系统中以message的形式将识别结果发送至运动控制单元。运动控制单元根据识别结果,结合动态手势识别单元内预定义的动态手势与机器人运动的映射关系,控制机器人完成相应的运动。上述动态识别子模块使用范围较广,可在室内光线不好的情况下时使用;
所述静态手势识别子模块基于彩色图像,用于识别静态手势。通过静态手势识别子模块,在进行手势识别时;首先通过xtionprolive摄像头采集人体的rgb图像信息,该图像信息通过机器人操作系统中topic中的message发送至静态手势识别子模块;随后,利用静态手势识别子模块内预存的肤色模型和hog特征检测出人脸部分,进而根据人体结构特征,检测出人的身体部分,并由身体部分中分割出人的手部区域,最终提取已分割手部区域的图像特征,进行手势的训练识别,并将识别结果发送运动控制单元,根据识别结果,结合预存于的静态手势与机器人运动的映射关系,控制机器人完成相应的运动。上述静态手势识别子模块可在室内或室外光照好的情况下使用。
所述语音识别模块中预定义有语音指令及与机器人动作的映射关系,由此通过华硕摄像头xtionprolive,基于ros,基于pocketsphinx,可通过语音控制六足机器人前进、后退、左转、右转、停止、原地顺时针旋转和原地逆时针旋转运动。
所述的slam(simutaneouslocalizationandmapping,同步定位与地图构建系统)模块采用分布式架构设计,用于六足机器人定位和创建环境地图。本发明中设计slam模块以六足机器人机载系统为核心,与远程pc客户端间通过无线网络通讯,实现人机交互,远程pc客户端还承担部分运算任务。slam模块中相机数据获取、imu数据采集、数据融合处理、slam程序均在六足机器人机载系统中运行。
本发明中结合六足机器人的特点,在已有算法基础上,探索了多传感器融合算法,设计slam模块包括slam模型子模块、二维slam子模块和三维slam子模块,如图4所示。其中,slam模型子模块采用了视觉传感器和惯性导航单元,建立了混合式传感器融合模型。
所述slam模型子模块使用体感设备华硕xtionprolive作为视觉传感器,采集的环境信息作为主要信息源,以imu的惯性信息作为补偿,建立机器人的运动模型和相机模型,进而设计多传感器信息融合模型。其中,机器人运动模型用于建立机器人坐标系与世界坐标系的联系;相机模型用于建立任意选取的点在世界坐标系中的坐标与图像坐标系中坐标的变换关系,并进行三维重建;本发明采用针孔相机模型建立rgb相机和红外相机的数学模型。
二维slam子模块和三维slam子模块均以机器人运动模型、相机模型以及多传感器信息融合模型为基础,使用二维slam算法和三维slam算法构建分别进行2维slam和3维slam,在保证一定精度的前提下,提高了实时性,满足六足机器人的需要。
所述二维slam算法对环境进行简化,适用于简单结构化环境,如楼宇通道,具有计算量小、实时性好的特点,得到的是线特征。二维slam算法中,令机器人感知到的环境障碍物表面均与地面垂直,由此可通过平面栅格地图即可表示环境信息。本发明中二维slam算法的采用二维激光扫描仪数据重建环境中物体表面,然后通过匹配算法将单次扫描结果依次拼接、融合起来,形成整个环境的地图,具体方法如下:
(1)获取深度数据;
根据相机模型,由深度相机进行深度数据测量,则深度相机每次采集的深度数据为image={ii,j},1≤i≤w,1≤j≤h;其中,w与h分别为深度图像的宽度和高度;ii,j为第i行j列的图像中像素深度值;
(2)虚拟二维激光;
根据步骤a中得到的深度数据结合相机模型可得到,虚拟的二维激光扫描数据源laser,
laser={lm|lm=ii,jk-1(i,j1)t},1≤i≤w(1)
其中,lm为第m个虚拟二维激光扫描数据源。利用极坐标转换将laser转换到极坐标空间即可得到常见形式的二维激光扫描数据:
其中,xm、ym分别为lm在x、y轴上的分量;r为虚拟二维激光扫描数据源的扫描半径;θ为设定的扫描角度。
(3)利用机器人运动模型,通过基于rao-blackwellized的重要性重采样粒子滤波算法进行位姿求解和地图计算,得到当前机器人位姿条件下的地图。所述基于rao-blackwellized的重要性重采样粒子滤波算法中,每个粒子均维护一张地图,且每个粒子中使用n个ekf维护路标,粒子中包含了机器人位姿(x,y,θ)以及环境u;具体方法如下:
a、采样;
从提议分布π(xt|z1:t,u1:t)中采样,结合t-1时刻n个粒子的粒子集
b、通过基于rao-blackwellized的重要性重采样粒子滤波算法将联合概率分布分解成自身位姿和该位姿条件下的地图,得到:
p(x1:t,m|z1:t,u1:t)=p(m|x1:t,z1:t)p(x1:t|z1:t,u1:t)(4)
x1:t为从开始到t时刻机器人的轨迹;m为移动机器人地图;p(x1:t,m|z1:t,u0:t)为机器人轨迹x1:t和地图m的后验概率;p(x1:t|z1:t,u0:t)为机器人轨迹x1:t的后验概率;p(m|x1:t,z1:t)为地图m的后验概率。
(4)计算重要性权重系数。
根据下式计算每个粒子的重要性权重系数wn。
由于提议分布与真实分布一般不一致,因此wn≠1;重要性权重系数评价了该粒子所维护地图的优劣;
(5)重采样,即用具有较高重要性权重系数的粒子替代重要性权重系数较小的粒子;
(6)地图估计。
对于每个粒子来说,可用其轨迹
虽然通过二维slam算法建立的二维地图存在一定优点,但多数情况无法有效描述环境信息,而本发明中三维slam子模块在surf(speededuprobustfeatures,加速鲁棒特征)匹配的基础上,加入闭环检测,利用rgb数据和深度数据得到相邻两帧的三维点集,通过icp算法进行位姿估计,最后在后端采用图优化模型对位姿轨迹进行优化,输出最终的地图。
三维slam算法通过将两帧二维图像提取特征并匹配的方式映射到三维点集,据此计算运动变换。然后采用图优化模型对估计的整体轨迹进行优化,输出最终的地图。三维slam算法分为前端与后端。前端部分通过对rgb-d相机数据和imu进行数据融合形成visual-imuodometry子模块,由该子模块经运动变换,可得到机器人的位姿及其变换矩阵;后端采用图优化模型对建立的地图和位姿矩阵进行优化,提高建图精度及可靠性。最后在优化结果的基础上,重建地图,。具体方法如下:
1)使用surf(speededuprobustfeatures)特征提取与匹配算法进行特征提取和帧间特征匹配。
由于存在一定的误匹配,为了提高后续处理速度,采用欧氏距离对得到的匹配进行筛选,对匹配距离过大的匹配剔除。匹配剔除原则如下式:
dis(matchs)>k·min(dis(matchs))(8)
其中dis表示欧氏距离;k为阈值,matchs为第s帧图像匹配。上式将大于最优匹配距离k倍的匹配剔除。依次提取一定数量的特征匹配作为最终匹配。
2)将步骤1)中得到的最终匹配结果与深度数据利用icp算法(iterativeclosestpoint迭代最近点)求解位姿变换矩阵,通过两个互斥通道进行位姿融合。
当环境本身存在较多红外光或环境表面反射效应强烈都会造成深度相机数据丢失。需要采用imu数据进行融合。imu姿态数据通过互斥通道a、b进行融合,即同一时间只存在a通道或b通道。其中a通道频率高,b通道频率低,兼顾了速度和精度。b通道使用的是拓展卡尔曼滤波(ekf)。
将位姿变换作为系统状态量进行传感器信息融合。由贝叶斯滤波得:
根据感知模型p(ot|xt)、运动模型p(xt|xt-1,vt-1)、机器人初始状态bel(x0)即可递归求出机器人当前状态。式(9)中,ot为t时刻imu测量的数据;vt-1为前一时刻体感摄像头xtionprolive采集的数据;h为常数,h=p(ot|vt-1,ot-1,vt-2,...,o0)-1。
将位姿变换作为系统状态量进行传感器信息融合。在式(9)中,将视觉里程计得到的t作为vt,imu测量的姿态偏转角作为观测量ot,最终xt作为最终的位姿输出。
由于机器人在运动过程中可能会进入环境中已经创建地图的部分,此时不适合直接匹配上一帧数据,因此需要做闭环检测。
闭环检测采用surf算法进行匹配,匹配特征个数达到阈值即匹配成功。若匹配到已经创建地图的帧,则在其基础上估计位姿,创建地图;否则继续匹配其他帧或接受新的数据帧。
在上述闭环检测中,输入为关键帧序列和待检测帧。首先对末尾m帧进行闭环检测,若均未匹配成功,则进行随机匹配,在剩下的关键帧中随机选取n帧进行匹配。
3)后端图优化
后端采用图优化模型对建立的地图和位姿矩阵进行优化,采用图优化库g2o(generalgraphoptimization)对运动估计进行优化。提高建图精度及可靠性。最后在优化结果的基础上,重建环境地图;本发明采用点云图表示环境地图。
对于生成的地图,部分关键帧间只考虑了相邻两帧之间的位姿变换。由于采用依次叠加匹配,slam误差累计将比较明显,在大尺度环境下容易出现匹配失败。
将机器人每帧数据对应的位姿矩阵作为节点,帧之间对应的位姿变换矩阵作为边,建立slam图优化模型,对slam过程的位姿估计进行优化:
g=(v,e)(10)
其中v={zt}为节点集合,其元素表示位姿矩阵;e={ett′}为边集合,其元素表示位姿变换矩阵;如图6所示,ett′表示从t到t′时刻节点z的变换矩阵,满足以下条件:
zt′=ett′zt′(11)
优化模型的目标函数为:
利用通用图优化框架g2o对建立的图模型进行优化。g2o是一个优化算法集,包含了如guassian-newton和levenberg-marquardt等常用算法。
将优化后的关键帧fi加入全局地图,完成对建立的地图和位姿矩阵进行优化;
zt·ft→mmap(13)
上述二维slam计算量小、实时性好,但是环境的简化,得到的是线特征,所建环境地图为二维图,但在多数应用场景下,二维地图无法有效描述环境特征,但三维slam相对速度较慢,二者各有优缺点,用户可根据需要选择使用二维slam,还是三维slam。