基于Kinect的机器人人机交互系统及方法与制作流程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图片简介:
本技术涉及一种基于Kinect的机器人人机交互系统及方法,系统包括Kinect信息采集模块、人机交互模块、姿态控制模块、语音控制模块、Kinect三维传感器、机器人控制箱和机器人;首先通过Kinect信息采集模块,将图像数据流和音频数据流传递给人机交互模块,通过人机交互模块的语音/文字提示引导用户选择不同的控制模式,进而调用不同的控制模块,实现对机器人的操控。
本技术综合体感、声音、手势多种交互方式,可实现对机器人的运动控制,代替人工在非结构化场景中进行作业,提高机器人的作业能力和智能水平。
技术要求
1.一种基于Kinect的机器人人机交互系统,其特征在于,包括Kinect信息采集模块、人机交互模块、姿态控制模块、语音控制模块、Kinect三维传感器、机器人控制箱和机器人;
Kinect信息采集模块利用Kinect三维传感器,获取图像数据流及语音数据流;
通过人机交互模块选择不同的控制模式,调用姿态控制模块或语音控制模块;
姿态控制模块基于图像数据,根据人体姿态控制机器人机械臂运动;
语音控制模块基于语音数据,实现语音指令的识别,控制机器人进行相应动作。
2.根据权利要求1所述的基于Kinect的机器人人机交互系统,其特征在于,人机交互模块提示用户选择控制模式,包括语音提示和文字提示。
3.一种基于权利要求1所述基于Kinect的机器人人机交互系统的人机交互方法,其特征在于,包括以下步骤:
利用Kinect三维传感器,获取图像数据流及语音数据流;
基于图像数据,根据人体姿态控制机器人机械臂运动;
基于语音数据处理结果,实现语音指令的识别,控制机器人进行相应动作;
通过人机交互模块的语音/文字提示选择不同的控制模式,调用不同的控制模块,实现人机交互。
4.根据权利要求3所述的基于Kinect的机器人人机交互方法,其特征在于,利用Kinect三维传感器,获取多种图像数据信息流及语音信息流,具体为:
步骤1-1、利用Kinect三维传感器的深度摄像头直接获取深度图像,利用Kinect三维传感器的麦克风阵列对语音进行捕获;
步骤1-2、将图像数据流和音频数据流放入缓冲区。
5.根据权利要求3所述的基于Kinect的机器人人机交互方法,其特征在于,基于图像数据,根据人体姿态控制机器人机械臂运动,具体为:
步骤2-1、对图像数据流进行处理,通过Kinect深度图像处理方法获取人体索引信息,提取操作者手势状态信息和关节点信息;
步骤2-2、建立人体姿态——机器人映射关系模型;
步骤2-3、建立关节角度值的滤波算法,使用滤波算法得到的角度代替关节角度;
步骤2-4、将步骤2-3得到的目标关节角度通过TCP/IP协议发送给机器人控制箱,同时机器人控制箱返回机器人的机器人关节状态信息、电气参数信息,所述机器人关节状态信息包括机器人各关节的实时角度、角速度,电气参数信息包括机器人各关节的实时电流、温度;
步骤2-5、机器人控制箱解算收到的控制指令,实现机器人的跟随运动。
6.根据权利要求3所述的基于Kinect的机器人人机交互方法,其特征在于,步骤2-2中建立人体姿态——机器人映射关系模型,具体为:
基于UR机器人建立映射关系模型,其中UR机器人的关节包括机座、肩膀、手肘、手腕1、手腕2和手腕3;
选取步骤2-1提取的关节点信息中的左肩、右肩、右肘、右腕、右指尖以及左右手的手势;
通过所选的5个关节点求解得到人体的腰关节转动角度、右肩关节转动角度、右肘关节转动角度、右腕关节转动角度1、右腕关节转动角度2;
表1为映射关系;
表1:具体映射关系
设选取关节由左肩关节J1(x1,y1,z1)、右肩关节J2(x2,y2,z2)、右肘关节J3(x3,y3,z3)、右腕关节J4(x4,y4,z4)、右指尖关节J5(x5,y5,z5)表示;(1)腰关节转动角度(θ1),具体如下:
腰关节转动角度(θ1)通过左肩关节J1(x1,y1,z1)和右肩关节J2(x2,y2,z2)的坐标关系求得;将两关节点所成的直线J1J2投影至xOz平面得到直线l1,得到l1与x轴的夹角θ1,θ1即为腰关节转动角度:
其中x2≠x1 (1)
(2)右肩关节转动角度(θ2),具体如下:
右肩关节转动角度(θ2)通过右肩关节J2(x2,y2,z2)和右肘关节J3(x3,y3,z3)的坐标关系求得;将直线J2J3投影至xOy平面得到直线l2,直线l2的斜率为k2,l2与x轴的夹角θ2即为肩关节转动角度:
其中x3≠x2 (2)
(3)右肘关节转动角度(θ3),具体如下:
求解右肘关节转动角度(θ3),首先将直线J3J4投影至xOy平面得到直线l3,直线l3的斜率为k3,直线l3与直线l2的夹角θ3即为肘关节转动角度:
(4)右腕关节转动角度1、2(θ4,θ5),具体如下:
求解右腕关节转动角度1、2(θ4,θ5),直线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)手势信息
基于右手手势信息控制末端执行器,右手张开控制末端手抓张开,右手闭合控制末端手抓闭合;左手手势信息系统运行/停止,左手张开控制系统运行,左手闭合控制系统暂停运行。
7.根据权利要求6所述的基于Kinect的机器人人机交互方法,其特征在于,步骤2-3,建立关节角度值的滤波算法,使用滤波算法得到角度代替步骤2-2中得到的关节角度;具体包括以下步骤:
给步骤2-2中得到的关节角度建立一个固定长度的关节角度队列;在队列中把当前时刻的关节角度值与前一时刻的值相减;如果差值小于设定的阈值,则该时刻的关节角度值进入队列尾,同时队列头的数据移出队列;否则,该时刻的关节角度值用上一时刻的值代替,而后进入队列尾,队列头的数据同时移出队列;
队列中的关节角度按进入队列时刻的先后分配权重,先进入队列的角度值权重小,后进入队列的角度权重大,根据权重求出该关节的角度平均值Y:
其中,Xn是当前时刻的角度值,P1是Xn的权重,Xn-1是前一时刻的角度值,P2是Xn-1的权重,Xn-2是前两个时刻的角度值,P3是Xn-2的权重,Xn-3是前三个时刻的角度值,P4是Xn-3的权重。
8.根据权利要求7所述的基于Kinect的机器人人机交互方法,其特征在于,基于语音数据处理结果,实现语音指令的识别,控制机器人进行相应动作,具体为:
步骤3-1、使用Kinect for Windows SDK中的Kinect Audio Source对象从Kinect的麦克风阵列中提取通过降噪、自动增益控制、回声抑制方式处理的音频数据流,然后设定一个存有控制命令对象,该对象由控制命令的语句构成,通过在对象中查找的结果识别出用户的命令;
步骤3-2、对步骤3-1中的控制命令语句设置对应的机械臂控制指令和对应的人机交互操作指令;
步骤3-3、若步骤3-1中解算出的命令与控制命令匹配成功则将对应的操作指令发送给控制程序并实现相应功能;若未匹配成功则结束本次模块的运行。
9.根据权利要求3所述的基于Kinect的机器人人机交互方法,其特征在于,通过人机交互模块的语音/文字提示选择不同的控制模式,调用不同的控制模块,实现人机交互,具体为:
步骤4-1、设计整体的人机交互系统界面,包括姿态/语音模式选择、语音/文字提示、机器人实时关节姿态显示、Kinect人体实时关节姿态显示、机器人实时电气参数监控界面;
步骤4-2、通过调用语音控制模块,识别用户的模式控制需求并进入相应模式进行机器人控制,同时分别在三个窗口可视化机器人关节状态信息、电气参数信息以及人体关节点信息。
技术说明书
基于Kinect的机器人人机交互系统及方法
技术领域
本技术属于机器人技术领域,具体涉及一种基于Kinect的机器人人机交互系统及方法。
背景技术
随着人与计算机的交互越来越频繁,语音识别、手势交互、虚拟现实、体感控制等多种新型人机交互技术取得突破,人机交互方式越来越自然、直观和简单。
Kinect是一种体感设备,基于深度场景分割和骨骼拟合技术,实现对人体的检测追踪。
其非接触式的体感操作方式,在虚拟现实、医学、机器人等众多领域掀起了人机交互研究的热潮,例如:3D虚拟试衣镜、浏览医疗图像的Osirix PACS系统等。
随着机器人技术的快速发展,机器人在人们日常生活中发挥着越来越重要的作用,广泛地应用于国防、工业、医疗等领域,对于提高劳动效率,减轻工人劳动强度具有重要意义。
但在面对救灾、危险品处理、深海勘探,空间实验等一些复杂且危险的作业环境,传统的机器人控制方式大多通过设定程序自主运作或者依赖于操纵杆,操作繁琐,灵活性差。
技术内容
本技术的目的在于提供一种基于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)信息,提取操作者手势状态信息(Hand State)和关节点信息(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、使用Kinect for Windows SDK中的Kinect Audio Source对象从Kinect的麦克风阵列中提取通过降噪、自动增益控制、回声抑制等方式处理的音频数据流,然后设定一个存有控制命令对象,该对象由特定控制命令的语句(“Please do action one”、“Please do action two”、“Please do action three”、“Hello”、“First Pattern”、“Second Pattern”、“Stop”、“Pause”)构成,通过在对象中查找的结果识别出用户的命令。
步骤3-2、对步骤3-1中的控制命令语句设置对应的机械臂控制指令和对应的人机交互操作指令,如表2所示,具体如下:
表2:控制命令与操作指令的对应关系
其中,语音控制模式是指操作者用语音:“Please do action one”、“Please doaction two”、“Please do action three”来控制机器人执行相应的固定动作。
步骤3-3、若步骤3-1中解算出的命令与表2中的控制命令匹配成功则将对应的操作指令发送给控制程序并实现相应功能;若未匹配成功则结束本次模块的运行。
步骤4、建立人机交互模块,搭建整体的人机交互系统,具体步骤如下:
步骤4-1、设计整体的人机交互系统界面,其中包括:姿态/语音模式选择、语音/文字提示、机器人实时关节姿态显示、Kinect人体实时关节姿态显示、机器人实时电气参数监控等功能。
步骤4-2、通过调用步骤3的语音模块,识别用户的模式控制需求并进入相应模式进行机器人控制,同时分别在三个窗口可视化由步骤2-4实时获取的机器人关节状态信息、电气参数信息以及由步骤2-1获取的人体关节点信息。