Apollo进阶课程⑱丨Apollo感知之旅——传感器标定

目录

传感器标定

标定的目的

传感器标定算法

标定案例解析

3D标定间制作

Cmaera-to-Camera外参标定

Lidar-to-Camera外参标定

Lidar-to-Lidar外参标定

Lidar内参标定

Lidar-to-GPS外参标定

自然场景的Lidar-to-Camera外参标定

自然场景的Bifocal Camera外参标定

Camera-to-Radar外参标定


原文链接:进阶课程⑱丨Apollo感知之旅——传感器标定

传感器标定的分类包括:绝对标定相对标定比较标定静态标定动态标定

  1. 绝对标定—被测量是由高精度的设备产生并测量其大小的,特点:精度较高,但较复杂。
  2. 相对标定或比较标定—被测量是用根据绝对标定法标定好的标准传感器来测量的,特点:简单易行,但标定精度较低。
  3. 静态标定—确定传感器的静态指标,主要有线性度、灵敏度、迟滞和重复性。
  4. 动态标定—确定传感器的动态指标,主要有时间常数、自然振荡频率和阻尼比等。

上周阿波君为大家详细介绍了「进阶课程⑰Apollo感知之旅——传感器选择和安装」

在无人车中使用的传感器主要有激光雷达Lidar,相机和毫米波雷达Radar,它们的工作原理及特性。传感器的安装需要科学、合理的安装,还需要从整车的角度考虑,需要考虑安全,风阻,美观和清洗等因素。

传感器标定是通过实验建立传感器输出与输入之间的关系并确定不同使用条件下的误差这样一个过程。

本周阿波君将与大家分享Apollo感知之旅——传感器标定。下面,我们一起进入进阶课程第18期。


传感器标定

标定的目的

在选好、安装完传感器之后,需要对传感器进行标定。标定的核心概念是得到传感器之间的相对位置,将不同传感器的数据在同一个坐标系中表示。标定分为内参标外参标定。内参是传感器自身性质,有些是厂家提供,有些需要自行标注,例如Camera焦距的定期矫正,Lidar中各激光管的垂直朝向角。外参是传感器之间的相对位置和朝向,一般由6个自由度表示,自由度的旋转矩阵和自由度的水平位移。

传感器标定算法

本节简要介绍常用的标定算法。有些算法是在搭建的标定间完成,有些是在自然环境中完成,在自然环境中标定对算法的依赖度比较强。

  • Lidar内参标定:相对于摄像头,激光雷达的内参标定有一定的特殊性
  • Lidar-to-GPS外参标定:计算出Lidar与车上GPS的相对位置。GPS的位置由世界坐标系中的3D点表示,因此计算出外参之后可以计算得到Lidar在世界坐标系中的位置。
  • Lidar-to-Lidar外参标定:计算不同Lidar之间的相对位置。
  • Lidar-to-Camera外参标定:计算Lidar和相机之间的相对位置。
  • Camera-to-Camera外参标定:计算不同相机之间的相对位置。
  • 自然场景中的Lidar-to-Camera外参标定:在自然环境中,驾驶车辆进行两种不同传感器之间的位置关系求解。
  • 自然场景中的Bifocal Camera外参标定:双焦点摄像头之间外参的计算,也是就是不同焦点的相对位置。
  • Camera-to-Radar外参标定:摄像机到毫米波雷达的外参计算。

标定案例解析

3D标定间制作

在空旷房间的墙面贴满不同的二维码,然后在标定间中间放置一个基于激光雷达的毫米级高精度Rigel激光扫描仪,通过对墙上二维码的多次扫描,完成3D建模,获得了标定间任何一个点的3D位置。根据建模结果输出一个查找表,查找表由两栏组成,第一栏是Tag_ID,表示各个二维码的ID编号,第二栏是二维码四个角的3D位置信息。之后即可在标定间进行不同传感器的参数标定。

                                                                                                        3D标定间制作


Cmaera-to-Camera外参标定

假设在采集车前部安装双Camera,Camera1是60度广角短焦距相机,Camera2为30度广角长焦距相机,两者视角部分重叠。

将车开到标定间,双Camera采集标定间的二维码,获得多个二维码对应四个角点的UV坐标,同时通过查找表得到对应点在3D世界坐标系(Rigel)中的坐标。求解采集点的PNP问题的,得到相机相对于世界坐标系的位移矩阵TsTl,将这两个相对位移矩阵相互传递,得到二者之间的相对位置。整个流程如下图所示。需要注意的是,标定完传感器之后需要进行验证。相机标定的验证方法为,将长焦相机的图像投影到广角相机图像中,看看重合度如何。如果出现重影或者连接不好,则需要重新标定。

                                                                                                        标定间双Camera标定流程


Lidar-to-Camera外参标定

将Camera看到的所有Tag角点与Rigel扫出的对应点的3D坐标进行匹配,求解PNP问题,得到Camera相对于Rigel世界坐标系的相对位置。

