Arm傳感器融合
Phil?Burr?(Arm嵌入式產品組合管理總監),Bryan?Cook?(Hillcrest?Labs/CEVA研發部首席工程師)
本文引用地址:http://www.j9360.com/article/202003/411464.htm摘?要:出色的傳感器融合=出色的算法+出色的平臺。要贏得一級方程式比賽,需要一名出色的車手和一輛出色的賽車。同樣,要為用戶提供最佳體驗,需要出色的算法和出色的處理器。本文旨在揭示將Freespace傳感器融合算法與Arm設備結合使用能帶來驚人的性能、高效的成本和功耗指標的關鍵原因。
0 引言:傳感器中樞及其他
雖然基于慣性運動傳感器的傳感器融合已經存在了一段時間,但移動應用程序的最新發展使人們開始逐漸關注消費類和工業設備上傳感器融合的算法、處理器以及基礎結構。
從游戲機到智能電視遙控器,再到最近的智能手機,傳感器融合已被廣泛用于為消費類電子產品創建更直觀、有趣的交互體驗。十多年來,Hillcrest一直是這一領域的先驅。Hillcrest開發了專有的信號處理技術,利用MEMS慣性和磁性傳感器將人類的運動轉化為高質量的、隨時可使用的運動信息。
隨著越來越多新型智能手機和平板電腦開始采用“9軸”傳感器組,客戶一直在向Hillcrest尋求有關如何從這些傳感器中獲得最大性能的建議,以及如何應用新的基于運動的應用程序使其產品與眾不同。目標應用包括情境感知、室內導航和手勢控制。但是,這些應用需要“always-on(永遠在線)”的運動感應,傳感器會不斷采樣數據并尋找有意義的動作。向“always-on”轉變需要改變架構——將基于應用處理器(AP)進行的傳感器管理,轉變為專用的低功耗傳感器中樞核心。
隨著功耗和性能優勢的日益明顯,這些傳感器中樞已經迅速普及。但是,它們的成功將取決于算法和處理器的優化,以確保高性能和低功耗。本文將說明傳感器融合算法(例如Hillcrest的Freespace軟件)和處理器(例如Arm Cortex-M系列)如何協同工作,以形成兼具低功耗、傳感無所不在這兩大優點的成功產品。
1 滿足“always-on”傳感要求的應用
在討論傳感器融合在傳感器中樞中的技術基礎之前,讓我們看一下這種發展背后的驅動力:利用技術基礎來改善移動用戶體驗的應用程序。
情境感知是涵蓋其中某些應用程序的一類,從根本上講,這些應用程序使用手機的傳感器來檢測正在發生的事情,并使用該信息來改變手機的行為。例如現在,某些手機內置了多達20個物理傳感器(例如加速度計、GPS、Wi-Fi、氣壓計和照相機),每個傳感器都檢測手機、用戶和環境的不同之處。也有虛擬傳感器,例如您的日歷和本地流量報告。就像人腦解釋從其傳感器(觸覺、聽覺、視覺等)傳來的信息一樣,移動設備可以充當“大腦”來解釋來自這些傳感器的數據,以確定設備和用戶的情境,并利用這種情境提供更直觀的用戶體驗。
但是,情境感知取決于時間并受時間驅動。情境的變化取決于電話是正面朝下放在桌子上的時間是1 s還是1天,取決于某人只是將視線從屏幕上移開1 s,還是已經從屏幕上移開視線好幾分鐘。因此,為了確保正確解釋情境,必須不斷對其進行采樣。如果移動設備依賴于零星的情境截圖,則在解釋該情境時會出錯。由此感知所產生的情境對用戶來說不僅沒有益處,而且會破壞體驗。因此,傳感器的“always-on”對于這些應用程序的正常運行至關重要。
如果我們能夠為這些應用程序提供始終在線的智能情境感知信息,那么就可以為用戶帶來更有價值的體驗。一些比較常見的使用場景包括:在檢測到您正在駕駛并且不能用手和眼睛操作電話時啟用音頻通知和語音命令;在您離開辦公室之前提醒您通勤路上交通繁忙;當您在圖書館時切換為振動;自動跟蹤您白天的活動情況和燃燒的卡路里。
2 可靠性和準確性始于精度
1)算法端
如果傳感器僅具有12位精度,那么16位的處理精度就足以實現出色的算法。畢竟還多出4位,不是嗎?
好吧,不完全是。事實證明,對于算法設計師而言,最重要的事情之一是整個系統的數值精度。盡管傳感器分辨率也是關鍵因素,但它并不是所需條件的唯一決定因素。有許多用于校準、解釋、融合和其他功能的內部變量,它們需要各種級別的精度和范圍。比如在Kalman濾波器中進行方差估計時,同一項需要較大才能處理主要調整,需要較小才能處理精細調整。實際上,有些甚至可能需要浮點。
如果算法設計師無法提供足夠的分辨率,很可能影響到算法的性能。如果算法設計師在任何地方都使用完整的浮點運算,則會導致較差的平臺性能,產生額外的成本、運行時間變慢且功耗更高。正確的解決方案是將算法和平臺融合在一起。
由于變量范圍是固定的,定點運算需要更高的精度以避免上溢和嚴重下溢。同樣,復雜的定點算法在整個算法中通常需要二進制點(Q格式)的不同位置。
2)平臺影響
對于算法設計師來說,最好的平臺是在字長方面提供很大靈活性的平臺。這允許不同的算法設計要求在函數甚至變量基礎上與基礎處理器進行自定義擬合。這正是Hillcrest使用Freespace所做的工作,而Arm的功能則可以使該過程更加順利。
在Cortex-M系列處理器中,有許多可確保高效算法性能的功能。
3)Cortex-M0+
Cortex-M0+和Cortex-M23設計采用二級流水線,為傳感器融合應用提供一流的能效。它實現了Armv6-M指令集,并支持帶有32位結果(MULS)的可選1周期乘法。這是傳感器處理算法的關鍵指令。
Cortex-M0+還支持可選的單周期I/O總線,專用于外設,并且獨立于存儲器子系統。
4)Cortex-M3/Cortex-M4
Cortex-M3實現了Armv7-M指令集,該指令集增加了一些功能,使其能夠非常有效地使用定點算法實現復雜算法。
● 長乘法指令:SMULL。這將兩個32位整數相乘并將結果保存為64位整數。該指令對于實現32位定點數乘法至關重要。具有32位結果的32位乘法是不夠的,因為很少有僅需要最低有效的32位的情況。
● 長乘累加指令:SMLAL。該指令提高了定點矩陣乘法的內部循環和FIR濾波功能的效率。
● 對于大多數運算,靈活的操作數2允許按常數或寄存器進行移位。在定點算法中,例如,當對具有不同Q格式的定點變量進行運算或在定點變量之間進行轉換時,需要進行一些移位。由于Q格式是固定的,并且是編譯器通常已知的格式,因此可以將其嵌入單個指令中,從而大大提高了性能。
● 計算前導零指令:CLZ。該指令對前導零進行計數,并實現快速歸一化和算法自適應,以提供浮點算法的某些優點。
● 整數除法(UDIV和SDIV)。與在軟件中執行相同的除法相比,硬件除法提供了可衡量的性能優勢。請注意,這僅提供32位除法。對于定點數學,通常的情況是將64位數字除以32位數字,得到32位結果(長乘法指令的反函數)。雖然未提供此長除法指令,但此長除法可以利用UDIV指令進行更有效的除法。Cortex-M4增加了對可選浮點單元的支持,這極大地加速了不容易適應定點計算的算法,例如本應依賴于軟浮點實現的矩陣分解。此外,通過將許多DSP擴展利用到指令集,包括SIMD和具有飽和算法的指令,可以進一步改善定點數學。
Cortex-M4處理器中的浮點單元(FPU)提供如下。
● 單精度(C浮點)數據處理操作的32位指令。
● 乘法指令和累加指令的組合可提高精度(融合MAC)。
● 對轉換、加法、減法、與可選累加的乘法、除法和平方根運算的硬件支持。
● 對異常和所有IEEE舍入模式的硬件支持。
● 32個專用的32位單精度寄存器,也可尋址為16個雙字寄存器。
● 解耦的三級指令流水線。
Cortex-M33處理器增加了TrustZone安全性,使開發人員能夠使用熟悉的編程模型來更輕松地實現軟件隔離,并為當今的物聯網和嵌入式設備所需的安全性奠定了基礎。
5)精度摘要
Arm提供的字號選項和跨不同產品的智能功能安排可靈活地根據所需平臺定制算法。對于Freespace,有針對Cortex-M0+、Cortex-M23、Cortex-M3和Cortex-M4的版本。雖然每個平臺的具體實現各不相同,但是由于Arm設備中的智能體系結構,移植變得容易。然后,由于我們的算法在內部是完全模塊化的,并且在結構和流程上都具有自適應性,因此Freespace與Arm平臺的配對非常簡單,并且可以在給定的功耗、成本和尺寸目標下實現最佳性能。
3 如果沒有接口,系統就沒用了
1)算法端
根據定義,傳感器融合是指讀取多個傳感器,然后計算并輸出一組推斷的組合輸出,以供系統其余部分使用。如果處理器中沒有良好的I/O接口和任務管理功能,則算法性能會受到影響。更好的算法至少需要減少采樣檢測、降低延遲和抖動、可靠的數據鏈接以及對輸入和輸出數據進行分組的能力。
2)平臺影響
Cortex-M處理器支持線程模式和處理者模式,用于將應用程序與系統資源正確隔離,支持SysTick計時器,用于在任務之間進行時間分片,并支持具有復雜中斷管理方案的嵌套矢量中斷控制器,軟件開銷非常低。
3)接口和平臺摘要
Arm Cortex-M處理器系列提供了一組接口,I/O管理和任務管理技術,以提供復雜的任務支持,例如Freespace傳感器融合軟件。復雜的算法需要復雜的硬件才能有效執行低功耗。
4 傳感器解釋和校準
1)算法端
傳感器數據包括許多損傷——噪聲、非線性和失調。甚至對于許多傳感器而言,哪怕知道基準點也是極其困難的。舉例如下。
根據加速度計讀數計算出的重力矢量估算值將校準后的磁力計傳感器讀數轉換為航向角。但是,航向的計算非常敏感。即使在零重力偏移(ZGO)估算中出現17 mg的誤差,也會導致1°的俯仰角誤差,進而導致多達2°的航向角誤差。但是加速度計并不包含絕對零點或ZGO值。零重力偏移(ZGO)值隨每個單獨的傳感器而變化,甚至對于給定的傳感器也會隨時間變化。
請注意,此ZGO示例針對具體情況而言只是嘈雜的加速度計數據(當然針對一般情況而言只是嘈雜的傳感器數據)的眾多可能來源之一。每個傳感器都有其自己的一系列噪聲挑戰,可以說磁力計構成了最大的困難(外界磁場變換導致的非線性偏移)。因此,高端算法(如Freespace)需要隨著時間的推移以及環境變化自動學習并跟蹤這些損害,以便從傳感器數據中消除噪聲。
如果傳感器融合算法轉而將嘈雜的傳感器數據作為輸入,則生成的融合數據也將是嘈雜的。Freespace傳感器融合軟件具有卓越性能的主要原因在于盡力從輸入的原始、嘈雜的傳感器數據中找出真實的傳感器信息,從而從根源上優化輸出的結果中的噪聲。
2)平臺影響
從嘈雜的傳感器數據中獲取真實信息取決于能否使用正確的平臺功能。首先,系統需要一種有效的方法來實現持久性存儲。除了在會話中之外,還允許在會話之間進行累積學習。
Cortex-M處理器通過支持閃存和EEPROM提供持久性存儲。處理器可以通過閃存或RAM運行。由于指令流水線的存在和Thumb-2指令集的使用,閃存提取已經優化。
該算法模塊,特別對于磁力計而言,包括許多復雜的自適應濾波、模式識別和矩陣管理組件。為此,需要支持性的計算和分支指令集以及先進的內存管理技術。如上所述,這包括支持除法、計數前導零,立即數據指令等。
3)傳感器解釋和校準摘要
Arm處理器的豐富功能使Hillcrest能夠定制傳感器解釋和校準模塊的實施,同時保持算法性能和系統性能。
5 有時所需的輸出不是事實
1)算法端
想象一下,傳感器是完美的,傳感器融合算法也是完美的。進一步想象一下,我們正在使用顯示器上的光標,在完美傳感器上運行的完美傳感器融合算法是否會產生用戶喜歡的完美光標控制系統?其實不行。
原因是手持設備的所有動作并不都是有意的。還有人為震動引起的無意動作。用戶實際上只希望看到有意動作去驅動光標,而不是因震動產生的無意動作。試想一下,就相當于您將激光筆照在屏幕上時發生了抖動。但是這種抖動是用戶根本不想看到的。
由于這種情況遠遠超出了震動。傳感器融合通常必須權衡平滑度和精度。有時所需的輸出是預期錯誤最少的輸出,有時則是與最近歷史記錄最一致的輸出。在所有這些情況下,所需的輸出并不是真正真實的信息,這代表了諸如Freespace的出色傳感器融合實施中的額外處理步驟。
2)平臺影響
Cortex-M4和Cortex-M33包括一個高效的單周期MAC,負責加速大多數DSP算法的運行,從而使自適應濾波特別容易實現。MAC支持16位和32位數據的各種單周期指令。例如,在一個周期內執行(32 x 32 +64 → 64)運算。
3)所需的輸出處理摘要
Arm處理器的基本功能使此步驟易于實現,并使Hillcrest可以將實現與處理器的特定功能進行匹配,同時在保持低功耗的同時保持算法和系統性能指標。
6 沒有電源管理,我們就死定了
1)算法端
對于大多數客戶來說,會使用戶在10 min內耗盡電池電量的出色性能是不被接受的。實際上,即使長時間沒電也不是很理想。因此,Freespace等復雜算法包括許多可優化功耗的特殊功能。
這些功率優化技術包括混合模式運算、樣本間預測、多速率運算等。它們還充分利用了傳感器本身的電源管理功能,有時還會利用處理核心的電源管理功能。目標是在不影響性能的情況下最大化處理核心、傳感器甚至I/O接口的空閑時間和范圍。
2)平臺側
Cortex-M包括許多功能,可支持處理器級別和設備級別的電源管理。當處理器本身具有各種級別的睡眠模式時,可以按需關閉某些模塊的電源。喚醒中斷控制器可用于最大限度地節省功率。
創建事件驅動的軟件需要2個指令和1個控制位:
● WFI等待中斷;
● WFE等待事件;
● SLEEP-ON-EXIT位。
處理器保持睡眠模式,直到中斷或事件到來。處理程序代碼執行完成后,處理器將返回睡眠模式。
3)電源管理摘要
電源管理的目標是在不犧牲算法 性能的情況下實現出色的電源性能。通過將Freespace等復雜算法與Cortex-M等功能強大且架構合理的處理器相結合,可以實現出色的系統設計。關鍵是隨著時間的推移提高能源效率,這是指能夠在整個運算時間范圍內以最低功耗執行具有等待時間的算法。諸如Cortex-M4之類的高性能處理器大部分時間都處于深度睡眠狀態,因為它只需要短暫的活動時間即可執行代碼。因此,平均功耗大大降低。最終結果是實現了更簡單、更低功耗的系統設計。
7 軟件工具和生態系統
毫無疑問,為傳感器融合系統開發復雜的算法需要好的工具。Arm擁有當今市場上最大的工具生態系統,擁有來自各類競爭性供應商、開源社區和Arm的超過35種IDE和調試系統。構建復雜系統需要多種編譯器、調試器、操作系統和各種軟件模塊。
8 結論
在配備適當工具的前提下,出色的傳感器融合系統設計既需要出色的傳感器融合算法,也需要出色的平臺來運行。將兩者組合在一起就像為頂級賽車配備頂級車手一樣。Freespace和Arm就是這樣的組合。
在http://bit.ly/DSPCortex-M,可發現Arm DSP擴展、軟件庫、生態系統合作伙伴和資源。
評論