当前位置:   article > 正文

二十一.激光、视觉和惯导LVIO-SLAM框架学习之相机与雷达外参标定(1)_slam定位之外参矩阵定位

slam定位之外参矩阵定位

专栏系列文章如下:

一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN博客

二.激光SLAM框架学习之A-LOAM框架---介绍及其演示_goldqiu的博客-CSDN博客

三.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---1.项目文件介绍(除主要源码部分)_goldqiu的博客-CSDN博客

四.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---2.scanRegistration.cpp--前端雷达处理和特征提取_goldqiu的博客-CSDN博客

五.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---3.laserOdometry.cpp--前端雷达里程计和位姿粗估计_goldqiu的博客-CSDN博客

六.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---4.laserMapping.cpp--后端建图和帧位姿精估计(优化)_goldqiu的博客-CSDN博客

七.激光SLAM框架学习之A-LOAM框架---速腾Robosense-16线雷达室内建图_goldqiu的博客-CSDN博客

八.激光SLAM框架学习之LeGO-LOAM框架---框架介绍和运行演示_goldqiu的博客-CSDN博客

九.激光SLAM框架学习之LeGO-LOAM框架---速腾Robosense-16线雷达室外建图和其他框架对比、录包和保存数据_goldqiu的博客-CSDN博客

十.激光SLAM框架学习之LeGO-LOAM框架---算法原理和改进、项目工程代码_goldqiu的博客-CSDN博客

十一.激光惯导LIO-SLAM框架学习之LIO-SAM框架---框架介绍和运行演示

十二.激光SLAM框架学习之livox-loam框架安装和跑数据集_goldqiu的博客-CSDN博客_livox 数据集

十三.激光SLAM框架学习之livox-Mid-70雷达使用和实时室外跑框架_goldqiu的博客-CSDN博客

十四.激光和惯导LIO-SLAM框架学习之惯导内参标定_goldqiu的博客-CSDN博客

十五.激光和惯导LIO-SLAM框架学习之惯导与雷达外参标定(1)_goldqiu的博客-CSDN博客

十六.激光和惯导LIO-SLAM框架学习之配置自用传感器实时室外跑LIO-SAM框架_goldqiu的博客-CSDN博客

十七.激光和惯导LIO-SLAM框架学习之IMU和IMU预积分_goldqiu的博客-CSDN博客

十八.多个SLAM框架(A-LOAM、Lego-loam、LIO-SAM、livox-loam)室外测试效果粗略对比分析_goldqiu的博客-CSDN博客

十九.激光和惯导LIO-SLAM框架学习之项目工程代码介绍---代码框架和一些文件解释_goldqiu的博客-CSDN博客

二十.激光、视觉和惯导LVIO-SLAM框架学习之相机内参标定_goldqiu的博客-CSDN博客

外参标定分为粗标定和精标定,先进行粗标定。

粗标定

录制相机和雷达的bag包(雷达和相机固定安装后,跟内参标定一样,需要在不同位置不同角度观测棋盘格,每种姿态保持几秒不动,方便在标定软件中截取雷达和相机帧),数据格式如下:

从github下载标定包(这是从autoware分离出来的相机雷达标定包)

https://github.com/XidianLemon/calibration_camera_lidar.git

需要安装nlopt2.5版本,在github上搜索下载。

安装依赖:

sudo apt-get install ros-kinetic-jsk-recognition-msgs 

需要注意的是ubuntu18.04需要对calibration_camera_lidar功能包下的CMakeLists.txt进行修改,添加ROS的melodic版本的支持,修改CMakeLists.txt中所有 (indigo|jade|kinetic) 为 (indigo|jade|kinetic|melodic)

编译问题

CMakeFiles/calibrationtoolkit.dir/CalibrationToolkit/calibrationtoolkit.cpp.o: In function nlopt::opt::get_errmsg() const': /usr/local/include/nlopt.hpp:516: undefined reference tonlopt_get_errmsg’ 

这个错误应该是重复安装冲突了。解决办法:

sudo apt remove libnlopt-dev

运行实现:先运行bag如下(需要将话题改成标定包支持的):

rosbag play your.bag /velodyne_points:=/points_raw /hikrobot_camera/rgb:=/image_raw

工作空间执行:

rosrun calibration_camera_lidar calibration_toolkit

先选择/image_raw话题,再选择如下:

注意要改棋盘格的大小和数量(数量指的是长宽的角点数据,不是格子数量),改了之后重新启动才会生效,具体操作在下面文章:

https://blog.csdn.net/nuo112/article/details/116404760

将雷达视角调至合适,如下:

播放bag,找到合适的标定位置后暂停播包,点击Grab,会截取一帧雷达和相机数据,在雷达数据上鼠标点击雷达线束(选择相机标定板的线束),完成一帧数据的标定,重复以上过程大约20次左右,点击Calibrate,会生成外参矩阵。

其实这个过程就是通过人为的在上位机选取标定板线束在雷达的位置(构建约束),通过建立多个方程(超定方程),求一个最优的雷达到相机变换矩阵(求解优化问题)。

精标定

为什么需要精标定?

因为这样标定出来的变换矩阵误差比较大,只是点云大致投射在了图像的标定板上,需要进一步的标定三个小角度,这会影响数据融合的效果和后续建图定位的精度。

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

闽ICP备14008679号