一、环境安装
1、安装依赖项
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
2、不在编译过程过程中下载Abseil的方法
a、下载abseil
github网址:https://github.com/abseil/abseil-cpp.
mkdir build && cd build
cmake … -DBUILD_SHARED_LIBS=ON
make
sudo make install
b、更改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
c、更改cartographer_ros的CMakeList.txt,2处
cartographer_ros 和 cartographer_rviz的改法均一致:
find_package(Abseil REQUIRED) --> find_package(absl REQUIRED)
然后重新编译即可。
3、安装ceres-solver
github网址:https://github.com/ceres-solver/ceres-solver
mkdir build && cd build
cmake ..
make
sudo make install
4、编译cartographer
github地址:https://github.com/cartographer-project/cartographer
cd cartographer
mkdir build
cd build
cmake .. -G Ninja
ninja
ninja test
sudo ninja install
5、安装cartographer_ros
github地址:https://github.com/cartographer-project/cartographer_ros
cd workspace
catkin_make
二、使用cartographer
(以下内容使用蓝鲸机器人论坛的bag文件及cartographer_ros在自己电脑上测试运行,链接http://community.bwbot.org/)
1、录制bag包
2、配置cartographer_ros
cartographer_ros/launch/demo_xiaoqiang_3d.launch
#建图时启动的launch文件,负责启动xiaoqiang_3d.launch文件和rviz
cartographer_ros/launch/xiaoqiang_3d.launch
#用来加载cartographer_ros主要的启动节点和参数文件,话题数据名字的remap也在这个文件设定。
cartographer_ros/launch/assets_writer_xiaoqiang_3d.launch
#用来将demo_xiaoqiang_3d.launch输出的pbstreamfile转换成ply点云数据
cartographer_ros/urdf/rslidar_2d.urd
#模型文件,用来发布3d激光雷达、小车里程计、IMU、小车本体之间的tf关系
cartographer_ros/configuration_files/xiaoqiang_3d.lua
#cartographer_ros算法参数配置文件,优化建图效果需要调整的参数就是这个文件。
3、启动cartographer_ros,播放rosbag数据,开始建图
#启动roscore
roscore
#启动cartographer
roslaunch cartographer_ros demo_xiaoqiang_3d.launch
#播放bag数据
rosbag play --clock 2018-08-11-13-20-34.bag
4、bag播放完成后,使用rosservice保存cartographer_ros建图结果
rosrun rqt_service_caller rqt_service_caller
#先调用/finish_trajectory服务结束建图
#接着调用/write_state服务,输入保存文件名称,将cartographer_ros建图结果保存为pbstream文件,test_3d.pbfile。保存成功后,文件可以在~/.ros/目录找到
5、用assets_writer_xiaoqiang_3d.launch将pbstream文件转换成ply点云文件
roslaunch cartographer_ros assets_writer_xiaoqiang_3d.launch bag_filenames:=/home/muyangren/opensource/cartographer_bag/2018-08-11-13-20-34.bag pose_graph_filename:=/home/muyangren/opensource/cartographer_bag/test_3d.pbfile
6、使用pcl工具将ply文件转换成pcd文件
#将ply文件转换为pcd文件
pcl_ply2pcd 2018-08-11-13-20-34.bag_points.ply test_3d.pcd
#使用pcl_viewer查看pcd文件
pcl_viewer test_3d.pcd