论文阅读1---OpenCalib论文阅读之factory calibration模块

前言

该论文的标定间比较高端,一旦四轮定位后,可确定标定板与车辆姿态。以下为本人理解,仅供参考。

工厂标定,可理解为车辆相关的标定,不涉及传感器间标定

该标定工具不依赖opencv;产线长度一般2.5米
Factory Calibration Tools:四轮定位+多位姿标定板

1、Calibration Board Setup Tools

1)根据传感器安装位姿,生成标定板放置范围
2)检测当前环境标定板姿态是否合适

2、Calibration board detection:

1)标定线可使用5种类型标定板[chessboard, circle board, vertical board, aruco marker board, and round hole board]

2)chessboard
板子边沿设置为白色;选定初始化阈值进行自适应二值化图片检查,拓展到黑格子的四个角点;候选点,通过添加约束条件聚类获取角点;最后输出角点检测结果。

3)circle board
高精度,由于圆边沿的像素都会使用以减低图像噪点,保证了高精度
从二值化图片中提取圆:最大、最小边沿与轮廓中心距离满足一定阈值,则该轮廓判断为像素圆;
水平圆心连线通过Ransac算法与斜率实现[筛选条件:平行、半径接近、重投影重合、线段距离和半径距离限制]

4)vertical board
鲁棒性。灰度图获取角点,找三条通过角点的垂直线。对于每一条直线组合,将左右直线上的角点投影到中间的直线上,通过投影线上角点与图案特征之间的距离进行筛选和分割,得到正确的角点

5)aruco marker board
灰度图像二值化,邻域搜索候轮廓,轮廓受边数量约束;条件筛选获取四边形;过滤过于接近的四边形。然后,通过径向变换从四边形中提取外矩形,用 127 的阈值对图像进行去二值化处理,切割图像以获得二维码区域,并用 6*6 的网格划分二维码。根据二维码库获取码id,进而获取角点在标定板上位置

6) round hole board
轮廓匹配获取圆心,根据已知板子尺寸与孔尺寸信息,二维遍历进而匹配。标定板激光点云圆轮廓获取,提取图片标定板园轮廓,匹配算得外参。

3、相机标定

工厂标定:
需要:智驾产品正常运作前提是标定

一般标定条目:
相机标定包括校准灭点位置、相机到地面的单应矩阵计算,相机与车辆标定

工厂标定前,需要进行四轮定位

1)灭点标定:两条视觉平行线交点就是灭点。所寻找的消失点是与车身坐标平行的平行线的交点,那么灭点的计算方法就是相机通过标定板的一条线,并且这条线与车身保持平行。

2)camera与车辆标定:在出厂标定之前,需要对要标定的汽车进行四轮定位。四轮定位后,标定板板相对于车身中心的坐标被固定,然后使用相机识别标定板并进行标定。可以得到相机相对于车体坐标的姿态,这通常由 PnP 算法求解[个人未进行公式推导]
3)camera与地面标定:
在这里插入图片描述
A-VP与B-VP平行,纵坐标距离可根据距离公式获取,横坐标相同。根据ABCD四点的像素坐标与世界坐标系的关系,可算得相机到地面的单应矩阵[个人未进行公式推导]
距离公式计算参考:
在这里插入图片描述
在这里插入图片描述
补充:上图基于针孔模型理解

4、lidar到车辆标定

已知标定板在车辆坐标系下的姿态[个人理解,采用百度类似标定房,四轮定位后,每块标定板姿态都是可知的],lidar也能测量出标定板在lidar坐标系下的姿态,那么根据公式:

在这里插入图片描述
残差函数:
在这里插入图片描述
那么,可以算得lidar到车辆的标定外参

资料来源:
OpenCalib: A Multi-sensor Calibration Toolbox for Autonomous Driving
Vision-based ACC with a Single Camera: Bounds on Range and Range Rate Accuracy

#################
好记性不如烂笔头
积硅步期千里

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpiderFlow爬虫平台 前台RCE漏洞复现(CVE-2024-0195)

0x01 产品简介 SpiderFlow是新一代爬虫平台,以图形化方式定义爬虫流程,以流程图的方式定义爬虫,不写代码即可完成爬虫,是一个高度灵活可配置的爬虫平台。 0x02 漏洞概述 SpiderFlow爬虫平台src/main/java/org/spiderflow/controller/FunctionController.java文件的Functi…

CMake入门教程【核心篇】设置和使用缓存变量

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 概述设置缓存变量使用缓存变量更改缓存变量完整代码示例实战使用技巧注意事项总结与分析

python第三方模块之yaml模块

安装: pip install PyYamlPyYaml 5.1之后,通过禁止默认加载程序(FullLoader)执行任意功能,该load函数也变得更加安全。 使用: config.yaml - 10 - 20 - 30 - 40 - 50 --- name: cc age:<

关于git使用的tips

前言 这里是一些git指令使用的tips&#xff0c;如果你作为初学者的话&#xff0c;我认为它将对你有所帮助。 常见指令 常见问题处理 1、使用git clone下载【huggingface.co】资源超时或无法请求问题 绝大多数情况是网络问题&#xff0c;首先如果是比较大的资源&#xff0c;你需…

计算机网络-各层协议

大家在搞嵌入式开发的时候基本都了解过七层网络协议、五层网络协议、四层网络协议&#xff0c;那么今天让我们更加的深入了解一下&#xff1a; 历史发展介绍 OSI七层模型由ISO国际标准化组织提出的通信标准。TCP/IP四层模型是OSI七层模型的简化版&#xff0c;OSI在它被官方完…

vue-vben-admin 与.net core 结合实例 【自学与教学 小白教程】---第3节

