IMU:透過板載機器學習功能讓主機進入休眠

作者:Steve Leibson

資料提供者:DigiKey 北美編輯群

慣性量測單元 (IMU) 的應用相當廣泛,可從加速計、陀螺儀及其他感測器穩定地提供多軸位置資訊流。所有生成的資料,亦即來自這些裝置的合併資料流,均具有多重自由度 (DOF),導致系統處理器維持在常醒模式,且因篩選 IMU 原始資料以擷取實用的姿態與系統位置資訊而不堪重負。設計人員需要方法,將主處理器的篩選功能負擔卸下,而答案可能就在於機器學習。

本文首先將概述 IMU 的用途,接著介紹 STMicroelectronics 推出的 6DOF LSM6DSO 產品。接著以此裝置為例,說明在 IMU 中添加並整合機器學習與決策樹處理後,為何能省去主機應用處理器的即時位置與移動處理負擔,以及如何在實際應用中發揮這些功能。

IMU 快速回顧

IMU 將多個動作感測器整合到單一裝置中,可提供相當準確的位置資訊。IMU 能用於多種應用,包含消費性產品 (手機)、醫療 (造影)、工業 (機器人) 以及軍事 (頭部追蹤) 等用途。這類裝置會對感測器的動作做出回應,並含有以下一種或多種類型的動作感測器:

  • 陀螺儀感測器會測量角位置的變化,通常以每秒幾度來表示。將時間變化下的角速率積分計算後,便能測得行進角度,可用於追蹤方位的變化。陀螺儀會追蹤相對移動且不受重力影響,因此感測器偏差或積分所造成的誤差會導致位置誤差 (稱為「漂移」),而這可以使用軟體予以補償。
  • 加速計會測量線性加速度,包括裝置移動導致的加速度分量,以及重力產生的加速度。加速度的測量單位為 g,而 1 g 代表地球的重力加速度,即 9.8 m/s2。市面的加速計分為單軸、雙軸以及三軸,三軸型即可定義 X、Y、Z 座標系。
  • 磁力感測器會測量磁場強度,通常以微特斯拉 (µT) 或高斯 (100 µT = 1 高斯) 為單位。行動電子裝置最常用的磁力感測器是三軸霍爾效應磁力計。計算偵測到的地球磁場角度,並將測得角度與加速計測得的重力比較,便能以高準確度測得裝置相對於磁北的航向。

使用 IMU 進行動作追蹤時會採用感測器融合技術,從已知起始點與方位,針對裝置的相對方位與位置推演出高準確度的單一預估值。感測器融合技術通常會使用軟體並藉由 IMU 製造商或應用開發人員所開發的複雜數學演算法,將 IMU 的多種動作感測器輸出結果合併。

使用感測器融合技術來計算位置可產出以下測量值:

  • 重力 – 更具體地說是地球的重力,會排除裝置運動所產生的加速度。加速計會測量 IMU 靜止時的重力向量。當 IMU 處於運動狀態時,重力測量作業需要將加速計與陀螺儀的資料融合,並減去運動所產生的加速度。
  • 線性加速度 – 此加速度相當於加速計所測得的裝置加速度,但使用軟體減去重力向量。IMU 線性加速度可用來測量三維空間中的移動。
  • 方位 (姿態) – 這組歐拉角包含:偏航 (方位角)、俯仰以及滾轉,測量單位為「度」。
  • 旋轉向量 – 結合加速計、陀螺儀及磁力計感測器的資料所推演出的向量。旋轉向量代表繞著指定軸旋轉的角度。

IMU 誤差來源

雖然陀螺儀會透過角速度的變化來感測方位,但其往往會隨著時間發生漂移,這是因為陀螺儀只能感測變化,本身沒有固定的參考座標系。如果將加速計資料加入陀螺儀資料中,就可使用軟體將陀螺儀的偏差降至最低,讓位置預估值變得更準確。加速計可感測相對於重力的方向變化,而此資料可用於確定陀螺儀的方位。

加速計進行靜態計算時的準確度,比進行動態計算時更高。在系統已經移動的情況下,陀螺儀可達到更好的方位偵測效果。加速計的反應速度很快,因此若單獨使用該資料,加速計的抖動與雜訊會產生累積性誤差。另外,礙於地心引力等外力因素,加速計往往會讓加速度失真,而這也會在系統中累積成為雜訊。若對資料進行過濾,就可提升準確度。

