lospring 发表于 2024-9-8 23:50

《智能驾驶之激光雷达算法详解》空间变换数学基础

<div class='showpostmsg'> 本帖最后由 lospring 于 2024-9-8 23:50 编辑

<p>下面介绍一些坐标系欧氏变换的基础数学。</p>

<p>在进行激光雷达的外参标定时,我们实际上是求解激光雷达坐标系相对车体坐标系的姿态和相对位置;在进行车辆定位时,我们通常是在求解车体坐标系的相对变化量<img alt="T_{C_{ti}}^{C_{tj}}" src="https://bbs.eeworld.com.cn/gif.latex?T_%7BC_%7Bti%7D%7D%5E%7BC_%7Btj%7D%7D" />及其相对世界参考坐标系的变化量<img alt="T_{C_{w}}^{C_{tj}}" src="https://bbs.eeworld.com.cn/gif.latex?T_%7BC_%7Bw%7D%7D%5E%7BC_%7Btj%7D%7D" />。这两个坐标系之间的位置和姿态变化构成了欧氏变换。其中,姿态描述的是一个坐标系的轴系相对另一个坐标系轴系的旋转或方向关系,相对位置描述的是一个坐标系的原点相对另一个坐标系原点的平移关系。</p>

<p> &nbsp;</p>

<p>1.1、旋转和平移变换</p>

<p>首先考虑两坐标系间具有共同原点且仅有相对旋转的情况。则点P的坐标系1和坐标系2下的三维向量可分别表示为</p>

<p><img alt="_{}^{1}\textrm{P}" src="https://bbs.eeworld.com.cn/gif.latex?_%7B%7D%5E%7B1%7D%5Ctextrm%7BP%7D" />=<img alt="_{}^{T}" src="https://bbs.eeworld.com.cn/gif.latex?%5Bp_%7Bx%7D%5E%7B1%7Dp_%7By%7D%5E%7B1%7Dp_%7Bz%7D%5E%7B1%7D%5D_%7B%7D%5E%7BT%7D" /></p>

<p><img alt="_{}^{2}\textrm{P}" src="https://bbs.eeworld.com.cn/gif.latex?_%7B%7D%5E%7B2%7D%5Ctextrm%7BP%7D" />=<img alt="_{}^{T}" src="https://bbs.eeworld.com.cn/gif.latex?%5Bp_%7Bx%7D%5E%7B2%7Dp_%7By%7D%5E%7B2%7Dp_%7Bz%7D%5E%7B2%7D%5D_%7B%7D%5E%7BT%7D" /></p>

<p>结合假设两坐标系的单位正交基分别为<img alt="x_{1},y_{1},z_{1}" src="https://bbs.eeworld.com.cn/gif.latex?x_%7B1%7D%2Cy_%7B1%7D%2Cz_%7B1%7D" />;<img alt="x_{2},y_{2},z_{2}" src="https://bbs.eeworld.com.cn/gif.latex?x_%7B2%7D%2Cy_%7B2%7D%2Cz_%7B2%7D" />。以及坐标系2在坐标系1下单位正交基的投影关系最终可得</p>

<p><img alt="_{}^{1}\textrm{P}" src="https://bbs.eeworld.com.cn/gif.latex?_%7B%7D%5E%7B1%7D%5Ctextrm%7BP%7D" />=<img alt="R_{2}^{1}" src="https://bbs.eeworld.com.cn/gif.latex?R_%7B2%7D%5E%7B1%7D" /><img alt="_{}^{2}\textrm{P}" src="https://bbs.eeworld.com.cn/gif.latex?_%7B%7D%5E%7B2%7D%5Ctextrm%7BP%7D" /></p>

