lio-sam运行自己的rosbag

(记录一下搞slam的过程)

设备

速腾聚创16线+导远ins570d

安装和运行

1. 安装
安装就不说了,直接按照github的readme来就行:

https://github.com/TixiaoShan/LIO-SAM

2. 雷达驱动
lio-sam需要的点云类型是XYZIRT,速腾的老版本驱动是没有R和T的,但是新版本驱动有,具体安装看我另一片博客:

https://blog.csdn.net/heirenlop/article/details/111634167?spm=1001.2014.3001.5502

3. rslidar_points转velodyne_points

在装好了新驱动,并且将点云格式修改为XYZIRT之后

如果直接在lio-sam的config/params.yaml中文件修改雷达的话题为rslidar_points的话会出现如下错误:

[ERROR] [1608623674.483017189]: Point cloud is not in dense format, please remove NaN points first!

可能修改源代码可以解决这个错误,但是我直接用一个功能包将rslidar_points转成了velodyne_points,这样就不会出现这个错误了,这个功能包的链接如下:

https://github.com/HViktorTsoi/rs_to_velodyne

安装和使用方法看readme

4. 雷达坐标变换

用上边的功能包将雷达的话题转换好了之后还有另外一个问题

因为lio-sam作者不管是雷达还是imu都是采用的REP-105坐标,也就是“x-前,y-左,z-上”,而速腾雷达的默认坐标是“y-前,x-右,z上”,因此需要对雷达进行坐标变换。

新的雷达驱动支持坐标变换,直接看新雷达驱动的readme文件,在这个文件中解释了如何进行坐标变换:

doc/howto/how_to_use_coordinate_transformation_cn.md

在这个文件中解释了x y z roll pitch yaw 的单位:

(…/intro/hiding_parameters_intro.md)

只需要将yaw改成1.57即可,即绕着yaw正方向旋转90度,这样就符合“x-前,y-左,z-上”了。

5. imu
(1)INS570d这个imu没有ubuntu下的驱动包,只能自己写,写的时候也要注意坐标系,这个imu默认是”x-前,y-右,z-下“,因此在写的时候要注意对y和z取负值,这里的y和z包括
acc-y
acc-z
gyro-y
gyro-z
pitch
yaw
这六个量。

(2)单位问题,lio-sam作者的imu数据的单位应该是
rad/s
m/s^2
rad
而我了imu数据单位是
deg/s
g
deg
因此还要进行单位换算,如果不换算单位的话,建图会直接起飞

6. extrinsicRPY/extrinsicRot

lio-sam作者提供了一个imu和雷达的标定程序

https://github.com/chennuo0125-HIT/lidar_imu_calib

安装如readme

但是我在运行的时候会出现错误,好像是某个库链接的问题

/home/yang/jjj/devel/lib/lidar_imu_calib/calib_exR_lidar2imu_node: error while loading shared libraries: libndt_omp.so: cannot open shared object file: No such file or directory

直接在终端输入如下的代码,再roslaunch就行了

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

但是lio-sam/config中的这两个矩阵我设置的都是单位矩阵,因为我直接将imu放在了雷达下边,而且经过之前的步骤,坐标系方向也对齐了,只需要修改extrinsicTrans就行了,(不知道我这么做对不对)

我如果用上边的标定程序得到的两个矩阵来标定,建图会起飞,所以我直接用的单位矩阵

7.效果图
lio-sam运行自己的rosbag_第1张图片

你可能感兴趣的:(lio-sam,自动驾驶)