前言
SLAM软件包Hector_Mapping 在上一篇笔记中,通过Hector_Mapping 软件包实现了SLAM 功能,运行了四条指令,有些麻烦。本文通过launch 文件的使用将指令整合起来,方便功能的实现。
一、打开终端,输入cd catkin_ws1/src/ ,进入工作空间的src 目录。
二、输入catkin_create_pkg slam_pkg roscpp rospy std_msgs 来新建一个软件包slam_pkg
三、输入code . 打开代码编辑器VSCode
四、在slam_pkg软件包下创建launch 子文件夹
五、在launch文件夹下新建hector.launch 文件
六、在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 进入工作空间
八、输入catkin_make 进行编译,这里编译的目的是为了让slam_pkg 进入ROS的软件包 列表,防止在后面执行launch文件的时候提示找不到软件包
九、编译成功
十、输入source ./devel/setup.bash 设置ROS的环境变量,以便在当前的终端窗口中正确运行ROS软件包。
十一、输入roslaunch slam_pkg hector.launch 运行刚才编写的launch文件
十二、出来的效果和本文开头链接里的实验效果一样,区别就是本文只需运行一个launch文件 便能运行了多个节点 ,较为方便
十三、现在这个RViz 窗口里什么也没有,我们还需对其进行一些配置
1、添加Map
2、设置/map话题
3、添加机器人模型
4、添加激光雷达 扫描
5、设置话题,更改扫描点大小
十四、可以将RViz 的显示配置保存成文件 ,这样就不用每次打开都重新配置 了,只需加载一下文件即可
1、点击Save Config As
2、在slam_pkg软件包中新建一个rviz 文件夹,专门用来保存rviz文件
3、保存名字叫做slam.rviz 然后点Save 保存
十五、测试一下刚刚保存的rviz配置文件 好不好用
1、先把rviz关掉
2、新分屏一个终端窗口,输入rosrun rviz rviz -d /home/panda/catkin_ws1/src/slam_pkg/rviz/slam.rviz ,注意这句指令-d后面的一大串是刚刚保存的rviz文件的路径 ,你的路径跟我的不一定一样 ,需要你自己注意一下
3、启动后rviz便是配置好的
4、这里再提醒一下,如果你在启动rviz的时候出现了报错 ,或者启动后机器人模型加载不出来 ,就先在当前窗口输入source ./devel/setup.bash 设置环境变量,再进行启动rviz
十六、接下来还可以再优化一下,把刚刚配置的rviz文件写入launch文件里 ,这样只需要启动launch文件,rviz也是配置好的了
1、对launch文件的如下位置进行修改,实质上就是添加了一个参数,即rviz文件的路径
2、将刚刚打开的仿真软件都关闭,然后重新打开一个终端,输入cd catkin_ws1 进入工作空间
3、输入catkin_make 编译一下
4、编译成功
5、输入source ./devel/setup.bash 设置ROS的环境变量,以便在当前的终端窗口中正确运行ROS软件包。
6、输入roslaunch slam_pkg hector.launch 运行launch文件
7、便能成功打开了多个节点,能够成功控制机器人进行建图扫描 (这里记录一个问题,博主用的是虚拟机,有时候机器人仿真环境打开不成功,导致rviz的机器人模型也加载不出来,博主重启虚拟机 后便解决了)