<p>其中旋转矩阵<img alt="R_{2}^{1}" src="https://bbs.eeworld.com.cn/gif.latex?R_%7B2%7D%5E%7B1%7D" />=<img alt="\begin{bmatrix} a_{x} &amp; b_{x}&amp;c_{x} \\ a_{y}&amp; b_{y} &amp;c_{y} \\ a_{z}&amp; b_{z} &amp; c_{z} \end{bmatrix}" src="https://bbs.eeworld.com.cn/gif.latex?%5Cbegin%7Bbmatrix%7D%20a_%7Bx%7D%20%26%20b_%7Bx%7D%26c_%7Bx%7D%20%5C%5C%20a_%7By%7D%26%20b_%7By%7D%20%26c_%7By%7D%20%5C%5C%20a_%7Bz%7D%26%20b_%7Bz%7D%20%26%20c_%7Bz%7D%20%5Cend%7Bbmatrix%7D" /></p>

<p>我们可以进一步分析得到旋转矩阵是行列式为1的正交阵,因此旋转矩阵R与其转置矩阵<img alt="R_{}^{T}" src="https://bbs.eeworld.com.cn/gif.latex?R_%7B%7D%5E%7BT%7D" />的相乘结果为单位阵E,所以<img alt="RR_{}^{T}=R_{}^{T}R=E" src="https://bbs.eeworld.com.cn/gif.latex?RR_%7B%7D%5E%7BT%7D%3DR_%7B%7D%5E%7BT%7DR%3DE" />,所以<img alt="R_{}^{T}=R_{}^{-1}" src="https://bbs.eeworld.com.cn/gif.latex?R_%7B%7D%5E%7BT%7D%3DR_%7B%7D%5E%7B-1%7D" /></p>

<p>再进一步可以看出物体相对于坐标轴的旋转和坐标轴相对于物体的等角度反向旋转在描述上是等效的。</p>

<p> &nbsp;</p>

<p>齐次矩阵则是考虑了两坐标系间同时具有旋转和平移的情况。最终可得<img alt="_{}^{1}\textrm{P}=R_{3}^{1}" src="https://bbs.eeworld.com.cn/gif.latex?_%7B%7D%5E%7B1%7D%5Ctextrm%7BP%7D%3DR_%7B3%7D%5E%7B1%7D" /><img alt="_{}^{3}\textrm{P}+d" src="https://bbs.eeworld.com.cn/gif.latex?_%7B%7D%5E%7B3%7D%5Ctextrm%7BP%7D&amp;plus;d" />。</p>

<p>1.2、旋转的欧拉角表示</p>

<p>在使用旋转矩阵R表示三维空间中的旋转和姿态时,共需要9个变量来表示,而对应的旋转本身则通常只有3个自由度。这种表达明显带来参数冗余,使得求解复杂。所以采用欧拉角姿态表示。</p>

<p>根据旋转轴顺序的不同,欧拉角有多种形式。以RPY为例,绕X轴旋转角称为翻滚角R,绕Y轴旋转角称为俯仰角P,绕Z轴旋转角称为Y。欧拉角描述的空间旋转与其转动顺序强相关,且欧拉角的三个分量不具有互换性,在求解RPY的逆变换时,不能仅对角度取负实现,而应该按照相反的旋转顺序反转相应的角度。当俯仰角pitch=<img alt="\pm 90^{\circ}" src="https://bbs.eeworld.com.cn/gif.latex?%5Cpm%2090%5E%7B%5Ccirc%7D" />时,欧拉角描述的旋转存在奇异性,此时滚动角和领航角无法区分,其描述的旋转会出现退化现象,称为欧拉角的万向锁现象。所以在优化和滤波等迭代算法中通常不使用欧拉角表示较大的旋转变换。</p>

<p>1.3、旋转的轴角表示/旋转向量表示</p>

<p>旋转向量到旋转矩阵的转换关系如下:</p>

<p><img alt="R=cos\theta E+(1-cos\theta )nn^{T}+sin\theta n{}'" src="https://bbs.eeworld.com.cn/gif.latex?R%3Dcos%5Ctheta%20E&amp;plus;%281-cos%5Ctheta%20%29nn%5E%7BT%7D&amp;plus;sin%5Ctheta%20n%7B%7D%27" /></p>

