当前位置: 首页 > news >正文

多激光雷达手眼标定

手眼标定方法已经有很多博客进行解析,但是都是针对机器人的手(夹爪)眼睛(相机)进行标定。例如:
标定学习笔记(四)-- 手眼标定详解
手眼标定_全面细致的推导过程

本文主要描述多激光雷达应用中如何使用手眼标定的方法进行标定。
假如存在以下问题,在一个小车上存在两个激光雷达,激光雷达A与激光雷达B,须求解激光雷达B到激光雷达A的转换参数 B A T ^A_BT BAT(外参)。
在这里插入图片描述

利用手眼标定方法原理如下:

变量定义

如上图中所示,存在一个世界坐标系G,点 P P P在世界坐标系中的坐标为 P G P_G PG
t 1 t_1 t1时刻,激光雷达A与激光雷达B分别观测到点 P P P的坐标为: P A 1 P_{A1} PA1 P B 1 P_{B1} PB1
t 2 t_2 t2时刻,激光雷达A与激光雷达B分别观测到点 P P P的坐标为: P A 2 P_{A2} PA2 P B 2 P_{B2} PB2

t 1 t_1 t1时刻,激光雷达A与激光雷达B分别到全局坐标系 G G G的转换关系为: A 1 G T ^{G}_{A1}T A1GT B 1 G T ^{G}_{B1}T B1GT
t 2 t_2 t2时刻,激光雷达A与激光雷达B分别到全局坐标系 G G G的转换关系为: A 2 G T ^{G}_{A2}T A2GT B 2 G T ^{G}_{B2}T B2GT

t 1 t_1 t1时刻,激光雷达A与激光雷达B之间的转换关系为 B 1 A 1 T ^{A1}_{B1}T B1A1T
t 2 t_2 t2时刻,激光雷达A与激光雷达B之间的转换关系为 B 2 A 2 T ^{A2}_{B2}T B2A2T

推导过程

t 1 t_1 t1时刻,点 P P P在世界坐标系中的坐标 P G P_G PG可以通过下式计算:

P G = ( A 1 G T ) ( B 1 A 1 T ) P B 1 P_G=(^{G}_{A1}T)(^{A1}_{B1}T)P_{B1} PG=(A1GT)(B1A1T)PB1
t 2 t_2 t2时刻,
P G = ( A 2 G T ) ( B 2 A 2 T ) P B 2 P_G=(^{G}_{A2}T)(^{A2}_{B2}T)P_{B2} PG=(A2GT)(B2A2T)PB2

由上述两式可得:
P G = ( A 1 G T ) ( B 1 A 1 T ) P B 1 = ( A 2 G T ) ( B 2 A 2 T ) P B 2 = P G P_G=(^{G}_{A1}T)(^{A1}_{B1}T)P_{B1}=(^{G}_{A2}T)(^{A2}_{B2}T)P_{B2}=P_G PG=(A1GT)(B1A1T)PB1=(A2GT)(B2A2T)PB2=PG

由于认为激光雷达A与激光雷达B之间是刚性连接,所以二者之间的变换不随时间进行变化,即:
B 1 A 1 T = B 2 A 2 T = B A T ^{A1}_{B1}T=^{A2}_{B2}T=^{A}_{B}T B1A1T=B2A2T=BAT
则上式变换为:
( A 1 G T ) ( B A T ) P B 1 = ( A 2 G T ) ( B A T ) P B 2 (^{G}_{A1}T)(^{A}_{B}T)P_{B1}=(^{G}_{A2}T)(^{A}_{B}T)P_{B2} (A1GT)(BAT)PB1=(A2GT)(BAT)PB2

两边同左乘 ( A 2 G T ) − 1 (^{G}_{A2}T)^{-1} (A2GT)1,并同时右乘 ( P B 1 ) − 1 (P_{B1})^{-1} (PB1)1,转换为下式:
( A 2 G T ) − 1 ( A 1 G T ) ( B A T ) = ( B A T ) P B 2 ( P B 1 ) − 1 (^{G}_{A2}T)^{-1}(^{G}_{A1}T)(^{A}_{B}T)=(^{A}_{B}T)P_{B2}(P_{B1})^{-1} (A2GT)1(A1GT)(BAT)=(BAT)PB2(PB1)1

假设 ( B A T ) (^{A}_{B}T) (BAT)为要求解的变量 X X X,系数为 A = ( A 2 G T ) − 1 ( A 1 G T ) A=(^{G}_{A2}T)^{-1}(^{G}_{A1}T) A=(A2GT)1(A1GT) B = P B 2 ( P B 1 ) − 1 B=P_{B2}(P_{B1})^{-1} B=PB2(PB1)1
则上式转换为:
A X = X B AX=XB AX=XB
这就是我们经常所说的手眼标定推导出的形式了。但是,这和我们的激光雷达轨迹有什么关系呢?

接着,对系数 A A A B B B分别进行转换,过程如下:

