文档详情

基于体感识别的搬运机器人.ppt

发布:2016-06-16约2.58千字共20页下载文档
文本预览下载声明
基于体感识别的搬运机器人 作者:李青胜 同组人:李孙华,孟祥宇 1.设计背景 随着科技的进步,传统的鼠标、键盘等输入设备逐渐不被用户所喜爱,而自然人机交互也走向了历史的舞台,人机交互在现今世界中的一个重要体现就是体感技术时代的到来。日本是体感技术应用较早的国家,其将体感技术与机器人结合,用于完成人力不能完成的事件,例如在搬运较重的物品时,只需要做出相应的动作就可以完成。在人类未来30年的工作和生活中必然扮演着重要的角色。 2.设计思想: 本项目上位机是在Linux操作系统下的Fedora开发平台上运行,采用Kinect传感器捕捉到人体的深度图像,在openNI库中提取出人的骨骼点和空间坐标,并通过空间向量算法计算出机器人各关节舵机所需的角度,并通过无线模块发送至下位机,使机器人完成上半身的随动动作,以搬运物体,这极大地扩展了机器人的使用空间。机器人行走是用Android手机端的重力感应来控制其前进、后退、左转、右转的动作。机器人部分是以STC12C5A60S2为主控制器,来完成六自由度机械臂的调速和机器人的行走,并接受上位机发送来的控制命令。 3.整体框架 kinect传感器简介 Kinect共有三个摄像头,中间的镜头是RGB彩色摄像机,左右两边镜头分别为红外线发射器和红外线CMOS摄像机 Kinect搭配了追焦技术,底座马达会随着对焦物体移动跟着转动 Kinect内置阵列麦克风 阵列,用于语音识别 4.上位机初始化设计 4.1.kinect体感系统初始化 在进行人体骨骼识别前,需要进行一系列的初始化工作,包括应用程序配置集初始化、OpenNI初始化、OpenGL初始化、串口初始化。系统初始化流程如图所示: 系统初始化流程图 4.2.骨骼识别流程   一个完整的识别流程主要包括深度图像的获取,通过OpenNI骨骼识别算法库,利用深度图像识别出人体关节点并提取空间坐标,通过滤波、空间向量计算,为机器人控制器提供控制数据。骨骼识别流程如图所示: 骨 骼 识 别 流 程 图 4.3滤波算法 由于Kinect传感器采集到的数据会有扰动,从而造成机器人控制的不稳定性,因此必须对识别出来的骨骼点进行滤波处理,以保证机器人动作稳定、连贯。 本系统采用了一种改进型的限幅滤波算法,此滤波算法采用了动态规划的思想,保证每次滤波后的结果都是最优解,从而从整体上得出最优解。滤波算法的详细流程如图所示: 滤波算法流程图 4.5空间角度的计算 Kinect所使用的空间坐标系不同于常见的空间坐标系,其x轴与y轴的零点与传统空间坐标系相同,但其z轴坐标零点为Kinect传感器,正方向Kinect指向的正前方。Kinect空间坐标系如图所示: 由向量的可平移性质及方向性,可以推导出Kinect坐标系中任意两个不重合的坐标点A(x1,y1,z1),B(x2,y2,z2)经过变换,可转化到传统空间坐标系中,对其组成的向量AB,可以认为是从坐标轴零点引出。转化公式为: 根据上述性质,可以将人体关节角度计算简化为对空间向量夹角的计算。 坐标变换 转换公式 关节角度计算—准确算法 4.6重力感应程序设计: 本设计用到的传感器类Sensor.TYPE_ACCELEROMETER,即加速度传感器,在获取到相应传感器后,通过先前获取的SensorMangager对象注册其事件监听器,并在其中完成逻辑代码的编写。在程序退出或后台运行时,会触发onPause方法,程序要在此关闭对传感器的调用,否则手机的电量会很快被耗尽。 重 力 感 应 流 程 图 5.机器人控制器设计: 5.1.根据本文的设计需求,机器人控制器主要完成与上位机通信并进行控制信息校验,依据接收到的控制信息,控制机器人完成相应动作。由于机器人动作本身具有一定的局限性,所以需要对机器人相应关节舵机进行限幅,以保证机器人自身的安全。机器人控制系统的整体设计如图所示: STC12C5A60S2 6.机器人控制器软件设计 6.1通信协议采用协议头+协议主体+协议尾三部分进行封装,其正确性校验首先是依赖串口对每一字节的自动校验,另一部分是对协议体长度进行求和校验。 6.2.通信协议双缓冲模型   由于对机器人进行控制时,需要读取缓冲区数据,这就要求保证当前被读取的缓冲区不能进行写入操作。若采用传统双缓冲区模型,需要在读取缓冲区数据时,禁用串口中断,这会导致性能下降并造成数据丢失。 为了解决此问题,本文设计了双缓冲区模型,其核心思想是采用两个独立的缓冲区,其中一个缓冲区为读取安全
显示全部
相似文档