如果將陀螺儀的短期準確度與加速計的長期準確度相互結合,截長補短,便能產生出更精確的方位讀數。這兩種類型的感測器能彼此互補,有助於減少誤差,但也可使用其他方式來減少誤差。

需使用融合濾波技術減少誤差

IMU 軟體使用濾波技術,將 IMU 資料的定位誤差降到最低。若要融合感測器的資料,有幾種濾波方法可以使用,但複雜度各不相同。互補濾波器結合了高通陀螺儀濾波器,以及低通加速計濾波器。因此,加速計資料中的高頻雜訊會在短時間內濾除,並透過陀螺儀資料進行平滑處理。

執行全部這些感測器處理、濾波及融合操作均需要運算能力,因此會耗用電力,這對電池供電式系統來說會造成問題,特別是在不需要提供連續不斷的 IMU 資料流時,更是如此。對許多嵌入式應用來說,如果 IMU 能夠產生中斷,將主機處理器從睡眠狀態中喚醒,從而在中斷後開始處理或採取某些動作,則可以顯著節省電力。為了實現此功能,有些 IMU 廠商開始在 IMU 中加入處理與決策功能。

讓 IMU 進行思考

STMicroelectronics 的 6DOF LSM6DSO 便是這種類型的 IMU。此裝置包含三個微機電系統 (MEMS) 陀螺儀和三個 MEMS 加速計,僅需使用板載運算能力便可偵測方位變化與姿態,無需主機處理器的監督或協助。這款 IMU 在最高效能模式下會耗用 0.55 mA 的電力。

在此模式下,LSM6DSO 能持續監控自身在空間中的姿態與移動,並可在預先安排的情況下產生中斷,以喚醒主機處理器對感測器資料流進行額外處理。使用能隨時保持運作的低功率 IMU 相當有益,如此一來即可讓主機處理器休眠,只在需要時才會喚醒。這種方法已經過驗證,可在電池供電系統中節省電力。

除了陀螺儀和加速計感測器之外,LSM6DSO IMU 還包含一個訊號調整與濾波器區塊、一個最多可執行 16 個程式的有限狀態機 (FSM) (所有程式都共用可設定的輸出數據傳輸率),以及一個機器學習核心。一併使用這些資源,便可針對以下情況產生事件偵測中斷:

  • 自由落下
  • 喚醒
  • 6DOF 方位
  • 按一下及按兩下感測
  • 活動/無活動辨識
  • 靜止/運動偵測

訊號調整區塊會套用儲存在靈敏度暫存器中的轉換因數,對感測器的原始資料進行調整。然後會將 IMU 感測器的原始資料流轉換成 FSM 能夠理解的 16 位元半精度浮點數 (HFP) 位元組格式。圖 1 顯示此 IMU 的 MEMS 感測器 (加速計與陀螺儀),以及兩個類比數位轉換器 (ADC) 和四個濾波器區塊。濾波器區塊用於將類比 MEMS 感測器訊號轉換成經過濾波的數位資料流。

STMicroelectronics 的 LSM6DSO IMU 示意圖

圖 1:LSM6DSO IMU 使用兩個 ADC,將內部 MEMS 加速計與陀螺儀產生的類比訊號轉換成數位資料流。ADC 後面緊接四個數位濾波器,用於調整訊號,以供內部 FSM、機器學習核心以及主機處理器進行決策。(圖片來源:STMicroelectronics)

可編程的 FSM 包含一個設定區塊和十六個程式區塊。FSM 的設定區塊會對整個 FSM 進行設定與控制,而對於 FSM 的十六個程式區塊,每個區塊均由輸入選擇器區塊和程式碼區塊組成 (圖 2)。這兩個區塊皆由寫入 IMU 內部暫存器的數值控制。

STMicroelectronics 的 LSM6DSO IMU 中 FSM 的十六個程式區塊示意圖

圖 2:LSM6DSO IMU 的 FSM 包含十六個程式區塊,每個區塊均由輸入選擇器區塊和程式碼區塊組成。(圖片來源:STMicroelectronics)