ue-vben-admin 与.net core 结合实例 这里计划使用.net core 作为后端 。目标&#xff1a;打造好看 易用 开箱即用 的netcore一体化框架。Vue Vben Admin For NetCore 取命 hcrain-vvadmin 我不是前端人员 但有时开发还是要写一些界面。 之前使用layui是时候 狠心升级下了。 …

苹果电脑Markdown文本编辑Typora mac功能介绍

Typora mac是一款跨平台的Markdown编辑器&#xff0c;支持Windows、MacOS和Linux操作系统。它具有实时预览功能&#xff0c;能够自动将Markdown文本转换为漂亮的排版效果&#xff0c;让用户专注于写作内容而不必关心格式调整。Typora Mac版除了支持常见的Markdown语法外&#x…

C#.Net学习笔记——CLR核心机制

一、CLR基本介绍 &#xff08;1&#xff09;C(Common) L&#xff08;Language&#xff09; R&#xff08;Runtime&#xff09; IL的运行环境 &#xff08;2&#xff09;从下图可以看到&#xff0c;我们的计算机会先把我们写的语言&#xff0c;编写成IL语言&#xff0c;再给计…

Linux入门攻坚——12、Linux网络属性配置相关知识2

CentOS 7网络属性配置&#xff1a; 传统命名机制&#xff1a;以太网eth[0,1,2,...]&#xff0c;wlan[0,1,2...] 可预测功能的命名机制&#xff1a; udev支持多种不同的命名方案&#xff1a; Firmware &#xff0c;拓扑结构 在对待设备文件这块&#xff0c;Linux改…

c++在结构(Struct)中使用栈(Stack)

栈实现 1.入栈 2.出栈 3.空栈 4.满栈 5.栈顶 完整栈实现源码: // // myStack.hpp // algo_demo // // Created by Hacker X on 2024/1/9. //#ifndef myStack_hpp #define myStack_

一个Pygame的Hello World示例程序

创建一个标题为Hello World的窗口&#xff0c;窗口中间显示有Pygame的Logo的python代码 import sys import pygamedef main():pygame.init()screen pygame.display.set_mode((800, 400))pygame.display.set_caption("Hello World")logo pygame.image.load("p…

STL标准库与泛型编程(侯捷)笔记6(完结)

STL标准库与泛型编程&#xff08;侯捷&#xff09; 本文是学习笔记&#xff0c;仅供个人学习使用。如有侵权&#xff0c;请联系删除。 参考链接 Youbute: 侯捷-STL标准库与泛型编程 B站: 侯捷 - STL Github:STL源码剖析中源码 https://github.com/SilverMaple/STLSourceCo…

离线安装jenkins:使用rpm安装包

目录 一、安装jdk1.8二、安装yum软件包三、下载rmp安装包四、安装jenkins的rpm安装包五、创建jenkins文件目录六、设置环境变量七、配置jdk位置八、配置Jenkins配置文件九、启动Jenkins十、访问Jenkins十一、安装Jenkins插件 一、安装jdk1.8 根据博客Linux操作系统安装jdk1.8并…

Linux:linux计算机和windows计算机 之间 共享资源

在前面章节已经介绍过&#xff0c;NFS用于Linux系统之间的文件共享&#xff0c;windows 并不知道 NFS &#xff0c;而是使用 CIFS (Common Internet File System) 的协议机制 来 “共享” 文件。在1991年&#xff0c;Andrew Tridgell 通过逆向工程 实现了 CIFS 协议&#xff0c…

Swift单元测试Quick+Nimble

文章目录 使用QuickNimble1、苹果官方测试框架XCTest的优缺点2、选择QuickNimble的原因&#xff1a;3、QuickNimble使用介绍集成&#xff1a;Quick关键字说明&#xff1a;Nimble中的匹配函数等值判断&#xff1a;使用equal函数是否是同一个对象&#xff1a;使用beIdenticalTo函…

鼠标随动指定区域高亮显示(Excel聚光灯)

实例需求&#xff1a;工作表中数据表实现跟随鼠标选中高亮效果&#xff0c;需要注意如下几个细节需求 数据表为连续区域&#xff0c;但是不一定从A1单元格开始数据表的前两行&#xff08;标题行&#xff09;不使用高亮效果数据表中已经应用了条件格式&#xff0c;高亮显示取消…

stm32的FMC数据访问与突发模式

数据访问 配置外部存储器的宽度为 16 位&#xff0c; FMC 将使用内部的 ADDR[25:1]地址来作为对外部存储器的寻址地址 FMC_A[24:0]&#xff0c;这段描述是在解释在STM32的FMC&#xff08;Flexible Memory Controller&#xff09;中&#xff0c;如何配置外部存储器的宽度为16位…

YOLOv5改进 | 2023主干篇 | EfficientViT替换Backbone(高效的视觉变换网络)

一、本文介绍 本文给大家带来的改进机制是EfficientViT(高效的视觉变换网络),EfficientViT的核心是一种轻量级的多尺度线性注意力模块,能够在只使用硬件高效操作的情况下实现全局感受野和多尺度学习。本文带来是2023年的最新版本的EfficientViT网络结构,论文题目是Effici…

麒麟操作系统缓存rpm包,制作离线yum源

缓存rpm包&#xff0c;以make为例 mkdir -p /data/yum yumdownloader --resolve --destdir/data/yum make制作离线yum包 yum install createrepo -y cd /data/yum createrepo .写yum配置文件/etc/yum.repos.d/local.repo [local-repo] namelocal-repo baseurlfile:///data/…

spring boot 自动扫描Controller、Service、Component原理

项目里面为什么不加上ComponentScan("com.yym.*")注解&#xff0c;也能加载到子目录里面的Controller&#xff0c;Service&#xff0c;Component的bean呢&#xff1f; 启动类没有ComponentScan注解 SpringBootApplication public class BootStrap {public static v…