IMU: オンボードの機械学習によりホストのスリープ状態を維持可能

著者 Steve Leibson氏

DigiKeyの北米担当編集者の提供

慣性測定ユニット(IMU)は、加速度センサ、ジャイロスコープ、および他のセンサからの多軸位置情報の定常的なストリームを提供するのに幅広く使用されています。データをすべて生成する高い自由度(DOF)により、これらのデバイスからマージされたデータストリームは、未加工のIMUデータを精査して有用なジェスチャおよびシステム位置情報を抽出する際に、システムプロセッサを常にウェイクモードに保ち、負荷が大きくなる可能性があります。設計者に必要なのは、メインプロセッサからのこの精査機能をオフロードする方法です。機械学習はその答えとなる可能性があります。

この記事では、IMUの使用に関する簡単な概要の後に、STMicroelectronicsの6DOF LSM6DSOを紹介します。さらに、このデバイスを使用して、機械学習および決定木処理のIMUへの追加と統合により、リアルタイムの位置および動きの処理をホストアプリケーションプロセッサからオフロードする方法と、これらの機能を実際のアプリケーションで使用する方法を説明します。

クイックIMUレビュー

IMUは多くのモーションセンサを1つのデバイスに統合し、高精度の位置決め情報を提供できます。IMUは、民生用(携帯電話)、医療用(イメージング)、産業用(ロボティクス)、軍用(ヘッドトラッキング)などのさまざまなアプリケーションに使用できます。IMUはセンサのモーションに反応し、次の1つ以上のモーションセンサタイプを統合します。

  • ジャイロスコープセンサは、通常は度/秒の単位で表される角度位置の変化を測定します。経時的な角速度を統合することにより、方向の変化を追跡するのに使用可能な移動角度が測定されます。ジャイロスコープは重力から独立した相対的な移動を追跡するため、センサのバイアスまたは統合結果からの誤差は「ドリフト」と呼ばれる位置誤差となります。これは、ソフトウェアにより補償可能です。
  • 加速度センサはリニア加速度を測定します。これには、デバイスモーションと重力による加速が引き起こす加速コンポーネントが含まれます。加速度の測定単位はg(この場合、1g = 地球の重力 = 9.8メートル/秒2)です。加速度センサは、1軸、2軸、または3軸(XYZ座標システムを定義)で提供されます。
  • 磁気センサは、通常はマイクロテスラ(µT)またはガウス(100µT = 1ガウス)単位で磁界強度を測定します。モバイルエレクトロニクスに最も一般的に使用される磁気センサは、3軸ホール効果磁気センサです。検出した地球の磁界の角度を計算し、その測定された角度を加速度センサが測定した重力と比較することにより、磁北に対するデバイスの方位を高精度で測定することができます。

IMUを使用したモーショントラッキングは、センサフュージョンを採用して、相対的なデバイス方向と位置の単一の高精度な予測を既知の開始点/方向から取得します。通常、センサフュージョンはソフトウェアを採用し、IMUメーカーまたはアプリケーション開発者により開発された複雑な数学的アルゴリズムを使用してIMUのさまざまなモーションセンサ出力を組み合わせます。

センサフュージョンを使用した位置計算により、次の測定を行うことができます。

  • 重力 – デバイスでのモーションによって発生する加速度を除外した地球の重力。加速度センサは、IMUの静止時に重力ベクトルを測定します。IMUが動いているときの重力測定では、加速度センサとジャイロスコープからのデータを融合し、モーションにより発生した加速度を差し引く必要があります。
  • リニア加速度 – 加速度センサにより測定されたデバイスの加速度と同等(ただし、ソフトウェアを使用して重力ベクトルが差し引かれます)。IMUリニア加速度は、三次元空間の動きを測定するのに使用できます。
  • 方向 (姿勢) – ヨー(アジマス)、ピッチ、およびロールを含む一連のオイラー角(測定単位は度)。
  • 回転ベクトル – 加速度センサ、ジャイロスコープ、および磁気センサからのデータを組み合わせて取得。回転ベクトルは、特定の軸を中心とした回転角度を表します。

IMU誤差の原因