将Lidar激光雷达扫描得到的点云与Rigel是稠密的点云之间进行ICP(Iterative Closest Point,迭代最近点)匹配,得到激光雷达相对于Rigel的位置。最后将两个位置矩阵相互传递得到Camera 和 Lidar之间的相对位置,具体流程如下所示。其标定结果验证方法是将激光雷达感知到的3D点云投影到Camera拍摄的图像上,看边界是否一致,如果不一致需要重新标定。

                                                                                                Lidar-to-Camera标定流程


Lidar-to-Lidar外参标定

将每一个Lidar 激光雷达扫描得到的点云与Rigel是稠密的点云之间进行ICP(Iterative Closest Point,迭代最近点)匹配,分别得到激光雷达相对于Rigel的位置。最后将两个位置矩阵相互传递得到Lidar和 Lidar之间的相对位置。

验证方法为:将两个激光雷达采集到的点云都投到真实物理世界中,看点云是否模糊、是否锐利。如果比较模糊,则需要重新标定。


Lidar内参标定

借助Rigel,在开阔平坦的场景下进行完整扫描,得到场景的点云。然后,将要标定的激光雷达对同一个场地进行同样的扫描。之后对两次扫描的点云进行匹配,如果激光雷达的内参不准确,会出现远距离地面点浮在空中的现象。


Lidar-to-GPS外参标定

将车辆在空旷地区绕八字行驶多次,记录多个时间点GPS给出的车辆位置信息(相对于GPS为原点的世界坐标系),将Lidar捕捉的多帧点云投影到世界坐标系中,并进行拼接,求解优化获得外参。


自然场景的Lidar-to-Camera外参标定

由于没有了Rigel-Tag,需要在标定的场景中寻找具有明显边缘的物体作为参照物,将该参照物的点云边缘和Camera拍摄图像的边缘对齐作为参数标定效果的考量指标,如果对齐,这表示标定结果良好。


自然场景的Bifocal Camera外参标定

过程类似于Camera-to-Camera外参标定,但是需要在自然场景中找到边缘锐利的物体作为参照物。


Camera-to-Radar外参标定

Camera-to-Radar外参标定的重点是得到Radar相对于Camera的Pitch角的上下倾斜问题。通常情况下Radar是水平安装的,问题就转换为求得Camera相对于地面的Pitch角。由于Camera-to-Lidar已经标定好,可以通过Lidar采集到的平面信息解决倾角问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一步步编写操作系统 15 CPU与外设通信——IO接口,下

既然都说到IO接口了,不知道各位有没有疑问,cpu是怎样访问到IO接口呢?肯定得有个链路吧?什么?有隐约听到有同学开玩笑说:cpu用无线访问其它设备。哈哈,不知道各位听说过没有,无线的终…

Telnet端口连接Linux服务器失败

在ubuntu写了个服务器端口号是666 ,ip地址是192.168.96.129 在windows用telnet无法连接上 首先检查windows telnet服务是否打开 Windows 10操作系统上使用telnet命令(图文)_时间-CSDN博客_windows使用telnet命令 测试网络是否通:…

重磅 | 完备的 AI 学习路线,最详细的资源整理!

本文转自微信公众号:Datawhale(强烈推荐) 原创: AIUnion Datawhale 今天 【导读】 本文由知名开源平台,AI技术平台以及领域专家:Datawhale,ApacheCN,AI有道和黄海广博士联合整理贡献…

Windows/Linux 下使用telnet发送消息

Windows下使用telnet 1.首先打开cmd命令行连接上服务器端口 连不上可以参考这篇 Telnet端口连接Linux服务器失败_m0_46480482的博客-CSDN博客 telnnt <ip地址> <端口号> 2. 连接成功后&#xff0c;会发现是一片黑的 按住 ctrl ] 可以招出提示 输入 &#x…

Apollo进阶课程⑲丨Apollo感知之旅——感知算法

目录 点云感知 启发式方法&#xff1a;NCut 深度学习方法&#xff1a;CNNSeg 视觉感知 CNN检测 CNN分割 后处理 红绿灯感知 基于深度学习的红绿灯感知模块 Radar感知 超声波感知 原文链接&#xff1a;进阶课程⑲丨Apollo感知之旅——感知算法 感知是自动驾驶的第一环…

动手学PaddlePaddle(0):新版本PaddlePaddle安装

目录 0.引言 1.环境 2.Windows下安装 安装Python 安装PaddlePaddle 0.引言 今天介绍如何安装新版本的PaddlePaddle&#xff0c;现在最新版的PaddlePaddle是指Fluid版&#xff0c;Fluid可以让用户像Pytorch和TensorFlow Eager Execution一样执行程序&#xff0c;也就是说P…

一步步编写操作系统 18 操作显卡,显存,显示器 下

接上回&#xff0c;大家看下显卡各种模式的内存分布。 各外部设备都是通过软件指令的形式与上层接口通信的&#xff0c;显卡&#xff08;显示适配器&#xff09;也不例外&#xff0c;所以它也有自己的bios。位置是0xC0000到0xC7FFF。显卡支持三种模式&#xff0c;文本模式、黑白…

VMware 安装VMware Tools

