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