<p>1.4、旋转的单位四元数表示</p>

<p>四元数是将二维空间中的复数扩展至三维空间中得到的超复数:<img alt="Q=q_{0}+q_{1}i+q_{2}j+q_{3}k" src="https://bbs.eeworld.com.cn/gif.latex?Q%3Dq_%7B0%7D&amp;plus;q_%7B1%7Di&amp;plus;q_%7B2%7Dj&amp;plus;q_%7B3%7Dk" /></p>

<p>i,j,k为虚数单位,分别对应坐标系的三个轴,并满足<img alt="i^{2}=j^{2}=k^{2}=1,ij=k,jk=i,ki=j,ji=-k,kj=-i,ik=-j" src="https://bbs.eeworld.com.cn/gif.latex?i%5E%7B2%7D%3Dj%5E%7B2%7D%3Dk%5E%7B2%7D%3D1%2Cij%3Dk%2Cjk%3Di%2Cki%3Dj%2Cji%3D-k%2Ckj%3D-i%2Cik%3D-j" /></p>

<p>采用矢量形式表示为<img alt="Q=\begin{bmatrix} q_{0} &amp;q_{1} &amp;q_{2} &amp; q_{3} \end{bmatrix}=\begin{bmatrix} s &amp; v \end{bmatrix},s=q_{0} ,v=\begin{bmatrix} q_{1}&amp;q_{2} &amp; q_{3} \end{bmatrix}" src="https://bbs.eeworld.com.cn/gif.latex?Q%3D%5Cbegin%7Bbmatrix%7D%20q_%7B0%7D%20%26q_%7B1%7D%20%26q_%7B2%7D%20%26%20q_%7B3%7D%20%5Cend%7Bbmatrix%7D%3D%5Cbegin%7Bbmatrix%7D%20s%20%26%20v%20%5Cend%7Bbmatrix%7D%2Cs%3Dq_%7B0%7D%20%2Cv%3D%5Cbegin%7Bbmatrix%7D%20q_%7B1%7D%26q_%7B2%7D%20%26%20q_%7B3%7D%20%5Cend%7Bbmatrix%7D" /></p>

<p>2.1 李群、李代数</p>

<p>为简化位姿估计相关的求解过程,引入李群和李代数。</p>

<p>群通常表示为由有限或无限个元素构成的集合加上一种运算的代数结构。具有群结构的光滑微分流形为李群,即若G为一个群,同时它又是D维空间的一个流形,并且其群乘积和取逆操作都是平滑函数,则G为一个李群。李代数是一个由集合V,数域F和一个李括号运算<img alt="[\cdot ,\cdot ]" src="https://bbs.eeworld.com.cn/gif.latex?%5B%5Ccdot%20%2C%5Ccdot%20%5D" />组成的代数结构,用于表示被赋予李括号运算的线性空间。在三维空间<img alt="\mathbb{R}^{3}" src="https://bbs.eeworld.com.cn/gif.latex?%5Cmathbb%7BR%7D%5E%7B3%7D" />中,向量的叉乘运算即为该空间的李括号运算,所以李代数实际上是李群在其幺元处的切空间,它能够完全捕获李群的局部结构,并且李群M,李代数m可表示为<img alt="m=T_{1}M" src="https://bbs.eeworld.com.cn/gif.latex?m%3DT_%7B1%7DM" />。之后可通过李群和李代数的映射关系将流形空间中待求解的问题表示成对应的线性空间的李代数结构,从而使得利用线性空间中的模型和算法成为可能。</p>

<p>&nbsp;</p>

<p>&nbsp;</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

Jacktang 发表于 2024-9-9 07:25

<p>空间变换数学是虽然难懂,算法的基础</p>

chejm 发表于 2024-9-9 21:47

<p>数学在各个科学领域都是必不可少的,尤其现在人工智能领域,更是数学的天下</p>
页: [1]
查看完整版本: 《智能驾驶之激光雷达算法详解》空间变换数学基础