当前位置:   article > 正文

LIO-SAM 安装 编译 学习记录_lio_sam运行的park包,展示效果

lio_sam运行的park包,展示效果

一.准备工作

1源码:

1.1加速mirrors / TixiaoShan / LIO-SAM · GitCode

1.2原版GitHub - TixiaoShan/LIO-SAM: LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping

2依赖

3编译

  1. cd ~/catkin_ws/src
  2. 添加源码
  3. cd..
  4. catkin_make -j1 (第一次尽量-j1以来生成一些消息类型)//catkin_make

4编译遇到的问题(不断更新中)

  • 由于PCL版本1.10,将C++标准改为14:
  1. #set(CMAKE_CXX_FLAGS "-std=c++11")
  2. set(CMAKE_CXX_FLAGS "-std=c++14")
  • 找到OpenCV4.2.0包:
  1. #find_package(OpenCV REQUIRED QUIET)
  2. set(CMAKE_PREFIX_PATH "/usr/include/opencv4")
  3. find_package(OpenCV 4.0 QUIET)
  • /usr/bin/ld问题,修改:
  1. # find_package(Boost REQUIRED COMPONENTS timer)
  2. find_package(Boost REQUIRED COMPONENTS timer thread serialization chrono)
  • 找到utility.h中的:#include<opencv/cv.h>,修改为
  1. // #include<opencv/cv.h>
  2. #include <opencv2/imgproc.hpp>

5.运行示例数据集

5.1   source

  1. source devel/setup.zsh
  2. //若不行source devel/setup.bash

5.2运行launch文件:

roslaunch lio_sam run.launch

5.3播放数据包((频率可选,可调)

rosbag play park_dataset.bag -r 3

5.4播放数据集报错

(实验了,好使)

错误:ERROR: cannot launch node of type [robot_localization/ekf_localization_node]: robot_localization,安装功能包:

  1. sudo apt-get install ros-noetic-fake-localization
  2. sudo apt-get install ros-noetic-robot-localization

若报错:[lio_sam_imuPreintegration-2]和[lio_sam_mapOptmization-5],是GTSAM的问题,缺少一些库。它们已安装但不可用,因为不在 LD_LIBRARY_PATH 环境变量中。所以将 /usr/local/lib 目录添加到变量中:
 

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

或者(没实验过)

1.报错[lio_sam_imuPreintegration-2]时

原因:库文件libmetis.so 的位置不在ros的工作区。在安装GTSAM库的时候默认安装的路径为/usr/local/lib/,当启动工作空间时,运行的库查找的路径为/opt/ros/ros版本/lib/。

  1. cd /usr/local/lib/
  2. sudo cp libmetis.so /opt/ros/melodic【自己的ros版本】/lib/

2.报错lio_sam_mapOptmization-5]时

原因:GTSAM库编译问题。

解决: 重新编译安装GTSAM库加上参数指令,cmake命令为:

cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..

5.5三个数据集测试

LIO_SAM实测运行,论文学习及代码注释[附对应google driver数据]_gitee liosam_Eminbogen的博客-CSDN博客

三个官方数据集:casual_walk_2.bag、outdoor.bag、west.bag。

如果运行casual_walk_2.bag不需要修改任何参数,使用默认文件即可;如果要运行其它两个数据集,则需要做如下修改:

  1. imuTopic: "imu_raw" 改为 imuTopic: "imu_correct"
  2. extrinsicRot 和 extrinsicRPY 设为单位矩阵

其中extrinsicRot表示imu->lidar的坐标变换, 用于旋转imu坐标系下的加速度和角速度到lidar坐标系下, extrinsicRPY则用于旋转imu坐标系下的欧拉角到lidar坐标下, 由于lio-sam作者使用的imu的欧拉角旋转方向与lidar坐标系不一致, 因此使用了两个旋转不同, 但是大部分的设备两个旋转应该是设置为相同的。
 

同时GitHub主页还提供了验证GPS的数据集(park.bag),如果要使用GPS数据,则需要进行如下修改:

  1. gpsTopic: "odometry/gpsz" 改为 gpsTopic: "odometry/gps"
  2. useImuHeadingInitialization: false 改为 useImuHeadingInitialization: true # 如果使用gps数据这里一定要设置为true,不然可能会跑飞