ジャイロスコープは角速度の変化により方向をセンスしますが、変化をセンスするだけで固定されたリファレンスフレームがないため、経時的にドリフトする傾向があります。加速度センサデータをジャイロスコープデータに追加することにより、ソフトウェアはジャイロスコープのバイアスを最小限に抑え、より高精度の位置予測を実現できます。加速度センサは重力に対する方向の変化をセンスし、そのデータを使用してジャイロスコープを方向付けることができます。

加速度センサの精度は動的計算よりも静的計算のほうで優れています。ジャイロスコープはシステムがすでに動作しているときの方向検出に優れています。加速度センサは素早く反応するため、データを単独で使用すると加速度センサのジッタとノイズにより誤差が蓄積されます。さらに、加速度センサには重力などの外力により加速度が歪む傾向があり、これもシステム内でノイズとして蓄積されます。このデータをフィルタリングすることにより精度が向上します。

ジャイロスコープの短期的な精度と加速度センサの長期的な精度を組み合わせることにより、各センサの長所によって他方のセンサの短所が相殺されるか少なくとも軽減され、さらに高精度の方向読み取りが実現します。2つのセンサタイプが相互に補完し誤差を軽減しますが、誤差を軽減するための他の方法もあります。

誤差の軽減に必要なフィルタリングの融合

IMUソフトウェアは、フィルタリングを使用してIMUデータの位置決め誤差を最小化します。センサデータを融合するためのフィルタリング方法はいくつかありますが、それぞれ複雑さの程度が異なっています。相補的フィルタは、ハイパスのジャイロスコープフィルタとローパスの加速度センサフィルタを組み合わせます。これにより、加速度センサデータ内の高周波数ノイズは短時間で除去され、ジャイロスコープデータにより平滑化されます。

このセンサ処理、フィルタリング、および融合をすべて実行するのに必要な計算処理能力はエネルギーを消費します。これは、特にIMU情報の連続ストリームを必要としない電池駆動システムにおいて問題になる可能性があります。多くの組み込みアプリケーションでは、ホストプロセッサをスリープモードからウェイクさせる割り込みをIMUが生成し、割り込みの結果として処理を開始するかアクションを実行することにより、著しい節電を実現できます。この機能を有効にするために、一部のIMUベンダーはIMUに処理機能と意思決定機能を組み込み始めています。

IMUに思考させる

STMicroelectronicsの6DOF LSM6DSOはそのようなIMUの1つです。この製品には、3つのマイクロエレクトロメカニカルシステム(MEMS)ジャイロスコープと3つのMEMS加速度センサが組み込まれており、すべてオンボード処理を使用して、ホストプロセッサからの監視または支援なしで方向の変化やジェスチャを検出できます。IMUは最高性能モードでの動作中に0.55ミリアンペア(mA)を消費します。

このモードでは、LSM6DSOは空間内のそれ自体の姿勢と動きを継続的に監視し、ホストプロセッサをウェイクしてセンサストリーム上の追加処理を実行する事前に取り決められた条件で割り込みを生成できます。常に動作可能状態を維持する低電力IMUを使用することには有用性があります。これは、ホストプロセッサをスリープ状態にさせ、必要時にのみウェイクさせることができるためです。これは、電池駆動システムにおいて実証された信頼性の高い省エネ方法です。

ジャイロスコープと加速度センサに加えて、LSM6DSO IMUには、信号コンディショニングとフィルタブロック、16個のプログラムを実行可能な有限ステートマシン(FSM)(すべて共通の設定可能な出力データレートを共有)、および機械学習コアが含まれています。これらのリソースを併用することにより、次の条件の場合のイベント検出割り込みを生成できます。

  • 自由落下
  • ウェイクアップ
  • 6DOF方向
  • シングルクリックおよびダブルクリックセンシング
  • アクティビティ/非アクティビティ認識
  • 静止/モーション検出

