以下除日志部分和我自己有关外,其他都是开源的,编译的部分可以看一下官网,各人的Cmakelist不太一样,这里不列出来了。
一、配置依赖环境
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 liblua5.2-dev libgflags-dev libgoogle-glog-dev
二、安装log (这里看你自己系统里是不是用 google log的,如果是的话做替换,当然也可以不走这一步有其他办法解决log冲突,后面讲)
先进自己的log项目下然后:
mkdir build
cd build
cmake ..
make -j4
sudo make install
三、安装 ceres-solver-1.14.0
下载链接这里ceres-solver-1.14.0-机器学习文档类资源-CSDN下载 免费的
先进目录下,然后
mkdir build
cd build
cmake ..
make -j4
sudo make install
四、安装protoc 3.4.0 直接用 cartographer的脚本装
找到/cartographer/scripts目录
sudo apt-get install git
sudo ./install_proto3.sh
五、安装 absel库,也是直接用 cartographer的脚本装
找到/cartographer/scripts目录
安装
stow
sudo apt-get install stow
然后
sudo ./install_
abseil
.sh
六、有可能遇到的问题
1.
编译
cartographer
时遇到
Unrecognized syntax identifier “proto3”. This parser only recognizes “proto2”.
排查:
使用
protoc --version
指令查看
protobuf
的版本,若版本为
3.0.0
以下,则需要到
git
上下载最新版
protobuf
,编译安装就好。
若显示
protobuf
版本为
3.0.0
以上,仍然报这个错误,则可能是同时安装了
proto2
,编译器优先找了
/usr/bin/protoc
的版本
,
新安装的
proto3
是放在
/usr/local/bin/protoc
下的,可以删除
/usr/bin/protoc
,然后把
/usr/local/bin/protoc
放入
/usr/bin
目录下,或者建立软连接:
sudo mv /usr/bin/protoc /usr/bin/protoc.bk
sudo ln -s /usr/local/bin/protoc /usr/bin/protoc
2. Cmake protobuf过不去
用
FindProtobuf(
用这个替换
).cmake
替换
/usr/share/cmake-3.10/Modules
里的
FindProtobuf.cmake (这里不上传了,在代码的附件里了)