輸入選擇器區塊將選定的輸入資料,從 IMU 的一個內部感測器或者與 IMU 感測器中樞相連的外接感測器,轉送到程式碼區塊。IMU 的感測器中樞能夠容納多達四個額外的外接感測器 (如磁力計),並透過 I2C 連接埠將這些感測器連接到 IMU。

FSM 的程式碼區塊包含一個供狀態機使用的程式。程式區塊的固定資料區段由六個位元組構成,可定義程式的閾值數量、磁滯、遮罩和計時器設定。程式區塊的可變資料區段則依照固定資料區段儲存的數值所定義,保存每個程式的實際閾值、磁滯、遮罩和計時器設定。

此外,固定資料區段還定義程式碼區塊記憶體覆蓋區的可變區段大小、可編程的重置向量,以及程式計數器。由於這些值都是 8 位元的數值,因此每個 FSM 程式僅限 256 個位元組。

程式區塊的指令區段包含實際的 FSM 程式。程式指令所包含的操作碼,可用來檢查感測器輸入是否超過閾值、檢查是否有零交叉點,以及檢查計時器數值是否逾時。這些操作碼指定了從目前的 FSM 狀態進入下一個狀態所需的條件。此外,有命令操作碼可用於選擇儲存在程式可變資料區段的閾值和遮罩;設定 IMU 感測器中樞的多工選擇器,以連接到四個可能的外接感測器之一;以及對中斷進行斷言。

每個 FSM 程式都可以產生中斷,並且能根據選定的輸入訊號修改相應暫存器數值的內容。這些暫存器數值會用來將資料從 IMU 傳送到主機處理器。

您可以將 FSM 視為少了算數邏輯單元的微處理器。FSM 能執行選擇、比較,並可根據這些比較結果,針對 FSM 的下一個狀態作出相關決策。FSM 僅會根據比較結果計算布林值。

FSM 並不是微處理器,但可進行比較,並可根據這些比較結果對程式流作出簡單的更改。由於 FSM 是簡單的機器,因此可直接使用 FSM 操作碼進行編程。FSM 沒有高階語言編譯器。不過,其程式通常都非常簡單,完全不需要編譯器。

FSM 的使用

LSM6DSO IMU 的 FSM 可透過編程來產生中斷訊號,並由預先定義的運動模式啟動。FSM 能同時執行多達 16 個獨立程式來偵測運動。每個 FSM 程式都包含一系列的 if-then-else 步驟,並使用來自 LSM6DSO 加速計及陀螺儀的感測器資料流作為輸入。若有任何 FSM 程式偵測到與其預先編程模式相符的情況,FSM 就會向主機處理器發出中斷。

在 FSM 十六個可能的程式中,每個程式都包含三個記憶體區段,分別用於儲存固定資料、可變資料和指令。圖 3 顯示單一個 FSM 程式方塊圖。

STMicroelectronics 的 LSM6DSO IMU 中的 FSM 示意圖

圖 3:STMicroelectronics 的 LSM6DSO IMU 中的 FSM 包含十六個程式碼區塊,每個區塊都包含三個記憶體區段,可用於儲存固定資料、可變資料和指令。(圖片來源:STMicroelectronics)

在程式碼區塊中,單一程式的結構由記憶體區塊的三個區段組成:

  • 固定資料區段;所有 FSM 程式的區段大小均相同
  • 可變資料區段;區段大小可能有所不同
  • 指令區段;包含條件與命令

在對每個 FSM 程式碼區塊編程時,需將決定 FSM 行為的編程數值載入到三個記憶體區段中。STMicroelectronics 提供的 FSM 編程工具,隨附於 Unico 評估開發軟體與開發環境中,可供使用者下載。此外,STMicroelectronics 還在 Unico 開發工具中提供多個 FSM 範例程式,有助於瞭解如何對 FSM 編程。這些範例程式展示多個以 IMU 為基礎的中斷情境,包括:

  • 基本計步器
  • 系統自由落下
  • 簡單的動作偵測
  • 系統已拾起
  • 系統遭搖晃
  • 系統停止移動 (靜止)
  • 腕部傾斜

