论文部分内容阅读
摘 要:本文介绍了一个基于Kinect的机械臂体感操控系统。该系统基于机器视觉的动态手势识别算法,能够跟踪人的手部运动,并且把手部的运动还原到六自由度机械臂上,从而达到对机器人自然控制的目标。实验结果表明:在正常环境下,该系统对于手臂的识别率高达99%,对手势动作的识别率能够达到90%左右。对相机进行标定,其标定误差约为0.16114,该结果不大于标定限制误差0.5。
关键词:Kinect;手势识别;仿人末端执行器;体感交互
1硬件平台选择
机械手臂的体感系统硬件部分选择主要是摄像机和机械手臂的选择。图像采集和机械手臂的控制直接影响到后续算法的执行和系统的识别率。
1.1摄像头
根据设计的要求,选择Kinect 1.0作为图像获取的摄像传感器设备。Kinect传感器不但可以获得较好的景深图像,还可以获得640*480的RGB彩色图像,其本身的SDK软件包是开源的,这非常有利于后续的开发。
1.2机械臂
机械臂的主要组成是舵机,六个舵机与相应的机械架构组成六自由度的机械手臂。六自由度的机械手臂的舵机采用Futaba S-9001,该舵机在4.8V时扭力为3.9kg/cm,速度为0.22s/60°,在6.0V时扭力为5.2kg/cm、速度为0.18s/60°。结合铝合金机械架构,可以组成完整的六自由度机械手臂。
1.3开发平台
本设计采用Kinect for Windows SDK 1.8 作为第一代Kinect的开发工具,1.8版本的SDK结合了不同的开发者的开源代码、WPF设计等,为后续的开发提供了开发条件,包括20个骨骼识别、深度图像的采集、RGB图像采集、电机控制等。该源码采用的是多种语言编程,含有C++、Java、C#等,易于学习。
2核心算法
2.1RGB图像的获取与处理
Kinect获取RGB图像使用的是Kinect上面的CMOS摄像头硬件。只采集到RGB图像是不能直接应用二值化等方式对图像进行分割等操作的,因此需要先对RGB图像进一步处理才行。真彩色图像转成灰度图像是根据心理学公式而来的,如公式(1):
其中 是转换后的灰度值(数值:0~255);R为RGB图像中红色空间数据;G为RGB图像中的绿色数据量;B为蓝色数据量。利用该公式可以将RGB图像变为灰度图像。为了节省内存空间,和提高计算机的运行速度,使用整数类型数据对颜色转换,所以又有式(2)
将图片转换为灰度格式后,就便于对图片细化处理了。
2.2手势识别
使用Kinect SDK对深度临近手腕的部分进行分割,得到手部周围的图像信息,以利于進行手势识别。在手和背景之间选择二值化的阈值,利用手的肤色、亮度等和背景的差异来确定阈值;使用摄像机内参矩阵的方法结合灰度图像二值化后的手指位置确定了手势的空间坐标,并且使用空间向量法求得手部张角,这个张角 可用于机械手的抓取和松开角度设定。
2.3机械手控制
机械臂运动模型采用D-H参数模型。在D-H参数模型下使用矩阵变换的方法,从而确定机械臂的唯一路径模型和姿态模型。如图1所示
最后所要获得的参数就是各个旋转角度。基座的坐标可以人为确定。
3 实验结果
使用张氏棋盘标定的方法,对图像内参矩阵进行标定。采集的图像要求多于10张,因此采集共在11个不同的角度拍摄获得的棋盘图像。使用MATLAB的Calib工具包进行较为简单操作的相机标定。图(2)为图像的标定后误差分析
由图可知误差值均小于0.5,且大部分小于0.3,即可判断标定结果较为准确。
4 总结
本文在分析了国内外学者及企业研究概况,对基于Kinect的体感机器人的设计提出了一种解决方案。采用微软发布的Kinect平台进行手势识别,并将手势识别得到的角度进行相应的处理然后反馈到机械臂中去,令六自由度机械臂模拟人的手部行动。并在本设计中完成了系统硬件的搭建、图像的采集、相机标定、机械臂系统的仿真模型、串口通信等内容。
(作者单位:江苏大学 机械工程学院)
关键词:Kinect;手势识别;仿人末端执行器;体感交互
1硬件平台选择
机械手臂的体感系统硬件部分选择主要是摄像机和机械手臂的选择。图像采集和机械手臂的控制直接影响到后续算法的执行和系统的识别率。
1.1摄像头
根据设计的要求,选择Kinect 1.0作为图像获取的摄像传感器设备。Kinect传感器不但可以获得较好的景深图像,还可以获得640*480的RGB彩色图像,其本身的SDK软件包是开源的,这非常有利于后续的开发。
1.2机械臂
机械臂的主要组成是舵机,六个舵机与相应的机械架构组成六自由度的机械手臂。六自由度的机械手臂的舵机采用Futaba S-9001,该舵机在4.8V时扭力为3.9kg/cm,速度为0.22s/60°,在6.0V时扭力为5.2kg/cm、速度为0.18s/60°。结合铝合金机械架构,可以组成完整的六自由度机械手臂。
1.3开发平台
本设计采用Kinect for Windows SDK 1.8 作为第一代Kinect的开发工具,1.8版本的SDK结合了不同的开发者的开源代码、WPF设计等,为后续的开发提供了开发条件,包括20个骨骼识别、深度图像的采集、RGB图像采集、电机控制等。该源码采用的是多种语言编程,含有C++、Java、C#等,易于学习。
2核心算法
2.1RGB图像的获取与处理
Kinect获取RGB图像使用的是Kinect上面的CMOS摄像头硬件。只采集到RGB图像是不能直接应用二值化等方式对图像进行分割等操作的,因此需要先对RGB图像进一步处理才行。真彩色图像转成灰度图像是根据心理学公式而来的,如公式(1):
其中 是转换后的灰度值(数值:0~255);R为RGB图像中红色空间数据;G为RGB图像中的绿色数据量;B为蓝色数据量。利用该公式可以将RGB图像变为灰度图像。为了节省内存空间,和提高计算机的运行速度,使用整数类型数据对颜色转换,所以又有式(2)
将图片转换为灰度格式后,就便于对图片细化处理了。
2.2手势识别
使用Kinect SDK对深度临近手腕的部分进行分割,得到手部周围的图像信息,以利于進行手势识别。在手和背景之间选择二值化的阈值,利用手的肤色、亮度等和背景的差异来确定阈值;使用摄像机内参矩阵的方法结合灰度图像二值化后的手指位置确定了手势的空间坐标,并且使用空间向量法求得手部张角,这个张角 可用于机械手的抓取和松开角度设定。
2.3机械手控制
机械臂运动模型采用D-H参数模型。在D-H参数模型下使用矩阵变换的方法,从而确定机械臂的唯一路径模型和姿态模型。如图1所示
最后所要获得的参数就是各个旋转角度。基座的坐标可以人为确定。
3 实验结果
使用张氏棋盘标定的方法,对图像内参矩阵进行标定。采集的图像要求多于10张,因此采集共在11个不同的角度拍摄获得的棋盘图像。使用MATLAB的Calib工具包进行较为简单操作的相机标定。图(2)为图像的标定后误差分析
由图可知误差值均小于0.5,且大部分小于0.3,即可判断标定结果较为准确。
4 总结
本文在分析了国内外学者及企业研究概况,对基于Kinect的体感机器人的设计提出了一种解决方案。采用微软发布的Kinect平台进行手势识别,并将手势识别得到的角度进行相应的处理然后反馈到机械臂中去,令六自由度机械臂模拟人的手部行动。并在本设计中完成了系统硬件的搭建、图像的采集、相机标定、机械臂系统的仿真模型、串口通信等内容。
(作者单位:江苏大学 机械工程学院)