Ubuntu搭建CT_ICP里程计的环境暨CT-ICP部署

CT-ICP部署以及运行复现过程

  • 0.下载资源,并按照github原网址的过程进行。
  • 1.查看所需要的各个部分的版本。
  • 2.安装clang编译器
  • 3.进行超级构建
    • 3.1标准进行
    • 3.2构建过程中遇到的问题
  • 4.构建并安装CT-ICP库
    • 4.1标准进行
    • 4.2遇到的问题及解决办法
  • 5.构建 CT-ICP 的 ROS 包装
    • 5.1标准进行
  • 运行篇
  • 1、使用脚本(在ct-icp数据集上)
  • 2.使用可控系统(ROS)

0.下载资源,并按照github原网址的过程进行。

源码网址:https://github.com/jedeschaud/ct_icp
所有的步骤按照readme.md中的步骤进行,在此基础上添加里自己在此过程遇到的问题及解决办法。

1.查看所需要的各个部分的版本。

版本要求:

GCC >= 7.5, clang >= 8.01,cmake >= 3.14

查看gcc版本,gcc -v查看

(base) xiaoduan@fighter:~/source1/CT-ICP/pyLiDAR-SLAM$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

cmake --vesion查看cmake版本

(base) xiaoduan@fighter:~/source1/CT-ICP/pyLiDAR-SLAM$ cmake --version
cmake version 3.16.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).

2.安装clang编译器

安装clang参考下面网址安装:https://blog.csdn.net/xujianjun229/article/details/128902018#commentBox
的前面部分进行的。
依次输入一下三条命令:

sudo apt-get install llvm
sudo apt-get install clang
clang -v

产看版本的结果为:

clang version 10.0.0-4ubuntu1 
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/9
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/9
Candidate multilib: .;@m64
Selected multilib: .;@m64
Found CUDA installation: /usr/lib/cuda, version 10.1

至此,所有的基本要求已经符合。

3.进行超级构建

3.1标准进行

依次执行以下命令来安装所有依赖:

mkdir .cmake-build-superbuild && cd .cmake-build-superbuild     #< Creates the cmake folder
cmake ../superbuild                                             #< (1) Configure step 
cmake --build . --config Release                                #< Build step (Downloads and install the dependencies), add -DWITH_VIZ3D=ON to install with the GUI
cmake . -DWITH_VIZ3D=ON         #构建可视化

所有的命令执行完毕之后,如果一切正常,则应创建一个目录install,其中还会出现一个superbuild_import.cmake文件。
此步骤进行之前,建议下载viz3d并执行pip install . 进行安装,这样可以避免后面会出现的一些问题

3.2构建过程中遇到的问题

  1. 在第三句命令运行时出现问题了应该和连接外网有关,尝试了一下午决定忽略。
    主要一直卡在:

git clone https://ceres-solver.googlesource.com/ceres-solveratal: unable to access ‘https://ceres-solver.googlesource.com/ceres-solver/’: Failed to connect to ceres-solver.googlesource.com port 443: 连接超

  1. 第二天早上来到之后还是决定试一试,因为在这儿忽略之后可能会出现其他一系列的问题。
    调整网一直没能成功,于是就开始找文件中的clone语句,最终找到路径如下所示
    在文件夹 .cmake-build-superbuild/MappingResearchKEU_superbuild/src/MappingResearchKEU_superbuild下gedit 打开CMakeLists.txt文件,进行以下改动
