SLAM移动机器人相关技术(概念版)

重要说明:本文从网上资料整理而来,仅记录博主学习相关知识点的过程,侵删。

一、参考资料

终于有人将如何学习SLAM这个问题讲明白了

二、SLAM移动机器人的硬件构造

如果说计算机程序是机器人的灵魂,那么硬件本体就是机器人的躯干。

0. 移动机器人的整体构造

一个典型的ROS移动机器人的硬件构建包括:带编码器的减速电机、电机驱动板、IMU模块、激光雷达、ROS主机、麦克风、摄像头、喇叭等。带编码器的减速电机、电机驱动板、IMU模块、激光雷达应该是SLAM导航避障的标配硬件,ROS主机是机器人的计算中心(运行SLAM导航算法),麦克风、摄像头、喇叭是完成语言交互和图像感知时需要的。
在这里插入图片描述

1. 电机

按照电机的电源类型,可分为直流电机、交流电机;按照电机的换相方式,可分为有刷电机、无刷电机;按照电机转子的构造,可分为内转子电机、外转子电机。
在这里插入图片描述

在实际使用中,电机往往配合减速箱一起使用,来提高输出力矩和载重性能。减速箱有普通的减速箱和行星减速箱,行星减速箱的优势是:产生同等减速比条件下,行星减速箱的体积更小。

电机的编码器是对电机转速测量反馈的重要部件,有霍尔编码器、光电编码器、碳刷编码器等。

电调产生电机需要的相位信号,并通过PWM等方式对电机转速进行调节。对于一些小功率的直流有刷电机,电调就是一个H全桥电路,PWM信号控制H桥的四个臂起到控制电机转速和转向的目的。对于一些大功率的直流无刷电机,电调的构造就比较复杂,电调需要实现多相控制信号产生、电子换相、保护等。
在这里插入图片描述

电机是移动机器人的动力核心,选择合适的电机对一个移动机器人是很重要的。电机的选型,不仅要考虑参数性能,比如:转速、力矩、载重、体积,还要考虑成本、安全、可实现性。如果是10KG载重级别的小型移动机器人,可以选择DC 12V带编码直流有刷减速电机就可以。如果载重在30KG及以上的移动机器人,就需要选择功率和效率更高的无刷电机,无刷电机的功率和减速箱参数都可以根据实际机器人的载重和运动速度来选择。
在这里插入图片描述

2. 电机驱动

电机驱动需要有PID控制,所以电机驱动板主要用来实现PID的控制,同时电机驱动板也负责和上位机通信,实时解析上位机发过来的速度指令,并反馈电机的速度信息给上位机。电机驱动板一般选用STM32或者Android单片机这样的嵌入式MCU板子。

为什么不直接拿上位机(上位机通常是电脑或搭载操作系统的RAM主机)来控制电机呢?首先,电机控制PID是实时性算法,也就是严格的实时时钟驱动的逻辑,一般的上位机系统不能满足这种高实时性的要求;另外,处于系统解耦合和模块化设计的考虑,单独用一个价格便宜的MCU来实现电机控制。

电机驱动板的另一个重要功能是跟上位机通信,借助上位机的ROS驱动程序实现用ROS来操控电机,并获取电机编码器反馈的里程计信息。也就是说,电机驱动板+电调+电机,三者组成一个整体硬件,可以当作ROS机器人的传感器来使用。只需要在上位机上启动相应的ROS驱动程序,就可以在ROS中直接操控电机和获取里程计信息。
在这里插入图片描述

3. 底盘驱动方式

地盘驱动方式,就是轮子如何布局和速度合成来让机器人灵活的行走。按照每个轮子的速度输出是否受约束,即一个轮子是否可以独立的输出速度,而不考虑别的轮子输出速度的约束。约束型的地盘驱动方式有:差分驱动、阿克曼驱动、同步驱动。非完整约束型的地盘驱动方式有:全向驱动、腿足驱动。
在这里插入图片描述

