一种基于Kinect手势识别的小车控制装置的制作方法

文档序号:13660208阅读:463来源:国知局
一种基于Kinect手势识别的小车控制装置的制作方法

本发明属于图像识别与控制技术领域技术领域,涉及一种基于kinect手势识别的小车控制装置。



背景技术:

在一般的小车的控制系统中,想要控制小车的运动姿态,需要人手握操纵杆或者控制器输入相应的指令方可实现。这种操作方式难以满足一些使用者需要与控制器分离的特殊应用场合。与传统的控制方式相比,手势控制的优势在于无需接触任何控制器即可实现对小车的控制。

而传统的手势识别是依靠单一的摄像头或者利用穿戴设备进行的,前者难以克服复杂背景和光线对识别结果的影响且识别结果较慢,后者需要另外穿戴设备,利用上述技术控制小车的话势必带来很多不便。

因此,需要一种新的小车控制装置以解决上述问题。



技术实现要素:

本发明针对现有技术存在的缺陷,,提供一种基于kinect手势识别的小车控制装置。

一种基于kinect手势识别的小车控制装置,包括数据采集模块、手势识别模块、显示模块、通信模块和下位机模块;

所述数据采集模块包括kinect传感器,利用kinect传感器采集人体的深度信息与骨骼信息;

所述手势识别模块用于对所述数据采集模块采集到的数据进行处理,识别出操作人员的控制指令;

所述显示模块用于接收所述数据处理以及手势识别模块的处理数据;

所述通讯模块用于将所述手势识别模块的控制指令传输给所述下位机模块;

所述下位机模块根据所述手势识别模块的控制指令来控制小车的运动状态。

更进一步的,所述测距及测速模块包括霍尔开关和磁性装置,所述霍尔开关设置在所述自行车前叉上,所述磁性物质设置在辐条上。

更进一步的,所述控制模块为单片机。

更进一步的,还包括报警模块,所述报警模块连接所述控制模块。

更进一步的,所述定位及导航系统为北斗定位系统或gps定位系统。

更进一步的,所述存储装置为sd卡。

更进一步的,所述的定位及导航模块、显示模块、控制模块和存储模块为一体式平板计算机。

更进一步的,所述一体式平板计算机设置在车把的中间位置。

更进一步的,所述测速及测距模块、胎压监测模块和一体式平板计算机均为可拆卸式。

更进一步的,所述操作人员的手势包括前进手势、后退手势、左转手势、右转手势和停止手势,所述前进手势利用左手关节的坐标和腰部关节的坐标,其中,hl.position.x和hc.position.x分别代表左手关节的x轴坐标和腰部关节的x轴坐标,hl.position.y和hc.position.y分别代表左手关节y轴坐标和腰部关节y轴坐标,当hl.position.x>hc.position.x且hl.position.y>hc.position.y时,则判定为前进信号;

所述后退手势利用右手关节的坐标和腰部关节的坐标,其中,hr.position.x和hc.position.x分别代表右手关节的x轴坐标和腰部关节的x轴坐标,hr.position.y和hc.position.y分别代表右手关节y轴坐标和腰部关节y轴坐标,当hr.position.x>hc.position.x且hr.position.y>hc.position.y时,则判定为后退信号;

所述左转手势利用左手关节的坐标、左腕关节的坐标、左肘关节的坐标和左肩关节的坐标,其中,hl.position.y代表左手关节的y轴坐标,sl.position.y代表左肩关节的y轴坐标,wl.position.x代表左腕关节x轴坐标,el.position.x代表左肘关节x轴坐标,当hl.position.y>sl.position.y且wl.position.x>el.position.x时,则判定为左转信号;

所述右转手势利用右手关节的坐标、右腕关节的坐标、右肘关节的坐标和右肩关节的坐标,其中,hr.position.y代表右手关节的y轴坐标,sr.position.y代表右肩关节的y轴坐标,wr.position.x代表右腕关节x轴坐标,er.position.x代表右肘关节x轴坐标,当hr.position.y>sr.position.y且wr.position.x>er.position.x时,则判定为右转信号;

