激光雷达和相机的联合标定(Camera-LiDAR Calibration)之apollo

news/2024/11/28 0:51:11/

前言

上篇博客激光雷达和相机的联合标定(Camera-LiDAR Calibration)之Autoware介绍了为什么要做联合标定以及如何使用Autoware的标定工具。
这篇博客介绍apollo标定工具的使用方法。
首先需要安装apollo,然后才能使用其标定工具。
这个工具要求相对较高,需要广角相机,里程计和惯导,而且需要最准确的初始外参值,或许这样得出的标定结果更精确吧。

准备

下载标定工具,并将文件解压缩到$APOLLO_HOME/modules/calibration。APOLLO_HOME 是apollo仓库的根目录。

经过良好标定的相机内参

相机内参包含焦距,主点,失真系数和其他信息。
用户可以从其他相机标定工具获取内参,例如ROS Camera Calibration Tools和Camera Calibration Toolbox for Matlab。
标定完成后,用户应手动将结果转换为特定的yaml格式文件。
用户必须确保K和D数据正确:

  • K指的是相机矩阵
  • D指的是失真参数

以下是相机内参文件的示例:

header: seq: 0stamp: secs: 0nsecs: 0frame_id: short_cameraheight: 1080width: 1920distortion_model: plumb_bobD: [-0.535253, 0.259291, 0.004276, -0.000503, 0.0]K: [1959.678185, 0.0, 1003.592207, 0.0, 1953.786100, 507.820634, 0.0, 0.0, 1.0]R: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]P: [1665.387817, 0.0, 1018.703332, 0.0, 0.0, 1867.912842, 506.628623, 0.0, 0.0, 0.0, 1.0, 0.0]binning_x: 0binning_y: 0roi: x_offset: 0y_offset: 0height: 0width: 0do_rectify: False

初始化外参文件

这些工具要求用户提供初始外参值作为参考。
以下是Camera-to-LiDAR的初始外参文件的示例,其中,translation是相机和LiDAR之间的位移距离;rotation是旋转矩阵的四元数表达形式。

header:seq: 0stamp:secs: 0nsecs: 0frame_id: velodyne64child_frame_id: short_cameratransform:rotation:y: 0.5x: -0.5w: 0.5z: -0.5translation:x: 0.0y: 1.5z: 2.0

注意:Camera-to-LiDAR标定更依赖于初始外参值。大的偏差会导致标定失败。因此,在条件允许的情况下,必须提供最准确的初始外参值。

标定场景

由于Camera-to-LiDAR标定方法用于自然环境,因此良好的地点可以显着提高标定的准确性。
建议选择包含树木,电线杆,路灯,交通标志,静止物体和清晰交通线等物体的标定场地。
图1是标定地点的一个很好的选择示例:

图1 Good Choice for a Calibration Site

必要的topics

用户必须确认程序所需的所有传感器 topics 都有输出 messages。有关更多信息,请参阅:如何检查传感器输出?
下表列出了板载程序所需的传感器topics。

SensorTopic NameTopic Feq. (Hz)
Short_Camera/apollo/sensor/camera/traffic/image_short9
LiDAR/apollo/sensor/velodyne64/compensator/PointCloud210
INS/apollo/sensor/gnss/odometry100
INS/apollo/sensor/gnss/ins_stat2

使用标定工具

在开始使用这些工具之前,必须验证定位状态是56,或者标定工具(程序)不会收集数据。
键入以下命令以检查定位状态:

rostopic echo /apollo/sensor/gnss/ins_stat

Camera-to-LiDAR Calibration

1.使用以下命令运行Camera-to-LiDAR标定工具:

cd /apollo/scripts
bash sensor_calibration.sh lidar_camera

2.遵循以下准则来收集数据:

  • 由于两个摄像机具有不同的时间戳,因此它们无法完全同步,因此在记录数据时非常缓慢地驾驶车辆非常重要。车辆的低速可以有效地缓解由不同时间戳引起的图像不匹配。
  • 确保摄像机图像中有一定数量(超过500个)投影点,否则工具无法执行外参标定操作。因此,此工具仅适用于广角相机。

记下保存的配置文件的位置:

/apollo/modules/calibration/lidar_camera_calibrator/camera_camera_calibrtor.conf

Camera-to-LiDAR标定配置说明:

