ubuntu16.04+kinetic 配置cartographer
做个正直的人
配置google的cartographer来实现SLAM(同步定位与建图)
做毕设需要用到SLAM算法来对环境建图,由于移动平台上使用的是google开发的cartographer来建图,我也在我的电脑上配置了一下,做个笔记。
1、安装工具
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build
2、为cartographer建立工作空间
在根目录下创建一个cartographer的工作空间,我起名为cartographer_ws。创建完成之后进行初始化。
mkdir cartographer_ws
cd cartographer_ws
wstool init src
3、解压cartographer的压缩文件
cartographer.tar.gz
提取码: q2zk
压缩包里面有四个文件:cartographer、cartographer_ros、ceres-solver、protobuf
将cartographer、cartographer_ros、ceres-solver放到cartographer/src目录下
把protobuf剪切到cartographer/scripts目录之下。
(不要复制!如果src目录下也有一个protobuf,那么在后面catkin_cmake后面的时候就会make这个文件而不是cartographer/scripts里面的那个了。如果是复制的话,把src下的protobuf删除即可)
4、编译protobuf
进入到protobuf目录之下
cd cartographer_ws/src/cartographer/scripts/protobuf
新建build文件夹,并进入之
mkdir build
cd build
编译,cmake
cmake -G Ninja \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DCMAKE_BUILD_TYPE=Release \
-Dprotobuf_BUILD_TESTS=OFF \
../cmake
ninja
sudo ninja install
安装ninja的目的是为了安装proto3。出错不要紧,多试几次。
5、安装依赖
执行rosdep。
(其实不执行好像也没有问题,相信在安装ros的时候,你已经见识过这一命令的超强杀伤力了。)
执行如下命令,失败了不要紧,多试几次,我试了好几次才成功。
rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y
6、编译安装
回到cartographer的工作空间,编译
catkin_make_isolated --install --use-ninja
7、配置环境变量
回到根目录,运行如下命令打开.bashrc文件
sudo gedit .bashrc
在文件末尾加上下面这一句
source ~/cartographer_ws/install_isolated/setup.bash
8、测试结果
下载例程包
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
启动文件,来测试一下
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag
没问题的话,应该能够看到如下结果