FSM 範例程式可示範如何使用各種 FSM 功能。這些範例程式均可安裝在 IMU 示範平台上,例如 STEVAL-MKI109V3 eMotion STM32 評估板;此評估板具有 28 引腳的插槽,可插接 LSM6DSO STEVAL-MKI197V1 IMU 配接板。只需在 Unico 開發環境中按幾下,就可使用其中一個範例程式對 STEVAL-MKI109V2 板進行編程。

但是,LSM6DSO 具備的功能不只如此。

機器學習核心

LSM6DSO IMU 還包含一個更複雜的可編程模式匹配引擎,稱為機器學習核心。如此即可使用來自內部 IMU 感測器,以及任何外接感測器的多個感測器資料流,來識別動作類別。可識別的事件類別包含:靜止 (無動作)、步行、慢跑、騎單車及開車。分類則採用機器學習核心內的決策樹形式。

機器學習核心包含三個區塊:感測器資料區塊、運算區塊以及決策樹 (圖 4)。機器學習核心的感測器資料區塊會彙總來自 IMU 內部加速計、陀螺儀,以及任何透過 I2C 介面連接至 IMU 的外接感測器的資料流。運算區塊會使用預先定義的濾波參數來過濾感測器的資料,並計算窗口統計數據,包括感測器資料的平均值、方差、峰對峰振幅、最小值、最大值,以及零交叉點。決策樹則會將計算出的感測器資料統計值與閾值比較,對輸入資料進行分類。

STMicroelectronics 的 LSM6DSO IMU 中的機器學習核心示意圖

圖 4:STMicroelectronics 的 LSM6DSO IMU 中的機器學習核心包含三個區塊:感測器資料區塊 (可彙總來自內部與外部感測器的資料流)、運算區塊 (可過濾感測器資料並計算該感測器資料的統計值) 和決策樹 (可根據計算出的統計值對事件進行分類)。(圖片來源:STMicroelectronics)

與 LSM6DSO 的 FSM 一樣,會使用 Unico 開發環境中的專用工具對 IMU 機器學習核心進行編程。

有限狀態機及機器學習核心也可與主機處理器搭配使用,實現更複雜的位置追蹤演算法。STMicroelectronics 的 STM32Cube 開發系統 提供 X-CUBE-MEMS1 軟體套件可供下載,其中包含以下範例軟體常式:

  • 活動辨識 – 針對使用者進行的活動提供類型資訊,包括保持靜止、步行、快走、慢跑、騎單車或開車。此演算法通常用於手機或某些穿戴式裝置。
  • 動作持續時間偵測 – 若與計步器資料一併使用,動作持續時間偵測功能可用來確定使用者活動的秒數。此演算法通常用於穿戴式裝置,以追蹤健身或健康狀況。
  • 振動或動作強度偵測 – 針對使用者的動作強度提供相關資訊,且可判別的動作強度範圍介於 0 (靜止) 至 10 (衝刺)。此演算法通常用於手機或某些穿戴式健身裝置。
  • 攜帶位置辨識 – 針對使用者攜帶裝置的方式提供相關資訊,並且能夠區分以下位置:桌上、手中、靠近頭部、上衣口袋中、褲子口袋中、外套口袋中,以及戴在擺動手臂上。此演算法通常用於手機或其他特定攜帶式裝置,以偵測與活動相關的背景。

結論

由於主機處理器的功耗相對較高,因此對於電池供電型嵌入式設計而言,若想保持主機處理器的運作,以維持固定位置並從 IMU 資料中偵測到移動及姿態,將是難以實現的目標。然而,新一代的低功率 IMU 具有足夠的板載運算處理能力,能夠執行機器學習作業,可讓主機處理器進入低電流的休眠模式,且在需要時才會喚醒,因此能克服此難題。

 
DigiKey logo

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。

關於作者

Image of Steve Leibson

Steve Leibson

Steve Leibson 曾任 HP 和 Cadnetix 的系統工程師、EDN 和 Microprocessor Report 的總編輯,以及 Xilinx 和 Cadence 等的科技部落客,也曾在兩集《The Next Wave with Leonard Nimoy》電視節目中擔任技術專家。33 年來,他協助設計工程師開發更優良、更快速且更可靠的系統。

關於出版者

DigiKey 北美編輯群