基于Kinect的机器人人机交互系统及方法与流程

文档序号:15279418发布日期:2018-08-28 23:21阅读:363来源:国知局

本发明属于机器人技术领域,具体涉及一种基于kinect的机器人人机交互系统及方法。



背景技术:

随着人与计算机的交互越来越频繁,语音识别、手势交互、虚拟现实、体感控制等多种新型人机交互技术取得突破,人机交互方式越来越自然、直观和简单。

kinect是一种体感设备,基于深度场景分割和骨骼拟合技术,实现对人体的检测追踪。其非接触式的体感操作方式,在虚拟现实、医学、机器人等众多领域掀起了人机交互研究的热潮,例如:3d虚拟试衣镜、浏览医疗图像的osirixpacs系统等。

随着机器人技术的快速发展,机器人在人们日常生活中发挥着越来越重要的作用,广泛地应用于国防、工业、医疗等领域,对于提高劳动效率,减轻工人劳动强度具有重要意义。但在面对救灾、危险品处理、深海勘探,空间实验等一些复杂且危险的作业环境,传统的机器人控制方式大多通过设定程序自主运作或者依赖于操纵杆,操作繁琐,灵活性差。



技术实现要素:

本发明的目的在于提供一种基于kinect的机器人人机交互系统及方法,综合体感、声音、手势多种交互方式,可实现对机器人的运动控制,代替人工在非结构化场景中进行作业,提高机器人的作业能力和智能水平。

实现本发明目的的技术方案为:一种基于kinect的机器人人机交互系统,包括kinect信息采集模块、人机交互模块、姿态控制模块、语音控制模块、kinect三维传感器、机器人控制箱和机器人;

kinect信息采集模块利用kinect三维传感器,获取图像数据流及语音数据流;

通过人机交互模块选择不同的控制模式,调用姿态控制模块或语音控制模块;

姿态控制模块基于图像数据,根据人体姿态控制机器人机械臂运动;

语音控制模块基于语音数据,实现语音指令的识别,控制机器人进行相应动作。

一种基于kinect的机器人人机交互方法,包括以下步骤:

利用kinect三维传感器,获取图像数据流及语音数据流;

基于图像数据,根据人体姿态控制机器人机械臂运动;

基于语音数据处理结果,实现语音指令的识别,控制机器人进行相应动作;

通过人机交互模块的语音/文字提示选择不同的控制模式,调用不同的控制模块,实现人机交互。

本发明与现有技术相比,其显著优点为:(1)本发明结合姿态、手势和语音等方式设计的人机交互模块、姿态控制模块和语音模块,可提供更加自然、灵活多样的人机交互方式;(2)本人机交互系统与机器人通信实时性好,机器人运动精度高,采用人机交互的方式可以很好地解决工程实际应用中面临的路径规划避障、防碰撞、目标识别与定位等技术难题,同时能较好地解决技术人员培训时间长、操作方式繁琐且错误率高等实际问题,提高作业效率和开发效率;(3)本发明能够应用于一些需要人机共融、机器人难以自主作业的复杂场景中,如救灾、危险品处理、空间实验、海底勘探等,具有广阔的应用前景。

附图说明

图1为本发明的基于kinect的机器人人机交互方法流程图。

图2为本发明的kinect信息采集模块流程图。

图3为本发明的姿态控制模块流程图。

图4为ur机器人的关节示意图。

图5为本发明实施例的腰关节转动角度θ1示意图。

图6为本发明实施例的肩关节转动角度θ2示意图。

图7为本发明实施例的肘关节转动角度θ3示意图。

图8为发明实施例的腕关节转动角度1、2(θ4、θ5)示意图。

图9为本发明实施例的滤波算法流程图。

图10为本发明实施的语音模块流程图。

具体实施方法

本发明的基于kinect的机器人人机交互系统,包括:软件设计和硬件设备,硬件之间通过网络、usb接口连接。所述软件设计包括kinect信息采集模块、人机交互模块、姿态控制模块、语音模块;所述硬件设备包括kinect三维传感器、机器人控制箱和机器人。

