当前位置:   article > 正文

lio-sam 复现_lio-sam再现

lio-sam再现

lio-sam安装,跑自己的数据集

笔者在学习LIO_SAM时踩了不少坑,文中参考了很多大佬的文章,我只是个搬运工。 有疑问可以随时联系我,欢迎交流。

硬件介绍

velodyne 16线 雷达
wheeletc N100 9轴imu
Ubuntu18.04,使用ros melodic

建立自己的工作空间

mkdir catkin_ws
 
cd catkin_ws
 
mkdir src
 
catkin_make
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

安装lio-sam的依赖项

sudo apt-get install -y ros-melodic-navigation
 
sudo apt-get install -y ros-melodic-robot-localization
 
sudo apt-get install -y ros-melodic-robot-state-publisher
  • 1
  • 2
  • 3
  • 4
  • 5

安装gtsam4.0.2

git clone  https://ghproxy.com/https://github.com/borglab/gtsam/archive/4.0.2.zip
    mkdir build 
    cd build
    cmake ..
    sudo make
    make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

此处可能会报错

g++: internal compiler error: Killed (program cc1plus)
解决办法:参考这个博客内容

编译lio-sam

    //将文件克隆到工作空间下的src文件夹中
    git clone https://ghproxy.com/https://github.com/TixiaoShan/LIO-SAM.git
    cd ..
    catkin_make
  • 1
  • 2
  • 3
  • 4

imu雷达位置(非常重要)

标定产生的误差会对结果造成很大的影响,(我在这里踩坑不少)所以我这里把雷达和imu的位置放在一起
这样就不需要在参数文件里修改。注意雷达的坐标系和imu的坐标系一致。

修改配置文件

由于之前安装的各功能包时都在工作空间下进行的,故工作空间下src文件夹中应该会有激光雷达、IMU和LIO_SAM三个功能包。我们打开LIO_SAM文件夹中的/config/下的params.yaml文件,修改参数,原文件建议备份一份。
我将pointcloudTopic :改为velodyne_points
imutopic : imu

这里需要根据你的雷达和imu的参数来修改
在这里插入图片描述在这里需要注意,前期在我们的实验平台还没搭建完成时,雷达固定架还没有装好,在等待的这段时间我没有进行标定就进行了程序的运行,遇到了地图漂移和旋转等问题,没有进行进一步测试,原因可能是因为没标定也可恶能是因为在实验室狭窄环境和复杂电磁环境的多种因素。所以在此现将准备工作做好在进行下面的工作。

标定参数

由于雷达和imu的位置放的很近,我没有标定外参,内参使用的是参考博主

那么文件中平移矩阵就不需要修改
放上博主的参数文件

lio_sam:

  # Topics
  pointCloudTopic: "velodyne_points"      # Point cloud data(替换成自己的点云话题)
  imuTopic: "imu"                    # IMU data(替换自己的imu话题)
  odomTopic: "odometry/imu"                   # IMU pre-preintegration odometry, same frequency as IMU
  gpsTopic: "odometry/gpsz"      
  # GPS odometry topic from navsat, see(没有GPS就不需要更改) module_navsat.launch file

  # Frames
  lidarFrame: "base_link"
  baselinkFrame: "base_link"
  odometryFrame: "odom"
  mapFrame: "map"

  # GPS Settings
  useImuHeadingInitialization: false          # if using GPS data, set to "true"
  useGpsElevation: false                      # if GPS elevation is bad, set to "false"
  gpsCovThreshold: 2.0                        # m^2, threshold for using GPS data
  poseCovThreshold: 25.0                      # m^2, threshold for using GPS data
  
  # Export settings
  savePCD: true                               # https://github.com/TixiaoShan/LIO-SAM/issues/3
  savePCDDirectory: "/rosbag/pcd"           # in your home folder, starts and ends with "/". Warning: the code deletes "LOAM" folder then recreates it. See "mapOptimization" for implementation

  # Sensor Settings
  sensor: velodyne                            # lidar sensor type, 'velodyne' or 'ouster' or 'livox'
  N_SCAN: 16                                  # number of lidar channel (i.e., Velodyne/Ouster: 16, 32, 64, 128, Livox Horizon: 6)
  Horizon_SCAN: 1800                          # lidar horizontal resolution (Velodyne:1800, Ouster:512,1024,2048, Livox Horizon: 4000)
  downsampleRate: 1                           # default: 1. Downsample your data if too many points. i.e., 16 = 64 / 4, 16 = 16 / 1
  lidarMinRange: 1.0                          # default: 1.0, minimum lidar range to be used
  lidarMaxRange: 1000.0                       # default: 1000.0, maximum lidar range to be used

  # IMU Settings 对应imu的内参  我这里是直接用的商家提供的
  imuAccNoise: 1.0909715156015328e-02 
  imuGyrNoise: 8.0226069504443656e-04
  imuAccBiasN: 4.0347767978459928e-04
  imuGyrBiasN: 4.4153147263889589e-05
  imuGravity: 9.80511
  imuRPYWeight: 0.01

  # Extrinsics: T_lb (lidar -> imu)
  extrinsicTrans: [0.0, 0.0, 0.0]   #  平移矩阵  我这里直接设置为0   因为我imu和雷达靠的很近  在此不做赘述了 上面解释过了。
  extrinsicRot: [1, 0, 0,           # 旋转矩阵  我这里直接是单位矩阵,可以用上面标定的外参对比一下 
                  0, 1, 0,
                  0, 0, 1]
  extrinsicRPY: [1, 0, 0,
                  0, 1, 0,
                  0, 0, 1]
# LOAM feature threshold
  edgeThreshold: 1.0
  surfThreshold: 0.1
  edgeFeatureMinValidNum: 10
  surfFeatureMinValidNum: 100

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55

工作完成,分别启动IMU节点、雷达节点、lioslam节点。

//启动imu
roslaunch fdilink_ahrs ahrs_data.launch 
//启动雷达
roslaunch velodyne_pointcloud VLP16_points.launch 
//启动slam
roslaunch lio_sam run.launch
//顺便录制包,这里只用录制/imu /velodyne_pointclouds 就行
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

此时程序应该是可以正常启动运行了,建议在室外有足够空间位置的地方进行测试。
贴上一张我运行成功的图
在这里插入图片描述

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

闽ICP备14008679号