1.安装工具
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build
2.初始化工作空间
mkdir car_ws
cd car_ws
wstool init src
3.下载cartographer源码包链接:
链接:https://pan.baidu.com/s/1ZcmymgoMY9NOr6GovCcwBg?pwd=fwgm
提取码:fwgm
这里面的建图launch文件是已经改好了的,专门针对Velodyne激光雷达改的配置,我是启动的激光包和cartographer的demo_rev_lds.launch可以看到RVIZ的2D激光点
下载的是编译器和cartographer工作空间,把src下三个文件
夹:cartographer-release-1.0(重新命名为cartographer),cartographer_ros-release-1.0(重新命名为cartographer_ros),ceres-solver-1.3(重新命名为ceres-solver),再放在刚刚新建的工作空间car_ws里面。
4.protobuf 升级安装如下
1.ubuntu16.04自带的protof3.4.0在编译cartographer时会出错
查看protoc版本 大于3.6.1的应该都可以,这里下载的是3.16.0。
protoc --version
#得到目录
which protoc
#删除该目录
sudo rm 目录
在刚刚下载的编译器tar.gz所在文件夹中打开终端
tar zxvf protobuf-all-3.16.0.tar.gz
cd protobuf-3.16.0
./configure --prefix=/usr/local/
#编译
make
#检查编译,如果7个文件有失败就需要把文件删除,重新tar解压再编译.但是我make check最后结果有一个protobuf-test失败照样cartographer_ros能回放bag包
make check
#安装
sudo make install
sudo ldconfig
protoc --version
cartographer 检查目录是/usr/bin,需要把protoc安装目录里的protoc可执行文件复制到/usr/bin下
which protoc
#输出:/usr/local/bin/protoc
sudo cp /usr/local/bin/protoc /usr/bin
5.编译
cd car_ws
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=<ubuntu版本名> -y //ubuntu16版本名:kinetic;18:melodic
catkin_make_isolated --install --use-ninja
source install_isolated/setup.bash
每次运行 roslaunch cartographer_ros demo_rev_lds.launch前都需要输入:
source install_isolated/setup.bash
,否则找不到launch文件
6.通过回放官方提供的bag包测试是否安装成功
2D包 .
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
如果下载速度慢,直接去网页下载。
3D 包
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_3d/with_intensities/b3-2016-04-05-14-14-00.bag
roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=${HOME}/Downloads/b3-2016-04-05-14-14-00.bag
参考自:https://blog.csdn.net/qq_41585680/article/details/106664188?spm=1001.2014.3001.5502
我给的cartographer包比较老版本低,是否有可能可以用系统自带的protobuf 3.4编译器编译它?你们可以尝试一下。