差分驱动的底盘,是最常见的形式,像有名的turtlebot机器人、pioneer先锋机器人、家庭扫地机器人都是用这种驱动方式的。差分驱动,就是左右两个主动轮输出动力,机器人依靠左右轮的速度差来转弯,这也是差分驱动名称的由来。通过控制左右轮产生不同的差速,来让机器人以不同的线速度角速度移动。通常,差分驱动底盘还会安装万向从动轮来起支撑作用。

阿克曼驱动的底盘,在汽车中是最常见的形式,绝大部分的汽车底盘都属于阿克曼驱动型。阿克曼车型的两个后轮提供动力输出,两个后轮通过一个差速器来进行速度分配,以产生不同转弯半径的差速,前方轮由方向盘控制负责转弯。阿克曼车型的关键在于后轮的差速器,在汽车上,差速器是一个特殊的齿轮组合结构,能够根据车体实时的转弯半径,将发动机的输出速度自动的分配到两个轮子上。而机器人上,由于驱动轮一般直接连接电动机,所以差速器有电子调速器来替代。

同步驱动的底盘,最常见的是履带车。之所以称为同步驱动,就是同一边的前轮和后轮速度是一样的。同步驱动的底盘,由于四个轮子,所以载重更大,更平稳。不过,相对于差分驱动底盘来说,轮式里程计精度就没有那么高。因为同步驱动的底盘在平坦的路面转弯时,车体会不同程度的颤动。所以,同步驱动底盘不擅长转弯,转弯起来比较费劲。

全向驱动的底盘,底盘的运动是不受约束的。简单来说,既可以横着走,也可以直着走,不需要转动车身方向,就是朝任意方向前进。全向轮为机器人的移动效率起到了很大的提升作用,尤其是像大型货运仓库,AGV自动物流搬运小车采用全向方式移动,能大大节约时间。全向轮是关键部件,全向轮又称为麦克纳姆轮,构造很精巧,但架构昂贵,在非平坦的路面运行起来不那么流畅。

4. IMU模块

在移动机器人中,IMU模块是常用的传感器,IMU通常被用来和轮式里程计做融合,或者直接参与SLAM建图。IMU是惯性测量单元的简称,用于测量物体的三轴姿态角(roll、pitch、yaw)、三轴加速度(acc_x、acc_y、acc_z)、三轴角速度(w_x、w_y、w_z)等。有六轴IMU、九轴IMU、十轴IMU等。
在这里插入图片描述

5. 激光雷达

在移动机器人中,激光雷达可以获取机器人周围障碍物和环境的轮廓形状。利用扫描到的障碍物信息,机器人可以利用SLAM建立地图,并进行避障和自主导航。主流的激光雷达基于两种原理:一种是三角测量法,另一种是飞行时间(TOF)测距法。
在这里插入图片描述

有单线激光雷达和多线激光雷达,应用场合不一样,价格也差距悬殊。室内移动机器人一般用的是单线激光雷达,价格从几百到几千不等。国内比较早做单线激光雷达的有上海思岚的rplidar雷达,后起之秀有深圳镭神智能的LS系列雷达、大族激光的杉川系列雷达、深圳玩智科技的EAI雷达等等,国外的老牌子雷达就有日本的HOKUYO雷达、德国的SICK雷达都是很有名的。

室外的无人驾驶汽车,一般都配备有多线激光雷达,一般有16线、32线、64线、128线等。激光雷达线数越多,扫描的信息越多,价格自然越昂贵。Velodyne公司是美国知名的多线激光雷达制造商,其VL系列的多线激光雷达也是很有名,价格也是从几万块到几十万不等。国内做多线激光雷达的有速腾、镭神都有在做。

6. 摄像头

机器人上搭载摄像头,可以用来做视频远程监控、人脸识别和追踪、视觉SLAM等。可以选择的有单目(mono)、双目(stereo)和深度(RGBD)摄像头。
在这里插入图片描述

单目摄像头的优点是结构简单、成本低,缺点是在单张图片里,无法确定一个物体的真实大小。他可能是一个很大但很远的物体,也可能是一个很近但很小的物体。通过相机的运动形成视差,可以测量物体相对深度。但是单目SLAM估计的轨迹和地图将与真实的轨迹和地图相差一个比例因子,就是尺度(scale)。单凭图像无法确定这个真实尺度,所以称之为尺度不确认性。

