Turtlebot2激光雷达+深度相机GAZEBO仿真

Turtlebot2激光雷达+深度相机GAZEBO仿真
前⾔
双顶置凸轮轴
最近⽼师接了⼀个项⽬,做⼀个机器⼈仿真环境,我是负责移动机器⼈这部分的。⽼师的要求是以Turtlebot2为参考,后⾯可能涉及实机演⽰。在仿真的过程中我发现Turtlebot2仿真环境是以Kinect摄像头为传感器,进⾏伪激光数据输出,这在跑ROS中Gmapping算法是会导致特征点⽐较少(激光雷达360度,深度相机由于视场⾓问题,特征点⾮常少)会导致在某个区域机器⼈实际在移动但是gmapping算法认为机器⼈原地不动,出现卡顿现象,这是看知道的。所以我打算加⼊激光雷达传感器代替SCAN原有的伪激光话题。然后按照古⽉课程整理了⼀节《实验⼀ SLAM地图构建与保存 》
实验⼀ SLAM地图构建与保存
⼀.实验内容
本次实验通过Turtlebot仿真环境,配置ROS中⼏种常见的SLAM算法功能包实现对机器⼈周围环境的地图构建.
⼆.实验⽬标
1.了解SLAM算法的基本框架
2.掌握⼏种常见SLAM算法功能包的配置
3.了解不同SLAM算法之间的差异和各⾃适⽤的场景
三.实验环境
·Ubuntu18.04 desktop
·ROS Melodic
·TurtleBot2 仿真功能包
四.实验原理
4.1Gmapping
Gmapping是基于粒⼦滤波的算法。
优点:
1.可以实时构建室内地图,在构建⼩场景地图所需的计算量较⼩且精度较⾼。
2.相⽐Hector SLAM对激光雷达频率要求低、鲁棒性⾼(Hector 在机器⼈快速转向时很容易发⽣错误匹配,建出的地图发⽣错位,原因主要是优化算法容易陷⼊局部最⼩值)。
3.⽽相⽐Cartographer在构建⼩场景地图时,Gmapping不需要太多的粒⼦并且没有回环检测,因此计算量⼩于Cartographer⽽精度并没有差太多。
4.在长廊及低特征场景中建图效果好;在地况较为平整时采⽤Gmapping⽅法较多。
缺点:
1.依赖⾥程计(odometry),⽆法适⽤⽆⼈机及地⾯⼩车不平坦区。
2.严重依赖⾥程计,⽆法适应⽆⼈机及地⾯不平坦的区域,⽆回环(激光SLAM很难做回环检测),⼤的场景,粒⼦较多的情况下,特别消耗资源。
3.随着场景增⼤所需的粒⼦增加,因为每个粒⼦都携带⼀幅地图,因此在构建⼤地图时所需内存和计算量都会增加。因此不适合构建⼤场景地图。
4.没有回环检测,因此在回环闭合时可能会造成地图错位,虽然增加粒⼦数⽬可以使地图闭合但是以增加计算量和内存为代价。
所以Gmapping不能像cartographer那样构建⼤的地图。
4.2 Hector SLAM
PS:博客中懒得⾃⼰画了,图⽚直接截取古⽉居的课件,感觉课件中的很详细了
基于优化的算法(解最⼩⼆乘问题),优缺点:不需要⾥程计,但对于雷达帧率要求很⾼40Hz,估计6⾃由度位姿,可以适应空中或者地⾯不平坦的情况。初值的选择对结果影响很⼤,所以要求雷达帧率较⾼。Hector_SLAM提出的初衷是为了解决⾮平坦地区,⾮结构化环境下的地图构建。
优点:
1.SLAM经过多年的发展,在结构化场景下建图已经⾮常成熟,但是都离不开⾼精度的⾥程计数据,⽽Hector_SLAM完全摆脱了⾥程计,仅仅依赖于⾼频率的激光。不需要使⽤⾥程计,所以使得空中⽆⼈机及地⾯⼩车在不平坦区域建图存在运⽤的可⾏性。
2.利⽤已经获得的地图对激光束点阵进⾏优化, 估计激光点在地图的表⽰,和占据⽹格的概率。
3.利⽤⾼斯⽜顿⽅法解决scan-matching 问题,获得激光点集映射到已有地图的刚体变换。
4.为避免局部最⼩⽽⾮全局最优,使⽤多分辨率地图;导航中的状态估计加⼊惯性测量系统(IMU),利⽤EKF滤波。
5.Hector_SLAM灵活⾼、可扩展性强,可⽤于⼆维和三维地图的创建,很好地适应了微型处理器,降低了SLAM算法对计算机硬件的要求,在⾃主移动机器⼈导航领域应⽤越来越多。
缺点:
1.需要雷达(LRS)的更新频率较⾼,测量噪声⼩。所以在制图过程中,需要robot速度控制在⽐较低的情况下,建图效果才会⽐较理想,这也是它没有回环(loop close)的⼀个后遗症。
2.且在⾥程计数据⽐较精确的时候,⽆法有效利⽤⾥程计信息。
反光书包实验表明:在⼤地图,低特征(distinctive landmarks)场景中,hector的建图误差⾼于gmapping。这是由于hector过分依赖scan-match。特别是在长廊问题中,误差更加明显。
发热体
补充:hector_slam通过最⼩⼆乘法匹配扫描点,且依赖⾼精度的激光雷达数据,因此扫描⾓很⼩且噪声较⼤的Kinect是不⾏的,匹配时会陷⼊局部点,地图⽐较混乱。
4.3 Cartographer
累计误差较前两种算法低,能天然的输出协⽅差矩阵,成本较低的雷达也能跑出不错的效果。先由⼀定数量的laser scan构建submap,由submap拼接成地图,具有回环检测,间隔⼀定数量的扫描进⾏⼀次所有submap的图优化(SPA,运⽤了分⽀定界原理进⾏加速)。
五.实验步骤
5.1 Gmapping建图
ROS中默认的SLAM定位算法为Gmapping,因此在编译好⼯作空间后,在终端直接运⾏:
roslaunch turtlebot_gazebo turtlebot_go.launch
新建终端输⼊
热轧酸洗roslaunch turtlebot_gazebo gmapping_demo.launch
再新建终端输⼊
roslaunch turtlebot_teleop keyboard_teleop.launch
订单跟踪管理根据终端提⽰,将⿏标定位在此终端(按键控制终端,否则⽆法控制),通过Rviz左下⾓摄像头第⼀视⾓,按键盘”I”键控制机器⼈前进,”J”和”L”分别为左转和右转,”,”键为后退控制机器⼈对周围环境进⾏建图,并构建⼀张完整地图,⽤于后续机器⼈导航定位.
控制机器⼈运⾏⼀周后,见下图:
进⼊/home/⽤户名/turtlebot_ws/src/turtlebot_simulator/turtlebot_gazebo/maps⽬录下
rosrun map_server map_saver -f map
注释:rosrun map_server map_saver -f [要保存成地图的地图名,此处要保存为map]
⽣成map.pgm和map.yaml两个⽂件,其中map.pgm为地图,map.yaml为地图配置⽂件⾥⾯包括地图的路径,分辨率等.
最终⽣成地图:
5.2 Hector建图
Hector SLAM算法在Turtlebot2⼯作空间中已经配置完成,对配置感兴趣的同学可以查看hector.launch这个⽂件中的内容。利⽤Hector进⾏建图:
新建终端:
稀土镁合金
roslaunch turtlebot_gazebo turtlebot_go.launch
新建终端输⼊:
roslaunch turtlebot_gazebo hector.launch

本文发布于:2024-09-21 16:18:45,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/246936.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:地图   算法   机器   构建   程计   激光
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议