想要在linux和windows之间复制粘贴&#xff0c;把之前一直没有下的vmwaretools的下载过程记录一下。 1.左上角菜单 ->虚拟机 ->安装 vmware tools (我已经点过了所以是取消安装) 2.桌面多了一个VMware tools &#xff0c;点进去看一下位置&#xff0c;复制一下tar.gz的文…

Apollo进阶课程⑳丨Apollo感知之旅——机器学习与感知的未来

目录 1机器学习 可解释性是否需要 其它算法 2感知的未来 Sensor迭代 深度学习仿真数据AI芯片 智能交通设施 3思考 原文链接&#xff1a;进阶课程⑳丨Apollo感知之旅——机器学习与感知的未来 自动驾驶感知中的机器学习最大问题在于系统对模块的要求与普通的机器学习不同…

一步步编写操作系统 19 改进MBR,直接操作显卡

到目前为止&#xff0c;说了一部分有关显存的内容&#xff0c;这对于一般的输出来说已经足够了&#xff0c;下面咱们可以尝试写显存啦。我们将之前MBR改造一下&#xff0c;保留滚屏的操作&#xff0c;只修改有关输出的部分。即把通过bios的输出改为通过显存&#xff0c;你会发现…

Apollo进阶课程㉑丨Apollo规划技术详解——Basic Motion Planning and Overview

原文链接&#xff1a;进阶课程㉑丨Apollo规划技术详解——Basic Motion Planning and Overview 运动规划&#xff08;Motion Planning&#xff09;就是在给定的位置A与位置B之间为机器人找到一条符合约束条件的路径。这个约束可以是无碰撞、路径最短、机械功最小等。具体的案例…

ROS机器人导航仿真(kinetic版本)

准备工作&#xff1a; ubuntu 16.04系统;ROS kinetic版本;ROS包turtlebot,导航包rbx1,模拟器arbotix&#xff0c;可视化rviz 1、安装ubuntu 16.04系统与安装ROS kinetic版本自行百度安装。一下链接可作为参考。 http://blog.csdn.net/weicao1990/article/details/52575314 2…

1.深度学习练习:Python Basics with Numpy(选修)

本文节选自吴恩达老师《深度学习专项课程》编程作业&#xff0c;在此表示感谢。 课程链接&#xff1a;https://www.deeplearning.ai/deep-learning-specialization 目录 1 - Building basic functions with numpy 1.1 - np.exp(), sigmoid function 1.2 - Sigmoid gradient …

一步步编写操作系统 20 x86虚拟bochs一般用法 上

bochs一般用法 bochs是一个开源x86 虚拟机软件。在它的实现中定义了各种数据结构来模拟硬件&#xff0c;用软件模拟硬件缺点是速度比较慢&#xff0c;毕竟全是软件来模拟&#xff0c;您想&#xff0c;虚拟机还要在软件中模拟各种中断&#xff0c;能不慢吗。不过它的功能非常强…

2.3)深度学习笔记:超参数调试、Batch正则化和程序框架

目录 1&#xff09;Tuning Process 2&#xff09;Using an appropriate scale to pick hyperparameters 3&#xff09;Hyperparameters tuning in practice: Pandas vs. Caviar 4&#xff09;Normalizing activations in a network&#xff08;重点&#xff09; 5&#xf…

2.深度学习练习:Logistic Regression with a Neural Network mindset

本文节选自吴恩达老师《深度学习专项课程》编程作业&#xff0c;在此表示感谢。 课程链接&#xff1a;https://www.deeplearning.ai/deep-learning-specialization/ You will learn to: Build the general architecture of a learning algorithm, including: Initializing para…

JVM内存区域详解

Java中虚拟机在执行Java程序的过程中会将它所管理的内存区域划分为若干不同的数据区域。下面来介绍几个运行时数据区域。 一、程序计数器 1.1 简述 程序计数器&#xff08;Program Counter Register&#xff09;是一块较小的内存空间&#xff0c;它的作用可以看做是当前线程所…

3.深度学习练习:Planar data classification with one hidden layer

本文节选自吴恩达老师《深度学习专项课程》编程作业&#xff0c;在此表示感谢。 课程链接&#xff1a;https://www.deeplearning.ai/deep-learning-specialization/ You will learn to: Implement a 2-class classification neural network with a single hidden layerUse unit…

一步步编写操作系统 11 实模式下程序分段的原因

cpu中本来是没有实模式这一称呼的&#xff0c;是因为有了保护模式后&#xff0c;为了将老的模式区别开来&#xff0c;所以称老的模式为实模式。这情况就像所有同学坐在同一个教室里&#xff0c;本来没有老同学这一概念&#xff0c;但某天老师领着一个陌生人进入教室并和大家宣布…

4.深度学习练习:Building your Deep Neural Network: Step by Step(强烈推荐)

本文节选自吴恩达老师《深度学习专项课程》编程作业&#xff0c;在此表示感谢。 课程链接&#xff1a;https://www.deeplearning.ai/deep-learning-specialization/ fter this assignment you will be able to: Use non-linear units like ReLU to improve your modelBuild a d…