之前安装过cartographer功能包感觉非常麻烦,到处都是坑,最近又需要用到cartographer了,再安装一次,顺便做个总结,记录一下。
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build
mkdir google_ws
cd 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功能包源码时有可能会出现网络连接问题,导致ceres-solver下载失败,那么此时需要修改src/.rosinstall文件中ceres-solver的下载地址
https://github.com/ceres-solver/ceres-solver.git
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
catkin_make_isolated --install --use-ninja
source install_isolated/setup.bash
在编译的时候有可能会遇到protobuf的版本问题
此时需要下载最新版protobuf源码,编译安装,地址:
https://github.com/google/protobuf
到了这一步,如果你的运气不错的话再次编译的话有可能会成功。但是更多还会出现其他一些稀奇古怪编译问题,当然你可以选择按照编译的错误一个个去改正,但是我实在是顶不住了,所以选择了另一种比较直接的安装方法,也是下面要介绍的。
采用clone单独下载cartographer,cartographer_ros,ceres-solver,protobuf四个包
下载地址分别如下:
cartographer
https://github.com/googlecartographer/cartographer.git
cartographer_ros
https://github.com/googlecartographer/cartographer_ros.git
ceres-solver
https://github.com/ceres-solver/ceres-solver.git
protobuf
https://github.com/protocolbuffers/protobuf.git
sudo apt-get update
sudo apt-get install -y google-mock libboost-all-dev libeigen3-dev libgflags-dev libgoogle-glog-dev liblua5.2-dev libprotobuf-dev libsuitesparse-dev libwebp-dev ninja-build protobuf-compiler python-sphinx ros-kinetic-tf2-eigen libatlas-base-dev libsuitesparse-dev liblapack-dev libcairo2-dev git g++ cmake
cd google_ws/src/ceres-solver/
mkdir build
cd build/
cmake ..
make -j4
sudo make install
除了这个方法外还可以参考 install_ceres.sh 文件的方法
注意:版本号要对应为自己的
cd google_ws/src/protobuf/
git checkout v3.11.0
mkdir build
cd build/
cmake \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DCMAKE_BUILD_TYPE=Release \
-Dprotobuf_BUILD_TESTS=OFF \
../cmake
make -j4
sudo make install
除了这个方法外还可以参考 install_proto3.sh 文件的方法
注意:版本号要对应自己的
cd google_ws/src/cartographer
mkdir build
cd build/
cmake ..
make -j4
sudo make install
同样也可以参考 install_cartographer_cmake.sh 文件的方法
首先回到工作空间,再执行编译
cd google_ws
catkin_make_isolated --install --use-ninja
此时有可能会出现下面的这个情况
那么这时候只要进入红框的文件路径,将 package.xml 文件删掉即可,然后再从新执行编译
之后执行最后一步
echo "source ~/google_ws/install_isolated/setup.bash" >> ~/.bashrc
source .bashrc
至此,cartographer安装完成!