• 点云对齐/轨迹对齐方法及论文讲解


    点云对齐/轨迹对齐方法及论文讲解

    已知两组对应点云,求解两组点云之间的坐标系变换。或者计算里程计的精度问题,得到里程计估计的时间离散位姿后以及轨迹位姿真值后,如何评判里程计的精度。
    本文介绍三种方法:
    1.Umeyama算法
    参考文献:
    《Least-Squares Fitting of Two 3-D Point Sets》
    2.Horn四元数闭合求解算法
    参考文献:
    《Closed-form solution of absolute orientation using unit quaternions》
    3.Marta的迭代最小二乘解法
    参考文献:
    《Trajectory Alignment and Evaluation in SLAM: Horn’s Method vs Alignment on the Manifold》

    1 Umeyama算法

    原理说明https://blog.csdn.net/weixin_41469272/article/details/105314963
    代码实现及工具使用https://blog.csdn.net/weixin_41469272/article/details/119885449

    2 Horn四元数闭合求解算法

    使用单位四元数实现求解旋转闭式解。
    设两组点集分别为 r l \bm r_l rl r r \bm r_r rr,则其误差方程构成如下:
    e i = r ( r , i ) − s R ( r ( l , i ) ) − r 0 \bm e_i=\bm r_(r,i)-sR(\bm r_(l,i) )-\bm r_0 ei=r(r,i)sR(r(l,i))r0
    其中待求解的变量为旋转矩阵R,平移向量 r 0 \bm r_0 r0及尺度因子 s s s

    (1)求解最少满足的点数
    对齐两个轨迹或者对齐两组点云所要求解的自由度包含两组坐标系的3个平移,3个旋转及一个放缩尺度共7个自由度。3个点能建立9个约束(一个三维点对应3个约束)。因此3个点则能够满足求解约束。

    (2)点集质心约束及平移求解
    设两组点集质心对应计算如下:
    在这里插入图片描述
    误差构成的最小二乘问题:
    在这里插入图片描述
    通过对 r 0 \bm r_0 r0求导可得:
    r 0 = r ‾ r − s R r ‾ l \bm r_0=\bm {\overline{r}}_r-sR\bm {\overline{r}}_l r0=rrsRrl
    在两组点集的质心处建立新的坐标系,轴向与原坐标系一致,从而得到点集在新坐标系下的坐标:
    r l , i ′ = r l , i − r ‾ l , r r , i ′ = r r , i − r ‾ r \bm r'_{l,i}=\bm r_{l,i}-\bm {\overline{r}}_l,\bm r'_{r,i}=\bm r_{r,i}-\bm {\overline{r}}_r rl,i=rl,irl,rr,i=rr,irr
    将质心代入到误差方程,可消去 r 0 r_0 r0,误差方程变为:
    e i ′ = r r , i ′ − s R r l , i ′ \bm e'_i=\bm r'_{r,i}-sR\bm r'_{l,i} ei=rr,isRrl,i
    在这里插入图片描述
    (3)尺度求解
    1)由新的误差方程构成最小二乘问题:
    在这里插入图片描述
    得到关于 s s s的一元二次方程,解得:
    在这里插入图片描述
    2)未知R阵求解s
    将误差方程进行如下调整:
    在这里插入图片描述
    由于 R T R = I R^T R=I RTR=I将关于 s s s R R R分离,构成关于 s s s的最小二乘问题,从而在未知 R R R阵的情况下得到 s s s值,即
    在这里插入图片描述
    另外,同时需满足:
    min ⁡ R ∑ i = 1 n r r , i ′ T R r l , i ′ \mathop{\min}\limits_{R} \sum_{i=1}^{n} \bm r_{r,i}^{'T}R\bm r'_{l,i} Rmini=1nrr,iTRrl,i

    (4)三点求解旋转
    在已知两组坐标系之间的旋转变换后,求解平移及尺度因子是相对比较简单的。因此求解 R R R阵是该问题的关键。
    设3个不共线点在两组坐标系下的表示为: r l , 1 , r l , 2 , r l , 3 ∈ r l \bm r_{l,1}, \bm r_{l,2}, \bm r_{l,3}∈\bm r_l rl,1,rl,2,rl,3rl r r , 1 , r r , 2 , r r , 3 ∈ r r \bm r_{r,1}, \bm r_{r,2}, \bm r_{r,3}∈r_r rr,1,rr,2,rr,3rr

    利用3个点分别建立新的坐标系,设 r l , 1 r_{l,1} rl,1为坐标系l的原点, r l , 1 → r l , 2 r_{l,1}→r_{l,2} rl,1rl,2为x轴方向,y轴位于三个点构成的平面上,垂直于x轴,z轴符合右手定则正交与x轴与z轴。如下示意图:
    在这里插入图片描述
    令: x l = r l , 2 − r l , 1 , x ^ l = x l / ‖ x l ‖ \bm x_l=\bm r_{l,2}-\bm r_{l,1},\hat {\bm x}_l=\bm x_l/‖\bm x_l‖ xl=rl,2rl,1x^l=xl/‖xl,则 x ^ l \hat {\bm x}_l x^l为指向x轴的单位向量
    令: y l = ( r l , 3 − r l , 1 ) − [ ( r l , 3 − r l , 1 ) ⋅ x ^ l ] x ^ l , y ^ l = y l / ‖ y l ‖ \bm y_l=(\bm r_{l,3}-\bm r_{l,1})-[(\bm r_{l,3}-\bm r_{l,1}) \cdot \bm {\hat x}_l ] \bm {\hat x}_l,\bm {\hat y}_l=\bm y_l/‖\bm y_l ‖ yl=(rl,3rl,1)[(rl,3rl,1)x^l]x^ly^l=yl/‖yl
    [ ( r l , 3 − r l , 1 ) ⋅ x ^ l ] x ^ l [(\bm r_{l,3}-\bm r_{l,1})\cdot\bm {\hat x}_l ] \bm {\hat x}_l [(rl,3rl,1)x^l]x^l r l , 3 − r l , 1 \bm r_{l,3}-\bm r_{l,1} rl,3rl,1向量在x轴方向上的投影向量,即为坐标系原点到第三点 r l , 3 \bm r_{l,3} rl,3在x轴的投影点的向量,因此 ( r l , 3 − r l , 1 ) − [ ( r l , 3 − r l , 1 ) ⋅ x ^ l ] x ^ l (\bm r_{l,3}-\bm r_{l,1})-[(\bm r_{l,3}-\bm r_{l,1}) \cdot \bm {\hat x}_l ] \bm {\hat x}_l (rl,3rl,1)[(rl,3rl,1)x^l]x^l r l , 3 r_{l,3} rl,3在y轴的投影点的向量。 y ^ l \bm {\hat y}_l y^l为其单位向量,即指向y轴的单位向量。
    令: z ^ l = x ^ l × y ^ l \bm {\hat z}_l=\bm {\hat x}_l×\bm {\hat y}_l z^l=x^l×y^l为对应z轴的单位向量,得到新坐标系单位矩阵构成的基向量 M l = ∣ x ^ l , y ^ l , z ^ l ∣ \bm M_l=|\bm {\hat x}_l,\bm {\hat y}_l,\bm {\hat z}_l | Ml=x^l,y^l,z^l

    同理使用第二组点集构成新的坐标系单位向量 M r = ∣ x ^ r , y ^ r , z ^ r ∣ \bm M_r=|\bm {\hat x}_r,\bm {\hat y}_r,\bm {\hat z}_r| Mr=x^r,y^r,z^r
    M l \bm M_l Ml M r \bm M_r Mr分别为三个点构成的坐标系的基础向量在两个原始坐标系的表示。如下图示意图所示:
    在这里插入图片描述
    因此:
    M r = R M l \bm M_r=R\bm M_l Mr=RMl
    从而可知:
    R = M r M l T R=\bm M_r \bm M_l^T R=MrMlT
    (5)四元数求解旋转矩阵
    使用四元数 q \bm q q表示旋转:
    q = q 0 + i q x + j q y + k q z \bm q=q_0+iq_x+jq_y+kq_z q=q0+iqx+jqy+kqz
    r ′ = R r r'=Rr r=Rr
    将空间点表示成思维虚四元数
    r ‾ = [ 0 , r ] T = [ 0 , x , y , z ] T = 0 + i x + j y + k z \bm{\overline r}=[0,\bm r]^{\rm T}=[0,x,y,z]^{\rm T}=0+ix+jy+kz r=[0,r]T=[0,x,y,z]T=0+ix+jy+kz
    r ′ = q r ‾ q − 1 \bm r'=\bm {q\overline rq}^{-1} r=qrq1
    其中, q − 1 = q ∗ / q 2 \bm q^{-1}=\bm q^*/\bm q^2 q1=q/q2, q ∗ \bm q^* q q q q的共轭四元数, q ∗ = q 0 − i q x − j q y − k q z \bm q^*=q_0-iq_x-jq_y-kq_z q=q0iqxjqykqz
    文中使用单位四元数,因此 q 2 = q ⋅ q = 1 q^2=q\cdot q=1 q2=qq=1,因此, q − 1 = q ∗ \bm q^{-1}=\bm q^* q1=q

    定义四元数的两种乘法
    1)直接
    在这里插入图片描述
    2)点乘
    在这里插入图片描述
    要求解
    max ⁡ R ∑ i = 1 n ( r r , i ′ T R r l , i ′ ) \mathop{\max}\limits_R \sum_{i=1}^n(\bm r_{r,i}'^T R\bm r'_{l,i}) Rmaxi=1n(rr,iTRrl,i)
    使用四元数表示:
    max ⁡ q ∑ i = 1 n ( r ‾ r , i ′ ( q r ‾ l , i q − 1 ) ) \mathop{\max}\limits_{\bm q} \sum_{i=1}^n(\bm{\overline r}'_{r,i} (\bm{q\overline r}_{l,i}\bm q^{-1} )) qmaxi=1n(rr,i(qrl,iq1))
    向量乘法交换律:
    在这里插入图片描述
    由四元数的性质:
    在这里插入图片描述
    上式可化为:
    在这里插入图片描述
    其中: r ‾ = [ 0 , r ] T = [ 0 , x , y , z ] T \bm{\overline r}=[0,\bm r]^{\rm T}=[0,x,y,z]^{\rm T} r=[0,r]T=[0,x,y,z]T
    在这里插入图片描述
    在这里插入图片描述
    以此得:
    在这里插入图片描述
    令:
    在这里插入图片描述
    上式的解:q为N对应最大特征值对应的特征向量,证明过程见参考论文附文A3
    (6)总结求解流程:
    1)整理残差方程
    在这里插入图片描述
    2)求解尺度因子
    在这里插入图片描述
    3)求解 R R R阵对应四元数表示 q \bm q q
    在这里插入图片描述
    求解其最大特征值对应的特征向量
    4)求解偏移量
    r 0 = r ‾ r − s R r ‾ l r_0=\bm{\overline r}_r-sR\bm{\overline r}_l r0=rrsRrl

    Marta的迭代最小二乘解法

    采用最小二乘迭代求解轨迹对齐变换矩阵,除考虑平移,也考虑了姿态角构成误差方程的约束:
    设里程计估计得到的位姿组为 P 1 , P 2 , ⋯ P N {P_1,P_2,⋯P_N} P1,P2,PN,真实轨迹对应的 Q 1 , Q 2 , ⋯ Q N {Q_1,Q_2,⋯Q_N} Q1,Q2,QN,定义两组位姿 P i P_i Pi G i G_i Gi之间的误差为:
    E i = Q i − 1 T P i E_i =Q_i^{-1} TP_i Ei=Qi1TPi
    每个位姿由3轴旋转 R R R及3轴平移构成的4*4矩阵,该矩阵符合李群性质。
    对误差进行log-v操作,将误差变换到切空间:该操作与将旋转矩阵转换为李代数(轴角)一致。
    在这里插入图片描述
    定义两组轨迹的总误差约束方程为:
    在这里插入图片描述
    使用LM方法迭代求解 T T T
    在这里插入图片描述
    注:
    在这里插入图片描述

  • 相关阅读:
    echarts 横向柱状图示例
    5分钟搭建一个粗粒度「视频去重」系统
    web前端在手机端打开进行页面提示——手机端适配问题
    【云原生之kubernetes】在kubernetes集群下的映射外部服务—Eendpoint
    数据结构与算法之Python实现——循环链表、双向循环链表
    管理交换空间
    MUYUCMS v2.1:一款开源、轻量级的内容管理系统基于Thinkphp开发
    深度学习修炼(二)全连接神经网络 | Softmax,交叉熵损失函数 优化AdaGrad,RMSProp等 对抗过拟合 全攻略
    基于SSM的医院科室人员管理系统
    管理类联考——数学——汇总篇——知识点突破——算数——记忆
  • 原文地址:https://blog.csdn.net/weixin_41469272/article/details/126467026