所述停止手势利用左手关节坐标、右手关节坐标和腰部关节坐标,其中,hl.position.y代表左手关节y轴坐标,hr.position.y代表右手关节y轴坐标,hc.position.y代表腰部关节y轴坐标,当hl.position.y<hc.position.y且hr.position.y<hc.position.y则判定为停止命令。

有益效果:本发明的基于kinect手势识别的小车控制装置所需计算量小,可不间断地进行实时数据,提高数据的及时性和连续性,整套装置的造价低廉、维护简单,可以为绝大部分使用者所接受,适合大规模推广。

附图说明

图1为基于kinect手势识别的小车控制装置运行流程示意图。

图2为基于kinect手势识别的小车控制装置的装置结构示意图。

图3为基于kinect手势识别的小车控制装置的结果原理图。

图4为手势示意图。

图5为基于kinect手势识别的小车控制装置的电子结构示意图。

具体实施方式

下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。

本发明的基于kinect手势识别的小车控制系统,包括数据采集模块1、手势识别模块2、屏幕显示模块3、通信模块4、下位机模块5。

数据采集模块1安放于固定平台,正对操作人员。主要利用kinect采集深度信息与骨骼信息,深度信息用于确定操作人员的位置,骨骼信息用于手势识别。采集到操作人员的上述信息之后,通过usb传输线传输给数据处理以及手势识别模块2。

手势识别模块2对操作人员发出的动作指令进行解析后,传递给屏幕显示模块3,同时通过通信模块4传输相应的控制指令给下位机5。此模块是计算机内运行的一系列程序以及算法,基于c#语言开发。手势识别模块2包含数据处理子模块201和手势识别子模块202两个子模块。

数据处理子模块201主要用于处理来自数据采集模块的数据,所采集的数据利用kinectsdk的深度和骨骼获取函数来采集信息,同时将采集到的骨骼信息与实时影像重叠,并显示在屏幕显示模块3上,方便操人员得到实时的视觉反馈。深度和骨骼信息包含有人体主要关节的在空间直角坐标系中的坐标,获取深度和骨骼信息主要用于手势识别。

手势识别子模块202根据kinect采集到的深度和骨骼信息与预先在手势识别子模块202设定好的手势进行对比,以此来识别手势,识别完成之后将识别结果显示在屏幕显示模块3上,并将相应指令发送至通信模块4。

手势识别子模块202又包含前进2021,后退2022,左转2023,右转2024,和停止2025五个子模块,分别代表五种设定好的手势。

前进2021子模块用到了两个关节坐标,分别是左手关节的坐标和腰部关节坐标,两个关节点变量如下。

jointhl=s.joints[jointtype.handleft];

jointhc=s.joints[jointtype.hipcenter];

hl.position.x和hc.position.x分别代表左手手部关节的x轴坐标和腰部关节的x轴坐标以数据采集模块1正对平面构造平面直角坐标系,hl.position.y和hc.position.y,分别代表左手关节y轴坐标和腰部关节y轴坐标。如果hl.position.x>hc.position.x且hl.position.y>hc.position.y,也就是说,如果将左手伸到身体右侧且高于腰部,则判定为前进信号。

后退2022子模块用到了两个关节坐标,分别是右手关节的坐标和腰部关节坐标,两个关节点变量如下。

jointhr=s.joints[jointtype.handright];

jointhc=s.joints[jointtype.hipcenter];

如果hr.position.x>hc.position.x且hr.position.y>hc.position.y,也就是说,如果将右手伸到身体左侧且高于腰部,则判定为后退信号。

左转2023子模块需要四个关节坐标,分别是左手关节,左腕关节,左肘关节以及左肩关节,分别对应下述四个变量。

jointhl=s.joints[jointtype.handleft];

jointwl=s.joints[jointtype.wristleft];

jointel=s.joints[jointtype.elbowleft];

jointsl=s.joints[jointtype.shoulderleft];

