一、前言
该篇为本文的重点,主要内容为
cartographer_turtlrbot3源码库的安装
二、cartographer_turtlebot源码库安装
这里基本参考创客智造的安装教程,但是由于教程中安装的一些包版本已经更新,如果完全按照教程走的话
会发现最后编译会报错(大坑之所在!!!)
所以我在这里重新更改了部分过程,应该可以一遍通过!
环境依旧是:ubuntu16.04 + ROSkinetic版本
1.依赖安装
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build
2.安装protobuf
这里主要参考:https://blog.csdn.net/liujiayu2/article/details/77837360
但在github上下载时注意版本问题 我们需要3.4.0版本,而不是最新版
github源代码下载地址:https://github.com/google/protobuf
在branch:master 的tag栏中选择版本 3.4.0 下载该版本程序包
源码包中的src/README.md, 有详细的安装说明,安装过程如下: 解压缩后打开其所在文件夹
1、安装所需工具:sudo apt-get install autoconf automake libtool curl make g++ unzip
2、自动生成configure配置文件:./autogen.sh
3、配置环境:./configure
4、编译源代码(时间比较长):make
5、安装:sudo make install
6、刷新动态库:sudo ldconfig
7、检查安装: protoc –version
应该是出现3.4.0版本就对了
3.创建新的工作空间
mkdir catkin_ws
cd catkin_ws
wstool init src
4.Merge the cartographer_turtlebot.rosinstall
wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_turtlebot/master/cartographer_turtlebot.rosinstall
vim src/.rosinstall**
#更改ceres-solver中地址改为下面的地址:(否则下一步会中止)
#uri: https://github.com/ceres-solver/ceres-solver.git
wstool update -t src
5.手动替换正确版本的ceres-solver(1.12 0rc4)!!!
第三步中更改了ceres-solver程序包的github的地址,是因为原地址需要翻墙才能正常下载
但是这个链接永远对应最新版本的ceres-solver 这就会导致我们最后编译整个程序会报错!!
因此我们需要手动下载 ceres-solver 1.12 0rc4 版本的程序包 去替换新版本
(1)打开链接https://github.com/ceres-solver/ceres-solver.git
(2)在branch:master 的tag栏中选择版本 1.12 0rc4 下载该版本程序包
(3)在你自己的程序工作空间 src 里覆盖原版本的ceres-solver文件夹,并重命名去掉版本号,保持和被替换的版本相同文件名
6 安装deb dependencies.
sudo rosdep init #安装ros的时候如果执行了这一步可跳过
rosdep update
#! if error try with
#! sudo -H apt-get install --allow-unauthenticated ros-kinetic-urg-node
#! or
#! sudo -H apt-get install --allow-unauthenticated ros-kinetic-kobuki-core
rosdep install --from-paths src --ignore-src --rosdistro=${KINETIC} -y
7. make
catkin_make_isolated --install --use-ninja #如果报错把make生成的三个文档删掉再重新执行一遍
source install_isolated/setup.bash
8.测试
现在安装了Cartographer,Cartographer ROS和Cartographer ROS的TurtleBot集成
将示例包下载到已知位置,~/Downloads,并使用roslaunch来调出演示:
程序运行:
# Launch the 2D LIDAR demo.
roslaunch cartographer_turtlebot demo_lidar_2d.launch bag_filename:=${HOME}/Downloads/cartographer_turtlebot_demo.bag
# Launch the 2D depth camera demo.
roslaunch cartographer_turtlebot demo_depth_camera_2d.launch bag_filename:=${HOME}/Downloads/cartographer_turtlebot_demo.bag
# Launch the 3D depth camera demo.
roslaunch cartographer_turtlebot demo_depth_camera_3d.launch bag_filename:=${HOME}/Downloads/cartographer_turtlebot_demo.bag
运行效果: