学生姓名:向朝晖
班班级级:机械2018-02班
指导教师:单奇
毕设题目:《小A机器人多传感器融合定位系统设计》
一、概况
1.选题意义
近几年,随着科学技术的进步,尤其是计算机技术、传感器技术、人工智能、 神经网络、信号处理等技术的发展,移动机器人的研究逐渐向实用化、高效化、智能化的方向发展,并逐渐被应用在工业、农业、交通、医疗和服务等各个行业领域。移动机器人要想实现避障 、SLAM和路径规划等功能,定位是必须解决的基本问题。它不仅是机器人能够顺利完成各项任务最基本的要求,同时也是移动机器人实现自主智能的一个关键技术。
传统的移动机器人通常配备单一传感器,然而,仅使用单一传感器定位的方法面临越来越多的挑战。因为其性能有限,无法满足移动机器人的环境感知,在一定程度上阻碍了移动机器人和环境的交互。例如里程计法,具有良好的短期精度和较高的采样速率,但无法避免时间漂移的问题,任何小的常量误差会在长时间定位过程中不断累积,形成累积误差。而单一的视觉定位法虽然累计误差小,定位准确度高,但是图像处理计算量很大。由此可见,现有的室内定位方案仍具有诸多不足,所以移动机器人在室内环境下的定位问题得到了广泛重视。
本项目以bwin必赢唯一官方网站bwin必赢唯一官方网站的智能移动机器人小A为实施平台,针对三轮全向移动机器人在室内环境下的自主定位问题,提出一种融合视觉相机和编码器的信息来进行环境监测,并获取位置信息的定位系统设计。将Kinect DK相机、编码器同时安装在移动机器人上,平时采用编码器定位来获得机器人的位置姿态信息,定时采用视觉测距来修正位姿,消除累积误差现象。
与传统的、采用单一传感器定位的方法相比,该套设计通过对不同传感器信息的优化组合,一方面能够充分发挥里程计法短时间内定位精度高的优点,保证了其在实际运行中具有较为精准的定位数据。另一方面,又能利用视觉传感器补偿其长期定位的累积误差,使得不同传感器信息在时间和空间上得到合理配置和充分使用,实现更加稳定可靠的实时定位,这对于移动机器人的控制具有十分重要的意义。
2.任务分解
(1)文献综述,制定方案(2周)
完成对相关文献的阅读,资料的查找。了解基于视觉传感器和基于编码器的移动机器人定位方法并确定多传感器融合方案。
(2)系统总体设计(1周)
了解现有小A机器人的结构,设计系统的整体框架,选择合适的编程语言和环境。
(3)电机编码器定位(3周)
获取编码器数据,通过位姿转换矩阵,来计算得到机器人的位姿信息;
(4)基于YOLOV3神经网络的目标识别训练(3周)
自制数据集,用YOLOV3对样本进行训练,获得权重文件,使其能够实现有效识别视觉标记点,并控制机器人搜寻目标点。
(5)基于TOF相机的视觉定位(3周)
掌握TOF相机中Kinect DK相机的测距原理,学习基于Kinect DK相机的视觉目标识别和定位方法。编写小A机器人的视觉定位程序。
(6)实验调试(3周)
编写程序,补充通讯模块,使相机获得的位置信息能够与编码器对接,来更新编码器定位数据。将程序输入到小A机器人平台,在实地进行实验,测试性能,对程序加以完善。
(7)撰写毕业论文(2周)
对实验效果进行分析总结和整理,并撰写毕业设计论文,准备结题答辩。
二、已完成工作
2.1 文献阅读方面完成部分
完成了对相关文献的阅读和资料的查找,了解了移动机器人关于视觉定位和编码器定位的原理和应用,以及翻译了此领域的英文文献。
2.2 系统总体设计完成部分
移动机器人平台已组装完毕:小A机器人使用3个均匀分布夹角为120°的全向轮来实现平面内的全向移动,三个全向轮同时接触地面,如图1所示。为了保证全向底盘能够由足够的驱动性,在底盘上配备了三个独立的电机,电机为直流减速电机并带有编码器。通过联轴器与全向轮连接,呈三角形分布,如图2所示。
图1 整体结构 图2 底盘电机分布
码盘架上固定了编码器和全向轮,全向轮的主转动轴与编码器转轴连接,固定支架上固定有三个码盘架,三个码盘架上的三个编码器转轴轴线所在竖直平面之间的夹角均为120°,三个全向轮同时接触运动地面;采用三码盘全场定位系统,当移动机器人运动时,三个全向轮被动旋转,能够准确获取机器人运动全方位移动数据,从而减小角度漂移而导致定位不准的影响,通过三个码盘坐标的更新公式获取待定位机器人在三个自由度的变化情况,实现相对定位,提高机器人在不同场地条件的状态下定位系统的精度,保证其在实际运行中对突发事件或地况均具有较为精准的定位数据。
2.3 基于YOLOV3神经网络的目标识别训练部分
(1)环境配置
操作系统:windows10;
依赖: Visual Stadio2019、 CUDA10.2、cudnn、Opencv3.4.0;
编译darknet源码。
(2)制作数据集
(i). 通过摄像头采集200张以上不同环境下的彩色小球,并按顺序命名整理。
(ii).下载labelImg对所采集到的数据进行分类标记,我按照颜色的不同分为了red、yel(yellow)、gre(green)三类,获得txt文件和xml文件。
(iii). 生成目录结构,将不同类型的文件进行整理,并根据实际情况修改一些.py文件的参数,将文件转化为YOLOV3所需要的格式,正式生成数据集。
(3)训练与测试
准备好训练数据与训练模型后,编译好的darknet.exe进行训练了。经过20个小时,训练到2200个批次左右时,avg loss值不再下降,如图3,于是停止了训练。
图3 loss值图
对训练好的权重文件进行测试,图4为测试效果,可以看出,识别准确性很高。
图4 测试效果
三、下一步工作计划
(1)掌握Kinect DK深度相机的测距原理。制定实验计划:控制相机转动,搜索识别出三个小球,分别测出小A机器人到小球的距离。采用三边定位的方法对机器人实现自定位。对视觉定位与机器人实际位置进行对比,来测试定位的精确度,分析定位性能。
(2)测量云台与底盘、相机与底盘位置的偏移量,确定位姿转换矩阵。在使用视觉相机搜寻到小球并且成功定位后,运用位姿转换矩阵将编码器数据和底盘位置及角度进行转换。计算出位姿。
(3) 补充通讯模块,使相机获得的位置信息能够与编码器对接来更新数据。
(4)对设计中所用到的方法加以总结,将论文内容进一步整理和完善,撰写好毕业论文。
问题一:彩色小球在视觉定位中起到什么作用,是否可以用其他物体代替?
回答:彩色小球是作为定位点的,小球的坐标是已知的,采用三边定位法,通过测量移动机器人位置P分别到三个定位点的距离,获得可以确定P点的坐标,实现对机器人准确的自定位。小球可以由任意物体代替,它只是作为一个定位基准。
问题二:如果要实现移动机器人的定位,是否有想出其他方案,它们有什么优缺点?
回答:定位也可采用纯惯性导航定位,给定移动机器人初始位姿,用三个轮子的转动推导出底盘机器人坐标系的运动方程来作为系统的状态方程,用IMU测量的x、y和偏航角速度为测量值,通过卡尔曼滤波来融合,虽然定位精度高,但随着时间的推移会产生累计误差;此外,也可配置已知位置的信标,通过机器人上的传感器与信标建立联系从而获取机器人绝对位置信息,但无法获得移动机器人可靠的偏航角。本想将编码器、陀螺仪和Kinect DK相机三类传感器进行融合,但考虑到工作量较大,因此选择了平时采用编码器定位,定时用视觉定位消除累计误差的融合办法。
问题三:如果没有外部参照物,未知空间下如何实现定位?
回答:本设计是针对室内已知环境为背景所进行的定位设计,目前无法实现室外定位。未来有机会希望能够在更深的研究阶段可对该设计进一步拓展,探究室外定位的可能性。
问题四:为什么选择编码器而不是陀螺仪定位。
回答:陀螺仪安装在相机上,无法直接获得底盘的姿态,需要进行矩阵转换,编码器定位的方法相对更加容易。如果有足够精力和时间,会考虑将陀螺仪定位也加入进来,使得定位更加精准。
学贵得师,师也者,犹行路之有导也。能够顺利按照进度完成毕业设计中期的内容,要非常感谢我的指导老师单奇,他学识渊博,态度严谨,营造了良好而学术氛围。从论文选题开始,老师就非常尊重我的意见,不断地与我沟通,与我共同分析与探讨参考文献中各种方法的利弊,最终确定了设计内容的大纲。毕业设计的进行过程中,老师也本着认真负责的态度,不管是线上还是线下,都会耐心的回答我的问题,给予专业上的悉心指导和无私帮助,使我的设计内容不断完善,对自己的任务也更加清晰。饮其流时思其源,成吾学时念其师。再一次对老师致以最衷心的感谢感恩。
此外,在进行毕业设计的这段时间里,培养了我脚踏实地,实事求是的学习态度。毕业设计并非一件易事,期间也会遇到许多的困难,例如在环境配置时总是出现问题,我开始有点浮躁,但还是及时的调节心态。尝试了卸载重装,认真检查每一条路径,以及在网络论坛寻求解答。最终能够成功的对目标物进行识别时,我觉得很有成就感,正是这种成就感,提高了我的能力,也给了我不断试错的勇气。
虽然解决了毕业设计中视觉识别这个主要难点,但还有很多工作例如视觉测距、位姿转换等问题有待完善和解决,中期答辩上老师的提问也让我对自己的设计内容有了更多的思考。在后续时间段,我会根据所制定的计划,脚踏实地去完成我的毕业设计的剩余内容,不辜负老师对我的谆谆教导,也给自己的本科生涯交上一幅满意的答卷。