melodic+cartographer+turtlebot3 仿真
Cartograrher 的安装
首先在 ubuntu 主目录下建立 cartographer 的工作环境“google_ws”
$mkdir google_ws
1.安装依赖
$ cd google_ws
$ sudo apt-get update
$ sudo apt-get install -y python-wstool python-rosdep ninja-build
2.初始化工作空间
$ cd catkin_ws
$ wstool init src
3.设置下载地址
$ wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartograph
er_ros/master/cartographer_ros.rosinstall
$ wstool update -t src
下载地址中包括 cartographer、cartographer_ros、ceres-solver 三个功能包。但是 ceres-
solver 用原下载地址下载不到,因此需要更改下载地址。在 google_ws 工作空间下的 sr
c 中存在一个隐藏文件“.rosinstall”,进入 src 中键入 ctrl+h 就可以看到“.rosinstall”文
件。
此时需要更改的是 ceres-solver 的下载地址,改成 https://github.com/ceres-solver/ceres-
solver.git
4.下载功能包
$ src/cartographer/scripts/install_proto3.sh
$ sudo rosdep init
$ rosdep update
$ rosdep install --from-paths src --ignore-src --rosdistro=${melodic} -y
5.编译功能包
$ catkin_make_isolated --install --use-ninja
配置工作环境
$ source install_isolated/setup.bash
可以在主目录下找到隐藏文件“.bashrc”,在“.bashrc”下永久加入 cartographer 包的
环境配置。按照自己主机位置进行配置加入 catkin_google_ws/install_isolated/setup.bash
$ source /home/zhangwei/catkin_google_ws/install_isolated/setup.bash
编译时间稍长,耐心等待。
6.测试是否安装成功
安装测试数据包
$ wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpa
ck_2d/cartographer_paper_deutsches_museum.bag
安装完测试包后就可以进行 roslaunch
$ roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Download
s/cartographer_paper_deutsches_museum.bag
成功后会出现下图所示的示例:
7.在 turtlebot3 中进行 cartographer 测试
在 turtlebot3_slam 中有 turtlebot3_cartographer.launch 文件,但是不能直接运行,需要
更改文件中的一句代码。
打开 turtlebot3_cartographer.launch 文件,可以看到 launch 文件内容如下:
其中红色框的是需要修改的部分。将$(arg configuration_basename)换成 turtlebot3_lds_2d_g
azebo.lua。修改后如下图所示:
8.turtlebot3 仿真环境搭建
建立一个 turtlebot3 的空环境
$ roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch
在空环境中随便加一个环境:
然后就可以运行 turtlebot3_slam.launch
$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=cartographer
然后就可以进行 cartographer 建图了。
建图时候不用进行键盘控制命令,因为 turtlebot3_cartographer.launch 中已经加入了 move_
base,所以可以用 rviz 中的 2D Nav Goal 命令,给机器人一个目标的,机器人会自己运动建
图,无需人为更多的干预。