- Advertisement -
首頁 技術頻道 旋轉運算扮演關鍵角色 感測融合促環境感知超展開

旋轉運算扮演關鍵角色 感測融合促環境感知超展開

- Advertisement -

加速度計、陀螺儀和磁力計通常以消費者價格點提供有效的動作資訊。消費者級的慣性測量單元(IMU)是大多數電子裝置觸發動作的關鍵,然而最能說明問題的,並非是其產生的原始數據,而是透過分析和理解感測器的各項數值,帶來更多的啟發,這就是為什麼會有感測融合(Sensor Fusion)的概念出現。

感測融合的重點在於如何合併多個感測器數據,以及對不同感測器數據的取捨,只要將增益、偏置或雜訊等感測器異常納入考慮,便能較容易了解到那些需要偵測手勢及電源管理的產品為什麼會如此複雜。

想要了解如何在IMU中整合感測器數據,就需要了解旋轉以及控制的方法,本文將說明不同類型旋轉的表示法及所需的操縱方式,還會介紹Arm Helium技術(M-Profile Vector Extension, MVE)是如何幫助客戶在Arm Cortex-M處理器上產生更快的結果,僅以一個四元數(Quaternion)就能提升指令速度約2.5倍,使用八或更多個四元數速度將提升4倍。

多種旋轉表示法

從基礎開始絕非壞事,所以本文將從定義旋轉開始。旋轉是維持方向不變的正交變換,即點與點間的距離和向量間的角度不變,且無任何形式的延伸或傾斜。

旋轉可用兩種方式來思考:旋轉向量或旋轉座標系,這兩種的方式相同但主體相反。前者是以面對自己的方向轉動骰子(物體旋轉),後者是將骰子置於桌上並自己繞桌旋轉(座標系旋轉)。

旋轉可用多種數學函數表示,各種方式都有其優缺點,對座標系、符號、框-向量旋轉及非可交換旋轉,各有潛在的困難點,每種方法利弊如下列所示。

歐拉角

歐拉角的基礎原理是用三個角度來表示空間中發生的旋轉,共可以生成十二個獨特的旋轉順序,其順序可為外旋(旋轉軸全域固定)或內旋(旋轉軸隨裝置移動),其中外旋很少用於運算。

在俯仰(Pitch)、偏航(Yaw)、橫滾(Roll)順序中最常見的也許是航空歐拉順序,如圖1所示,圖中採用NED座標系(北-東-下),分別代表X、Y、Z軸。

圖1 航空歐拉順序

