3D slam之liosam应用(1)
一、算法开始前的准备第一次使用,先用的是数据包。
数据包使用的设备是:
[*]速腾16线激光雷达
[*]瑞芬TL720D陀螺仪
[*]先用VM虚拟机举行测试。CPU 14700K
使用的体系:
[*]ubuntu18.04
参考这里的教程。
在运行
sudo apt-get install libdw-dev
出现了在处理时有错误发生:grub-efi-amd64-signed 问题.
是虚拟机问题。
背面换成了暗影精灵9了
一。【代码准备】
mkdir -p ~/liosam_ws/srccd ~/liosam_ws/srcsudo apt-get install -y ros-noetic-robot-localizationsudo apt-get install -y ros-noetic-robot-state-publishersudo add-apt-repository ppa:borglab/gtsam-release-4.0sudo apt install libgtsam-dev libgtsam-unstable-devsudo apt-get install ros-noetic-fake-localizationgit clone https://mirror.ghproxy.com/https://github.com/TixiaoShan/LIO-SAM.git\\imu标定\\https://blog.csdn.net/u012132666/article/details/123235930sudo apt-get install libdw-dev
git clone https://mirror.ghproxy.com/https://github.com/gaowenliang/code_utils.gitgit clonehttps://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)
到这里编译应该没有问题了。
【额外的地方】
[*]点云PCD文件转栅格舆图PGM
git clone https://mirror.ghproxy.com/https://github.com/Hinson-A/pcd2pgm_package.git
[*]安装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>
[*] 使用运行数据集
参考了https://blog.csdn.net/weixin_40653140/article/details/137235669
[*] 一些别人踩坑的总结
参考https://blog.csdn.net/weixin_42141088/article/details/118000544
https://img-blog.csdnimg.cn/direct/810784c64a9b4218a64b688e77abffeb.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]