一种基于激光雷达的2D-SLAM的系统设计
2020-09-06池垚胡文昊李志远邢泽天杨智星
池垚 胡文昊 李志远 邢泽天 杨智星
摘要:随着5G技术的不断的发展和成熟,给SLAM技术带来了新的机遇和挑战。SLAM在室内机器人在实现自主导航的过程中起到了至关重要的作用。现就SLAM的移动机器人领域,以miiboo机器人为载体,搭建ROS操作系统作为平台,提出一种基于2D激光雷达的系统设计。对研究学习有一定的帮助。本文通过Ubuntu构建Linux环境,通过ROS对系统进行设计。
关键词:ROS 激光雷达 2D-SLAM 移动机器人
1 引言
SLAM,又称为CML,意为即时定位与地图构建或是同步建图与定位。把机器人放在未知的环境中,能否有方法让其在移动的同时实时描绘出环境的地图,并获取自己在地图中的实时位置。这种实时建图与定位的方法就称作SLAM。
SLAM主要有两大应用领域,AR/VR领域(工业用途)和移动机器人领域(商业用途)而室内机器人,则在移动机器人领域有着无法撼动的地位。感知、决策与控制是激起人们完成任务的三个基本的过程。机器人通过传感器获取环境信息,利用数据处理程序对所接收到的信息进行处理,并将其传输给决策程序,进而做出相应的决策,同时下达指令对机器人进行控制。机器人在进行数据处理的时候经常会采用SLAM将采集到的环境信息绘成地图,且在地图中标明自己的位置情况。
SLAM考虑到了环境的真实的拓补结构,可直接且有效地获取环境地图,并通过环境地图做出路径规划,或是给机器人研究者提供一些较为直观的可视化信息,给研究者们带来便利。此外环境地图还可方便机器人状态估计的误差校正,有效地减少了机器人的位姿漂移。
2 ROS的学习环境
ROS的研究与学习需要在Linux环境下展开。安装ROS绝大部分都是通过Linux环境下的Ubuntu系统完成的,安装Ubuntu系统主要有安装双系统或者使用VMware虚拟机。综合考虑,团队采用了Ubuntu16.04系统,选用的版本是Kinetic Kame.
通过对博客“古月居ROS21讲”和VMware的学习与操作,了解并掌握所需的使用命令。根据所学的知识在miiboo机器人上进行研究。
3 底盘设计
底盘是进行SLAM 建图和避障导航的基础。底盘可提供轮式里程计和运动控制,并主要由带编码器的电机与控制板组成,如图1所示。
3.1编码器
编码器为增量式正交编码器,相位差为90度的两个信号称之为正交。倘若知道正交的关系,便可根据两个信号的接收顺序来判断机器人的方向。通过对编码器的信号相位进行捕获,便知电机的转向和转速。
3.2 电机控制板
电机控制板通过串口与树莓派相连接,电机控制板接收树莓派下发的控制指令,采用PID算法进行控制;与此同时,采集电机上的编码器数据发送给树莓派,采用航迹推演的算法得出里程计信息。
3.3 差動两轮底盘轮式里程计
轮式里程计是底盘非常重要的组成部分。通过航迹推演算法估计机器人位姿,可得出机器人的速度。可以说,对于机器人的定位和控制,轮式里程计都起到了不可或缺的作用。
轮式里程计是底盘非常重要的组成部分。通过航迹推演算法估计机器人位姿,可得出机器人的速度。机器人底盘实时位姿p1、p2、...、pn连接起来就是机器人的航迹。假设相邻位姿的p1和p2的间隔时间很短,在已知位姿p1和当前左右轮速度vl、vr的情况下,便可利用微积分便可得出机器人的位姿p2,如此迭代,便是航迹推演。经过航迹推演,我们便能得到机器人当前位姿、速度等信息。
4 SLAM建图
SLAM的建图主要需要对以下几个方面进行配置与驱动:底盘、激光雷达、IMU、摄像头,配置完成后运用cartographer_ros和ros-navigation实现建图和自主避障导航。
4.1 底盘的使用
首先底盘控制可配参数,再驱动miiboo的底盘,通过PID鉴定后进行里程计的标定。并借助urdf模型描述底盘中各个传感器的关系如图2所示:
4.2激光雷达
对激光雷达进行参数配置,然后对激光雷达进行驱动,并设置激光雷达数据格式,一般采用右手坐标系,扫描数据以极坐标来表示,以x轴为0度方向,由x轴转向y轴为正方向。
4.3 IMU
首先对IMU数据可配参数进行设置,再驱动IMU模块,并设置IMU的数据格式,采用右手坐标系,并提供了三个轴的加速度、角速度和磁力计,并采用欧拉角表示其姿态。
4.4 摄像头
首先设置摄像头的参数,然后驱动摄像头,并订阅摄像头发布的图像topic进行摄像头远程显示。
4.5利用cartographer_ros和ros-navigation进行建图和自主避障导航
通过Ubuntu进行建图,如图3所示;运用amlc粒子滤波算法来解决全局定位的问题,通过重要性采样的不断迭代,迫近实际值,通过自适应的蒙特卡洛算法来解决机器人绑架问题。利用激光雷达等传感器数据生成代价地图,通过建立不同的图层并进行重叠,从而生成障碍物。并通过全局路径规划和局部路径规划从而进行避障和自主导航。
先对各个参数进行配置完成后,启动各种节点的启动文件,同时载入配置。打开并启动Rviz,设置并检查初始位置。指定导航目标点后,机器人便开始规划路径并自动导航。
5 结语
随着5G技术的飞速发展,人工智能的发展愈发的如火如荼。机器人作为人工智能的一个重要的应用领域,有着卓越的市场前景。本文基于ROS对2D激光SLAM进行学习与研究,介绍了系统的应用基础、底盘设计、SLAM建图与自主避障等等。利用激光雷达构建代价地图并通过路径规划实现自主避障及导航。具有参考和学习的价值。
参考文献
[1]罗恒杰,鲍泓,徐成,李培峰,李玉卿.基于激光雷达的2D SLAM方法综述[C].中国计算机用户协会网络应用分会.中国计算机用户协会网络应用分会2019年第二十三届网络新技术与应用年会论文集.中国计算机用户协会网络应用分会:北京联合大学北京市信息服务工程重点实验室,2019:165-171.
[2]李辉.基于激光雷达的2D-SLAM的研究[D].浙江工业大学,2017.