一、算法开始前的准备
第一次使用,先用的是数据包。
数据包使用的设备是:
- 速腾16线激光雷达
- 瑞芬TL720D陀螺仪
- 先用VM虚拟机举行测试。CPU 14700K
使用的体系:
参考这里的教程。
在运行
- 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 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)
复制代码 到这里编译应该没有问题了。
【额外的地方】
- 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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |