慣性測量裝置 (IMU) 可廣泛用于從加速計、陀螺儀及其他傳感器持續(xù)穩(wěn)定地提供多軸位置信息。鑒于多自由度 (DOF) 特性,所有生成數(shù)據(jù)(即來自這些設(shè)備的合并數(shù)據(jù)流)會使系統(tǒng)處理器一直處于喚醒模式,并且由于要篩選原始 IMU 數(shù)據(jù)來提取有用的手勢和系統(tǒng)位置信息,因此使它們不堪重負。設(shè)計人員需要設(shè)法為主處理器減負,讓其不再承擔此類篩選功能。而機器學(xué)習則可能解決這一問題。
本文將首先簡要介紹 IMU 的用途,接著介紹 STMicroelectronics 的 LSM6DSO。然后,借此器件闡釋在 IMU 中添加和集成機器學(xué)習與決策樹處理功能后,為何能為主機應(yīng)用處理器分擔實時位置和運動處理,以及如何在實際應(yīng)用中使用這些功能。
IMU 簡介
IMU 將各種運動傳感器集成到一個器件中,可提供高精度定位信息。IMU 可用于各種應(yīng)用,包括消費(手機)、醫(yī)療(成像)、工業(yè)(機器人)和軍工(航向跟蹤)。該裝置對傳感器的運動作出響應(yīng),包含以下一種或多種運動傳感器類型:
陀螺儀傳感器測量角度位置變化,通常以每秒度數(shù)表示。隨時間進行角速度積分可測得行程角度,用于追蹤方向變化。陀螺儀追蹤與重力無關(guān)的相對運動,因此來自傳感器偏置或積分的誤差會造成稱為“漂移”的位置誤差,但可以通過軟件進行補償。
加速計測量線性加速度,包括設(shè)備運動造成的加速度分量和重力造成的加速度。加速度的測量單位為 g,1 g = 地球重力 = 9.8 米/秒2。加速計分為單軸、雙軸和三軸,分別定義為 X、Y、Z 坐標系。
磁傳感器測量磁場強度,通常以微特斯拉 (μT) 或高斯(100 μT = 1 高斯)為單位。移動電子設(shè)備中最常用的磁傳感器是三軸霍爾效應(yīng)磁力儀。通過計算檢測到的地球磁場角度,并將此測量的角度與加速計測量的重力進行比較,即可非常精確地測量出設(shè)備相對于地磁北極的航向。
使用 IMU 的運動追蹤功能采用了傳感器融合技術(shù),根據(jù)已知的起點和方向,推導(dǎo)單一、高精度的相對設(shè)備方向和位置的估計值。傳感器融合多通過軟件,使用 IMU 制造商或應(yīng)用開發(fā)人員開發(fā)的復(fù)雜數(shù)學(xué)算法來組合 IMU 的各種運動傳感器輸出。
使用傳感器融合進行位置計算可得到以下測量結(jié)果:
重力 – 具體而言地球重力,不含設(shè)備感應(yīng)到的由運動造成的加速度。當 IMU 靜止時,加速計測量重力矢量。當 IMU 運動時,重力測量需要融合加速計和陀螺儀的數(shù)據(jù),并減去運動造成的加速度。
線性加速度 – 等于加速計測得的設(shè)備加速度,但要通過軟件減去重力矢量。IMU 線性加速度可用于測量三維空間中的運動。
方向(海拔)– 歐拉角集合,包括偏航角、俯仰角和翻滾角,測量單位為度。
旋轉(zhuǎn)矢量 – 由加速計、陀螺儀和磁力儀傳感器的數(shù)據(jù)組合得出。旋轉(zhuǎn)矢量表示圍繞特定軸的旋轉(zhuǎn)角度。
IMU 誤差源
陀螺儀通過角速度變化檢測方向,但隨著時間推移,陀螺儀往往會漂移,因為它僅檢測變化而沒有固定的參照系。若將加速計數(shù)據(jù)添加到陀螺儀數(shù)據(jù)中,軟件可以最大限度地減小陀螺儀偏置,從而得到更準確的位置估計。加速計檢測相對于重力的方向變化,該數(shù)據(jù)可用于給陀螺儀定向。
加速計對于靜態(tài)(與動態(tài)相反)計算更準確。當系統(tǒng)已處于運動狀態(tài)時,利用陀螺儀檢測方向要更好。加速計反應(yīng)迅速,若只使用該數(shù)據(jù),加速計抖動和噪聲會產(chǎn)生累積誤差。此外,由于重力之類的外力,加速計往往會使加速度失真,這也會作為噪聲在系統(tǒng)中累積。對此數(shù)據(jù)進行濾波可提高精度。
若將陀螺儀的短期精度與加速計的長期精度相結(jié)合,依靠每種傳感器的優(yōu)勢來抵消或至少減輕另一種傳感器的劣勢,可以獲得更精確的方向讀數(shù)。兩種傳感器類型的互補有助于減少誤差,但還有其他方法可用來減少誤差。
融合濾波可用來減少誤差
IMU 軟件使用濾波來最大限度地減小 IMU 數(shù)據(jù)的定位誤差。有多種濾波方法可融合傳感器數(shù)據(jù),每種方法都有不同程度的復(fù)雜性。互補濾波結(jié)合了高通陀螺儀濾波和低通加速計濾波。因此,加速計數(shù)據(jù)中的高頻噪聲會在短期內(nèi)濾除,并且采用陀螺儀數(shù)據(jù)進行平滑處理。
執(zhí)行所有這種傳感器處理、濾波和融合所需的計算能力耗能較大;對于電池供電型系統(tǒng),尤其是不需要 IMU 信息連續(xù)傳輸時,這可能是個問題。對于許多嵌入式應(yīng)用,如果 IMU 可以生成中斷,將主機處理器從休眠模式喚醒,從而啟動處理或采取某些中斷結(jié)果操作,即可明顯降低功耗。為了實現(xiàn)此功能,一些 IMU 供應(yīng)商開始在 IMU 中加入處理和決策功能。
讓 IMU 進行思考
STMicroelectronics 的 6DOF LSM6DSO 就是一款這樣的 IMU。6DOF LSM6DSO 包含三個微機電系統(tǒng) (MEMS) 陀螺儀和三個 MEMS 加速計,可以檢測方向變化和手勢,無需主機處理器的監(jiān)管或輔助,所有這些功能都在板上處理。在最高性能模式下運行時,該 IMU 的功耗為 0.55 毫安 (mA)。
在此模式下,LSM6DSO 可以持續(xù)監(jiān)測自身在空間中的海拔高度和運動,并且可以在預(yù)定條件下生成中斷,喚醒主機處理器來執(zhí)行傳感器流的額外處理。使用始終保持運轉(zhuǎn)的低功耗 IMU 很有效,因為它讓主機處理器休眠,僅在必要時喚醒。這種節(jié)能方法在電池供電型系統(tǒng)中是值得嘗試和信賴的。
除了陀螺儀和加速計傳感器之外,LSM6DSO IMU 還包含一個信號調(diào)節(jié)和濾波器模塊、一個最多可運行 16 個程序的有限狀態(tài)機 (FSM)(所有程序共享可配置的通用輸出數(shù)據(jù)速率)以及一個機器學(xué)習內(nèi)核。結(jié)合使用這些資源,可以在以下情況下生成事件檢測中斷:
- 自由落體
- 喚醒
- 6DOF 方向
- 單擊和雙擊檢測
- 活動/非活動識別
- 靜止/運動檢測
信號調(diào)節(jié)塊應(yīng)用存儲在靈敏度寄存器中的轉(zhuǎn)換系數(shù),換算原始傳感器數(shù)據(jù)。然后,將原始 IMU 傳感器數(shù)據(jù)流轉(zhuǎn)換為 16 位半精度浮點 (HFP) 格式,以便 FSM 可以理解。IMU 的 MEMS 傳感器(加速計和陀螺儀)以及兩個模數(shù)轉(zhuǎn)換器 (ADC) 和四個濾波器塊如圖 1 所示。濾波器塊用于將 MEMS 傳感器的模擬信號轉(zhuǎn)換為濾波后的數(shù)字數(shù)據(jù)流。
圖 1:LSM6DSO IMU 使用兩個 ADC 將內(nèi)部 MEMS 加速計和陀螺儀的模擬信號轉(zhuǎn)換為數(shù)字流。ADC 之后是四個數(shù)字濾波器,用于調(diào)節(jié)信號,以便內(nèi)部 FSM 和機器學(xué)習內(nèi)核以及主機處理器作出決策。(圖片來源:STMicroelectronics)
可編程 FSM 由一個配置塊和 16 個程序塊組成。FSM 配置塊對整個 FSM 進行配置和控制。對于 16 個 FSM 程序塊,每個塊都由輸入選擇器塊和代碼塊組成(圖 2)。這兩個塊都由寫入 IMU 內(nèi)部寄存器的數(shù)值來控制。
圖 2:LSM6DSO IMU 中包含 16 個 FSM 程序塊,每個塊都是由輸入選擇器塊和代碼塊組成。(圖片來源:STMicroelectronics)
輸入選擇器塊將選定的輸入數(shù)據(jù)從一個 IMU 內(nèi)部傳感器或連接到 IMU 傳感器中樞的外部傳感器發(fā)送到代碼塊。IMU 傳感器中樞可以容納多達四個額外的外部傳感器,如磁力儀,這些外部傳感器可通過 I2C 端口連接到 IMU。
FSM 代碼塊包含一個狀態(tài)機程序。程序塊數(shù)據(jù)段的固定部分由六個字節(jié)組成,這些字節(jié)用于定義程序的閾值數(shù)、滯后、掩碼和定時器設(shè)置。程序塊的可變數(shù)據(jù)段保存了每個程序的實際閾值、滯后、掩碼和定時器設(shè)置,如數(shù)據(jù)段固定部分中存儲的數(shù)值所定義。
數(shù)據(jù)段的固定部分還定義了代碼塊存儲器占用空間中可變部分的大小、可編程復(fù)位向量和程序計數(shù)器。由于這些數(shù)值都是 8 位,因此每個 FSM 程序最大字節(jié)數(shù)為 256。
程序塊的指令段包含了實際的 FSM 程序。程序指令包括各種操作碼,用于對照閾值檢查傳感器輸入、檢查過零以及檢查定時器值以判斷是否超時。操作碼還指定了由當前 FSM 狀態(tài)轉(zhuǎn)移到下一個 FSM 狀態(tài)所需的條件。此外,有些指令操作碼用于以下操作:選擇存儲在程序塊可變數(shù)據(jù)段中的閾值和掩碼;設(shè)置 IMU 傳感器中樞多路選擇器,以連接到四個可能的外部傳感器之一;以及對中斷進行斷言。
每個 FSM 程序都可以生成中斷,并根據(jù)所選擇的輸入信號,修改相應(yīng)的寄存器值。這些寄存器值用于將數(shù)據(jù)從 IMU 傳送到主機處理器。
FSM 可視為缺少算術(shù)邏輯單元的微處理器。FSM 可以作出選擇、執(zhí)行比較,并根據(jù)比較結(jié)果決定下一個狀態(tài)。但 FSM 只能根據(jù)比較結(jié)果計算布爾值。
FSM 并不是微處理器。它可以進行比較,并根據(jù)比較結(jié)果對程序流程進行簡單的更改。FSM 是很簡單的機器,因而可直接用 FSM 操作碼進行編程。FSM 沒有高級語言編譯器,但程序通常很簡單,不需要編譯器。
使用 FSM
LSM6DSO IMU 的 FSM 可以經(jīng)過編程,生成由預(yù)定義運動模式激活的中斷信號。FSM 可同時運行多達 16 個獨立程序以檢測運動。每個 FSM 程序由一系列 “if-then-else” 步驟組成,以 LSM6DSO 的加速計和陀螺儀的傳感器數(shù)據(jù)流作為輸入。如果任何 FSM 程序檢測到與預(yù)編程模式相匹配的狀態(tài),F(xiàn)SM 就會向主機處理器生成中斷。
在 16 個可用的 FSM 程序中,每個都包含三個存儲器段,分別用于固定數(shù)據(jù)、可變數(shù)據(jù)和指令。單個 FSM 程序框圖如圖 3 所示。
圖 3:STMicroelectronics 的 LSM6DSO IMU 中的 FSM 包含 16 個代碼塊,每個代碼塊包含三個存儲器段,分別用于固定數(shù)據(jù)、可變數(shù)據(jù)和指令。(圖片來源:STMicroelectronics)
代碼塊中單個程序的結(jié)構(gòu)由存儲器塊中的三個區(qū)段組成:
- 固定數(shù)據(jù)段,在所有 FSM 程序中,這部分大小均相同
- 可變數(shù)據(jù)段,這部分大小可變
- 指令段,包含條件和命令
對每個 FSM 代碼塊進行編程時,需要將決定 FSM 行為的編程值加載到這三個存儲器段中。STMicroelectronics 在可下載的 Unico 評估開發(fā)軟件與開發(fā)環(huán)境中,提供了 FSM 編程工具。STMicroelectronics 還在 Unico 開發(fā)工具中隨附了幾個 FSM 樣例程序,以幫助用戶學(xué)習 FSM 編程。這些樣例程序演示了幾種基于 IMU 的中斷場景,包括:
- 基本計步器
- 自由落體的系統(tǒng)
- 簡單的運動檢測
- 被拿起的系統(tǒng)
- 搖擺的系統(tǒng)
- 停止運動(靜止)的系統(tǒng)
- 手腕傾斜
FSM 樣例程序演示了各種 FSM 功能的使用。任何這些樣例程序都可以安裝到 STEVAL-MKI109V3 eMotion STM32 評估板等 IMU 演示平臺中,這個平臺帶有一個 28 針的插座,可插入 LSM6DSO STEVAL-MKI197V1 IMU 適配器板。若要使用其中一個樣例程序?qū)?STEVAL-MKI109V2 板進行編程,只需在 Unico 開發(fā)環(huán)境中點擊數(shù)下即可完成。
然而,LSM6DSO 卻遠不止這么簡單。
機器學(xué)習核心
LSM6DSO IMU 還包含了一個更復(fù)雜的可編程模式匹配引擎,稱作機器學(xué)習核心。這樣可以使用來自內(nèi)部 IMU 傳感器和任何所連接外部傳感器的多個傳感器數(shù)據(jù)流,來識別各類運動。可識別的活動類別包括靜止(無運動)、步行、慢跑、騎行和駕駛。活動分類則采用機器學(xué)習核心的決策樹形式。
機器學(xué)習核心由三個塊組成:傳感器數(shù)據(jù)塊、計算塊和決策樹(圖 4)。機器學(xué)習核心的傳感器數(shù)據(jù)塊匯集了來自 IMU 內(nèi)部加速計和陀螺儀以及通過 I2C 接口連接到 IMU 的任何外部傳感器的數(shù)據(jù)流。計算塊可使用預(yù)定義的濾波參數(shù)對傳感器數(shù)據(jù)進行濾波,并且計算窗口統(tǒng)計數(shù)據(jù),包括傳感器數(shù)據(jù)的均值、方差、峰峰幅度、最小值、最大值和過零。決策樹將傳感器數(shù)據(jù)統(tǒng)計值與閾值進行比較,對輸入數(shù)據(jù)進行分類。
圖 4:STMicroelectronics 的 LSM6DSO IMU 的機器學(xué)習核心由三個塊組成:傳感器數(shù)據(jù)塊,用于匯集來自內(nèi)部和外部傳感器的數(shù)據(jù)流;計算塊,用于對傳感器數(shù)據(jù)進行濾波和統(tǒng)計計算;以及決策樹,根據(jù)計算的統(tǒng)計信息對活動進行分類。(圖片來源:STMicroelectronics)
與 LSM6DSO 的 FSM 一樣,Unico 開發(fā)環(huán)境中的專用工具可對 IMU 的機器學(xué)習核心進行編程。
有限狀態(tài)機和機器學(xué)習核心也可與主機處理器結(jié)合使用,實現(xiàn)更為復(fù)雜的位置跟蹤算法。STMicroelectronics 可下載的 X-CUBE-MEMS1 軟件包可用于該公司的 STM32Cube 開發(fā)系統(tǒng),并且包括以下樣例軟件例程:
活動識別 – 提供有關(guān)用戶正在執(zhí)行的活動類型信息,包括保持靜止、步行、健走、慢跑、騎行或駕駛。該算法常用于手機或某些可穿戴設(shè)備。
運動持續(xù)時間檢測 – 與計步器數(shù)據(jù)結(jié)合使用時,運動持續(xù)時間檢測可用于確定用戶活動的秒數(shù)。該算法常用于可穿戴健身或健康跟蹤設(shè)備。
振動或運動強度檢測 – 提供有關(guān)用戶運動強度的信息,可識別的運動強度范圍為 0(靜止)到 10(全速跑)。該算法常用于手機或某些可穿戴健身設(shè)備。
攜帶位置識別 – 提供有關(guān)用戶如何攜帶設(shè)備的信息,可區(qū)分以下位置:靜置桌面、手持、貼近頭部、襯衣口袋中、褲子口袋中、夾克口袋中以及戴在擺動手臂上。該算法常用于手機或其他可攜帶設(shè)備以檢測活動相關(guān)情境。
總結(jié)
為了維持定位和使用 IMU 數(shù)據(jù)檢測運動和手勢,需要保持主機處理器持續(xù)運行,對于由電池供電的嵌入式設(shè)計來說,這一目標可能難以實現(xiàn),因為主機處理器的功耗相當高。然而,新一代低功耗 IMU 的板上處理能力足以執(zhí)行機器學(xué)習,允許主機處理器以低電流模式休眠,在必要時才喚醒,從而解決了這一問題。
評論
查看更多