如果hl.position.y>sl.position.y且wl.position.x>el.position.x也就是出现左手搞过肩膀,左手腕向身体方向挥舞并且超过了左手肘关节的x轴坐标,则计数变量加1hl.position.y和sl.position.y分别代表左手关节y轴坐标和左肩关节y轴坐标,wl.position.x和el.position.x分别代表左腕关节x轴坐标和左肘关节x轴坐标。如果计数变量在一定的时间内计数变量超过了某个数值,则判定为挥手,左转指令成立。

右转2024子模块原理与左转子模块相同。需要四个关节坐标,分别是右手关节,右腕关节,右肘关节以及右肩关节,分别对应下述四个变量。

jointhr=s.joints[jointtype.handright];

jointwr=s.joints[jointtype.wristright];

jointer=s.joints[jointtype.elbowright];

jointsr=s.joints[jointtype.shoulderright];

停止子模块2025需要三个关节坐标,分别是左手关节坐标,右手关节坐标和腰部关节坐标,三个坐标表示如下。

jointhl=s.joints[jointtype.handleft];

jointhr=s.joints[jointtype.handright];

jointhc=s.joints[jointtype.hipcenter];

如果hl.position.y<hc.position.y且hr.position.y<hc.position.y则判定为停止命令,也就是操作人员双手下垂即判定为停止指令。

屏幕显示模块3,分为两个部分,屏幕显示模块3左半部分显示有实时的操作人员视频,视频中用绿色线段标注了操作人员的四肢及躯干,以及各个关节点的位置。屏幕显示模块3右半部分有文本框显示经过手势识别模块2识别之后的指令状态。屏幕显示模块3和手势识别模块2均集成在一台计算机中。

通信模块4包括rs485串口通信子模块401、hc06蓝牙主机子模块402以及hc06蓝牙从机子模块403。rs485串口通信子模块401和hc06蓝牙主机子模块402和计算机相连,共同构成上位机的一部分,rs485串口通信子模块401接收来自手势识别模块2的指令,通过hc06蓝牙主机子模块402发送给位于下位机模块5的hc06蓝牙从机子模块403。

下位机模块5,包括底盘,hc06蓝牙从机子模块,单片机最小系统板,l298n驱动模块,两台驱动电机,9v直流电源,驱动轮以及导向轮。底盘上下两面为水平面。hc06蓝牙从机子模块、单片机最小系统板以及l298n驱动模块安装于底盘上表面。两个驱动轮分别连接两台驱动,9v直流电源以及导向轮安装于底盘下表面。下位机模块5根据数据处理以及手势识别模块2指令来控制下位机模块5中驱动电机正转、反转以及停止来控制小车的运动状态。下位机模块5可以直行、后退、停止以及通过两驱动轮的差动实现左转和右转。下位机模块5,接收到的来自手势识别模块2的指令有五种,分别是字符“1”、“3”、“2”、“4”、“0”,字符“1”表示左转指令,字符“3”表示右转指令,字符“2”表示前进指令,字符“4”表示后退指令,字符“5”表示停止指令,。下位机模块5与其他模块不在一个平台,其他模块处于同一静止平台,可以实现对下位机模块5的远程操控。

本发明采用kinect识别手势,无需控制器即可对小车进行控制,无线通讯模块的加入实现了对小车的远程控制,而且手势识别的过程快速准确。另外程序修改简单方便,可以根据需要修改程序,以识别更多的手势,实现对小车运动状态的精准控制。本发明中使用的小车使用单片机控制,简单,可靠。

本系统设计利用kinect传感器采集深度和骨骼信息,传感器将采集到的数据传递给计算机进行处理,其中软件基于c#语言同时结合kinectsdk开发,运行于window系统的计算机上。数据处理完成后,将操作人员的动作信息以及骨骼信息以视频的形式显示在显示屏上,同时屏幕上显示当前操作人员的指令。然后通过蓝牙通信模块将指令传输给单片机控制的小车,实现对小车运动状态的远程操控。

下面结合附图对本发明进一步说明。

