【参考链接】
链接1:
https://blog.csdn.net/qq_42116038/article/details/111204879?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.control
链接2:
https://blog.csdn.net/weixin_45140945/article/details/111063528
【安装依赖】
sudo apt update
sudo apt install -y python-wstool python-rosdep ninja-build
【建立工作空间】
$ mkdir -p ~/cartographer_ws/src
$ cd cartographer_ws
$ wstool init src
【下载安装.sh文件】
https://ghproxy.com/使用代理访问
$ wstool merge -t src **https://ghproxy.com**/https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
$ wstool update -t src
【下载安装ceres-solver-1.13.0】
$ cd ~/cartographer_ws/src
获取源码:$ wget ceres-solver.org/ceres-solver-1.13.0.tar.gz
$ tar xvf ceres-solver-1.13.0.tar.gz
$ cd ceres-solver-1.13.0
$ mkdir build
$ cd build
$ cmake …
$ make
安装:$sudo make install
【安装proto3】
在工作空间目录下
版本3.4.1
src/cartographer/scripts/install_proto3.sh
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=melodic -y
【安装依赖abseil】
在home目录下
sudo apt-get install stow
cd /cartographer_ws/src/carographer/scripts
./install_abseil.sh
注:下载较慢,打开install_abseil.sh,将git clone http://github.com/abseil/abseil-cpp.git改成git clone git://github.com/abseil/abseil-cpp.git
【编译】
在工作空间目录下
catkin_make_isolated --install --use-ninja
【添加环境变量】
echo source ~/cartographer_ws/devel_isolated/setup.bash >> ~/.bashrc
source ~/.bashrc
【下载官网数据demo—2d数据】
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
【运行demo】
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag
{安装过程错误}
本人按照以上方案安装好之后,运行测试demo时进程中断。查找原因发现是电脑安装了两个版本的protobuf,在编译cartographer时用protobuf3.4.1编译的,运行demo时却调用protobuf3.5.1(之前电脑安装过该版本)。
卸载版本3.5.1:
sudo rm /usr/bin/protoc //执行文件
sudo rm -rf /usr/include/google //头文件
sudo rm -rf /usr/lib/libproto* //库文件
注:以上路径自己通过 which protoc
查找,有些是在/usr/local/
目录下。