前言
SLAM软件包Hector_Mapping
在上一篇笔记中,通过Hector_Mapping软件包实现了SLAM功能,运行了四条指令,有些麻烦。本文通过launch文件的使用将指令整合起来,方便功能的实现。
一、打开终端,输入cd catkin_ws1/src/,进入工作空间的src目录。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/915482b6dc1d45dc8f61b653bde7a2fb.png)
二、输入catkin_create_pkg slam_pkg roscpp rospy std_msgs来新建一个软件包slam_pkg
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/21319dba35214ad0902f5a57759c182f.png)
三、输入code . 打开代码编辑器VSCode
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/01ff4aa1f4b447a280f4f57895f34aa3.png)
四、在slam_pkg软件包下创建launch子文件夹
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e06eda7a1b0e458bb21cdf623fa2cf80.png)
五、在launch文件夹下新建hector.launch文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c2afae98b4ae4f57bd48c267942787a2.png)
六、在launch文件中写入如下代码
<launch>
<!-- 载入 机器人 和 SLAM 的仿真场景 -->
<include file="$(find wpr_simulation)/launch/wpb_stage_slam.launch"/>
<!-- Hector SLAM -->
<node pkg="hector_mapping" type="hector_mapping" name="hector_mapping"/>
<!-- Rviz 显示 -->
<node pkg="rviz" type="rviz" name="rviz"/>
<!-- 运动控制 -->
<node pkg="rqt_robot_steering" type="rqt_robot_steering" name="rqt_robot_steering"/>
</launch>
七、打开终端,输入cd catkin_ws1进入工作空间
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a44832d53a0c4eb4b8ee9ad676698b02.png)
八、输入catkin_make进行编译,这里编译的目的是为了让slam_pkg进入ROS的软件包列表,防止在后面执行launch文件的时候提示找不到软件包
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e3f47f2940fe425da20f745b16d3bc11.png)
九、编译成功
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/718e4a2b7c8b42258a208a3490488515.png)
十、输入source ./devel/setup.bash设置ROS的环境变量,以便在当前的终端窗口中正确运行ROS软件包。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/5a6fb45a253d423e8e5d0a0f7d0f86b7.png)
十一、输入roslaunch slam_pkg hector.launch运行刚才编写的launch文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a9d77402db1e455ab288e06bba71327d.png)
十二、出来的效果和本文开头链接里的实验效果一样,区别就是本文只需运行一个launch文件便能运行了多个节点,较为方便
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4eda74354ee7453bbd2edbccc51ecae7.png)
十三、现在这个RViz窗口里什么也没有,我们还需对其进行一些配置
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c3281b3fe6ba4234b0a3baa41d94182b.png)
1、添加Map
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/1807bc5985174beabd7f9f33f2014355.png)
2、设置/map话题
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4e5a5eb317b74c0599b57e2949cac2e0.png)
3、添加机器人模型
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/96f7eeddfa784fc68f2da121f0355971.png)
4、添加激光雷达扫描
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d349f302b73d435a9edc1907b13e1fe2.png)
5、设置话题,更改扫描点大小
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/1a452785592a42948a3817965c2d612a.png)
十四、可以将RViz的显示配置保存成文件,这样就不用每次打开都重新配置了,只需加载一下文件即可
1、点击Save Config As
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f3511413b650416686b1297d3c9bb335.png)
2、在slam_pkg软件包中新建一个rviz文件夹,专门用来保存rviz文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b92789c847a14434bcb158b4a8432af2.png)
3、保存名字叫做slam.rviz然后点Save保存
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ab32c6d854fe4299ac085cfb12a84af6.png)
十五、测试一下刚刚保存的rviz配置文件好不好用
1、先把rviz关掉
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f051c5dd30a04e70bb9b751d489191f3.png)
2、新分屏一个终端窗口,输入rosrun rviz rviz -d /home/panda/catkin_ws1/src/slam_pkg/rviz/slam.rviz,注意这句指令-d后面的一大串是刚刚保存的rviz文件的路径,你的路径跟我的不一定一样,需要你自己注意一下
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c5d800435c254fa4a411ae1837c49eb4.png)
3、启动后rviz便是配置好的
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/2c70b65734a1454b9a918d922bffe533.png)
4、这里再提醒一下,如果你在启动rviz的时候出现了报错,或者启动后机器人模型加载不出来,就先在当前窗口输入source ./devel/setup.bash设置环境变量,再进行启动rviz
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/9fe1b8ae6ce74d7c998de78df3b1d53a.png)
十六、接下来还可以再优化一下,把刚刚配置的rviz文件写入launch文件里,这样只需要启动launch文件,rviz也是配置好的了
1、对launch文件的如下位置进行修改,实质上就是添加了一个参数,即rviz文件的路径
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/3808142ae66f45f1a7b15eaa8164effd.png)
2、将刚刚打开的仿真软件都关闭,然后重新打开一个终端,输入cd catkin_ws1进入工作空间
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/47f942caa99943a493a82a7450187b45.png)
3、输入catkin_make编译一下
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d106243af7724b1da3a1f295581829f5.png)
4、编译成功
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/21bec694c6fe4d1aafc5e4470c5e79e5.png)
5、输入source ./devel/setup.bash设置ROS的环境变量,以便在当前的终端窗口中正确运行ROS软件包。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a514cbf65fe24ebf8c949a2d40abadd2.png)
6、输入roslaunch slam_pkg hector.launch运行launch文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/1cf249a69bfe4398ae3ccfa028b16b06.png)
7、便能成功打开了多个节点,能够成功控制机器人进行建图扫描(这里记录一个问题,博主用的是虚拟机,有时候机器人仿真环境打开不成功,导致rviz的机器人模型也加载不出来,博主重启虚拟机后便解决了)
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/dcd1dede5e3b476a917450f7b1304b97.png)