双目摄像头的优点是基线距离越大,能够测量的距离越远,可以用于室内和室外,鲁棒性强;缺点是配置与标定较为复杂,深度量程和精度受到双目基线与分辨率限制,视差计算非常消耗计算资源,需要GPU/FPGA设备加速。

深度摄像头的优点是通过结构光或TOF(time of fly)的物理方法测量物体深度信息,典型代表Kinect、xtion pro、RealSense。缺点是测量范围窄,噪声大,视野小,易受日光干扰,无法测量投射材质等问题,主要用在室内,室外很难应用。

7. ROS主机

机器人的处理核心通常是一个运动ROS系统的计算机主机,有的复杂一点的机器人会有几个计算机主机,比如:一个用来搭载ROS系统,运行各个机器人算法;另一个用来搭载Andriod系统,运行用户交互界面。搭载在机器人上的ROS计算机主机,需要考虑编写安装问题和功耗问题。

中低端机器人中,使用最广泛的是树莓派,尤其是树莓派3B这个型号最为流行。树莓派是极致性价比的板子,200元的板子,配置了Cortex-A53的处理器和1GB内存,官方支持ubuntu-mate系统,非常适合初学者。

中高端机器人中,国产瑞芯微RK3399对应的板子,价格在1000元左右,配置了双核Cortex-A72+四核Cortex-A53的处理器和2GB/4GB内存,搭载裁剪版的Ubuntu系统。

高端机器人中,NVIDIA的Jetson-tx2的板子,号称是可以搭载在核弹上的板子,性能强悍。板子售价4000元左右,配置四核Cortex-A57的处理器和8GB内存。板子带有256个CUDA核心的pascal架构的GPU,非常适合做深度学习和计算机视觉相关的应用。
在这里插入图片描述

三、SLAM导航技术相关介绍

SLAM导航技术,主要用来解决机器人的定位、环境建图、自主导航、动态避障等问题。

1. 引言

单独的定位技术在日常生活中随处可见,例如:GPS定位技术,WIFI定位技术,磁条导轨定位技术。单独的环境建图技术也有很多成熟的应用,例如:医学中的CT对人体的全方位扫描技术,电影制作中对某个三维物体的扫描建模,隧道勘探测绘等。但是,面对机器人这样一个复杂的应用,单独的定位技术和单独的环境建图技术都不能很好的解决问题,于是结合了定位和建图的SLAM技术就出现了。

2. 机器人相关介绍

机器人是一个复杂的装置,涉及到执行机构、感知、决策等主要环节。机器人常用的执行机构有:轮式运动地盘、机械臂、音响和显示屏;机器人常用的感知设备有:激光雷达、声纳、摄像头、IMU、轮式里程计编码盘、麦克风、触摸感应;机器人的决策是机器人智能化的体现,机器人通常借助感知装置持续跟外部环境进行交互,从而获取机器人的状态和环境的状态。

3. 机器人的不确定性

机器人所处的环境存在大量的不可预测性,机器人中传感器的测量存在噪声和干扰,电机等执行机构存在一定程度的不可靠性,还有一些不确定性是有机器人的软件导致的。

要研究机器人的感知和行为,就必须对这些不确定性进行建模,利用概率理论可以明确表示这种不确定性。而且可以利用概率算法来对概率分布进行推理计算,以数学的方式合理的表示机器人的模糊性和置信度。简单理解,就是通过对机器人的概率建模,对机器人的不确定性进行明确的可计算性的表示。

4. 机器人的状态估计

处理机器人中的这种不确定性概率的技术,称之为概率机器人技术,其核心是用传感器数据来估计机器人状态。

机器人通过传感器对机器人自身状态和环境状态进行测量,机器人状态包括:机器人位姿、运动里程计信息、线速度和角速度等信息;环境状态包括:环境中物体的位置、物体的特征等信息。

5. 贝叶斯迭代网络

