草庐IT

镭神激光雷达和相机联合标定

爱学习的小道长 2023-07-01 原文

1. 坐标系和欧拉角

镭神激光雷达坐标系和相机坐标系都为右手坐标系
镭神激光雷达坐标系:原点为激光雷达光学中心,右为X,前为Y,上为Z
相机坐标系:原点为相机光心,右为X,下为Y,前为Z
同时规定欧拉角:绕X轴为俯仰角(pitch),绕Y轴为翻滚角(roll),绕Z轴为偏航(航向)角(heading、yaw)。
此时镭神激光雷达坐标系到相机坐标系,只需绕X轴顺时针旋转90°,即俯仰角(pitch)为90°。

2. 标定过程

先标定相机内参,因为相机的内参为定值,再标定激光雷达到相机的外参。

2.1相机内参

相机内参,具体原理参考计算机视觉:相机成像原理:世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换,它采用张正友标定法计算,具体标定方式有三种:

2.1.1使用Autoware进行标定

具体过程参考:Autoware进行相机雷达联合标定

2.1.2 使用ROS进行标定

具体过程参考:ROS下采用camera_calibration进行单目相机标定

2.1.3 使用OpenCV进行标定

先用制作标定棋盘格,具体过程参考:相机标定(Camera calibration)Matlab----棋盘格标定原理,流程,建议制作的标定棋盘格稍微大点
标定代码在CalibrationCamera_optimization文件下
其中./CalibrationCamera_optimization/src 中CalibrationChessboard_.cpp负责标定
Undistort_
.cpp为去畸变后的图像与原图片对比

2.2 激光雷达到相机的外参

激光雷达坐标系到相机坐标系,由旋转和平移而成。先设想激光雷达坐标系绕X轴顺时针旋转90°,再用尺子测量出激光雷达坐标系原点到相机坐标系原点X、Y、Z轴的距离。写入coninfo.ini中的lidar2CameraTranslationX、lidar2CameraTranslationY、lidar2CameraTranslationZ,注意正负。(物体的位置是绝对的,点云位置是相对的,激光雷达坐标系变化,点云位置随之变化)

然后再调节欧拉角,根据经验lidar2CameraPitch的范围为(85°-95°),lidar2CameraRoll的范围为(-5°-5°),lidar2CameraHeading为(-5°~5°)。

确定距离阈值distThre,即截取0~distThre米的点云投影在图片上。先调节lidar2CameraPitch,使点云中物体的高度与相机中物体的高度一致,轮廓对齐;再调节lidar2CameraHeading,使点云中物体的宽度与相机中物体的宽度一致,轮廓对齐;如果点云Z轴左右两边的物体,一边高一边低,调节lidar2CameraRoll,使点云Z轴左右两边的物体的高度一致。