參閱上圖能深入地了解內旋順序。以Z-Y'-X"順序而言,先繞飛機/重心(Z)的中心旋轉,然後從新位置繞機翼(Y')旋轉,最後繞機身圓柱中線(X")旋轉。這一俯仰、偏航、橫滾序列的角稱為Tait-Bryan角,但一般稱為歐拉角。

歐拉角易於閱讀和理解,因此有助於概念化和使用者輸入,但不利於運算或插值,比如將偏航和俯仰視為地球的緯度和經度,則在赤道的一度運動會比在極地冰蓋處的一度運動大很多。

主要缺點之一是發生在接近π/2或90度之第二次旋轉的環架鎖定(Gimbal Lock),此現象能用圖1解釋。繞重心旋轉任意角度,然後俯仰飛機至90度,此時飛機就會垂直向上,在這一點上,飛機繞中線和重心旋轉效果相同,此會導致系統進入二維自由度(DoF)狀態,而失去第三維自由度,因而產生多餘的等效旋轉,並使運算複雜化。

方向餘弦矩陣

旋轉矩陣亦稱DCM,是一個3×3矩陣:w=Rv,其中R是旋轉,v是向量。DCM將一個參考座標系轉換為另一個參考座標系,等於用矩陣表示各個歐拉角旋轉的乘積。

使用時必須有一個正交矩陣,其中R-1=RT and Det(R)=1,來代表純旋轉(無延伸或傾斜)。

此方法可避免環架鎖定,但這種方法的缺點,是確保矩陣在操作後保持正交性,將可能不易運算。

軸-角

與需要三個旋轉的歐拉角相反,軸-角表示法只需要一個旋轉。此一方式下,任何旋轉都可以用圍繞任意軸n的單一旋轉角θ表示(圖2)。

圖2 軸-角

本方法的優點在於運算過程只須操作兩個數值,而不是如歐拉角的三個數值和DCM的九個數值,這改善了歐拉角所缺乏的數值穩定性,也毋需如DCM進行重新規範化,及歐拉角的環架鎖定,但是它的缺點是不太適用於額外的運算。

四元數

四元數可與其他旋轉方法結合或作為替代方法使用,是定義旋轉的首選。此表示法使用的複數具有一個實項和三個虛項:q=w+xi+yj+z,其中w是實項,x/y/z是虛項;若用向量表示,q=[w,x,y,z]=[w,a],其中w是實項,a是向量[x,y,z]。

四元數沒有環架鎖定的風險,在數值上也比DCM更穩定,沒有冗餘因素、不需要昂貴的操作正交化、易於保持正規化,而正規化的四元數類似軸角法,可以表示旋轉角度的任意向量,因此更容易解釋—w是角度w=cos(θ/2)的變形版本,a=[x,y,z]是軸的比例版本:

在四元數中,四元數數學的加法是向量加法,即所有元素的和;乘法略微複雜而且不可交換。如定義P為(p0,p)且Q為(q0,q):

在規範化(單位)的四元數中,逆矩陣等價於共軛(Conjugate):P-1=P*,而旋轉向量(v)四元數q的量:w=q*vq;v=qwq*;w=Rv(R是DCM3×3矩陣)且存在於四元數。

合併旋轉是四元數乘法:

且可由四元數Q旋轉向量v後再返回:

四元數因支援插值和導數,因此有利於感測融合,軸-角法和歐拉角法均難以插值,雖然可以使用DCM進行插值,但因要對九個元素(3×3)進行操作而難以執行,且相較於DCM,四元數只需要四個元素(w/x/y/z),因此也可提高儲存效率。

如上所述,四種數學方法各有其優點和影響運算便利性的潛在缺點。其中四元數在感測器整合的旋轉運算上更受青睞,因為四元數可以避免環架鎖定、確保數值穩定性、對訊號進行插值且提高處理效率。

但是如果要執行大量旋轉,對於四元數運算是很大的挑戰,由於四元數乘法需要大量獨立運算,以致於實際運算效率可能比DCM低,尤其連續進行大量旋轉時,四元數乘法的操作程序將比矩陣乘法複雜。

四元數乘法

Arm Helium的指令集可以快速進行四元數乘法,而在說明其加速方法前,需要對四元數和四元數數學進一步說明,如前文所述,四元數的旋轉需要進行多個乘法運算,亦即四元數乘法是旋轉的關鍵,例如定義四元數A、B及R如下:

其中a=[a2a3a4],b=[b2b3b4],r=[r2r3r4],擴展為16個乘積累加/累減:

或可將四元數視為一對複數,例如a和b是實數,則複數a+bi可表示為一對(a,b),四元數A=[a1+a2i+a3j+a4k],因此可表示為(a1+a2i)+(a3+a4i)j,其中ij=k,亦即將四元數A表示為負數對(a1+a2i,a3+a4i)。

將複數相乘的結果如下:

亦即兩個四元數可用兩對複數表示如下:

全部乘法運算合在一起等於16個實數或4個複數的乘積累加/減運算。

採用新指令集

Arm Helium技術包括一個向量複數乘法累加VCMLA指令,此指令可以執行一半的複數乘法,而使用兩個不同「旋轉」值的調用,可以運算出一個完整的複數乘法。

調用VCMLA兩次:

1.r=vcmla(r,[a1,a2],[b1,b2],0)

2.r=vcmla(r,[a1,a2],[b1,b2],90),產生r=[a1b1-a2b2,a1b2+a2b1],亦即每次調用僅需要兩個純量乘法累加。而VCMLA指令能夠一次運算多個f32和f16複數(定點運算有專用運算子)。而由於四元數可以用兩個複數表示,因此特別有用。

總而言之,四元數乘法的複雜運算如下所示。

此乘法可調用VCMLA指令四次來完成:

前述的16個實數乘法累加/減運算可改為對VCMLA指令的四個不同調用,每個調用執行四次乘法累加。在前兩次運算後,產生八個等效置換結果,如圖3所示。其中最好使用粗體的四個置換,因為它們對於第三次和第四次VCMLA調用有相同的輸入,這一點很重要,因為就指令獲得的速度而言,不可輕忽更改輸入所耗的時間。

圖3 旋轉置換

Helium應用範例

進行四元數乘法前,需先調用其他指令來置換和求逆輸入數據,再調用VCMLA指令。這些存取模式可用常量陣列或手動生成,以下實例會演示此版本的執行:

本四元數乘法的優化代碼如圖4所示,在VCMLA運算代碼中,灰底標示的部分代表四元數乘法。本實例使用多種方法:如{0,1,0,1}用增量/迴繞(viwdup)生成;{2,3,2,3}是人工構建的演算法;{3,2,1,0}用增量(vddup)生成;符號修改碼從表中載入,但也可用vdup/vmov生成。

圖4 四元數乘法代碼

加速指令處理

CEVA-Hillcrest Labs利用Arm作為其DSP核心。本文將Arm Cortex-M0和Cortex-M0+處理器具有的1-cycle或32-cycle的乘法選項,用於感測融合。雖然Cortex-M3也有相同的功能,但對於較小的代碼大小和MIPS而言,其具有更高效的代碼,因此更能節能。配備FPU的Cortex-M4,則提供了更小的代碼和更少的MIPS。

然而,借助Arm Helium的技術,可以同時執行多個四元數乘法,來快速地產生結果,如表1所示,其中NoQ為同時進行的四元數乘法運算;He為Helium擴展所採取的循環數;Cortex-M4為Cortex-M4執行採用的循環數;Cortex-M7為Cortex-M7執行採用的循環數;CPQ為給定運算的每個四元數運算循環數。

而表2則列出使用Arm Helium替代其他Cortex-M應用方案,所得到的速度提升,其中Ratio為給定運算與MVE運算相比處理時間的百分比;Speedup為MVE相對於給定運算的速度提升之比(比率的倒數)。

由此可知,Helium的效果顯著,僅用一個四元數就能提升指令速度約2.5倍,若使用八或更多個四元數,速度將至少提升4倍。

感測融合至關重要

隨著人們的生活越來越緊密,感測器在日常生活中變得越來越普遍。為了滿足這種便利性,感測器須以低功耗、快速、準確地認知周遭環境,因此,複雜四元數旋轉的感測器整合,便是建立此一認知的關鍵。

(本文作者Fabien Klein任職於Arm;Bryan Cook及Charles Pao皆任職於CEVA)

相關文章

- Advertisement -
- Advertisement -

最新文章

- Advertisement -

熱門文章

- Advertisement -

編輯推薦

- Advertisement -