ConfigurationDescription
camera_topicwide-angle camera image topic
lidar_topicLiDAR point cloud topic
odometry_topicvehicle odometry topic
ins_stat_topicvehicle localization status topic
camera_intrinsics_filenameintrinsic file of camera
init_extrinsics_filenameinitial extrinsic file
output_pathcalibration results output path
calib_stop_countrequired stops of capturing data
max_speed_kmhlimitation of max vehicle speed, unit: km/h

Camera-to-LiDAR标定工具的输出类型为:

  • 标定的外参文件,以.yaml文件的形式提供
  • 将LiDAR点云投影到相机图像上的两个验证图像:
    • 一张图像用深度着色
    • 一张图像用强度着色

获得标定结果

所有标定结果都保存在配置文件的output路径下,并以 yaml 格式提供。

验证方法和结果

标定完成后,将在[output]/validation目录中生成相应的验证标定结果的图像。

  • 背景信息:在点云投影图像中,用户可以看到具有明显边缘的物体和标志,并比较对齐。
  • 验证方法:如果目标在50米范围内,其点云边缘可以与图像边缘重合,并且标定结果的准确性可以证明非常高。但是,如果存在错位,则标定结果会出错。当误差大于某个范围时(例如,5个像素,具体取决于实际使用情况),外参不可用。
  • 示例:如以下示例所示,图1满足外部参数的精度要求,而图2则不满足。

图2 Good Camera-to-LiDAR Calibration Validation Result

图3 Bad Camera-to-LiDAR Calibration Validation Result


http://www.ppmy.cn/news/470633.html

相关文章

福禄克FLUKE TIX501,TIX580,TI480PRO,TI401PRO代表福禄克正式进入640像素时代

福禄克FLUKE TIX501,TIX580,TI480PRO,TI401PRO代表福禄克正式进入640像素时代,福禄克重新定义专业级红外热像仪的分辨率。该系列中的全部热像仪都拥有先进的640 x 480分辨率和两种不同形式的选项。现在,客户能够在不牺牲分辨率、人体工程学和功能的前提下…

Spring Boot是什么?详解它的优缺点以及四大核心

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、Spring Boot 是什么? 二、Spring Boot 的优缺点 1、优点 ①可快速构建独立的 Spring 应用 ②直接嵌入Tomcat、Jett…

Robosense M1/速腾半固态激光雷达M1 保姆级教程1-如何连接雷达?

引言 当我们拿到M1雷达时,可能会因为激光雷达是一个新的设备,没有用过,而感到紧张和局促。没有关系,通过阅读文本,可以让你轻而易举的上手使用激光雷达。 1认识M1接口 图中较粗的接口为雷达的电源接口。即通过这个接口…

大疆激光雷达Livox Avia开箱及测试

大疆激光雷达Livox Avia 箱子 从左至右为:大疆激光雷达Livox Avia ,电源转接插座,内六角形L型扳手,镜头清洁布,螺钉包,说明书,1.5米航插电源网口线,同步信号线(三个引脚…

Jeson nano + 思岚激光雷达rplidar_s1 + ubuntu18.04

首先在思岚官网下载rplidar_s1的ROS功能包(官网的下载和支持里),新建工作空间catkin_ws/src 接下来安装配置思岚RPLIDAR S1,首先在github上下载它的ROS包。 在工作空间的src下面下载官网ROS包。 git clone https://github.com/Slamtec/rplidar_ros.git检查rplidar…

架构师必须掌握的架构设计原则

如果一个架构或设计原则已经存在 15 年,例如单一职责和依赖倒置原则,我可以预期它还有 15 年甚至更久的生命期。原则是比具体技术更抽象,更接近事物本质,也更经得起时间考验的东西。这些原则沉淀在架构师的脑海中,最终…

C++拷贝构造函数

文章目录 拷贝构造函数是一个c的默认成员函数,它是用来拷贝对象的,当你想修改对象,但是又不想修改它本身,那么可以将其拷贝给一个对象对这个拷贝出来的对象进行操作 拷贝构造函数语法:类名(const 类名&…

Jetpack Compose Material3 组件之 DatePicker(日期选择)

前言 在之前我使用 Comose 写 APP 的时候,官方还没有给出关于 DatePicker 的解决方案。 当时为了在 Compose 中实现 DatePicker ,大致有两种方案: 一是使用原生 VIew 的 DatePicker,但是因为觉得我即然都用 Compose 了&#xf…