SLAM 算法复现记录:ct_icp
ct_icp:连续时间的配准方法
1. 项目基本信息
- 系统:Ubuntu 20.04
- ROS 版本:Noetic
- 项目地址:https://github.com/jedeschaud/ct_icp
- 这是我的复现过程记录,并非教程,因此会有一些不必要的操作
2. 算法复现
步骤: 找个路径git clone一下,创建catkin工作空间,catkin-workspace/src 注意git clone的ct-icp文件夹不要在你创建的catkin-workspace/src里,二者分开 我的路径如下:
sd10@sd10-MS-7D76:~/slam$ mkdir ct_icp
sd10@sd10-MS-7D76:~/slam$ cd ct_icp/
sd10@sd10-MS-7D76:~/slam/ct_icp$ ls
sd10@sd10-MS-7D76:~/slam/ct_icp$ pwd
/home/sd10/slam/ct_icp
sd10@sd10-MS-7D76:~/slam/ct_icp$ mkdir -p catkin_ws/src
sd10@sd10-MS-7D76:~/slam/ct_icp$ ls
catkin_ws
sd10@sd10-MS-7D76:~/slam/ct_icp$ git clone https://github.com/jedeschaud/ct_icp.git
sd10@sd10-MS-7D76:~/slam/ct_icp$ ls
catkin_ws ct_icp
sd10@sd10-MS-7D76:~/slam/ct_icp$
然后教程中的step1、2和3的前半部分在克隆的ct_icp文件夹里进行相关操作 step3的后半部分在catkin_ws(名字随意起)路径下操作
在:
sd10@sd10-MS-7D76:~/slam/ct_icp$ cd catkin_ws/
sd10@sd10-MS-7D76:~/slam/ct_icp/catkin_ws$ ls
src
sd10@sd10-MS-7D76:~/slam/ct_icp/catkin_ws$ cd src
sd10@sd10-MS-7D76:~/slam/ct_icp/catkin_ws/src$ catkin_init_workspace
Creating symlink "/home/sd10/slam/ct_icp/catkin_ws/src/CMakeLists.txt" pointing to "/opt/ros/noetic/share/catkin/cmake/toplevel.cmake"
sd10@sd10-MS-7D76:~/slam/ct_icp/catkin_ws/src$ ln -s /home/sd10/slam/ct_icp/ct_icp/ros/catkin_ws/ct_icp_odometry ct_icp_odometry
sd10@sd10-MS-7D76:~/slam/ct_icp/catkin_ws/src$ ln -s /home/sd10/slam/ct_icp/ct_icp/ros/catkin_ws/slam_roscore slam_roscore
sd10@sd10-MS-7D76:~/slam/ct_icp/catkin_ws/src$ ls
CMakeLists.txt ct_icp_odometry slam_roscore
sd10@sd10-MS-7D76:~/slam/ct_icp/catkin_ws/src$
sd10@sd10-MS-7D76:~/slam/ct_icp/catkin_ws/src$ cd ..
sd10@sd10-MS-7D76:~/slam/ct_icp/catkin_ws$ catkin_make -DSUPERBUILD_INSTALL_DIR=/home/sd10/slam/ct_icp/ct_icp/install
可视化的话 对应命令为:cmake ../superbuild -DWITH_VIZ3D=ON , 即如果加-DWITH_VIZ3D=ON的话,在cmake ..对应的命令那块加 , 执行 cmake --build . --config Release 时报错:

尝试解决
2.1 glog
卸载自己系统中安装的glog。
sudo apt remove libgoogle-glog-dev
sudo apt autoremove
如果不行可以再安装:
sudo apt update
sudo apt install libgoogle-glog-dev
不行!!!!无法解决
再尝试解决 手动安装 glog 0.5.0(版本在 ct_icp/.cmake-build-superbuild/MappingResearchKEU_superbuild/src/MappingResearchKEU_superbuild/CMakeLists.txt中可以看到) 下载源码,解压后,cd进入, 配置构建(指定安装路径)
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/home/sd101t/slam/ct_icp/ct_icp/install/glog -DCMAKE_BUILD_TYPE=Release
# 安装路径前半段根据自己的具体路径设置
cmake --build build --parallel 6 # 编译
cmake --build build --target install # 安装
# 提示:
-- Installing: /home/sd101t/slam/ct_icp/ct_icp/install/glog/lib/cmake/glog/glog-targets-release.cmake
成功
2.2 cmake 报错
cmake .. -DCMAKE_BUILD_TYPE=Release -DWITH_VIZ3D=ON
报错:

参考:https://github.com/jedeschaud/ct_icp/issues/75
在/home/sd101t/slam/ct_icp/ct_icp/cmake/external.cmake文件中第13行修改
#get_target_property(__LOCATION ${target} IMPORTED_RELEASE_LOCATION) #原来的
get_target_property(__LOCATION ${target} IMPORTED_LOCATION_RELEASE) #修改的
并更新cmake到3.20版本,参考 https://github.com/Kitware/CMake/releases/tag/v3.20.6
下载对应的脚本文件,参考:https://blog.csdn.net/weixin_42156097/article/details/126932003
进行升级,然后执行 cmake .. -DCMAKE_BUILD_TYPE=Release -DWITH_VIZ3D=ON 成功
2.3 catkin_make 报错
执行 catkin_make -DSUPERBUILD_INSTALL_DIR=/home/sd10/slam/ct_icp/ct_icp/install ,报错:

安装gmock:sudo apt-get install libgmock-dev
成功。
运行nclt数据集:配置文件:https://github.com/jedeschaud/ct_icp/blob/master/config/odometry/nclt_config.yaml
不会
sequence_name: 2013-01-10 # 这个必须和你的数据文件夹名匹配
只试过: roslaunch ct_icp_odometry urban_loco_CAL.launch rosbag:=/home/sd101t/Downloads/backups/datasets/ct_icp/CA-20190828190411_blur_align-005.bag 这个命令
3. 之前进行过的一些没有必要的操作
3.1 升级GCC(尝试新旧版本gcc共存)
添加 Ubuntu 官方的“工具链测试”PPA,这是一个包含 GCC 11 的源:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
安装:sudo apt install gcc-11 g++-11
安装完成后,可以使用 update-alternatives 设置默认的 GCC 版本:

# 添加 gcc 选择项
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 20
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 10
# 添加 g++ 选择项
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 10
# 数字“10”和“20”表示优先级,数字越大优先级越高。我设置的默认gcc9
# 可以根据实际路径调整命令中的路径,例如 /usr/bin/gcc-11。
# 然后运行以下命令来选择默认版本:
sudo update-alternatives --config gcc
