失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 古月 ROS移动机器人实战 二维slam地图构建 笔记

古月 ROS移动机器人实战 二维slam地图构建 笔记

时间:2023-10-20 09:39:11

相关推荐

古月 ROS移动机器人实战 二维slam地图构建 笔记

二维slam地图构建

Gmapping功能包

一种粒子滤波算法,将定位与建图分离,先进行定位、再进行建图,适合构建小场景环境下的地图信息。

需要机器人提供里程计信息作为先验知识。

虽然可以降低对激光雷达频率的要求,但是也对机器人硬件提出了需求

Ros对gampping做了很好的封装,通过功能包提供的接口进行使用。要使用gmapping,需要机器人能够发布深度信息(雷达传感器为主,也可以使用三维相机转换成二维雷达信息,LaserScan消息结构的数据)、IMU信息(惯性测量单元获取的加速度信息,可有可无)、里程计信息(编码器通过速度积分得到位置)这三种话题的数据。

Gmapping中的话题、服务和坐标变换

//ros中常用的卡尔曼滤波算法,对里程计信息滤波,提高里程计数据的稳定性

<node pkg="robot_pose_ekf" name="robot_pose_ekf" type="robot_pose_ekf"><param name="output_frame" value="odom" /><param name="base_footprint_frame" value="base_link"/><remap from="imu_data" to="imu" /></node>

在不同的机器人上,为了充分的发挥出计算平台的性能、满足不同场景的需求,可以通过算法开放的参数进行配置,参数基本都是跟算法原理相关的,对算法不了解的话建议使用默认值。参数说明参考:/gmapping

<node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen"><param name="map_update_interval" value="5.0"/><param name="maxUrange" value="16.0"/><param name="sigma" value="0.05"/><param name="kernelSize" value="1"/><param name="lstep" value="0.05"/><param name="astep" value="0.05"/><param name="iterations" value="5"/><param name="lsigma" value="0.075"/><param name="ogain" value="3.0"/><param name="lskip" value="0"/><param name="srr" value="0.1"/><param name="srt" value="0.2"/><param name="str" value="0.1"/><param name="stt" value="0.2"/><param name="linearUpdate" value="1.0"/><param name="angularUpdate" value="0.5"/><param name="temporalUpdate" value="3.0"/><param name="resampleThreshold" value="0.5"/><param name="particles" value="30"/><param name="xmin" value="-50.0"/><param name="ymin" value="-50.0"/><param name="xmax" value="50.0"/><param name="ymax" value="50.0"/><param name="delta" value="0.05"/><param name="llsamplerange" value="0.01"/><param name="llsamplestep" value="0.01"/><param name="lasamplerange" value="0.005"/><param name="lasamplestep" value="0.005"/></node>

打开可视化界面,方便看到slam的过程

<node pkg="rviz" type="rviz" name="rviz" args="-d $(find limo_bringup)/rviz/gmapping.rviz" />

1、 启动机器人底盘

2、 启动gmapping建图文件

3、 启动键盘控制节点

黑色线条是障碍物的位置,白色区域是没有障碍物的空间,灰色区域是机器人还没去过、不确定是否有障碍物的空间。

栅格地图就是把整个空间打散成一系列的正方形的格子,格子的边长表示建图的分辨率,格子的数值表示此处是否有障碍物。

Cartographer功能包

基于图优化的slam算法,可以实现机器人在二维或三维条件下的定位及建图功能,设计目的是在计算资源有限的情况下,实时获取相对较高精度的地图。

分为两部分,第一部分是local slam,也就是slam前端,基于激光雷达信息建立并维护一系列的子图submap(栅格地图),每当有新的雷达数据进来,系统就会通过一些匹配算法将其插入到子图的最佳位置,但是子图会产生累积误差;第二部分是global slam,是slam算法的后端,通过闭环检测来消除累积误差,每当一个子图构建完成后,就不会再有新的雷达数据插入这个子图中,算法也会将这个子图加入到闭环检测中。也就是说,Local slam生成一个个的拼图块,global slam完成整个拼图。

如果觉得《古月 ROS移动机器人实战 二维slam地图构建 笔记》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。