具体细节方面(有相对应的网盘连接)

LIO-SAM:配置环境、安装测试、适配自己采集数据集_有待成长的小学生的博客-CSDN博客

5.6如果要保存点云及轨迹等结果,在参数文件params.yaml中打开并修改保存路径:

  1. # 保存地图设置为true
  2. savePCD: true # https://github.com/TixiaoShan/LIO-SAM/issues/3
  3. # 设置地图保存路径
  4. savePCDDirectory: "自己设置的路径" # in your home folder, starts and ends with "/". Warning: the code deletes "LOAM" folder then recreates it. See "mapOptimization" for implementation

更改了配置文件后,还需更改一下_TIMEOUT_SIGINT参数,否则可能造成地图保存失败(这是由于ros会在_TIMEOUT_SIGINT秒后关闭ros节点,但是地图过大时,保存地图会花费一些时间,如果_TIMEOUT_SIGINT太小,很可能造成地图还未保存,节点就已经关闭了,所以需要适当调高_TIMEOUT_SIGINT值),具体方法如下:
 

sudo gedit /opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/nodeprocess.py

找到_TIMEOUT_SIGINT并调整数值(默认15s,我的参考值60s)

参考github:https://github.com/TixiaoShan/LIO-SAM/issues/3

park数据集可验证GPS松组合效果,如果要使用GPS数据,则需要进行如下修改:

  1. gpsTopic: "odometry/gpsz" 改为 gpsTopic: "odometry/gps"
  2. useImuHeadingInitialization: false 改为 useImuHeadingInitialization: true

5.7后续问题解决

5.8.pcl-ros-vtk版本问题对不上

ubuntu18.04先安装对应版本ROS,,接着是对应版本的VTK,,最后安装PCL。

注意:ros-melodic里的pcl我对应的是pcl1.8;ros-noetic里对应的pcl为pcl1.10。

一.

对于ros细节步骤如下:

5.8.1对应版本安装

ubuntu18.04-------ros-melodic

5.8.2

配置软件库

 清华-阿里都可,那个快用那个

5.8.3可能出现的问题以及解决方案

1.设置安装源,(借鉴,具体可看原著,更详细Ubuntu18.04安装ROS Melodic(详细,亲测安装完成,有清晰的截图步骤)_鱼香ros安装_爱跑步的mango的博客-CSDN博客

避免后面会出现无法定位软件包的错误,这里ROS提供了国内的安装源,添加国内安装源命令

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

2.设置密钥

  • 若密钥服务器hkp://ha.pool.sks-keyservers.com:80无法添加成功,则可以尝试hkp://pgp.mit.edu:80或者hkp://keyserver.ubuntu.net:80

已成功案例:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

3.更新Ubuntu 18.04 LTS的最新可用软件包列表

sudo apt update

...

但是会出现uodate不成功,百度(见隐藏文章)

http://t.csdn.cn/W8KEy

...有点懒了,就按照上述操作

ros安装成功

二.ROS已装背景下安装PCL和VTK,解决VTK和PCL_ROS冲突问题_pcl_ros安装_TwilightZrui的博客-CSDN博客

就成功了 。

致谢:转载+参考

1.

Ubuntu20.04下运行LOAM系列:A-LOAM、LeGO-LOAM、LIO-SAM 和 LVI-SAM_loam运行_ZARD帧心的博客-CSDN博客

2.

LIO-SAM运行报错[lio_sam_imuPreintegration-2]和[lio_sam_mapOptmization-5]解决_lio-sam编译时无法链接到map_花雨仙晨的博客-CSDN博客

3.Ubuntu18.04安装ROS Melodic(详细,亲测安装完成,有清晰的截图步骤)_鱼香ros安装_爱跑步的mango的博客-CSDN博客

4.

ROS已装背景下安装PCL和VTK,解决VTK和PCL_ROS冲突问题_pcl_ros安装_TwilightZrui的博客-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/116651
推荐阅读
相关标签
  

闽ICP备14008679号