【3D激光SLAM(四)】Velodyne激光SLAM学习之激光雷达+IMU外参标定-lidar_align联合标定激光雷达和IMU外参
一、标定所使用设备激光雷达:velodyne16线激光雷达IMU:来自Pixhawk2.4.8飞控二、安装lidar_align联合标定激光雷达和IMU外参程序2.1 下载源码建议下载修正过后的代码:lidar_align_wwtx新建自己的ROS工作空间,将该源码放入,catkin_make即可。如果编译时出现Could not find NLOPTConfig.cmake解决办法:找到这个文件
本系列往期文章:
【3D激光SLAM(一)】Velodyne激光SLAM学习之Velodyne-16线雷达室内建图基本使用_Canminem的博客-CSDN博客_velodyne16线激光雷达
【3D激光SLAM(二)】Velodyne激光SLAM学习之Velodyne-16线激光雷达在Jetson Nano上的配置使用_Canminem的博客-CSDN博客_velodyne激光雷达驱动
【3D激光SLAM(三)】Velodyne激光SLAM学习之激光雷达+IMU内参标定_Canminem的博客-CSDN博客_imu 激光雷达
一、标定所使用设备
激光雷达:velodyne16线激光雷达
IMU:来自Pixhawk2.4.8飞控
验证算法:请提前按照github要求安装lio-sam或Fast-lio2代码。
https://github.com/hku-mars/FAST_LIO
二、安装lidar_align联合标定激光雷达和IMU外参程序
2.1 下载源码
建议下载修正过后的代码:lidar_align_wwtx
新建自己的ROS工作空间,将该源码放入,catkin_make即可。
如果编译时出现Could not find NLOPTConfig.cmake
解决办法:找到这个文件并将其放入到工程目录下,并在CMakeLists.txt里加上这样一句话:
list(APPEND CMAKE_FIND_ROOT_PATH ${PROJECT_SOURCE_DIR})
set (CMAKE_PREFIX_PATH "/usr/local/lib/cmake/nlopt")
一般到这一步能够编译成功。
三、录制话题
分别启动激光雷达ROS程序和PX4飞控的mavros,检测有没有/velodyne_points和/mavros/imu/data话题
这里注意我们要接收的飞控IMU数据为九轴IMU数据,因此得选择/mavros/imu/data。
首先参考这个视频验证imu和雷达安装的方向是否符合要求,一般IMU坐标系和雷达坐标系方向一致就没多大问题https://www.youtube.com/watch?v=BOUK8LYQhHs
录制话题数据,旋转三个轴,XY轴不要大幅度旋转,录制时间大概2分钟,注意环境中避免出现移动物体,玻璃等反光物体。有条件的话可以放在小车等地面移动平台控制移动。
rosbag record -o r1.bag out /velodyne_points /mavros/imu/data
四、标定
修改标定软件包launch文件中的数据包路径,
然后运行launch文件,等待大概半小时的迭代优化时间。
注意看迭代的实时误差,如果是在3000以内,则让他继续迭代。如果是一万以上的误差,则中止迭代,重新录制数据集或者再次运行迭代程序。
注意我们最终标定出来的外参数据不一定能用,也可以发现迭代同一组数据的结果其实是不一样的。
标定结束后会打印出标定结果:
下图4*4矩阵中前3*3为旋转矩阵
这一个为平移矩阵:
五、将标定结果填入config文件里
打开LIO-SAM/config/params.yaml
修改话题名:
将旋转矩阵和平移矩阵分别填入lio-sam的config (在LIO-SAM/config/params.yaml)文件:
另外的,我用Fast-lio2程序验证,同样的也将标定结果填入该SLAM代码的config文件里,Lio-sam和Fast-lio2运行效果分别如下:
更多推荐
所有评论(0)