cartographer2020在 ubuntu18.04編譯

步驟一,安裝所有的依賴項

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

二:下載abseil

網址:https://github.com/abseil/abseil-cpp.
安裝abseil的靜態庫:

mkdir build && cd build
cmake ..
make
sudo make install

安裝abseil的動態庫:可以將之前的build文件刪掉,重新建立

mkdir build && cd build
cmake ..  -DBUILD_SHARED_LIBS=ON
make
sudo make install

步驟三,安裝ceres-solver-master:

git clone https://github.com/ceres-solver/ceres-solver.git
cd ceres-solver
mkdir build
cd build
cmake ..
make -j4
sudo make install

步驟四,cartographer(安裝在根目錄下):

git clone https://github.com/googlecartographer/cartographer.git
cd cartographer
mkdir build
cd build
cmake .. -G Ninja
ninja
ninja test
sudo ninja install

更改cartographer的CMakeList.txt文件(有2處)和cartographer-config.cmake.in文件(有1處)
CMakeList.txt 第1處:

find_package(Abseil REQUIRED) --> find_package(absl REQUIRED)
CMakeList.txt 第2處:#默認的庫文件是 standalone_absl

target_link_libraries(${PROJECT_NAME} PUBLIC ${PROTOBUF_LIBRARY}
absl::base
absl::synchronization
absl::strings
absl::flat_hash_map
absl::numeric
absl::flags)

然後重新編譯即可
cartographer-config.cmake.in 1處:

find_package(Abseil ${QUIET_OR_REQUIRED_OPTION}) Abseil 改爲 absl

步驟五,安裝cartographer_ros:

#初始化工作空間,我之前有一個工作空間爲catkin_ws,我的命名爲google_ws
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
#安裝cartographer_ros
cd ~/catkin_ws/src
git clone https://github.com/hitcm/cartographer_ros.git
cd ~/catkin_ws
catkin_make

更改cartographer_ros的CMakeList.txt,有2處cartographer_ros 和 cartographer_rviz的改法均一致

find_package(Abseil REQUIRED) --> find_package(absl REQUIRED)

然後重新編譯即可。
本實驗經過驗證,可行通過

更多文章請關注公衆號
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章