//更改前:
# INSTALL Ceres          
if (WITH_CERES)
    message(INFO "${LOG_PREFIX}Generating Ceres dependency")

    ExternalProject_Add(
            Ceres
            PREFIX Ceres

            GIT_REPOSITORY https://ceres-solver.googlesource.com/ceres-solver  //!!!!需要改动的地方   
            GIT_TAG 2.0.0

//更改后:
# INSTALL Ceres         
if (WITH_CERES)
    message(INFO "${LOG_PREFIX}Generating Ceres dependency")

    ExternalProject_Add(
            Ceres
            PREFIX Ceres

            GIT_REPOSITORY https://github.com/ceres-solver/ceres-solver
            GIT_TAG 2.0.0

然后就成功了,还好没放弃。

4.构建并安装CT-ICP库

4.1标准进行

执行以下命令:

# Inside the main directory
mkdir cmake-build-release && cd  cmake-build-release                  #< Create the build directory
cmake .. -DCMAKE_BUILD_TYPE=Release                                   #< (2) Configure with the desired options (specify arguments with -D<arg_name>=<arg_value>), add -DWITH_VIZ3D=ON to install with the GUI
cmake --build . --target install --config Release --parallel 12       #< Build and Install the project
cmake . -DWITH_VIZ3D=ON         #构建可视化

注意: 第一行命令应该在此项目的主文件下进行。
如果一切正常,则超级构建目录中应该会出现一个子目录<SUPERBUILD_INSTALL_DIR>/CT_ICP/lib/cmake。 可以使用位于的配置文件在 cmake 中加载库项目,或使用 ROS 或指定的可执行文件。CT_ICP

4.2遇到的问题及解决办法

  1. 第二行命令运行时又出现错误:
CMake Error at cmake/external.cmake:13 (get_target_property):
  INTERFACE_LIBRARY targets may only have whitelisted properties.  The
  property "IMPORTED_RELEASE_LOCATION" is not allowed.
Call Stack (most recent call first):
  CMakeLists.txt:51 (include)


INFO /home/xiaoduan/project/lidar/ct_icp-master/install/Ceres/lib/libceres.so.2.0.0
INFO /home/xiaoduan/project/lidar/ct_icp-master/install/glog/lib/libglog.so.0.5.0
CMake Error at cmake/external.cmake:13 (get_target_property):
  INTERFACE_LIBRARY targets may only have whitelisted properties.  The
  property "IMPORTED_RELEASE_LOCATION" is not allowed.
Call Stack (most recent call first):
  CMakeLists.txt:51 (include)


INFO /home/xiaoduan/project/lidar/ct_icp-master/install/yaml-cpp/lib/libyaml-cpp.so.0.6.3
CMake Error at cmake/external.cmake:13 (get_target_property):
  INTERFACE_LIBRARY targets may only have whitelisted properties.  The
  property "IMPORTED_RELEASE_LOCATION" is not allowed.
Call Stack (most recent call first):
  CMakeLists.txt:51 (include)


INFO /home/xiaoduan/project/lidar/ct_icp-master/install/tinyply/lib/libtinyply.so
INFO -- [CT-ICP] -- Appending to the INSTALL RPATH the RPATH to the external libraries: 
		[:/home/xiaoduan/project/lidar/ct_icp-master/install/Ceres/lib:/home/xiaoduan/project/lidar/ct_icp-master/install/glog/lib:/home/xiaoduan/project/lidar/ct_icp-master/install/yaml-cpp/lib:/home/xiaoduan/project/lidar/ct_icp-master/install/tinyply/lib]
INFO [CT_ICP] -- "WITH_GTSAM=OFF gtsam dependent targets will not be built"
-- Configuring incomplete, errors occurred!
See also "/home/xiaoduan/project/lidar/ct_icp-master/cmake-build-release/CMakeFiles/CMakeOutput.log".
See also "/home/xiaoduan/project/lidar/ct_icp-master/cmake-build-release/CMakeFiles/CMakeError.log".

在网上搜了好多种方法都不好用,也没看明白,然后又在camke官网上搜索,甚至没有搜到IMPORTED_RELEASE_LOCATION。
试了好多种方式,发现每次搜索出来的都是IMPORTED_LOCATION_RELEASE,于是将cmake/external.cmake:13文件中的内容进行了修改。但是,事实证明,并没有效果。

接着按照以下网址对cmake进行了升级
https://blog.csdn.net/weixin_45860565/article/details/127869813
然后问题就解决了。最后一行命令直接成功,比较顺利。
现在cmake的版本为3.22.1

  1. 执行了cmake … --DWITH_VIZ3D=ON,然后就出现了以下问题。
CMake Error at install/superbuild_import.cmake:35 (find_package):
  Could not find a package configuration file provided by "viz3d" with any of
  the following names:

    viz3dConfig.cmake
    viz3d-config.cmake

  Add the installation prefix of "viz3d" to CMAKE_PREFIX_PATH or set
  "viz3d_DIR" to a directory containing one of the above files.  If "viz3d"
  provides a separate development package or SDK, be sure it has been
  installed.
Call Stack (most recent call first):
  install/superbuild_import.cmake:101 (SLAM_DEFAULT_FIND_PACKAGE)
  cmake/superbuild_utils.cmake:27 (include)
  CMakeLists.txt:49 (SLAM_INCLUDE_SUPERBUILD)

调试没调试好,所幸删除cmake-build-release并重新执行了一遍D步骤。

然后进入到文件夹ct_icp-master/.cmake-build-superbuild/MappingResearchKEU_superbuild/src/MappingResearchKEU_superbuild-build/viz3d/src/viz3d中,执行命令./install.sh进行了安装

然后再从第三步执行一遍。

  1. 在执行第二句时,出现错误:
CMake Error at /opt/ros/noetic/share/catkin/cmake/empy.cmake:30 (message):
  Unable to find either executable 'empy' or Python module 'em'...  try
  installing the package 'python3-empy'
Call Stack (most recent call first):
  /opt/ros/noetic/share/catkin/cmake/all.cmake:164 (include)
  /opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:20 (include)
  CMakeLists.txt:64 (find_package)

按照下面两个网站的内容进行解决
https://blog.csdn.net/gongdiwudu/article/details/124430036
https://blog.csdn.net/zkk9527/article/details/125558478

5.构建 CT-ICP 的 ROS 包装

5.1标准进行

  1. 安装共享库,执行以下命令:
cd ros/roscore
mkdir cmake-build-release && cd  cmake-build-release                  #< Create the build directory
cmake .. -DCMAKE_BUILD_TYPE=Release                                   #< (2) Configure with the desired options (specify arguments with -D<arg_name>=<arg_value>)
cmake --build . --target install --config Release --parallel 12       #< Build and Install the ROSCore library
  1. 新建一个工作空间,catkin_ws。并在里面建立一个src文件,执行以下命令:
mkdir -p catkin_ws/src
  1. 将项目与自己的空间连接到一起
cd <path-to-your-catkin-workspace>/src                              #< Move to the Catkin Workspace's src directory
ln -s <path-to-ct_icp-git-project>/ros/catkin_ws/ct_icp_odometry ct_icp_odometry        #< Make a symbolic link to the `catkin_ws` folder
ln -s <path-to-ct_icp-git-project>/ros/catkin_ws/slam_roscore slam_roscore        #< Make a symbolic link to the `catkin_ws` folder
cd ..                                                               #< Move back to the root of the catkin workspace
catkin_make -DSUPERBUILD_INSTALL_DIR=<path-to-superbuild-install-dir>

如果安装成功,并且在获取工作区的 devel 目录后,您应该能够启动 已安装的 ROS 节点。
包装定义以下节点:
ct_icp_dataset_node:发布从磁盘读取ct_icp不同数据集的点云的节点。
ct_icp_odometry_node:运行ct_icp测程的主测程节点。
注意: 这里的的工作空间和项目没有包含和被包含的关系。

运行测试:

roslaunch ct_icp_odometry launch_slam_dataset.launch dataset_path:=/home/xiaoduan/Desktop/dataset/KITTI/KITTI_raw dataset:=KITTI_raw sequence:=00

测试结果:
测试过程中的一个截图,最终留下的是一个轨迹图。
demo测试结果截图

运行篇

1、使用脚本(在ct-icp数据集上)

此时感觉不用ros也能跑出来,于是就直接使用脚本跑,可以运行成功。
执行命令:

./run_odometry -c /home/xiaoduan/project/lidar/ct_icp-master/config/odometry/driving_config.yaml

脚本测试结果:
demo测试结果截图

2.使用可控系统(ROS)

完成 ROS 安装后,使用 Rosbag推出测程计,例如:ros/catkin_ws/ct_icp_odometry/launch

roslaunch ct_icp_odometry lidar_odometry_subt.launch rosbag:=/home/xiaoduan/Desktop/dataset/a_lvl_1.bag 

运行结果:
1

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

写在最后:
整个大体的步骤大体就有以下几个过程。

下载viz3d并执行pip install . 进行安装
git
cd
执行超级构建
对cmake进行手动升级
执行构建slam库
执行构建ros库
独立建立工作空间,与git的地址不同
进行节点创立
完成
然后进行运行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/92002.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python+mysql+前后端分离国内职位数据分析(源码+文档+指导)

系统阐述的是使用国内python职位数据分析系统的设计与实现&#xff0c;对于Python、B/S结构、MySql进行了较为深入的学习与应用。主要针对系统的设计&#xff0c;描述&#xff0c;实现和分析与测试方面来表明开发的过程。开发中使用了 Flask框架和MySql数据库技术搭建系统的整体…

深度学习算法模型转成算能科技平台xx.bmodel模型的方法步骤

目录 1 docker镜像下载 2 SDK下载 3 下载sophon-demo 4 修改docker镜像的脚本 5 创建个文件夹 6.source 7.转模型 1 docker镜像下载 可以在dockerhub看到镜像的相关信息 https://hub.docker.com/r/sophgo/tpuc_dev/tags 用下面的命令下载 docker pull sophgo/tpuc_d…

Vue2向Vue3过度Vuex状态管理工具快速入门

目录 1 Vuex概述1.是什么2.使用场景3.优势4.注意&#xff1a; 2 需求: 多组件共享数据1.创建项目2.创建三个组件, 目录如下3.源代码如下 3 vuex 的使用 - 创建仓库1.安装 vuex2.新建 store/index.js 专门存放 vuex3.创建仓库 store/index.js4 在 main.js 中导入挂载到 Vue 实例…

【微服务】04-Polly实现失败重试和限流熔断

文章目录 1. Polly实现失败重试1.1 Polly组件包1.2 Polly的能力1.3 Polly使用步骤1.4 适合失败重试的场景1.5 最佳实践 2.Polly实现熔断限流避免雪崩效应2.1 策略类型2.2 组合策略 1. Polly实现失败重试 1.1 Polly组件包 PollyPolly.Extensions.HttpMicrosoft.Extensions.Htt…

SMC_Interpolator2Dir反向插补运动

附加函数是&#xff1a; SMC_Interpolator2Dir_SlowTask 函数的位置&#xff1a; 输入&#xff1a; 运行 bExecute 【BOOL】 路径包 poqDataIn 指向SMC_OUTQUEUE的指针 停止 bSlow_Stop 停止BOOL 急停 bEmergency_Stop 紧急停止BOOL 单…

1. HBase中文学习手册之揭开HBase的神秘面纱

揭开Hbase的神秘面纱 1.1 欢迎使用 Apache Hbase1.1.1 什么是 Hbase?1.1.2 Hbase的前世今生1.1.3 HBase的技术选型&#xff1f;1.1.3.1 不适合使用 HBase的场景1.1.3.2 适合使用 HBase的场景 1.1.4 HBase的特点1.1.4.1 HBase的优点1.1.4.2 HBase的缺点 1.1.5 HBase设计架构 1.…

[JavaWeb]【九】web后端开发-SpringBootWeb案例(菜单)

目录 一、准备工作 1.1 需求 1.2 环境搭建 1.2.1 准备数据库&表 1.2.2 创建springboot工程 1.2.3 配置application.properties & 准备对应实体类 1.2.3.1 application.properties 1.2.3.2 实体类 1.2.3.2.1 Emp类 1.2.3.2.2 Dept类 1.2.4 准备对应的Mapper、…

Yolo系列-yolov2

YOLO-V2 更快&#xff01;更强&#xff01; YOLO-V2-BatchNormalization BatchNormalization&#xff08;批归一化&#xff09;是一个常用的深度神经网络优化技术&#xff0c;它可以将输入数据进行归一化处理&#xff0c;使得神经网络更容易进行学习。在YOLOv2中&#xff0c;B…

wxpython + cef 是优秀的 WebView 组件

CEF 即 (Chromium Embedded Framework)&#xff1b;cef 是优秀的 WebView 组件。 pip install wxpython4.2 wxPython-4.2.0-cp37-cp37m-win_amd64.whl (18.0 MB) Successfully installed wxpython-4.2.0 pip install cefpython3 cefpython3-66.1-py2.py3-none-win_amd64.whl …

C语言基础之——指针(上)

前言&#xff1a;小伙伴们又见面啦&#xff01;本期内容&#xff0c;博主将展开讲解有关C语言中指针的上半部分基础知识&#xff0c;一起学习起来叭&#xff01;&#xff01;&#xff01; 目录 一.什么是指针 二.指针类型 1.指针的解引用 2.指针-整数 三.野指针 1.野指针…

Qt --- QTimer

在Qt开发界面的时候&#xff0c;非常多的时候都得使用定时器&#xff0c;定时器具体可以干什么呢&#xff1f;比如&#xff1a;控制时钟、定时改变样式、改变进度等。。。说到这里&#xff0c;经常使用QQ&#xff0c;而不同的时段都会显示不同的背景&#xff0c;我认为如果用Qt…

文本编辑器Vim常用操作和技巧

文章目录 1. Vim常用操作1.1 Vim简介1.2 Vim工作模式1.3 插入命令1.4 定位命令1.5 删除命令1.6 复制和剪切命令1.7 替换和取消命令1.8 搜索和搜索替换命令1.9 保存和退出命令 2. Vim使用技巧 1. Vim常用操作 1.1 Vim简介 Vim是一个功能强大的全屏幕文本编辑器&#xff0c;是L…

【网络】数据链路层——MAC帧协议 | ARP协议

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《网络》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 来到数据链路层后&#xff0c;完整的数据被叫做数据帧&#xff0c;习惯上称之为MAC帧。 MAC帧协议 | A…

不用循环数组,js+html实现贪吃蛇

功能描述&#xff1a;每走10步随机改变一个方方向&#xff0c;当键盘按下方向键 w,s,a,d时&#xff0c;使用键盘方向控制蛇的移动&#xff0c;蛇头每撞到一次自身时改变屏幕颜色&#xff0c;蛇头碰到边界时从另一边回来。 实现思路&#xff1a;用个30大小的数组存放每个结点&a…

Open3D 点云均值滤波

目录 一、算法原理1、均值滤波2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 1、均值滤波 对待处理的当前采样点,选择一个模板,该模板由其邻近的若干个数据点组成,…

tomcat高可用和nginx高可用

tomcat高可用和nginx高可用 小白教程&#xff0c;一看就会&#xff0c;一做就成。 1.什么是高可用&#xff1f; 高可用HA&#xff08;High Availability&#xff09;是分布式系统架构设计中必须考虑的因素之一&#xff0c;它通常是指&#xff0c;通过设计减少系统不能提供服务…

自平衡性:保持数据结构稳定的关键

自平衡性是一种重要的数据结构属性&#xff0c;它确保在执行插入、删除等操作后&#xff0c;数据结构能够自动进行调整&#xff0c;以保持整体的平衡状态。平衡的数据结构可以提供更快的操作性能&#xff0c;避免极端情况下的低效操作&#xff0c;同时保持树或其他结构的整体稳…

深度学习2.神经网络、机器学习、人工智能

目录 深度学习、神经网络、机器学习、人工智能的关系 大白话解释深度学习 传统机器学习 VS 深度学习 深度学习的优缺点 4种典型的深度学习算法 卷积神经网络 – CNN 循环神经网络 – RNN 生成对抗网络 – GANs 深度强化学习 – RL 总结 深度学习 深度学习、神经网络…

扩散模型 (Diffusion Model) 之最全详解图解

目前最近在 AI 作画这个领域 Transformer 火的一塌糊涂,AI 画画效果从 18 年的 DeepDream噩梦中惊醒过来,开始从 2022 年 OpenAI 的 DALLE 2[2] 引来插画效果和联想效果都达到惊人效果。 但是要了解:Transformer 带来 AI + 艺术,从语言开始遇到多模态,碰撞艺术火花 这个主…

iOS 分别对一张图的局部进行磨砂,拼接起来不能贴合

效果图 需求&#xff0c;由于视图层级的原因&#xff0c;需要对图片分开进行磨砂&#xff0c; 然后组合在一起 如图&#xff0c;上下两部分&#xff0c;上下两个UIImageVIew大小相同&#xff0c;都是和图片同样的大小&#xff0c;只是上面的UIimageVIew 只展示上半部份 &#…