第1章 绪论
1.1 课题背景与意义
随着科技进步,人工智能技术不断发展,机器人技术不断趋于智能化,最初人们发展机器人是想让它替代自己完成繁杂的任务或者高危的工作部分实现[1]。起初,机器人技术更多的是运用在工业生产上,现在机器人更多的出现在人们生活中,为人们服务。对于服务型的机器人,人们更希望机器人具备自主规划能力和自适应能力,提高机器人的智能程度,更好地服务人们的生产和生活,而自主导航功能是提高机器人智能化程度的其中一个方面。为了使机器人更加的智能,对具有自主导航能力[2]的机器人的研究成为了当前许多专家学者关注的方向之一。
要使机器人拥有自主导航的能力,必须使其拥有定位建图和路径规划的功能。目前主流的定位建图拥有两种方案,一是带有先验信息的,另一个是没有先验信息的。带有先验信息的主要是依靠空间中的人工路标或者 WiFi 来使机器人定位,但是当它移动的环境换成了新的环境就要在环境中加入机器人可识别的路标,比如二维码等标识,但在有些环境中这些路标是不允许提前标注的。另一种是机器人自己携带传感器,像相机、激光雷达、惯性传感器等,机器人使用自身携带的传感器来对自己进行定位,并对当前环境建立地图,在自己移动的时候一边更新地图一边进行路径规划,这样机器人就可以在环境未知时实现自主导航了。对于机器人在环境未知时的自主导航,需要解决的主要有以下的四个问题:(1)机器人在哪?(2)机器人周围的环境?(3)机器人要去哪?(4)机器人怎么到达目标点?。第一个就是解决机器人自身定位的问题,第二个就是解决建图的问题,这两个问题的解决是相辅相成的只有机器人的定位准确才能构建准确的地图。机器人的定位和地图创建(SLAM,Simultaneous Localization and Mapping)是机器人完成自主导航的基础。
.........................
1.2 SLAM 研究现状
Smith、Self 和 Cheeseman 等人于 20 世纪 80 年代提出了机器人同时定位与地图构建,论述了在 SLAM 问题中机器人与环境特征之间的不确定性。随后又提出了基于卡尔曼滤波的 SLAM 算法,引入概率理论方法,逐渐成为解决 SLAM 问题的主流方式之一。近年来,SLAM 技术在国内外快速进步,在实验的条件下,SLAM 技术已经达到了一定的水平,但是由于传感器测量时对环境的要求较高,SLAM 技术还不能大范围的使用,主要是因为当前的传感器易受环境影响,并且算法比较难实现,不宜用于嵌入式设备,但是 SLAM 技术已经在某些方面有一些应用了。目前,国内外学者研究的重点在于算法的改进优化和借助高精度的传感器来提高地图构建与定位估计的准确性。为了能够在大规模的空间中进行地图构建,出现了基于非线性优化的算法,同时对路标点和位姿进行优化,这样保证在大规模的空间中可以构建全局一致的地图和机器人轨迹。下面主要介绍 SLAM 技术的国内外发展状况:
在 1993 年 Gordon 等人研究了基于 SIS 的非线性滤波算法,该方法是粒子滤波器研究的开端,它是根据蒙特卡洛思想,采用粒子集表示概率,它不仅适用于任何非线性系统,还具有更好地鲁棒性[3]。
美国宇航局发射的“好奇号”探测器,可以借助自身安装的 3D 相机在火星上完成路径规划,并通过安装在四个角上的避障相机来进行避障。该探测器可以通过 3D 相机来辅助它规划当前位置到达目标位置最佳路线。
谷歌的全自动无人驾驶汽车具有自动驾驶功能,可以安全地前往目标位置而无需人工参与。它是通过 GPS 对自己进行定位,使用激光传感器测量与空间中物体的距离。它携带的立体相机主要是监测周围环境,发现潜在的威胁,使用编码器来监控自己的车速。目前已经获得了上路测试的通行证,但是必须限速在 40 公里/小时。
.........................
第2章 基于 ROS 系统的导航机器人底盘
2.1 导航机器人底盘硬件设计
根据 ROS 系统的运行机制和系统设计要求,机器人底盘需要接受上位机发送的角速度和线速度并将其转换为控制小车的信号,来完成自主导航。还需要将机器人底盘上里程计采集到的信息发送到上位机,提高机器人定位和构建地图的精确度。本节针对导航机器人底盘的硬件进行设计。
本文采用的是双轮差分驱动的模式,导航机器人底盘仅需要控制电机转动,采集里程计信号。因此使用 Arduino Mega2560 作为机器人底盘的控制模块,使用 12V 的直流电机驱动模块来控制机器人底盘的直流电机,该驱动模块可以使用控制模块的 PWM 信号来控制 12V 直流电机的转动速度。使用光电编码器来采集电机转动速度和转动圈数,采用 12V的直流电机作为执行模块。
1)控制模块:
Arduino Mega2560 的处理器核心是 ATmega2560。并且该模块含有 54 路的数字输入接口和输出接口(其中 15 路可以输出 PWM 信号)、15 路模拟信号输入。端口较多可以满足机器人底盘多传感器的需求,该芯片拥有 6 个中断接口,正好可以满足编码器需要中断的需求。而且该芯片的内存较大,可以满足机器人底盘程序存储的需求,ATmega2560 芯片的运算能力可以满足对光电编码器的信号采集和处理的需求。我们可以利用上位机的 5V 的USB 接口为其供电。因此,控制模块可以满足本文实验中的对机器人底盘控制的需求。
2)直流电机驱动模块
TB6612FNG 是由东芝半导体公司生产制作的一种可以驱动直流电机的驱动模块,能独立的控制 2 个直流电机。并且该驱动模块具有较大的输出能力,可以在机器人有较大的负载的情况下还能够稳定驱动机器人底盘移动。因此该驱动模块可以满足本文中驱动电机的需求,它可以同时控制两个电机转动正好满足本文的双轮差分驱动,它强大的输出能力可以使底盘有较大负载时还能稳定的移动。
..........................
2.2 导航机器人底盘的数学模型
根据 ROS 系统的控制原理,将机器人底盘当作一个节点,本文的实验环境是在室内,所以可以看作机器人底盘是在平面上运动,且机器人底盘可以看作刚体,只有线速度 V 和角速度ω。由上位机发送给下位机消息,其中包含机器人底盘的线速度 V 和角速度ω。根据正运动学模型分析,由于机器人底盘使用的是双轮差分驱动的控制方法[4]。将上位机发送的线速度和角速度分解成机器人底盘上左轮的线速度和右轮的线速度。则机器人底盘的正运动学过程为:
.......................
第 3 章 SLAM 前端视觉里程计 ............................ 15
3.1 RGB-D 相机介绍 ................................. 153.2 RGB-D 相机参数标定 ........................ 15
3.3 特征提取与匹配 ..................... 18
第 4 章 后端优化研究 ............................ 29
4.1 SLAM 的模型 .......................... 29
4.2 优化 ........................ 30
第 5 章 路径规划算法研究 ......................... 41
5.1 A*算法 .......................... 41
5.2 启发函数 ............................ 42
第5章 路径规划算法研究
5.1A*算法
........................
第6章 总结与展望
6.1 全文总结
随着机器人技术的深入研究,机器人技术得到了极大的重视,这项技术还被运用到了更多的领域中。具有自主移动能力的机器人可以更方便的完成工作,因此目前国内外许多学者在都投入到对机器人的自主移动的研究中去。目前机器人的自主导航需要其具有自主定位、地图构建和路径规划功能,机器人通过自身的传感器获得周围环境参数,通过这些参数对机器人进行定位并构建空间地图,并在构建好的地图中执行路径规划,完成自主导航。这是机器人完成自主导航的基础。本文研究了机器人在室内环境中的自主导航技术,主要研究内容如下:
一、 搭建机器人底盘控制系统。本课题使用 ARDUINO 为机器人底盘下位机的控制板,设计控制电路并绘制 PCB 板,完成硬件电路。本课题基于双轮差分驱动控制机器人移动,分析运动学模型,根据上位机发出的速度转换为机器人底盘左右轮的速度,使机器人按照设定的速度移动。使用 ROS 系统下的 ros_arduino_bridge 包对上位机与下位机来上下通信,设计并实现下位机程序,最后调试 PID 参数使机器人可以快速并稳定的达到上位机发送的速度,稳定运行。
二、 研究视觉 SLAM 前端,对 RGB-D 相机进行了介绍,分析了相机模型的小孔成像原理,标定相机的内参。基于 ORB 特征进行特征提取和匹配,研究了 ORB 特征点提取的优点,采用非极大值抑制的方法避免角点集中的问题,对 ORB 特征的旋转和尺度性进行了分析。使用快速最近邻方法提取特征,加速了特征点的匹配速度,最后运用 RANSAC算法排除外点,防止错误的匹配点影响运动估计。使用 3D-2D 的空间点投影进行连续帧运动估计,使用 PnP 求解位姿的初始化,然后进行非线性优化,同时对机器人位姿和相机坐标点进行优化,使误差最小。
参考文献(略)