系统首先通过kinect信息采集模块,将图像数据流和音频数据流传递给人机交互模块,通过人机交互模块的语音/文字提示引导用户选择不同的控制模式,进而调用不同的控制模块,实现对机器人的操控。具体为:

kinect信息采集模块利用kinect三维传感器,获取图像数据流及语音数据流;

通过人机交互模块选择不同的控制模式,调用姿态控制模块或语音控制模块;

姿态控制模块基于图像数据,根据人体姿态控制机器人机械臂运动;

语音控制模块基于语音数据,实现语音指令的识别,控制机器人进行相应动作。

本发明还提供一种基于kinect的机器人人机交互系统的人机交互方法,如图1所示,包括以下步骤:

步骤1、利用kinect三维传感器,获取图像数据流及语音数据流,如图2所示,具体步骤如下:

步骤1-1、利用kinect三维传感器的深度摄像头直接获取深度图像、利用kinect三维传感器的麦克风阵列对语音进行捕获。

步骤1-2、将图像数据流和音频数据流放入缓冲区。

步骤2、基于图像数据,根据人体姿态控制机器人机械臂运动,如图3所示,具体步骤如下:

步骤2-1、将步骤1中的图像数据信息流进行处理,通过kinect深度图像处理方法获取人体索引(bodyindex)信息,提取操作者手势状态信息(handstate)和关节点信息(joint)。

步骤2-2、建立人体姿态——机器人映射关系模型:

由于不同机器人之间存在的差异,需要根据不同的机器人结构设计不同的映射关系模型。本发明实施例基于ur机器人建立了一种映射关系模型,其中ur机器人的关节规定如下a:机座,b:肩膀,c:手肘和d、e、f:手腕1、2、3,如图4所示。

本发明实施例建立映射关系模型的具体步骤如下:

选取步骤2-1提取的关节点信息中的左肩(shoulder_left)、右肩(shoulder_right)、右肘(elbow_right)、右腕(wrist_right)、右指尖(hand_tip_right)以及左右手的手势(hand_right_state、hand_left_state)。

通过所选的5个关节点求解得到人体的腰关节转动角度(θ1)、右肩关节转动角度(θ2)、右肘关节转动角度(θ3)、右腕关节转动角度1(θ4)、右腕关节转动角度2(θ5)。表1为本发明实施例的具体映射关系。

表1:具体映射关系

为方便求解,设选取关节由左肩关节j1(x1,y1,z1)、右肩关节j2(x2,y2,z2)、右肘关节j3(x3,y3,z3)、右腕关节j4(x4,y4,z4)、右指尖关节j5(x5,y5,z5)表示,文中的转动角度示意图皆为镜面视角。

(1)腰关节转动角度(θ1),如图5所示,具体如下:

求解腰关节转动角度(θ1),可以通过左肩关节j1(x1,y1,z1)和右肩关节j2(x2,y2,z2)的坐标关系求得。将两关节点所成的直线j1j2投影至xoz平面得到直线l1,得到l1与x轴的夹角θ1,θ1即为腰关节转动角度:

其中x2≠x1(1)

(2)右肩关节转动角度(θ2),如图6所示,具体如下:

右肩关节转动角度(θ2)的求解与θ1的求解方法类似,通过右肩关节j2(x2,y2,z2)和右肘关节j3(x3,y3,z3)的坐标关系求得。将直线j2j3投影至xoy平面得到直线l2,直线l2的斜率为k2,l2与x轴的夹角θ2即为肩关节转动角度:

其中x3≠x2(2)

(3)右肘关节转动角度(θ3),如图7所示,具体如下:

求解右肘关节转动角度(θ3)的方法略有不同,首先将直线j3j4投影至xoy平面得到直线l3,直线l3的斜率为k3,直线l3与直线l2的夹角θ3即为肘关节转动角度:

(4)右腕关节转动角度1、2(θ4,θ5),如图8所示,具体如下:

求解右腕关节转动角度1、2(θ4,θ5)的方法与求解θ3的方法相同类似,直线j3j4与直线j4j5的夹角α在xoy平面的投影即为θ4,夹角α在xoz平面的投影即为θ5。

