因为基础比较差,所以希望通过学习LOAM-Livox能够把激光数据的操作步骤走通
- 能够复现读数据&存数据操作
- 能够复现点云配准流程(非原理)
- 能够做好笔记自己以后方便查看
首先把我参考的内容放在下面:
- 在虚拟机+20.04配置环境(有opencv4问题的解决办法) https://www.cnblogs.com/Pyrokine/p/16292786.html
- Ceres版本太高导致部分函数缺失的解决办法 https://blog.csdn.net/weixin_56024057/article/details/128344034
- livox_laserMapping崩溃问题解决办法 https://www.cnblogs.com/Pyrokine/p/16292786.html
- LOAM-Livox源码 https://github.com/hku-mars/loam_livox
非常感谢开源工作者!
环境说明
我当前使用的环境为Ubuntu20.04,下面所有的操作都在此基础上.
LOAM-Livox 需要配置PCL库和Ceres库:
PCL库的安装教程参考 https://blog.csdn.net/weixin_41836738/article/details/121451965
Ceres库的安装教程参考 http://ceres-solver.org/installation.html
我安装的PCL库版本为1.13.1, Ceres版本为1.14.0
下面是配置环境时遇到的一些问题:
- opencv相关的错误和对应的修改方式
// loam_livox/source/laser_feature_extractor.hpp:42
#include <opencv2/opencv.hpp>
// loam_livox/source/read_camera.cpp:25
cap.set(cv::CAP_PROP_SETTINGS, 1); //opens camera properties dialog
// loam_livox/source/read_camera.cpp:27
cap.set(cv::CAP_PROP_FRAME_WIDTH, 320);
// loam_livox/source/read_camera.cpp:28
cap.set(cv::CAP_PROP_FRAME_HEIGHT, 240);
- Ceres相关的错误和对应修改方式
local_parameterization.h报错
我的错误没有截图,这里放一个同样错误的截图.
将使用的Ceres库版本更改为1.14.0,问题就解决了.
- livox_laserMapping崩溃的问题,这个问题发生在程序运行时
程序运行过程中突然崩溃,一般仅运行一小部分就会崩溃
[livox_laserMapping-3] process has died [pid 185196, exit code -11
修改loam_livox目录下的CMakeLists.txt文件第五行 set(CMAKE_CXX_FLAGS “-std=c++17”)
更换C++标准后问题消失
Ceres库安装记录
因为不同程序要求的Ceres版本可能不一样,因此可以按照下面方式将Ceres库直接安装在loam-livox文件夹下面(新建的一个install文件夹内),PCL库的安装方法类似,但是下面的安装方案要求依赖库都已经安装完成!
cd loam_livox
mkdir suprebuild
gilt clone -b 1.14.0 https://github.com/ceres-solver/ceres-solver
chmod +x sh_install_ceres.sh
./sh_install_ceres.sh
其中,sh_install_ceres.sh文件内容如下:
#! /bin/bash
BUILD_TYPE=Release
# 配置安装路径和build路径
root_dir=$(cd ..; pwd)
INSTALL_DIR=${root_dir}/install
cmake -E make_directory $INSTALL_DIR
# echo ${INSTALL_DIR}
# 在使用cmake指令后用于检查
check_status_code() {
if [ $1 -ne 0 ]
then
echo "[Superbuild] Failure. Exiting."
exit 1
fi
}
cd ceres-solver || (echo "Failed to go in ceres-solver" && exit)
cmake -E make_directory build && cd build
# https://blog.csdn.net/qq_32077121/article/details/129791342
# 指定安装位置
cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}
check_status_code $?
cmake --build . --config ${BUILD_TYPE} --target install --parallel 6
check_status_code $?
echo "ceres安装完成"
执行上述安装操作后修改loam_livox文件夹下的CMakeLists.txt代码
set(Ceres_DIR /home/whu/ThirdLib/SLAM/LOAM-Livox/src/loam_livox/install/lib/cmake/Ceres)
这里我参考了 https://blog.csdn.net/weixin_38907150/article/details/85257985
使用opencv、Eigen、ceres库时指定查找路径方法
程序运行
任意打开第一个命令行(可以没有)
roscore
在loam-livox的ros工程空间打开命令行
source devel/setup.bash
roslaunch loam_livox rosbag_mid100.launch
在bag数据所在目录打开一个命令行
rosbag play mid100_example.bag
程序运行结果如下: