SST-Calib:结合语义和VO进行时空同步校准的lidar-visual外参标定方法(ITSC 2022)
原文链接: SST-Calib:结合语义和VO进行时空同步校准的lidar-visual外参标定方法(ITSC 2022)
论文阅读:SST-Calib: Simultaneous Spatial-Temporal Parameter Calibration between LIDAR and Camera(ITSC 2022)
(注:ITSC为智能交通领域盛会)
Motivation
对于大多数Visual和lidar融合算法而言,外参标定会极大地影响性能。具体而言,传感器融合算法需要非常精确的传感器之间的外参标定以及时间同步。所以一个能够联合估计visual-lidar外参矫正的几何和时间参数得算法是非常有价值的。另外,考虑到当车辆经历振动或碰撞时,手动校准的外参就会失效。因此自动外参标定功能的具备也是非常重要的。
最近兴起的基于学习预测传感器外参的方法通常是数据驱动的,需要预先标记的数据作为监督来进行预测,然而真值校准数据是难以获得的,并且这些基于学习的工作都没有提到应用在其他数据集的泛化能力,因此一个基于不同传感器的语义输入进行回归预测外参的方法可以一定程度上缓解这个问题。
最后,目前很多数据集包括传感器融合方法都忽视了时间标定的问题,传感器融合的方法大多基于同步时间假设,但是这个假设很难完全成立,所以动态校准传感器之间的时间延迟是非常有必要的。
Contribution
针对lidar和visual融合,提出了一种联合时空校准算法。
设计了双向损失函数以在几何参数回归中获得更稳健的性能。
将时间外参与visual odometry相结合以估计传感器之间的时间延迟。
Content
- 系统概述
校正流程如下图。校准包括用于空间外参初始标定的静态空间参数校准模块和用于双参数估计的联合时空参数校准模块。
算法的输入包括一个lidar点云扫描帧和两个连续的RGB图像,算法的目标是估计出6dof的外参和与之间的时间延迟。
大致做法是先通过任意的语义分割方法分割点云和图像出各自的语义mask 与。然后通过外参标定初值和相机已知的内参,将lidar点云投影到相机图像平面上,同时通过从点到像素和从像素到点执行最近邻搜索,并且计算它们的欧式距离用作之后优化的代价函数。
首先,优化迭代(静态空间外参标定)将在本车速度约为0的帧上进行,从而可以得到,并且把这用作之后的联合时空校准的初值和正则化参考项。然后,在动态场景中,通过visual odometry估计相邻帧的时间信息以及运动速度信息。在没有外力作用的条件下,与之间的平移可以定义为,然后通过细优化计算出和。
2.语义分割
理论上讲,本篇文章可以用任何语义分割网络,作者采用的语义分割网络分别是SqueezeSegV3(点云)与SDC-net(图像),另外考虑到城市环境的特征,只采用了车辆类作为mask的输出,最终可以得到mask输出与。
3.点云投影
将归属于每个点云mask的点投影到相机图像上:
4.双向损失
定义为投影后在相机fov范围内的激光点集,对于每个激光投影点,是离他最近的属于同一个类别的像素点,所以,单向(激光点-像素点)语义对齐损失在帧k上可以定义为:
该损失的计算过程如下图。
但是当外参的初值与ground truth明显不同时,最近邻匹配不一定能带来合适的匹配结果,所以一些重要像素的信息可能会被丢弃。因此,单向损失函数存在陷入局部最小值的问题。为了避免这个问题,双向损失函数被作为改进提出,具体过程如下图:
双向损失函数实际上就是基于单向损失函数添加了像素点-激光点的损失,像素点-激光点损失定义如下:
从而最终的双向损失函数在第l次迭代中可以表示为:
其中,为正则化项,为迭代次数l所对应的权重,当越小的时候,代表越偏向于将激光点投影到图像平面,反之就意味着偏向于将visual mask投影到点云簇,从而可以通过的调整使得损失避免陷入局部最小值,最终经过双向优化,可以生成一个更好的静态外参标定值:
5.联合时空校准
在联合时空校准之前,通过visual odometry提取连续两帧之间的运动速度,本篇论文所用的VO是基于稀疏光流进行FAST点跟踪然后用5点法RANSAC进行本征矩阵估计。
在车辆运动的情况下,基于静态外参的点云投影很难与相机图像对准,因此为了补偿时间延迟,将投影矩阵修改如下:
其中,与分别是激光投影点通过与补偿在相机坐标系的坐标,然后修改双向损失函数,使得其可以同时估计空间与时间标定参数,修改后的双向损失函数如下:
其中,是正则化项,目的是使外参估计更接近初值,与是分别用于平移和旋转的正则化系数
6.实验
采用的KITTI 00序列,对于静态矫正,应用在前20次的迭代,应用在接下来的30次迭代,应用在最后·10次迭代,也就是说优化共有60次迭代次数。对于联合时空优化,迭代次数设置为20次,应用,正则化项和
采用四元数角度差(QAD)和欧拉角度差(AEAD)来评测旋转误差
采用平均平移误差(ATD)来评测平移误差
1)验证联合时空标定
采用异步数据,算法估计的时延为103.4 ms,与真值相仅相差3.4 ms。外参标定精度记录入下表,和baseline比也表现出了显著的优势。
2)鲁棒性验证(加入噪声后的校准)
给外参平移加入分布在的噪声,给外参旋转加入和的噪声,加入后的性能和baseline比,在不需要预处理的情况下达到了更好的精度。
类似的,给时延也加入噪声,进一步证明了系统的鲁棒性
3)消融实验
验证了文中所提出的双向损失函数的有效性
Conclusion
这篇文章提出了一种在线联合时空校准的lidar-visual算法。设计了一个双向语义损失h函数,结合了来自VO的时延估计,同时估计外参和时延。在KITTI数据集上证明了它的有效性和鲁棒性,是个不错的外参标定工作。
本文仅做学术分享,如有侵权,请联系删文。
独家重磅课程官网:cvlife.net
全国最大的机器人SLAM开发者社区
技术交流群
— 版权声明 —
本公众号原创内容版权属计算机视觉life所有;从公开渠道收集、整理及授权转载的非原创文字、图片和音视频资料,版权属原作者。如果侵权,请联系我们,会及时删除。
SST-Calib:结合语义和VO进行时空同步校准的lidar-visual外参标定方法(ITSC 2022)相关推荐
- 在线标定新思路!SST-Calib:最新Camera-Lidar时空同步标定算法(ITSC 2022)
点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心技术交流群 后台回复[ECCV2022]获取ECCV2022所有自动驾驶方向论文! 原文 ...
- 超全汇总!多传感器离线/在线时空联合标定方法
多源异构传感器融合在当今的自动驾驶应用场景中很常见,准确的多传感器时间和空间统一是实现多传感器融合感知和定位的先决条件.许多传感器融合方法假设不同传感器的时间戳精确对齐,这实际上只能通过严格的硬件同步 ...
- 时空同步图卷积网络:时空网络数据预测的新框架
1.文章信息 <Spatial-Temporal Synchronous Graph Convolutional Networks: A New Framework for Spatial-Te ...
- STSGCN时空同步图卷积网络:时空网络数据预测的新框架
Traffic Flow Prediction via Spatial Temporal Graph Neural NetworkForecasting(STSGCN)时空同步图卷积网络:时空网络数据 ...
- java vo转map_javabean实体类对象转为Map类型对象的方法(转发)
//将javabean实体类转为map类型,然后返回一个map类型的值 public static Map beanToMap(Object obj) { Map params = new HashM ...
- VO高级使用技巧之一:可重写的重要的方法
开发运行环境:JDevloper 11.1.2.4.0+ Oracle Database 11gR2 XE 本文最后一次修改日期:2013-07-01 ViewObjectImpl.java中有如下可 ...
- 基于运动相关分析的实时多源异构传感器时空标定方法研究
Real-Time Temporal and Rotational Calibration of Heterogeneous Sensors Using Motion Correlation Anal ...
- 阿里巴巴开源:一次采集轻松解决多摄像机和3D激光雷达标定
点云PCL免费知识星球,点云论文速读. 文章:Single-Shot is Enough: Panoramic Infrastructure Based Calibration of Multiple ...
- mlcc激光雷达与相机外参标定初体验
论文阅读模块将分享点云处理,SLAM,三维视觉,高精地图相关的文章.公众号致力于理解三维视觉领域相关内容的干货分享,欢迎各位加入我,我们一起每天一篇文章阅读,开启分享之旅,有兴趣的可联系微信diany ...
最新文章
- 盘点丨2017年人工智能带火了哪些词
- IC/FPGA大疆笔试题分析(预分析)
- hdu 4614 Vases and Flowers
- java native方法_并发系列-native函数回调Java方法原理实践
- java 局部性原理_程序局部性原理
- 全国省市编码_地区编码
- 初了解JS设计模式,学习笔记
- Android Jni开发-实战篇(CMake)
- Quartus II 之1位全加器
- 宏基aspire拆机触摸_(图) 宏基 Acer 4741G 完全拆解
- vc语言c1083错误,VC Fatal Error C1083的几种解决方案
- JavaSE----基础语法(数组)
- python打字_使用Python编写打字训练小程序
- 电脑开不了机怎么办?如何解决?
- 电脑连接电视html,电脑HDMI连接电视无信号的解决方法
- 如何用Matlab在极坐标系下绘图并调整极坐标初始角位置
- sklearn的predict_proba
- 人工智能换脸pythonapp_如何用小200行Python代码做一个换脸程序?
- 20 美元的宜家台灯算力有多强?运行《毁灭战士》操作丝滑,最初竟是受假新闻启发...
- httphandler java_HttpModule与HttpHandler详解
热门文章
- 京东平台的产品标题的优化有什么技巧?
- C# 任意开次方,次幂, 开平方,开三次方,平方根, 三次方根
- AIGC神器 Midjourney 强势更新!逼真到令人发指!文心一言紧跟其后
- 策略模式、工厂模式、装饰者模式总结解析
- 2015年1月工作记录和阅读记录
- 简单总结协程Coroutine及Yield常见用法
- Svelte-Ui-Admin基于svelte-ui中后台管理系统|Svelte3+Vite3后台框架
- JAVA之理解面向对象的内涵
- 健身预约小程序的设计与实现
- 使用three.js做一个网页的相册动画