DCM
旋轉運算扮演關鍵角色 感測融合促環境感知超展開
加速度計、陀螺儀和磁力計通常以消費者價格點提供有效的動作資訊。消費者級的慣性測量單元(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是實項,a是向量。
四元數沒有環架鎖定的風險,在數值上也比DCM更穩定,沒有冗餘因素、不需要昂貴的操作正交化、易於保持正規化,而正規化的四元數類似軸角法,可以表示旋轉角度的任意向量,因此更容易解釋—w是角度w=cos(θ/2)的變形版本,a=是軸的比例版本:
在四元數中,四元數數學的加法是向量加法,即所有元素的和;乘法略微複雜而且不可交換。如定義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=,b=,r=,擴展為16個乘積累加/累減:
或可將四元數視為一對複數,例如a和b是實數,則複數a+bi可表示為一對(a,b),四元數A=,因此可表示為(a1+a2i)+(a3+a4i)j,其中ij=k,亦即將四元數A表示為負數對(a1+a2i,a3+a4i)。
將複數相乘的結果如下:
亦即兩個四元數可用兩對複數表示如下:
全部乘法運算合在一起等於16個實數或4個複數的乘積累加/減運算。
採用新指令集
Arm Helium技術包括一個向量複數乘法累加VCMLA指令,此指令可以執行一半的複數乘法,而使用兩個不同「旋轉」值的調用,可以運算出一個完整的複數乘法。
調用VCMLA兩次:
1.r=vcmla(r,,,0)
2.r=vcmla(r,,,90),產生r=,亦即每次調用僅需要兩個純量乘法累加。而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)
極客橋照明無人機採用Vicor模組 實現小體積及輕量化
Vicor日前宣布,搭載Vicor DCM4623電源模組的極客橋GBI2020-Ⅰ型照明無人機已於夜間施工現場成功使用,並確保應急施工現場通宵照明。極客橋照明無人機飛行元件僅1.3公斤重,這對系統中各個環節的重量有著較為苛刻的要求,需要將電源模組重量控制在幾十克,而Vicor的電源模組滿足了該照明無人機特定需求。
極客橋GBI2020-Ⅰ型照明無人機可適應-30°C-60°環境溫度,抗7級風和10級大雨,3分鐘內完成部署,提供不間斷長時間照明。升空高度50米,單機模式能有效照亮約6000平方米,光通量10萬流明,可多機操作可無限疊加。
基於Vicor DCM4623體積小47.91mm×22.8mm×7.21mm,-55℃~125℃寬工作溫度,1244W/in3的功率密度,高達92%轉換效率的特性,使極客橋照明無人機能夠實現輕量化設計,將1.3公斤的機體元件搭載30克的電源模組。
該產品系列是一款隔離穩壓DC-DC轉換器,可在非穩壓寬範圍輸入,產生隔離輸出。憑藉其高頻零電壓開關(ZVS)拓撲結構,DCM轉換器為其各種輸入電壓範圍提供高效率。DCM模組轉換器可獨立使用,也可和下游負載點(PoL)產品一起使用,支援高效配電,為一系列非穩壓電源到負載點提供卓越的電源系統性能和連線性。DCM系列包括多種規格,支援±1%精度的穩壓調節。採用VIA封裝的DCM模組可利用整合的EMI濾波、精確的穩壓輸出和副邊地的控制介面提供更高級的功能。產品採用ChiP封裝技術,雙面散熱,提供了更為靈活的熱管理。
Vicor推出最新DC-DC轉換器ChiP模組
產品系列非常廣泛的DCM系列之最新成員採用3623(36 × 23 公釐)ChiP (Converter Housed in Package)封裝,支援 1,032W/in3的功率密度。最新80W DCM ChiP支援9~75V寬輸入電壓範圍,可提供12V、24V、28V和48V額定輸出電壓。
該DCM ChiP是一款DC-DC轉換器模組,可提供一個經過驗證的、比其它分立式解決方案更快的電源系統設計選項。DCM支援寬範圍、未穩壓的工作輸入電壓,可產生一個穩壓隔離式DC輸出。DCM採用高頻率零電壓切換(ZVS)拓撲,可在整個輸入電壓範圍內始終如一地提供高效率。
最新 DCM 廣泛應用於要更嚴格輸出穩壓的國防和工業。這些應用包括無人機、地面車輛、雷達、交通運輸以及工業控制等。DCM ChiP 現已開始提供軍用級版本,其可在-55°C的溫度下正常工作。
Vicor公司利用系列專利技術組合,設計、開發、製造和銷售模組化電源元件和完整的電源系統。公司總部設在馬塞諸塞州的安多弗,其產品銷往電源系統市場,包括企業和高性能計算、工業設備和自動化、電信和網路基礎設施、車輛和運輸、航空航太和國防。
快速分析開關轉換器(下) SEPIC結構實現DCM操作
圖1 第一個SEPIC採用平均模型,而右邊第二個實施逐週期法。
運用仿真來比較兩個電路的輸出回應。如圖2所示,兩個電路的回應非常相近。曲線的左邊描述了啟動序列,右邊部分顯示了兩個模型對負載階躍的回應。在這一階段具有相同的回應是首要證明顯示大訊號模型平均來說,正確地仿真SEPIC內部,而我們可以小訊號版本進行。
DCM PWM開關的大訊號模型由上篇文章的公式10中推導出的小訊號版本所代替,與Vorpérian博士先前考慮的不同。兩個模型得出了相同的分析,但Vorpérian博士先前考慮的是一個常見的配置(C端是接地的),而為了建立一個自動切換的DCM-CCM模型,保留了原本普通被動配置。採用DCM PWM開關的小訊號模型更新的電路圖如圖3所示。右邊的參數列表計算分析所需的所有係數k。
確定準靜態增益
為了確定準靜態增益,須要照圖2使所有電感短路,所有電容開路。這正是SPICE在計算工作偏壓點時所做的工作。然後重新排列所有的訊源和元件以簡化電路,使其更易於分析。當做這項工作時,建議始終實施全面的檢查,確定新電路的動態回應與圖3完美匹配。任何偏差都表明出了錯,或者簡化中的假設過於樂觀:重複該做法直到振幅和相位完美匹配為止。組合出圖4的電路。
圖2 平均模型的瞬態回應與逐週期模型完全符合。
圖3 這是運行在DCM模式的SEPIC的小訊號模型。節點d1是負載比偏差和進入點。所有小訊號係數都自動出現在參數視窗。
圖4 用來確定準靜態增益H0的最終直流電路。
幾行算式將使我們得到輸出電壓表達式:
公式1
公式2
將公式1中的Ic代入公式2解出Vout。會得到:
公式3
小訊號準靜態增益簡單地表示為:
公式4
時間常數的確定
我們將採用FACTs並單獨確定電路的時間常數,而不是用圖3的完整原理立刻求解整個轉移函數。這種方法提供了一個優勢,以處理透過對個別草圖的SPICE仿真獲得的結果。這大大有助於逐步前進和追蹤錯誤,而不至於在大量的工作時間後才發現最終的結果是錯誤的。
為了確定時間常數,將刺激減為0。在此,由於我們想要控制到輸出的轉移函數,刺激是d1。將其減為0有助於簡化電路,如圖5所示。
圖5 將刺激減為0有助於簡化電路。在此從驅動電感L1的電阻開始。
可以用幾個公式來描述這個電路,我們知道IC=IT:
公式5
公式6
公式7
公式8
將公式7代入公式8然後解出V(c)。替代公式8中的V(c)解出V(a)。接著可得:
公式9
如果重新排列由圖3的定義替換係數k,將得出時間常數1的定義:
公式10
二階時間常數指的是從C2端看到的電阻,而L1是短路的。新的電路如圖6所示。由於L1短路,a和c端在一起,簡化更新的電路為右邊的圖片。
圖6 使電感短路真正簡化電路。
再一次,幾個簡單的等式會很快得出結果:
公式11
公式12
將公式11代入公式12,然後解出VT並重新整理。會發現:
公式13
如果知道試圖確定涉及C3的三階時間常數,變壓器配置(完美耦合)使其兩端電壓等於0V:在動態轉移函數中電容器不起作用。因此第一個係數b1定義為
公式14
二階係數
對於二階係數,我們將設置電容C2處於其高頻狀態(以短路代替它),同時將確定驅動電感L1的阻抗。圖7說明了這種方法。因為輸出因C2短路,節點a和c都處於相同的0V電位。電路簡化為右側示意圖。
圖7 二階係數設置儲能元件之一處於其高頻狀態(C2),同時可確定電感兩端的電阻。
我們可寫出描述VT電壓的第一個等式。觀察到:第一,IT和IC是相同的;第二,VT=–V(c),我們有
公式15
因式分解VT/IT,L1兩端的電阻為
公式16
二階時間常數定義為
公式17
如果我們認為Vout=MVin,b2係數表示為
公式18
合併我們確定的時間常數,得出分母D(s)
公式19
如果我們考慮一個低Q值的近似值,這二階分母可以近似由兩級聯極點定義為
公式20
公式21
和合併為
公式22
零點的確定
如上文所述,當刺激調至零角頻率sz,,變形電路的回應為無訊號輸出(見圖1)。該運用現將包括將刺激復原和確定無訊號輸出的變形電路條件。圖8所示為我們須要研究的更新電路。無訊號輸出的有趣之處在於其傳播至其它節點。例如,如果Vout=0V,然後由於變壓器高邊連接,節點a也處於0V,所有涉及該節點的運算式可以簡化為如圖所示。如果輸出無訊號,則電流I1也為零,這代表Ic=I3。
圖8 在s=sz的特定條件下,觀察變形的電路,無訊號回應。
節點c的電壓定義為
公式23
因此,電流Ic等於節點c的電壓除以L1的電阻。
公式24
而電流等於
公式25
現將公式24代入公式25,然後視Ic=I3:
公式26
求解s,將係數k的值換為它們在圖3中的值,重新整理後會發現
公式27
這是個正的根源,因此為右半平面零點。透過收集所有的部分,發現極點和零點實際上是一個DCM Buck-Boost轉換器的極點和零點而得出完整的轉移函數:
公式28
及
公式29
公式30
公式31
和
公式32
最後的檢查,我們可比較Mathcad和圖1大訊號模型的SPICE仿真的動態回應。如圖9所示,曲線完美重合。
圖9 Mathcad和SPICE提供完全相同的回應(曲線完美疊加)。
另一個驗證是由採用不同的平均模型仿真相同的SEPIC結構建構。這也是一個自動切換的CCM-DCM模型,但接線方式稍有不同。圖10所示為兩種平均模型採用一個類似的SEPIC架構;圖11則證實兩個交流回應在相位和振幅上完全相同。
圖10 CoPEC平均模型包括單獨的開關和二極體連接。
圖11 DCM PWM開關和CoPEC DCM模型提供相同的動態回應。
快速分析技術為推導線性電路轉移函數提供了一種快速而高效的方法。在被動電路中,觀察可能實現的,而且是經常的,毋須寫一行代數就能得到轉移函數。隨著電路變得複雜和包括刺激源,不得不採用經典的KCL和KVL分析。但當確定分子和分母中個別的多項式因數時,如果有錯誤的話,很容易追蹤和只關注錯誤項。在複雜的電路中,小草圖和SPICE的幫助是極有用的。最後,最終結果以一種有意義的格式表示,並可直接區別出極點和零點位於何處。這是非常重要的,因為必須知道問題隱藏在轉移函數的何處。作為一個設計人員,必須平衡它們,這樣自然的產生傳播或元件的變化不會危及系統在運行中的穩定性。
(本文作者任職於安森美)