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