如图1所示,是整个系统的系统结构图,整个系统可以分为上位机和下位机两个部分。上位机部分,包括数据采集模块1、数据处理以及手势识别模块2、屏幕显示模块3以及通信模块4的一部分。图1中上位机部分所示kinect即为数据采集模块1;计算机中包括了手势识别模块2和屏幕显示模块3;蓝牙主机模块和usb转串口模块共同构成了通信模块4的上位机部分。上位机部分主要用于获取手势、识别手势、显示识别结果以及发送控制信号给下位机。

下位机部分包括下位机模块5以及通信模块4的一部分。下位机模块4就是本系统中的小车,下位机部分包括hc06蓝牙从机模块、单片机最小系统、l298n驱动模块、驱动电机、小车底盘以及9v直流电源。蓝牙模块与单片机p3.0、p3.1引脚相连接。l298n驱动模块四个控制端与单片机p1.0-p1.3相连接,pwm输入端与单片机p0.0、p0.1引脚相连接。下位机部分用于接收上位机发送的控制信息并根据信息做出响应。

系统的实现过程如下:

上位机部分:kinect传感器接收原始图像与深度图像,然后通过usb传输线将接收到的图像传到计算机端。

在计算机中数据处理以及手势识别模块2利用kinectforwindowssdkv1.8利用骨骼追踪技术提取图像中人体的骨骼点。然后,通过比较骨骼点的相对位置以及动作轨迹识别出相应的手势,根据识别出的手势利用rs485usb转串口模块和hc06蓝牙主机模块,两个模块连接在一起发送一个相应的控制字符给下位机。

下位机部分:下位机即受控小车,由9v直流电源供电,通过hc06蓝牙从机模块接收从上位机传来的控制字符,经过单片机的处理后从p1.0-p1.3引脚发送pwm信号给l298n驱动模块,驱动模块根据控制信号控制两个驱动电机正转反转以及停止,驱动电机连接两个驱动轮使小车做出相应动作。驱动电机停止,则小车停止;驱动电机同方向旋转,则小车前进或停止;两驱动电机同方向旋转,但是旋转速度不同,则小车左转或右转。

图2所示的为下位机模块5上单片机程序运行的流程图,具体过程如下:

串口初始化并保持停止状态等待第一条中断传来,程序是根据sbuffer的值来执行相应指令的,sbuffer的初始值是0,代表停止,通过while语句不断执行停止指令,直到中断传入。

上位机部分发送控制字符,下位机接收到控制字符之后,程序就进入中断子程序执行,给sbuffer赋予相应的值。例如,上位机部分传来字符“2”,代表前进,那么在中断子程序中就给sbuffer赋值为2,程序立即转到相应子程序发送指令给l298n驱动模块。l298n驱动模块驱动两台驱动电机同向转动,小车前进。

如果没有新的中断传来就在while语句中不断按照上一个sbuffer的值执行指令,直到行的中断传入。

图3所示的为计算机中数据处理以及手势识别模块2程序流程图,具体过程如下:

程序首先探测kinect传感器是否已经连接,如果已经连接则进行串口初始化并通过rgb摄像头获取视频,通过深度摄像头获取骨骼数据流,如果未连接则直接结束运行。

在屏幕显示模块3的软件界面显示获取的视频流,并将骨骼图像包括人体关节的位置以及关节之间的连线映射到视频流上,与视频中人体相对应。

根据获取到的骨骼点坐标,判断其运动方式是否符合预定的五个手势,如果符合则在软件界面上显示出识别的结果并且给下位机发送相应的字符,否则直接返回程序开头执行,指令发送完毕同样返回程序开头执行。

图4所示的为本系统中设置的几种用于操控下位机所用到的手势。从上到下,从左向右,分别代表“前进”、“后退”、“左转”、“右转”以及“停止”。图中所示小人面朝纸外,左上第一幅图左手高于腰部且向右伸,代表“前进”指令;右上第一幅图右手高于腰部且向左伸,代表“后退”指令;中间左边的图左手高于肩部且快速挥动,代表“左转”指令;中间右侧的图右手高于肩部且快速挥动,代表“右转”指令;最后一幅图双手自然下垂,代表“停止”指令。

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