第二章 Multi-LiDAR Extrinsic Calibration(4)

《 Targetless Extrinsic Calibration of Multiple Small FoV LiDARs and Cameras using Adaptive Voxelization》论文阅读



前言

本文主要记录论文mlcc关于多激光雷达标定部分相关的理论推导。由于字数限制,本篇紧接着上篇文章完成二阶闭式导数的推导。


一、理论推导

二阶闭式导数的推导

回顾代价函数为 arg ⁡ min ⁡ S , E L ∑ l λ 3 ( A l ) (式1) \arg\min_{\mathcal{S},\mathcal{E}_{L}}\sum_{l}^{}\lambda_{3}(A_{l})\tag{式1} argS,ELminlλ3(Al)(1)

,优化问题是非线性的,通过迭代求解,每次迭代中,代价函数被二阶近似,具体的说,我们将 λ 3 \lambda_3 λ3视为包含所有点 G p {^G}p Gp的函数,其中
G p ^{G}p Gp是一个列向量,每个点 G p k ∈ P l ^{G}p_{k}\in\mathcal{P}_{l} GpkPl,即:

G p = [ G p 1 T G p 2 T ⋯ G p N l T ] ∈ R 3 N l (式2) ^{G}p=\begin{bmatrix}{^{G}p_{1}^{T}} \quad {^{G}p_{2}^{T}} \quad \cdots \quad {^{G}p_{N_{l}}^{T}} \end{bmatrix}\in\mathbb{R} ^{3N_{l}} \tag{式2} Gp=[Gp1TGp2TGpNlT]R3Nl(2)

λ ( G p ) \lambda{(^Gp)} λ(Gp)可被近似为:
λ 3 ( G p + δ G p ) ≈ λ 3 ( G p ) + J ⋅ δ G p + 1 2 δ G p T ⋅ H ⋅ δ G p (式3) \lambda_{3}\left(^{G}{p}+\delta^{G}{p}\right)\approx\lambda_{3}\left(^{G}{p}\right)+{J}\cdot\delta^{G}{p}+\frac{1}{2} \delta^{G}{p}^{T}\cdot{H}\cdot\delta^{G}{p} \tag{式3} λ3(Gp+δGp)λ3(Gp)+JδGp+21δGpTHδGp(3)

假设第 k k k个点 G p k ^Gp_{k} Gpk在时间 t j t_j tj由雷达 L i L_i Li扫描,则有:
G p k = L i G T t j p k = L 0 G T t j ⋅ L i L 0 T ⋅ p k = L 0 G R t j ( L i L 0 R ⋅ p k + L i L 0 t ) + L 0 G t t j (式4) \begin{align*} ^Gp_k={^{G}_{L_i}T}_{t_j}p_k={^{G}_{L_0}T}_{t_j}\cdot {^{L_{0}}_{L_i}T}\cdot p_{k}\\ ={^{G}_{L_0}R_{t_j}}\left({^{L_0}_{L_i}R\cdot {p_k}+{^{L_0}_{L_i}t}}\right)+{^G_{L_0}t_{t_j}} \end{align*} \tag{式4} Gpk=LiGTtjpk=L0GTtjLiL0Tpk=L0GRtj(LiL0Rpk+LiL0t)+L0Gttj(4)