有关镭神激光雷达和相机联合标定的更多相关文章

  1. [工业相机] 分辨率、精度和公差之间的关系 - 2

    📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年

  2. ABB-IRB-1200运动学分析MATLAB RVC工具分析+Simulink-Adams联合仿真 - 2

    一、机器人介绍        此处是基于MATLABRVC工具箱,对ABB-IRB-1200型号的微型机械臂进行正逆向运动学分析,并利Simulink工具实现对机械臂进行具有动力学参数的末端轨迹规划仿真,最后根据机械模型设计Simulink-Adams联合仿真。 图1.ABBIRB 1200尺寸参数示意图ABBIRB 1200提供的两种型号广泛适用于各作业,且两者间零部件通用,两种型号的工作范围分别为700 mm 和 900 mm,大有效负载分别为 7 kg 和5 kg。 IRB 1200 能够在狭小空间内能发挥其工作范围与性能优势,具有全新的设计、小型化的体积、高效的性能、易于集成、便捷的接

  3. 相机校准—外参矩阵 - 2

    在本文中,我们将探讨摄影机的外参,并通过Python中的一个实践示例来加强我们的理解。相机外参摄像头可以位于世界任何地方,并且可以指向任何方向。我们想从摄像机的角度来观察世界上的物体,这种从世界坐标系到摄像机坐标系的转换被称为摄像机外参。那么,我们怎样才能找到相机外参呢?一旦我们弄清楚相机是如何变换的,我们就可以找到从世界坐标系到相机坐标系的基变换的变化。我们将详细探讨这个想法。具体来说,我们需要知道相机是如何定位的,以及它在世界空间中的位置,有两种转换可以帮助我们:有助于确定摄影机方向的旋转变换。有助于移动相机的平移变换。让我们详细看看每一个。旋转通过旋转改变坐标让我们看一下将点旋转一个角度

  4. 【华为OD技术面试 | 真八股 】MySQL联合索引,谈springIOC的理解,谈springAOP的理解,Erika和zookeeper等问题 - 2

    文章目录华为OD面试流程1.mysql数据库建了两个字段,且设置了联合索引,如果其中有一个字段为空会出现什么问题?2.谈谈springIOC的理解,有什么好处,解决了什么问题3.谈谈springAOP的理解,切面编程有没有实际应用,有哪些注解,作用是什么,有那些应用场景?4.Erika和zookeeper有了解过吗,作用是什么,主要解决了什么问题5.谈谈JDK、JRE、JVM的理解,区别是什么6.谈谈对泛型的理解7.JVM的组成华为OD面试流程机试:三道算法题,关于机试,橡皮擦已经准备好了各语言专栏,可以直接订阅。性格测试:机试技术一面(本专栏核心)技术二面(本专栏核心)主管面试定级定薪发of

  5. ruby - 如何从两个哈希数组中获取联合/交叉/差异并忽略一些键 - 2

    我想从两个哈希数组中获取并集/交集/差集,例如:array1=[{:name=>'Guy1',:age=>45},{:name=>'Guy2',:age=>45}]array2=[{:name=>'Guy1',:age=>45},{:name=>'Guy3',:age=>45}]...parray1-array2=>[{:name=>"Guy2",:age=>45}]parray2-array1=>[{:name=>"Guy3",:age=>45}]parray1|array2=>[{:name=>"Guy1",:age=>45},{:name=>"Guy2",:age=>45},{:

  6. 有仰拍相机和俯拍相机时,俯拍相机中心和吸嘴中心的标定 - 2

    俯拍相机中心和吸嘴中心的标定文章目录俯拍相机中心和吸嘴中心的标定前言适用模型如下:一、使用一个标定片进行标定1.关键注意:2.标定步骤:二、使用一个L型的工件1.关键注意:2.标定步骤:总结前言在自动化设备领域,使用相机进行定位是很普遍存在的,而使用相机定位就必定会用到标定,本文介绍两种关于吸嘴上方的俯拍相机和吸嘴中心的标定方法(前提是带有仰拍相机和俯拍相机)。【还有很多相机的使用场景的标定方法将在以后的文章中进行阐述】适用模型如下:一、使用一个标定片进行标定1.关键注意:关键是使用两个相机的中心和识别偏差,得到两个相机的中心固定偏差。注:后续俯拍相机拍物料识别得到的偏差以吸嘴中心在俯拍相机中

  7. 相机内参标定,相机和激光雷达联合标定 - 2

    相机内参标定,相机和激光雷达联合标定一、相机标定原理1.1成像过程1.2标定详解二、相机和激光雷达联合标定2.1标定方法汇总2.2Autoware的安装与运行2.2.1安装方式2.2.2安装Autoware的依赖(Ubuntu16.04/kinetic)2.2.3编译Autoware1.创造工作空间2.下载Autoware源码3.其他依赖4.编译5.效果2.3Autoware标定激光雷达和相机的外参过程一、相机标定原理1.1成像过程现实物体在相机中的成像过程离不开世界坐标系、相机坐标系、图像坐标系以及像素坐标系,只有理解了这些才能对获取的图像进行准确的分析。成像过程:四个坐标系如下图所示:世界

  8. 相机面试问题总结 - 2

    1,Camera基本工作原理答案:光线通过镜头Lens进入摄像头内部,然后经过IRFilter过滤红外光,最后到达sensor(传感器),senor分为按照材质可以分为CMOS和CCD两种,可以将光学信号转换为电信号,再通过内部的ADC电路转换为数字信号,然后传输给DSP(如果有的话,如果没有则以DVP的方式传送数据到基带芯片baseband,此时的数据格式RawData,后面有讲进行加工)加工处理,转换成RGB、YUV等格式输出。数据流是如何从sensor到APP的?上述描述结束后,在ISP处理后面的阶段,数据会进行分流,分为capture,preview,video等以供后续动作使用。例如

  9. ruby-on-rails - 如何组合重叠的时间范围(时间范围联合) - 2

    我有一个包含多个时间范围的数组:[Tue,24May201108:00:00CEST+02:00..Tue,24May201113:00:00CEST+02:00,Tue,24May201116:30:00CEST+02:00..Tue,24May201118:00:00CEST+02:00,Tue,24May201108:00:00CEST+02:00..Tue,24May201109:00:00CEST+02:00,Tue,24May201115:30:00CEST+02:00..Tue,24May201118:00:00CEST+02:00]我想获得具有重叠时间范围组合的相同数组

  10. ruby-on-rails - 数组合并(联合) - 2

    我有两个数组需要合并,使用Union(|)运算符非常慢..还有其他方法可以完成数组合并吗?此外,数组中填充的是对象,而不是字符串。数组中对象的示例#events.waikato.ac其中source是一小段XML。编辑对不起!“合并”是指我不需要插入重复项。A=>[1,2,3,4,5]B=>[3,4,5,6,7]A.magic_merge(B)#=>[1,2,3,4,5,6,7]了解整数实际上是Article对象,并且Union运算符似乎永远 最佳答案 这是一个对两种合并技术进行基准测试的脚本:使用管道运算符(a1|a2)和使用co

随机推荐