信号コンディショニングブロックは、その感度レジスタ内に保存された変換係数を適用して、未加工のセンサデータをスケーリングします。次に、未加工のIMUセンサデータストリームを、FSMが識別可能な16ビットの半精度浮動小数点(HFP)バイト形式に変換します。図1は、IMUのMEMSセンサ(加速度センサおよびジャイロスコープ)、2個のA/Dコンバータ(ADC)、および4個のフィルタブロックを示しています。フィルタブロックを使用して、アナログMEMSセンサ信号をフィルタ処理されたデジタルデータストリームに変換します。

STMicroelectronicsのLSM6DSO IMUの図

図1: LSM6DSO IMUは、2個のADCを使用して、その内蔵MEMS加速度センサとジャイロスコープからのアナログ信号をデジタルストリームに変換します。ADCに続いて、4個のデジタルフィルタが、内蔵FSM/機械学習コアおよびホストプロセッサによる意思決定用に信号を調整します。(画像提供:STMicroelectronics)

プログラム可能なFSMは、設定ブロックと16個のプログラムブロックで構成されています。FSMの設定ブロックは、FSM全体を設定および制御します。FSMの16個のプログラムブロックは、それぞれ入力セレクタブロックとコードブロックで構成されています(図2)。これらのブロックは、どちらもIMU内のレジスタに書き込まれた値によって制御されています。

STMicroelectronicsのLSM6DSO IMUにあるFSMの16個のプログラムブロックの図

図2: LSM6DSO IMU内のFSMの16個のプログラムブロックは、それぞれ入力セレクタブロックとコードブロックで構成されています。(画像提供:STMicroelectronics)

入力セレクタブロックは、IMUの内部センサの1つ、またはIMUセンサハブに接続された外部センサから選択された入力データを、コードブロックにルーティングします。IMUのセンサハブには、磁気センサなどの追加外部センサを4個搭載できます。これらのセンサは、I2Cポートを経由してIMUに接続されます。

FSMのコードブロックには、ステートマシン用の1つのプログラムが含まれています。プログラムブロックのデータセクションの固定部分は、6バイトで構成され、プログラムの閾値の数、ヒステリシス、マスク、およびタイマ設定を定義します。プログラムブロックの変数データセクションは、データセクションの固定部分に保存された値によって定義されたとおりの各プログラムの実際の閾値、ヒステリシス、マスク、およびタイマ設定を保持します。

データセクションの固定部分は、コードブロックのメモリフットプリントの変数部分のサイズ、プログラム可能なリセットベクトル、およびプログラムカウンタも定義します。これらはすべて8ビットの値であるため、各FSMプログラムは256バイトに制限されます。

プログラムブロックの命令セクションには、実際のFSMプログラムが含まれています。プログラム命令には、閾値に対するセンサ入力の確認、ゼロクロスの確認、およびタイムアウト比較用のタイマ値確認のためのオペコードが含まれます。オペコードは、現在のFSM状態から次の状態へ移行するのに必要な条件を指定します。さらに、プログラムの変数データセクションに保存された閾値とマスクの選択、4個までの外部センサのいずれかに接続するためのIMUセンサハブの多重セレクタの設定、および割り込みのアサートのためのコマンドオペコードもあります。

各FSMプログラムは、割り込みを生成し、選択された入力信号に基づいて対応するレジスタ値の内容を変更できます。これらのレジスタ値は、データをIMUからホストプロセッサに渡すために使用されます。

FSMを演算論理装置のないマイクロプロセッサとして考えると効果的です。FSMは、選択と比較を行い、その比較に基づいて次の状態についての意思決定を行えます。FSMは、比較からのブール結果以外の値を計算しません。

FSMはマイクロプロセッサではありません。FSMは比較を行い、その比較に基づいてプログラムフローへの簡単な変更を実行できます。FSMはシンプルなマシンであるため、FSMオペコードにより直接プログラムされています。FSMには高レベルの言語コンパイラはありませんが、一般にプログラムがとてもシンプルなためコンパイラは必要ありません。

FSMの使用

LSM6DSO IMUのFSMは、事前定義されたモーションパターンによりアクティブ化される割り込み信号を生成するようにプログラミングできます。FSMは16個の独立プログラムを同時に実行して、モーションを検出できます。各FSMプログラムは、if-then-else手順のシーケンスで構成され、LSM6DSOの加速度センサおよびジャイロスコープからのセンサストリームを入力として使用します。いずれかのFSMプログラムがあらかじめプログラムされたパターンとの一致を検出すると、FSMはホストプロセッサへの割り込みを生成できます。

