3D slam之liosam应用(1)

一、算法开始前的准备

第一次使用,先用的是数据包。
数据包使用的设备是:

  1. 速腾16线激光雷达
  2. 瑞芬TL720D陀螺仪
  3. 先用VM虚拟机进行测试。CPU 14700K

使用的系统:

  1. ubuntu18.04

参考这里的教程。

在运行

sudo apt-get install libdw-dev

出现了在处理时有错误发生:grub-efi-amd64-signed 问题.

是虚拟机问题。


后面换成了暗影精灵9了

一。【代码准备】

mkdir -p ~/liosam_ws/src
cd ~/liosam_ws/src

sudo apt-get install -y ros-noetic-robot-localization
sudo apt-get install -y ros-noetic-robot-state-publisher

sudo add-apt-repository ppa:borglab/gtsam-release-4.0
sudo apt install libgtsam-dev libgtsam-unstable-dev

sudo apt-get install ros-noetic-fake-localization

git clone https://mirror.ghproxy.com/https://github.com/TixiaoShan/LIO-SAM.git

\\imu标定
\\https://blog.csdn.net/u012132666/article/details/123235930

sudo apt-get install libdw-dev
git clone https://mirror.ghproxy.com/https://github.com/gaowenliang/code_utils.git
git clone  https://mirror.ghproxy.com/https://github.com/gaowenliang/imu_utils.git

【传感器驱动准备】

git clone https://mirror.ghproxy.com/https://github.com/HViktorTsoi/rs_to_velodyne.git

二。【编译前修改】

1. code_utils一定要在 imu_utils之前编译

1.1、修改 imu_utils 包的CMakeLists.txt的32行
catkin_package(CATKIN_DEPENDS code_utils)
1.2、修改 imu_utils 包的package.xml的53行
<build_depend>code_utils</build_depend>
<exec_depend>code_utils</exec_depend>
1.3、修改 ~/liosam_ws/src/code_utils-master/src/sumpixel_test.cpp 文件的第2行
#include "code_utils/backward.hpp"
1.4、安装ceres

(1)、下载ceres源码,不建议下载最新版本,本文下载1.14.0(点击右侧的Releases查看历史版本)

https://github.com/ceres-solver/ceres-solver

(2)、解压压缩包,在终端进入该目录,然后新建build文件夹,并进入build中

tar -zxvf ceres-solver-1.14.0.tar.gz 
cd ceres-solver-1.14.0/
mkdir build
cd build/

(3)、安装ceres依赖

sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev

(4)、编译安装

cmake ..
make
sudo make install
1.5 code_utils编译出现问题

参考 https://zhuanlan.zhihu.com/p/694439388.
You need to change this in mat_io_test.cpp and sumpixel_test.cpp

  • 将所有CV_LOAD_IMAGE_GRAYSCALE全部改成 cv::IMREAD_GRAYSCALE;
  • 将所有CV_LOAD_IMAGE_UNCHANGED全部改成cv::IMREAD_UNCHANGED;
  • 将所有CV_MINMAX改成cv::NORM_MINMAX
  • Changed CMakeList.txt set(CMAKE_CXX_FLAGS “-std=c++11”) to set(CMAKE_CXX_STANDARD 14)
1.6 编译rs_to_velodyne-master报错

参考https://blog.csdn.net/abanchao/article/details/123751176

编译rs_to_velodyne-master时,出现以下错误:

/usr/include/pcl-1.10/pcl/point_types.h:574:1: error: ‘plus’ is not a member of ‘pcl::traits’
  574 | POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::CPPFSignature,

/usr/include/pcl-1.10/pcl/point_types.h:588:1: error: ‘plusscalar’ is not a member of ‘pcl::traits’
  588 | POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::PPFRGBSignature,

/usr/include/pcl-1.10/pcl/point_types.h:588:1: error: ‘type’ is not a member of ‘pcl::traits::datatype<pcl::PPFRGBSignature, pcl::fields::f4>::decomposed’ {aka ‘pcl::traits::decomposeArray<float>’}

/usr/include/pcl-1.10/pcl/point_types.h:588:1: error: ‘plusscalar’ is not a member of ‘pcl::traits’
  588 | POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::PPFRGBSignature,

在对应程序包的CMakeLists.txt中加入一行代码即可顺利编译。

set(CMAKE_CXX_STANDARD 14)
1.7 在编译过程中liosam出现了问题

解决办法,修改文件

第一处:

~/catkin_ws/src/LIO-SAM/include/ 文件夹下的 utility.h 文件,替换其中的 #include <opencv/cv.h> 这一行,改为:

#include <opencv2/imgproc.hpp>

第二处:

~/catkin_ws/src/LIO-SAM/ 文件夹下的 CMakeList.txt 文件,替换其中的 set(CMAKE_CXX_FLAGS “-std=c++11”) 这一行,改为:set(CMAKE_CXX_FLAGS “-std=c++14”),并且添加

find_package(Boost REQUIRED COMPONENTS timer thread serialization chrono)

到这里编译应该没有问题了。

【额外的地方】

  1. 点云PCD文件转栅格地图PGM
git clone https://mirror.ghproxy.com/https://github.com/Hinson-A/pcd2pgm_package.git
  1. 安装3D点云实时转2D栅格地图软件包Octomap
sudo apt-get install ros-noetic-octomap-ros 
sudo apt-get install ros-noetic-octomap-server
sudo apt-get install ros-noetic-octomap-rviz-plugins

一个可参考的launch文件

<launch>
  <!--启动的节点-->
  <node pkg="octomap_server" type="octomap_server_node" name="octomap_server"> 
 
     <!--栅格分辨率-->
    <param name="resolution" value="0.05" />
    
    <!--世界坐标系话题,一般为map-->
    <param name="frame_id" type="string" value="/map" />
 
    <param name="sensor_model/max_range" value="1000.0" />
    <param name="latch" value="true" />
 
     <!--截取的三维点云范围--> 
    <param name="pointcloud_max_z" value="1.2" />
    <param name="pointcloud_min_z" value="-0.5" />
 
    <param name="graound_filter_angle" value="3.14" />
    
     <!--订阅的点云消息名称 PointClout2,即上一步发布出来的点云topic--> 
     <!-- cloud_in是octomap默认的输入话题,做一下映射-->
    <remap from="/cloud_in" to="/lio_sam/mapping/cloud_registered" />
  </node>
  
</launch>
  1. 使用运行数据集
    参考了https://blog.csdn.net/weixin_40653140/article/details/137235669

  2. 一些别人踩坑的总结
    参考https://blog.csdn.net/weixin_42141088/article/details/118000544

在这里插入图片描述

  • 19
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值