对式 A A A,代入 A 1 G T = ( A 2 G T ) ( A 1 A 2 T ) ^{G}_{A1}T=(^{G}_{A2}T)(^{A2}_{A1}T) A1GT=(A2GT)(A1A2T)得:
A = ( A 2 G T ) − 1 ( A 1 G T ) = ( A 2 G T ) − 1 ( A 2 G T ) ( A 1 A 2 T ) = A 1 A 2 T A=(^{G}_{A2}T)^{-1}(^{G}_{A1}T)=(^{G}_{A2}T)^{-1}(^{G}_{A2}T)(^{A2}_{A1}T)=^{A2}_{A1}T A=(A2GT)1(A1GT)=(A2GT)1(A2GT)(A1A2T)=A1A2T

对式 B B B,分别代入 P B 1 = ( G B 1 T ) P G P_{B1}=(^{B1}_{G}T)P_{G} PB1=(GB1T)PG P B 2 = ( G B 2 T ) P G P_{B2}=(^{B2}_{G}T)P_{G} PB2=(GB2T)PG得:
B = P B 2 ( P B 1 ) − 1 = ( G B 2 T ) P G ( G B 1 T P G ) − 1 B=P_{B2}(P_{B1})^{-1}=(^{B2}_{G}T)P_{G}(^{B1}_{G}TP_{G})^{-1} B=PB2(PB1)1=(GB2T)PG(GB1TPG)1
= ( G B 2 T ) P G P G − 1 ( G B 1 T ) − 1 = ( G B 2 T ) ( G B 1 T ) − 1 =(^{B2}_{G}T)P_{G}P_{G}^{-1}(^{B1}_{G}T)^{-1}=(^{B2}_{G}T)(^{B1}_{G}T)^{-1} =(GB2T)PGPG1(GB1T)1=(GB2T)(GB1T)1
代入 G B 2 T = ( B 1 B 2 T ) ( G B 1 T ) ^{B2}_{G}T=(^{B2}_{B1}T)(^{B1}_{G}T) GB2T=(B1B2T)(GB1T)得:
B = ( G B 2 T ) ( G B 1 T ) − 1 = ( B 1 B 2 T ) ( G B 1 T ) ( G B 1 T ) − 1 = B 1 B 2 T B=(^{B2}_{G}T)(^{B1}_{G}T)^{-1}=(^{B2}_{B1}T)(^{B1}_{G}T)(^{B1}_{G}T)^{-1}=^{B2}_{B1}T B=(GB2T)(GB1T)1=(B1B2T)(GB1T)(GB1T)1=B1B2T

由此,可得 A X = X B AX=XB AX=XB可以转换为下述形式:

( A 1 A 2 T ) X = X ( B 1 B 2 T ) (^{A2}_{A1}T)X=X(^{B2}_{B1}T) (A1A2T)X=X(B1B2T)

式中, A 1 A 2 T ^{A2}_{A1}T A1A2T为激光雷达 A A A t 1 t_1 t1时刻到 t 2 t_2 t2时刻的位姿变换(也就是轨迹)。同样的, B 1 B 2 T ^{B2}_{B1}T B1B2T为激光雷达 B B B t 1 t_1 t1时刻到 t 2 t_2 t2时刻的位姿变换。

http://www.lryc.cn/news/70107.html

相关文章:

  • SQL执行过程
  • K8S 部署 seata
  • ClickHouse:(二)数据类型
  • 项目文档(request页面代码逻辑)
  • 后端传到前端的JSON数据大写变小写--2023
  • 学习【菜鸟教程】【C++ 类 对象】【C++ 类的静态成员】
  • 计算机四大件笔记
  • 【vue上传文件——hash】
  • 【OpenCV DNN】Flask 视频监控目标检测教程 01
  • (转载)从0开始学matlab(第10天)—自顶向下的编程思想
  • mapreduce技术
  • AI智慧安监视频平台EasyCVR视频出现不能播放的情况排查与解决
  • 嵌入式学习之Linux驱动(第九期_设备模型_教程更新了)_基于RK3568
  • LeetCode662.设计循环队列||4种方法实现
  • 人工智能专栏第十二讲——依存解析
  • nest日志包pino、winston配置-懒人的折腾
  • 一文看懂增值税发票识别OCR:从技术原理到 API Java 示例代码接入
  • 消息队列对比
  • Ceph对象存储的基本概念,使用以及优点
  • 工业互联网UWB定位系统源码,支持自定义开发
  • VIC模型教程
  • 软件著作权容易搞吗?
  • Mac打出特殊字符
  • java设计模式之单例设计模式的前世今生
  • 小航助学2023年3月GESP_C++一级试卷(含题库答题软件账号)
  • 好程序员:女生学Java好学吗?女生学Java有什么优势?
  • 为Eclipse安装lombok插件
  • spring-boot 实现接口转发服务,同时支持get 和 post等多种请求
  • About JDKFlightRecorder--人工翻译
  • 【计算机系统基础3】数据的存储与运算