θ4的求解在xoy平面中,直线j3j4在xoy平面中的投影为l3,直线l3的斜率为k3,直线j4j5在xoy平面中的投影为l4,直线l4的斜率为k4,直线l4与直线l3的夹角θ4即为腕关节转动角度1;

θ5的求解在xoz平面中,直线j3j4在xoz平面中的投影为l'3,直线l'3的斜率为k'3,直线j4j5在xoz平面中的投影为l'4,直线l'4的斜率为k'4,直线l'4与直线l'3的夹角θ5即为腕关节转动角度2:

(5)手势信息

基于右手手势信息(hand_right_state)控制末端执行器,在本发明实施例中,右手张开控制末端手抓(gripper)张开,右手闭合控制末端手抓(gripper)闭合;左手手势信息(hand_left_state)系统运行/停止,在本发明实施例中,左手张开控制系统运行,左手闭合控制系统暂停运行。

步骤2-3、建立关节角度值的滤波算法。使用滤波算法得到角度yi代替步骤2-2中得到的关节角度θi,其中i=1,2,3,4,5。

滤波算法如图9所示,具体如下:

给步骤2-2中得到的关节角度建立一个固定长度的关节角度队列。在队列中把当前时刻的关节角度值与前一时刻的值相减。如果差值小于设定的阈值,则该时刻的关节角度值进入队列尾,同时队列头的数据移出队列;否则,该时刻的关节角度值用上一时刻的值代替,而后进入队列尾,队列头的数据同时移出队列。

队列中的关节角度按进入队列时刻的先后分配适当的权重,先进入队列的角度值权重小,后进入队列的角度权重大,根据权重求出该关节的角度平均值y。

其中,xn是当前时刻的角度值,p1是其权重,xn是前一时刻的角度值,p2是其权重,xn-2是前两个时刻的角度值,p2是其权重,xn-3是前三个时刻的角度值,p4是其权重。

步骤2-4、将步骤2-3得到的5个目标关节角度通过tcp/ip协议发送给机器人控制箱,同时机器人控制箱返回机器人的机器人关节状态信息、电气参数信息,其中机器人关节状态信息包括机器人各关节的实时角度、角速度,电气参数信息包括机器人各关节的实时电流、温度等。

步骤2-5、机器人控制箱解算收到的控制指令,实现机器人的跟随运动。

步骤3、基于步骤1中的语音数据处理,实现对机器人的运动控制,建立语音模块,如图10所示,具体步骤如下:

步骤3-1、使用kinectforwindowssdk中的kinectaudiosource对象从kinect的麦克风阵列中提取通过降噪、自动增益控制、回声抑制等方式处理的音频数据流,然后设定一个存有控制命令对象,该对象由特定控制命令的语句(“pleasedoactionone”、“pleasedoactiontwo”、“pleasedoactionthree”、“hello”、“firstpattern”、“secondpattern”、“stop”、“pause”)构成,通过在对象中查找的结果识别出用户的命令。

步骤3-2、对步骤3-1中的控制命令语句设置对应的机械臂控制指令和对应的人机交互操作指令,如表2所示,具体如下:

表2:控制命令与操作指令的对应关系

其中,语音控制模式是指操作者用语音:“pleasedoactionone”、“pleasedoactiontwo”、“pleasedoactionthree”来控制机器人执行相应的固定动作。

步骤3-3、若步骤3-1中解算出的命令与表2中的控制命令匹配成功则将对应的操作指令发送给控制程序并实现相应功能;若未匹配成功则结束本次模块的运行。

步骤4、建立人机交互模块,搭建整体的人机交互系统,具体步骤如下:

步骤4-1、设计整体的人机交互系统界面,其中包括:姿态/语音模式选择、语音/文字提示、机器人实时关节姿态显示、kinect人体实时关节姿态显示、机器人实时电气参数监控等功能。

步骤4-2、通过调用步骤3的语音模块,识别用户的模式控制需求并进入相应模式进行机器人控制,同时分别在三个窗口可视化由步骤2-4实时获取的机器人关节状态信息、电气参数信息以及由步骤2-1获取的人体关节点信息。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1