表明 G p k ^Gp_k Gpk依赖于 S \mathcal{S} S E L \mathcal{E}_L EL。为了扰动 G p k ^Gp_k Gpk,我们在位姿 T T T的进行扰动,
记为 δ T = [ ϕ T δ t T ] T ∈ R 6 \delta{T}=\begin{bmatrix}\phi{^T}\quad\delta{t}^T \end{bmatrix}^T\in\mathbb{R}^6 δT=[ϕTδtT]TR6
于在流形上的扰动可以参考论文《A micro Lie theory for state estimation in robotics》
T = ( R , t ) , T ⊞ δ T = ( R exp ⁡ ( ϕ ∧ ) , t + δ t ) (式5) T=(R,t)\quad ,T \boxplus\delta{T}=\left(R\exp(\phi^{\wedge} ),t+\delta{t}\right) \tag{式5} T=(R,t),TδT=(Rexp(ϕ),t+δt)(5)
。将上式带入到代价函数式1中,可得:
G p k + δ G p k = L 0 G R t j exp ⁡ ( L 0 G ϕ t j ∧ ) ( L i L 0 R exp ⁡ ( L i L 0 ϕ ∧ ) p k + L i L 0 t + δ L i L 0 t ) + L 0 G t t j + δ L 0 G t t j = L 0 G R t j ( I + L 0 G ϕ t j ∧ ) ( L i L 0 R ( I + L i L 0 ϕ ∧ ) p k + L i L 0 t + δ L i L 0 t ) + L 0 G t t j + δ L 0 G t t j = L 0 G R t j ( I + L 0 G ϕ t j ∧ ) ( L i L 0 R p k + L i L 0 R L i L 0 ϕ ∧ p k + L i L 0 t + δ L i L 0 t ) + L 0 G t t j + δ L 0 G t t j ≈ L 0 G R t j ( L i L 0 R ⋅ p k + L 0 G t t j ) + L 0 G R t j ( L i L 0 R L i L 0 ϕ ∧ p k + δ L i L 0 t ) + L 0 G R t j L 0 G ϕ t j ∧ ( L i L 0 R p k + L i L 0 t ) + L 0 G t t j + δ L 0 G t t j ≈ L 0 G R t j ( L i L 0 R ⋅ p k + L 0 G t t j ) + L 0 G t t j + L 0 G R t j ( L i L 0 R ⋅ L i L 0 ϕ ∧ p k + δ L i L 0 t ) + L 0 G R t j L 0 G ϕ t j ∧ ( L i L 0 R p k + L i L 0 t ) + δ L 0 G t t j ≈ L 0 G R t j ( L i L 0 R ⋅ p k + L 0 G t t j ) + L 0 G t t j − L 0 G R t j L i L 0 R ( p k ) ∧ ⋅ L i L 0 ϕ + L 0 G R t j δ L i L 0 t − L 0 G R t j ( L i L 0 R p k + L i L 0 t ) ∧ L 0 G ϕ t j + δ L 0 G t t j (式6) \begin{align*} {}^{G}{p}_{k}+\delta^{G}{p}_{k}= {}_{L_{0}}^{G}R_{t_{j}}\exp\big({}_{L_{0}}^{G}\phi_{t_{j}}^{\wedge}\big) \bigg({}_{L_{i}}^{L_{0}}R\exp\big({}_{L_{i}}^{L_{0}}\phi^{\wedge}\big)p_{k} +{}_{L_{i}}^{L_{0}}{t}+\delta_{L_{i}}^{L_{0}}{t}\bigg)\\ +{}_{L_{0}}^{G}{t}_{t_{j}} +\delta_{L_{0}}^{G}{t}_{t_{j}}\\ ={}_{L_{0}}^{G}R_{t_{j}}\big(I+{}_{L_{0}}^{G}\phi_{t_{j}}^{\wedge}\big) \bigg({}_{L_{i}}^{L_{0}}R\big(I+{}_{L_{i}}^{L_{0}}\phi^{\wedge}\big)p_{k} +{}_{L_{i}}^{L_{0}}{t}+\delta_{L_{i}}^{L_{0}}{t}\bigg)\\ +{}_{L_{0}}^{G}{t}_{t_{j}}+\delta_{L_{0}}^{G}{t}_{t_{j}}\\ ={}_{L_{0}}^{G}{R}_{t_{j}}\big(I+{}_{L_{0}}^{G}\phi_{t_{j}}^{\wedge}\big) \bigg({}_{L_{i}}^{L_{0}}Rp_{k}+{}_{L_{i}}^{L_{0}}R{}_{L_{i}}^{L_{0}}\phi^{\wedge}p_{k} +{}_{L_{i}}^{L_{0}}{t}+\delta_{L_{i}}^{L_{0}}{t}\bigg)\\ +{}_{L_{0}}^{G}{t}_{t_{j}}+\delta_{L_{0}}^{G}{t}_{t_{j}}\\ \approx{}_{L_{0}}^{G}R_{t_{j}}\big({}_{L_{i}}^{L_{0}}R\cdot{p_{k}}+{}_{L_{0}}^{G}{t}_{t_{j}}\big) +{}_{L_{0}}^{G}R_{t_{j}}\big({}_{L_{i}}^{L_{0}}R{}_{L_{i}}^{L_{0}}\phi^{\wedge}p_{k} +\delta_{L_{i}}^{L_{0}}{t}\big)\\ +{}_{L_{0}}^{G}R_{t_{j}}{}_{L_{0}}^{G}\phi_{t_{j}}^{\wedge} \bigg({}_{L_{i}}^{L_{0}}Rp_{k}+{}_{L_{i}}^{L_{0}}{t}\bigg)\\ +{}_{L_{0}}^{G}{t}_{t_{j}}+\delta_{L_{0}}^{G}{t}_{t_{j}}\\ \approx{}_{L_{0}}^{G}R_{t_{j}}\big({}_{L_{i}}^{L_{0}}R\cdot{p_{k}} +{}_{L_{0}}^{G}{t}_{t_{j}}\big)+{}_{L_{0}}^{G}{t}_{t_{j}} +{}_{L_{0}}^{G}R_{t_{j}}\big({}_{L_{i}}^{L_{0}}R\cdot{}_{L_{i}}^{L_{0}}\phi^{\wedge}p_{k} +\delta_{L_{i}}^{L_{0}}{t}\big)\\ +{}_{L_{0}}^{G}R_{t_{j}}{}_{L_{0}}^{G}\phi_{t_{j}}^{\wedge} \bigg({}_{L_{i}}^{L_{0}}Rp_{k} +{}_{L_{i}}^{L_{0}}{t}\bigg)+\delta_{L_{0}}^{G}{t}_{t_{j}}\\ \approx{}_{L_{0}}^{G}R_{t_{j}}\big({}_{L_{i}}^{L_{0}}R\cdot{p_{k}} +{}_{L_{0}}^{G}{t}_{t_{j}}\big)+{}_{L_{0}}^{G}{t}_{t_{j}}\\ -{}_{L_0}^GR_{t_j}{}_{L_{i}}^{L_{0}}R\left(p_k\right)^{\wedge}\cdot_{L_i}^{L_0}\phi+_{L_0}^GR_{t_j}\delta_{L_i}^{L_0}t -{}_{L_{0}}^{G}R_{t_{j}}\bigg({}_{L_{i}}^{L_{0}}Rp_{k} +{}_{L_{i}}^{L_{0}}{t}\bigg)^{\wedge}{}_{L_{0}}^{G}\phi_{t_{j}}+\delta_{L_{0}}^{G}{t}_{t_{j}} \end{align*} \tag{式6} Gpk+δGpk=L0GRtjexp(L0Gϕtj)(LiL0Rexp(LiL0ϕ)pk+LiL0t+δLiL0t)+L0Gttj+δL0Gttj=L0GRtj(I+L0Gϕtj)(LiL0R(I+LiL0ϕ)pk+LiL0t+δLiL0t)+L0Gttj+δL0Gttj=L0GRtj(I+L0Gϕtj)(LiL0Rpk+LiL0RLiL0ϕpk+LiL0t+δLiL0t)+L0Gttj+δL0GttjL0GRtj(LiL0Rpk+L0Gttj)+L0GRtj(LiL0RLiL0ϕpk+δLiL0t)+L0GRtjL0Gϕtj(LiL0Rpk+LiL0t)+L0Gttj+δL0GttjL0GRtj(LiL0Rpk+L0Gttj)+L0Gttj+L0GRtj(LiL0RLiL0ϕpk+δLiL0t)+L0GRtjL0Gϕtj(LiL0Rpk+LiL0t)+δL0GttjL0GRtj(LiL0Rpk+L0Gttj)+L0GttjL0GRtjLiL0R(pk)LiL0ϕ+L0GRtjδLiL0tL0GRtj(LiL0Rpk+LiL0t)L0Gϕtj+δL0Gttj(6)
结合式4和式6可得 δ G p k \delta{^Gp_k} δGpk,如下所示:
δ G p k ≈ − L 0 G R t j ( L i L 0 R p k + L i L 0 t ) ∧ L 0 G ϕ t j + δ L 0 G t t j − L 0 G R t j L i L 0 R ( p k ) ∧ L i L 0 ϕ + L 0 G R t j δ L i L 0 t = D ⋅ δ x , (式7) \begin{align*} \delta^{G}{p}_{k}\approx-{}_{L_{0}}^{G}R_{t_{j}} \big({}_{L_{i}}^{L_{0}}{R}{p}_{k}+{}_{L_{i}}^{L_{0}}{t}\big)^{\wedge}{}_{L_{0}}^{G}\phi_{t_{j}} +\delta_{L_{0}}^{G}{t}_{t_{j}}-\\{}_{L_{0}}^{G}R_{t_{j}}{}_{L_{i}}^{L_{0}}R\big({p}_{k}\big)^{\wedge}{}_{L_{i}}^{L_{0}}\phi +{}_{L_{0}}^{G}{R}_{t_{j}}\delta_{L_{i}}^{L_{0}}{t}\\ =D\cdot \delta x , \end{align*} \tag{式7} δGpkL0GRtj(LiL0Rpk+LiL0t)L0Gϕtj+δL0GttjL0GRtjLiL0R(pk)LiL0ϕ+L0GRtjδLiL0t=Dδx,(7)

