lio-sam 复现
lio-sam安装,跑自己的数据集
笔者在学习LIO_SAM时踩了不少坑,文中参考了很多大佬的文章,我只是个搬运工。 有疑问可以随时联系我,欢迎交流。
硬件介绍
velodyne 16线 雷达
wheeletc N100 9轴imu
Ubuntu18.04,使用ros melodic
建立自己的工作空间
mkdir catkin_wscd catkin_wsmkdir srccatkin_make
安装lio-sam的依赖项
sudo apt-get install -y ros-melodic-navigationsudo apt-get install -y ros-melodic-robot-localizationsudo apt-get install -y ros-melodic-robot-state-publisher
安装gtsam4.0.2
git clone https://ghproxy.com/https://github.com/borglab/gtsam/archive/4.0.2.zipmkdir build cd buildcmake ..sudo makemake install
此处可能会报错
g++: internal compiler error: Killed (program cc1plus)
解决办法:参考这个博客内容
编译lio-sam
//将文件克隆到工作空间下的src文件夹中git clone https://ghproxy.com/https://github.com/TixiaoShan/LIO-SAM.gitcd ..catkin_make
imu雷达位置(非常重要)
标定产生的误差会对结果造成很大的影响,(我在这里踩坑不少)所以我这里把雷达和imu的位置放在一起
这样就不需要在参数文件里修改。注意雷达的坐标系和imu的坐标系一致。
修改配置文件
由于之前安装的各功能包时都在工作空间下进行的,故工作空间下src文件夹中应该会有激光雷达、IMU和LIO_SAM三个功能包。我们打开LIO_SAM文件夹中的/config/下的params.yaml文件,修改参数,原文件建议备份一份。
我将pointcloudTopic :改为velodyne_points
imutopic : imu
这里需要根据你的雷达和imu的参数来修改
在这里需要注意,前期在我们的实验平台还没搭建完成时,雷达固定架还没有装好,在等待的这段时间我没有进行标定就进行了程序的运行,遇到了地图漂移和旋转等问题,没有进行进一步测试,原因可能是因为没标定也可恶能是因为在实验室狭窄环境和复杂电磁环境的多种因素。所以在此现将准备工作做好在进行下面的工作。
标定参数
由于雷达和imu的位置放的很近,我没有标定外参,内参使用的是参考博主
那么文件中平移矩阵就不需要修改
放上博主的参数文件
lio_sam:# TopicspointCloudTopic: "velodyne_points" # Point cloud data(替换成自己的点云话题)imuTopic: "imu" # IMU data(替换自己的imu话题)odomTopic: "odometry/imu" # IMU pre-preintegration odometry, same frequency as IMUgpsTopic: "odometry/gpsz" # GPS odometry topic from navsat, see(没有GPS就不需要更改) module_navsat.launch file# FrameslidarFrame: "base_link"baselinkFrame: "base_link"odometryFrame: "odom"mapFrame: "map"# GPS SettingsuseImuHeadingInitialization: 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 dataposeCovThreshold: 25.0 # m^2, threshold for using GPS data# Export settingssavePCD: true # https://github.com/TixiaoShan/LIO-SAM/issues/3savePCDDirectory: "/rosbag/pcd" # in your home folder, starts and ends with "/". Warning: the code deletes "LOAM" folder then recreates it. See "mapOptimization" for implementation# Sensor Settingssensor: 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 / 1lidarMinRange: 1.0 # default: 1.0, minimum lidar range to be usedlidarMaxRange: 1000.0 # default: 1000.0, maximum lidar range to be used# IMU Settings 对应imu的内参 我这里是直接用的商家提供的imuAccNoise: 1.0909715156015328e-02 imuGyrNoise: 8.0226069504443656e-04imuAccBiasN: 4.0347767978459928e-04imuGyrBiasN: 4.4153147263889589e-05imuGravity: 9.80511imuRPYWeight: 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 thresholdedgeThreshold: 1.0surfThreshold: 0.1edgeFeatureMinValidNum: 10surfFeatureMinValidNum: 100
工作完成,分别启动IMU节点、雷达节点、lioslam节点。
//启动imu
roslaunch fdilink_ahrs ahrs_data.launch
//启动雷达
roslaunch velodyne_pointcloud VLP16_points.launch
//启动slam
roslaunch lio_sam run.launch
//顺便录制包,这里只用录制/imu /velodyne_pointclouds 就行
此时程序应该是可以正常启动运行了,建议在室外有足够空间位置的地方进行测试。
贴上一张我运行成功的图

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