16個のFSMプログラムには、それぞれ固定データ、変数データ、および命令用に3個のメモリセクションが含まれます。図3は、単一のFSMプログラムブロックダイアグラムを示しています。

STMicroelectronicsのLSM6DSO IMUのFSMの図

図3: STMicroelectronicsのLSM6DSO IMUのFSMには16個のコードブロックが組み込まれており、各コードブロックには固定データ、変数データ、および命令用に3個のメモリセクションが含まれます。(画像提供:STMicroelectronics)

コードブロックの単一プログラムの構造は、メモリのブロック内の3個のセクションで構成されています。

  • すべてのFSMプログラムで同じサイズの固定データセクション
  • サイズの異なる変数データセクション
  • 条件およびコマンドを含む命令セクション

各FSMコードブロックのプログラミングには、FSMの動作を決定するプログラミング値を3個のメモリセクションに読み込むことが関係します。STMicroelectronicsは、ダウンロード可能なUnico評価開発ソフトウェアおよび開発環境内で、FSMプログラミングツールを提供しています。STMicroelectronicsは、FSMのプログラミング方法の学習支援機能として、Unico開発ツールにいくつかのサンプルFSMプログラムを含めています。これらのサンプルプログラムは、以下のIMUベースの割り込みシナリオのデモを提供します。

  • 基本的な歩数計
  • 自由落下時のシステム
  • シンプルなモーション検出
  • システムが持ち上げられた
  • システムが振動させられた
  • システムの動作が停止した(静止)
  • 手首の傾き

サンプルFSMプログラム例は、さまざまなFSM機能の使用のデモを示しています。これらのサンプルプログラムは、いずれもLSM6DSO STEVAL-MKI197V1 IMUアダプタボードに対応した28ピンソケットを持つSTEVAL-MKI109V3 eMotion STM32評価ボードなどのIMUデモプラットフォームにインストールできます。Unico開発環境で数回クリックするだけで、プログラム例の1つを使用してSTEVAL-MKI109V2ボードをプログラミングできます。

ただし、LSM6DSOには見た目以上のものがあります。

機械学習コア

LSM6DSO IMUには、機械学習コアと呼ばれるより高度でプログラム可能なパターンマッチングエンジンも組み込まれています。このエンジンは、内蔵IMUセンサおよび接続された外部センサからの複数のセンサデータストリームを使用して動きのクラスを識別できます。認識可能なイベントクラスには、静止(動きなし)、ウォーキング、ジョギング、自転車、およびドライブが含まれます。分類は、機械学習コア内で決定木の形式をとります。

機械学習コアは3つのブロック(センサデータブロック、計算ブロック、および決定ブロック)で構成されます(図4)。機械学習コアのセンサデータブロックは、IMUの内蔵加速度センサやジャイロスコープおよびI2Cインターフェースを経由してIMUに接続された外部センサからのデータストリームを集計します。計算ブロックは、事前定義されたフィルタリングパラメータを使用してセンサデータをフィルタリングし、平均、分散、ピーク間振幅、最小、最大、およびゼロクロスを含むウィンドウ型統計を計算できます。決定木は、計算されたセンサデータ統計を閾値と比較して、入力データを分類します。

STMicroelectronicsのLSM6DSO IMUの機械学習コアの図

図4: STMicroelectronicsのLSM6DSO IMUの機械学習コアは、3つのブロック(内部および外部センサからのデータストリームを集計するセンサデータブロック、センサデータをフィルタリングしてそのセンサデータ上の統計を計算する計算ブロック、および計算された統計に基づいてイベントを分類する決定木)で構成されています。(画像提供: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」の2つのエピソードで技術専門家を務めました。同氏は、33年間にわたって、高速でかつ信頼性の高い優れたシステムを設計技術者が開発することを支援しています。

出版者について

DigiKeyの北米担当編集者