Cartographer:
2016年谷歌开源的一个支持ROS的室内SLAM库,是一个仍在不断更新维护的开源工程。
特点: 代码极为工程,封装完善,提供了方便的接口,可接入IMU、单线/多线雷达、里程计以及LandMark。
现在将Cartographer单独作为一个库进行cmake .. , make , sudo make install 安装
将Cartographer_ros放在自己的工作环境中一起编译。
记录一下部署过程中出现的一些问题和解决的方法:
1. 问题描述:
/usr/bin/ld: /usr/local/lib/libabsl_synchronization.a(mutex.cc.o): relocation R_X86_64_32 against `.data' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libabsl_synchronization.a: 无法添加符号: 错误的值
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
<== Failed to process package 'cartographer_rviz':
修改absl源码的CmakeList.txt,加入:
set(CMAKE_BUILD_TYPE "Release")
SET( CMAKE_CXX_FLAGS "-std=c++11 -O3")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -fPIC")
将build里面的文件全部rm掉,然后重新安装absl
参考:
编译cartographer_rviz出现libabsl_synchronization.a库错误_Dyson Sun的博客-CSDN博客
2. 不小心使用autoremove删除一个库文件时把ros的一些依赖也不小心一同删除了(atuoremove谨慎使用)
解决方法:
cd ~/catkin_ws // cd到自己的工作空间
rosdep install --from-paths src --ignore-src --rosdistro melodic -r -y // 安装缺少的依赖