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