看了很多博客,踩了很多坑,以下是google的 Cartographer导航包在ubuntu16.04 和ROSkinetic 下安装步骤一定行的!!不要用谷歌提供的cartographer安装方式。
先是环境的·配置
安装依赖包,此处参考https://blog.csdn.net/weixin_44684139/article/details/104708387
sudo apt-get install -y \
cmake \
g++ \
git \
google-mock \
libboost-all-dev \
libcairo2-dev \
libeigen3-dev \
libgflags-dev \
libgoogle-glog-dev \
liblua5.2-dev \
libsuitesparse-dev \
libwebp-dev \
ninja-build \
protobuf-compiler \
python-sphinx
然后对protoc包进行更新
卸载掉原来的protoc2 再换成3.6版本,其他最新版本试了,反而有很多问题。此处就用3.6版本
接下来就先下载proto3,github很难链接上,我是下载了,下载不了的话这里提供下载好的和克隆子模块的版本,不确定是否能安装上。若你成功下载并编译make后再卸载protoc2 安装protoc3吧
// 克隆版本为3.6.0的protobuf源码
git clone -b v3.6.0 https://github.com/protocolbuffers/protobuf.git
cd protobuf
// 克隆protobuf的子模块,主要是gtest
git submodule update --init --recursive
自己下载的版本 https://download.csdn.net/download/qq_36885583/20018671
后编译protoc3 make
// 进入到克隆的protobuf目录,当然,如果之前就在这个目录下不必再次cd
cd protobuf
./autogen.sh
./configure
make
// 如果没有克隆子模块,make check会失败但是可以继续make install,但是使用某些功能时可能会出错
make check
如果成功,删除protoc2
sudo apt-get remove libprotobuf-dev
which protoc
//安装 automake工具
sudo apt-get install autoconf automake libtool curl make g++ unzip
后有需要还可以自己把剩下的 usr目录下的protoc的bin库,头文件等删掉。
安装proto3
sudo make install
sudo ldconfig
// 输出protobuf版本信息则表示安装成功
which protoc
protoc --version
因为carto的搜索protoc的路径为/ usr/bin/protoc
把执行文件复制过去,或者软链接过去都行
sudo cp /usr/local/bin/protoc /usr/bin
//或者
sudo ln -s /usr/local/bin/protoc /usr/bin/protoc
后面就可以安装cartographer了
参考了微信文章还有古月的一部分
https://www.guyuehome.com/25696
原创 白茶 l 清欢 小白学移动机器人 5月24日
下载carto,
https://github.com/cartographer-project/cartographer
//自己的新工作空间
$ cd catkin_google_ws
$ wstool init src
$ wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
$ wstool update -t src
使用如下命令修改ceres-solver源码的下载地址为https://github.com/ceres-solver/ceres-solver.git
也可以更简单点直接到github下载下面两个包,和安装ceres
https://github.com/cartographer-project/cartographer
https://github.com/cartographer-project/cartographer_ros
https://github.com/ceres-solver/ceres-solver
注意,把第一个的cartographer和ceres 单独用cmake编译,然后把cartographer_ros放catkin工作空间catkin_make
cd ceres-solver
mkdir build
cd build
cmake ..
make
sudo make install
cartot同样
cd cartographer/build
cmake ..
make
sudo make install
后在工作空间的src文件夹放入cartographer—ros包编译
cd catkin_google_ws
catkin_make
rospack profile
编译晚后就大功告成了,
可以source一下工作空间或者在brashrc文件加入
source /home/zs2/catkin_google_ws/devel/setup.bash
后打开新终端
下载谷歌的rosbag数据集来测试,不能测试的话就可以自己用ros和gazebo搭建仿真环境来测试,不能的话这里提供数据集链接
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
数据集
然后就可以launch测试啦
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag
最后效果如下