机器人同时利用控制动作来调用执行机构和环境进行交互,控制动作包括:机器人运动、物体操纵等。这样,机器人通过传感器测量和控制动作与环境进行交互,在交互过程中,对环境模型和机器人位姿进行估计。对环境模型的迭代估计过程,即为环境建图过程;对机器人位姿的迭代估计过程,即为机器人定位过程

利用传感器测量和控制动作,对环境模型和机器人位姿进行估计,有概率法则迭代计算来完成。控制动作的概率模型,称之为运动概率模型;传感器测量的概率模型,称之为测量概率模型。这个概率法则迭代计算过程,即为贝叶斯迭代网络,如下图所示:
在这里插入图片描述

6. 运动概率模型

运动模型,是指机器人从一个地方运动到另外一个地方,位姿变化与运动控制量之间的关系。由于控制量作用在机器人上,使机器人的位姿变化的过程是一个存在误差的不确定过程,所以控制量作用后产生的结果需要用一个概率分布来描述,这个概率分布即为运动概率模型

根据运动控制量的不同,可以分为速度运动模型和里程计运动模型。速度运动模型中,控制量是线速度和角速度;里程计运动模型中,控制量是机器人的前后时刻的相对位姿。速度运动模型中,线速度和角速度均会受到机器人地盘构造的约束。实验表明,虽然里程计运动模型存在误差,但比速度运动模型有更高精度。
在这里插入图片描述

7. 测量概率模型

同样的道理,机器人上的传感器在测量过程中存在误差,所以测量结果需要用一个概率分布来描述,这个概率分布即为测量概率模型

8. 贝叶斯滤波分类

贝叶斯算法,又称为贝叶斯滤波,是一种递归算法,用于计算置信度,也就是说t时刻的置信度由t-1时刻的置信度来计算。贝叶斯滤波算法具有两个基本步骤,即预测和更新。

贝叶斯滤波的具体实现算法有多种,根据置信度表示方式的不同,贝叶斯滤波的具体实现算法可以分为参数化实现算法和非参数化实现算法两种。参数化实现算法,就是将置信度分布用多元高斯分布的参数进行表示。根据采用不同高斯分布的参数,又可以分为卡尔曼滤波和信息滤波。非参数化实现算法,就是用有限数量的具体值来近似表示置信度分布。根据采用不同具体值近似的方法,又可以分为直方图滤波和粒子滤波。
在这里插入图片描述

9. 主流SLAM算法

现今在机器人上使用最广泛的应该算激光SLAM,在扫地机器人、服务机器人、AGV智能车上普遍搭载了单线激光雷达SLAM,像无人驾驶汽车、户外机器人则普遍搭载了多线激光雷达SLAM

另一种热门的研究是视觉SLAM,视觉SLAM有配备单目、双目、深度相机的多种形态,并且根据采用视觉特征点的不同,可分为:直接法、半直接法、稀疏法。然后,还有各种复合式的SLAM算法,比如激光与视觉融合的SLAM、融合IMU的视觉SLAM。最后,还有一些最新颖的SLAM算法,比如用深度学习来做的端到端的SLAM、基于物体识别的语义SLAM。
在这里插入图片描述

10. 机器人路径规划与控制策略

机器人自主导航可以分为两个实现部分,第一个部分是路径规划,第二个部分是控制策略。

路径规划是利用地图信息,寻找一条能到达目标的全局路径,全局路径在机器人导航过程中起到全局战略性的指导作用。理想情况下,机器人完全按照全局路径移动到目标,但实际环境往往是多变和复杂的,而且机器人实际控制也会存在偏差,所以机器人的实际运动控制需要有一套控制策略来最终实现。控制策略需要尽量逼近全局路径、尽量远离障碍物、最快时间到达目标等因素,这些因素可以用一个回报函数来评价。在寻找最佳控制策略的过程中,递归计算每一次行动的回报函数值。这样控制策略在回报函数的指引下,就可以给出最佳的控制策略,控制策略控制机器人完成实际的移动。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_37605642/article/details/132417317
今日推荐