turtlebot3地图构建
1、启动turtlebot3的world:
roslaunch turtlebot3_gazebo turtlebot3_world.launch
2、启动slam导航包并配置方法:
Karto算法:
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=karto
Gmapping算法:
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
其中slam_methods:=karto 命令为选择slam建图的算法,这里我只尝试了三种算法来实现,分别是gmapping,hector,karto,还有谷歌的cartographer算法,Frontier Exploration等等。
hector Mapping 功能包的安装指令为:
sudo apt-get install ros-kinetic-hector-mapping
Karto 功能包的安装指令为:
sudo apt-get install ros-kinetic-slam-karto
以及Cartographer安装指令:
sudo apt-get install ros-kinetic-cartographer ros-kinetic-cartographer-ros ros-kinetic-cartographer-ros-msgs ros-kinetic-cartographer-rviz
这个地方注意一下,由于谷歌开发的Cartographer是基于ROS melodic版本的,所以要在kinetic版本运行的话还需要进行以下指令进行安装:
$ sudo apt-get install ninja-build libceres-dev libprotobuf-dev protobuf-compiler libprotoc-dev
$ cd ~/catkin_ws/src
$ git clone https://github.com/googlecartographer/cartographer.git
$ git clone https://github.com/googlecartographer/cartographer_ros.git
$ cd ~/catkin_ws
$ src/cartographer/scripts/install_proto3.sh
$ rm -rf protobuf/
$ rosdep install --from-paths src --ignore-src -r -y --os=ubuntu:xenial
$ catkin_make_isolated --install --use-ninja
$ source ~/catkin_ws/install_isolated/setup.bash
$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=cartographer
由于gmapping功能包在turtlebot3功能包中,就不在介绍。
3、运行键盘控制节点
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
gmapping建图:
Karto建图:
hector建图:
4、保存地图
rosrun map_server map_saver -f ~/map
会在根目录下生成map.pgm和map.yaml文件:
map.yaml文件内容为:
另:这个部分做的实验都是通过调用功能包来实现slam建图的,我暂时并没有深入去学习slam,只是知道如何去用slam的成果,不过会继续深入学习的。
关于本次例子的几种slam算法,可以阅读大牛们的文章:
有关gmapping的launch 文件中的参数配置见下一篇。