其中 δ x = [ ⋯ L 0 G ϕ t j T δ L 0 G t t j T ⋯ L i L 0 ϕ T δ L i L 0 t T ⋯ ] T ≠ R 6 ( m + n − 2 ) \delta{x}=\begin{bmatrix}\cdots \quad {^G_{L_0}\phi_{t_j}^{T}\quad\delta_{L_0}^{G}t_{t_j}^T}\cdots{^{L_{0}}_{L_i}\phi^{T}\quad\delta_{L_i}^{L_0}t^T} \cdots\end{bmatrix}^{T} \ne\mathbb{R}^{6\left(m+n-2\right)} δx=[L0GϕtjTδL0GttjTLiL0ϕTδLiL0tT]T=R6(m+n2)是优化变量 x = [ ⋯ L 0 G R t j L 0 G t t j ⋯ L i L 0 R L i L 0 t ⋯ ] x=\begin{bmatrix}\cdots{_{L_0}^GR_{t_j} }\quad{_{L_0}^{G}t_{t_j}}\cdots{_{L_i}^{L_0}R}\quad{_{L_i}^{L_0}t}\cdots\end{bmatrix} x=[L0GRtjL0GttjLiL0RLiL0t]的微小扰, m m m代表帧数,n代表参考雷达的个数。
并且
D = [ ⋮ ⋮ ⋯ D k , p S ⋯ D k , q ε L ⋯ ⋮ ⋮ ] ∈ R 3 N l × 6 ( m + n − 2 ) D k , p S { [ − L 0 G R t j ( L i L 0 R p k + L i L 0 t ) ∧ I ] , i f p = j 0 3 × 6 , e l s e D k , q E L { [ − L 0 G R t j L i L 0 R ( p k ) ∧ L 0 G R t j ] , i f   q = i 0 3 × 6 , e l s e \begin{align*} D =\begin{bmatrix}\vdots&\vdots\\\cdots {D}_{k,p}^{\mathcal{S}}&\cdots {D}_{k,q}^{\varepsilon_{L}}&\cdots\\\vdots&\vdots\end{bmatrix}\in\mathbb{R}^{3N_{l}\times6(m+n-2)} \\ \mathrm{D}_{k,p}^{\mathcal{S}} \begin{cases} \begin{bmatrix}{-{}_{L_{0}}^{G}{R}_{t_{j}}}\left({}_{L_{i}}^{L_{0}}{R}{p}_{k}+{}_{L_{i}}^{L_{0}}{t}\right)^{\wedge}&{I}\end{bmatrix},\quad{\mathrm{if} p=j}\\ {0}_{3\times6},\quad {else} \end{cases}\\ \mathrm{D}_{k,q}^{\mathcal{E}_{L}} \begin{cases} \begin{bmatrix}{-{}_{L_{0}}^{G}{R}_{t_{j}}}{}_{L_{i}}^{L_{0}}{R}({p}_{k})^{\wedge}&{}_{L_{0}}^{G}{R}_{t_{j}}\end{bmatrix},\quad{\mathrm{if~}q=i}\\ {0}_{3\times6},\quad {else} \end{cases} \end{align*} D= Dk,pSDk,qεL R3Nl×6(m+n2)Dk,pS [L0GRtj(LiL0Rpk+LiL0t)I],ifp=j03×6,elseDk,qEL{[L0GRtjLiL0R(pk)L0GRtj],if q=i03×6,else

注意: 论文中的结果与推导有差异,下面是论文给的结果,待排查!
δ G p k ≈ + L 0 G R t j ( L i L 0 R p k + L i L 0 t ) ∧ L 0 G ϕ t j + δ L 0 G t t j + L i G R t j ( p k ) ∧ L i L 0 ϕ + L 0 G R t j δ L i L 0 t \delta^{G}{p}_{k}\approx{\color{red}+}{}_{L_{0}}^{G}R_{t_{j}} \big({}_{L_{i}}^{L_{0}}{R}{p}_{k}+{}_{L_{i}}^{L_{0}}{t}\big)^{\wedge}{}_{L_{0}}^{G}\phi_{t_{j}} +\delta_{L_{0}}^{G}{t}_{t_{j}}{\color{red}+}\\{}_{L_{i}}^{G}R_{t_{j}}\big({p}_{k}\big)^{\wedge}{}_{L_{i}}^{L_{0}}\phi +{}_{L_{0}}^{G}{R}_{t_{j}}\delta_{L_{i}}^{L_{0}}{t} δGpk+L0GRtj(LiL0Rpk+LiL0t)L0Gϕtj+δL0Gttj+LiGRtj(pk)LiL0ϕ+L0GRtjδLiL0t

上面用到一些近似化:
exp ⁡ ( ϕ ∧ ) ≈ I + ϕ ∧ (式8) \exp(\phi^{\wedge})\approx I+\phi^{\wedge}\tag{式8} exp(ϕ)I+ϕ(8)
结合式3到式7有以下结论:
λ 3 ( x ⊞ δ x ) ≈ λ 3 ( x ) + J D δ x + 1 2 δ x T D T H D δ x = λ 3 ( x ) + J ˉ δ x + 1 2 δ x T H ˉ δ x . (式9) \begin{align*} \begin{gathered} \lambda_{3}({x}\boxplus\delta{x}) \approx\lambda_{3}({x})+{JD}\delta{x}+\frac{1}{2} \delta{x}^{T}{D}^{T}{HD}\delta{x} \\ =\lambda_{3}({x})+{\bar{J}}\delta{x}+\frac{1}{2}\delta{x}^{T}{\bar{H}}\delta{x}. \end{gathered} \end{align*} \tag{式9} λ3(xδx)λ3(x)+JDδx+21δxTDTHDδx=λ3(x)+Jˉδx+21δxTHˉδx.(9)
根据定理1和定理2的结论可知:

  • J J J为雅可比矩阵,其中第 i i i个元素按照定理1计算;
  • H H H为Hessian矩阵,其中第 i i i行,第 j j j列元素按照定理2计算。

并可得且LM算法的增量公式为 ( H ˉ ( G p + μ I ) ) δ G p ∗ = − J ˉ ( G p ) T \left(\bar{H}(^{G}p+\mu I)\right)\delta{^Gp^{\ast}}=-\bar{J}(^Gp)^T (Hˉ(Gp+μI))δGp=Jˉ(Gp)T

二、参考文献

[1]《Targetless Extrinsic Calibration of Multiple Small FoV LiDARs and Cameras using Adaptive Voxelization》

[2]《BALM: Bundle Adjustment for Lidar Mapping》

[3]《BALM论文阅读》——epsilonjohn的博客文章

[4]《A micro Lie theory for state estimation in robotics》

[5]《多个LiDAR-Camera无目标跨视角联合标定方法》

[6]《如何用法向量求点到平面距离_【立体几何】用空间向量求点到面的距离》

### 编译 LiDAR-Camera 外参标定工具箱 要成功编译 **General, Single-shot, Target-less, and Automatic LiDAR-Camera Extrinsic Calibration Toolbox** 工具箱,需遵循以下指导原则: #### 依赖项安装 该工具箱通常需要一些常见的计算机视觉库以及点云处理框架的支持。以下是可能涉及的主要依赖项及其安装方式[^1]: - CMake (版本 ≥ 3.10): 使用 `sudo apt install cmake` 安装。 - OpenCV (版本 ≥ 4.0): 可通过包管理器或源码构建方式进行安装。 - PCL (Point Cloud Library): 提供点云数据结构和操作功能,可通过命令 `sudo apt-get install libpcl-dev` 进行安装。 #### 获取源代码 从官方仓库克隆项目源代码到本地环境。假设该项目托管于 GitHub 上,则可以执行如下命令获取最新版本的代码: ```bash git clone https://github.com/your-repo-url/lidar-camera-calibration-toolbox.git cd lidar-camera-calibration-toolbox ``` #### 配置与生成 Makefile 文件 进入项目的根目录后,利用 CMake 创建适合当前系统的构建文件。创建一个单独的构建目录来保持原代码整洁,并在此基础上完成配置过程: ```bash mkdir build && cd build cmake .. ``` 此阶段可能会遇到因缺少某些依赖而导致错误的情况;此时应按照提示补充缺失组件后再重新尝试上述指令。 #### 执行实际编译流程 一旦所有必要的设置都已完成,就可以启动正式的编译工作了: ```bash make -j$(nproc) ``` 这里 `-j$(nproc)` 参数表示并行使用多个 CPU 核心加速整个进程,从而缩短等待时间[^2]。 #### 测试验证 为了确认最终产物能够正常运作,在大多数情况下会附带一组预定义好的测试样例用于初步检验效果。运行这些脚本可以帮助快速定位潜在问题所在位置: ```bash ./test_lidar_camera_calibration ``` 以上即为针对指定类型的 LiDAR 和 Camera 的外参自动化标定工具箱的一般化编译指南[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值