自身のアプリケーションに、どのような機能が内蔵されたセンサを採用すべきか
タイトル
自身のアプリケーションに、どのような機能が内蔵されたセンサを採用すべきか
本記事では、STの一部のMEMSモーション・センサに内蔵されている、ステート・マシン(FSM)、機械学習コア(MLC)、およびインテリジェント・センサ処理ユニット(ISPU)というプログラム可能な機能について解説します。
記事の本文
1. 概要
STのMEMSモーション・センサには、2種類の内蔵機能があります。いずれの機能も、マイクロコントローラの代わりにセンサ内部でデータ処理を実行することを主眼としています。その結果、システムの電力消費を抑えられます。STの多くのモーション・センサには、設定可能な内蔵機能(例:ウェイクアップ、フリーフォール、4方向 / 6方向検出)があります。主にしきい値と期間のパラメータ設定により、これらの機能を調整できます。ただし、その名前が示すとおり、これらの機能はあくまで設定可能なだけであり、独自のデータ処理をプログラミングすることはできません。しかしSTの最近のMEMSモーション・センサには、ステート・マシン(FSM)、機械学習コア(MLC)、インテリジェント・センサ処理ユニット(ISPU)のようなプログラム可能な機能が内蔵されており、独自のデータ処理をセンサ内で実行することができます。以上を踏まえ、独自のデータ処理を行う主な3つのアプローチについて、以下の一覧および図に示します。
- 標準アプローチ:センサが提供する生データをマイクロコントローラが読み込み、マイクロコントローラ内で希望の処理が行われます。
- プログラム可能なロジック・アプローチ:特定の処理モデルで、最小限の電力消費を目指します。割り込み信号が発行されると、マイクロコントローラがモデルの結果を、また可能な場合は生データを読み込みます。
- 完全にプログラム可能なDSPアプローチ:任意のカスタム・コード(演算およびコンパイラの制限を考慮)をセンサ内部で実行します。マイクロコントローラはセンサから出力された処理済みデータを読み込みます。
一般に、プログラム可能なロジック・アプローチまたは完全にプログラム可能なDSPアプローチを利用すれば、アプリケーションに以下のメリットがもたらされます。
- マイクロコントローラ内部で同一の機能を実行する場合と比べ、内蔵機能の消費電力が明らかに低下
- センサからのデータ読み込みは、割り込みがトリガされるイベントに限定可能 -> そのほかの時間には、マイクロコントローラはSLEEPモードを維持
- センサおよびマイクロコントローラ間のI²C/SPIバス上のトラフィックが減少
- マイクロコントローラのオフロード:処理時間を別の目的に使用したり、より安価なマイクロコントローラを使用可能
本記事では、プログラム可能な内蔵機能、すなわちFSM、MLC(いずれもプログラム可能なロジック・アプローチ)およびISPU(完全にプログラム可能なDSPアプローチ)について簡単に説明することで、お客様が自身のアプリケーションに最適な機能を採用できるように支援します。
2. ステート・マシン(FSM)
ステート・マシンとは、ステート間を固有の形で遷移する有限数のステートで構成された動作モデルのことで、内部データと外部データ(センサ・ハブを使用できる場合)の両方を処理できるフロー・チャートに似ています。ステートには、「リセット / 継続(RNC)」と「コマンド(CMD)」という2つのタイプがあります。RNCタイプのステートは、2つの条件で構成されており、一方はステート・マシンのリセットに、もう一方はプログラム・フローの継続に使用されます。RNCステートの詳細を以下の図に示します。先にリセット条件が評価されます。結果が真の場合、ステート・マシンがリセットされます。それ以外の場合には継続条件が評価されます。継続条件が満たされた場合、フローは次のステートに移行します。それ以外の場合には次のサンプルが到着するまでフローが一時停止し、新しいサンプルで評価(リセットおよび継続条件の両方)が行われます。RNCステート・タイプに対する条件の例としては、操作なし、タイマ、しきい値との比較などが挙げられます。2番目のタイプのステート(CMD)では、コマンドが実行され、フロー制御と出力に関するプログラムの動作が変更されます。コマンドの例としては、停止実行、リセット・ポインタの設定 / リセットなどが挙げられます。エンド・ステートに到達するか、一部の特定のコマンドが実行されると、FSMの割り込み信号が生成されます。複数のステート・マシンを同時に実行することができます。以下の図に、加速度センサのデータをベースとする単純なウェイクアップの例を示します。
ステート・マシン・アプローチは、ユーザ定義のジェスチャ・パターンを認識しなければならないアプリケーションに最適です。
FSMを内蔵したSTの最新センサには、自己構成機能(ASC)が含まれています。つまり、FSMの割り込みを使用して、デバイス設定の変更(ODR、FS、BW、パワー・モード、FIFOなど)をトリガできるので、マイクロコントローラをSLEEPモードのまま維持できます。
ステート・マシンの機能の詳細については、STのGitHubリポジトリをご覧ください。本リポジトリには、アプリケーション例や設定例が含まれています。アプリケーション例は、さまざまなセンサに利用でき、センサにアップロードすることで即時に評価できます。設定例には主に、STが提供するさまざまなツールを使用して自身のステート・マシンを設定し、評価するための情報が含まれています。主要ソフトウェアは、FSMの開発専用のツールを提供するUnico-GUI<106>です。作成したFSM設定を評価する際は、使用する評価ハードウェアに応じて、Unico-GUIまたはAlgoBuilderとUnicleo-GUIのいずれかを使用できます。
対応センサ
- 民生機器向け:LSM6DSO、LSM6DSOX、LSM6DSO32、LSM6DSO32X、LSM6DSR、LSM6DSRX、LSM6DSV、LSM6DSV16X、LSM6DSV16BX、LIS2DUX12、LIS2DUXS12
- 産業機器向け:ISM330DHCX、IIS2ICLX
- 車載用:ASM330LHHX
3. 機械学習コア(MLC)
機械学習コアは、設定可能なパラメータのセット(特徴量とも呼ばれる)とディシジョン・ツリーで構成されています。ディシジョン・ツリーは、内部ノードとリーフという2種類のノードで構成された2分木の形で表されます。ディシジョン・ツリーの内部ノードは、子ノードを持つノードとなっています。MLC内部のディシジョン・ツリーは2分木であるため、子ノードの数は2つです。内部ノードはディシジョン・ツリーの一部を表しており、生センサ・データから計算された統計的パラメータがしきい値(if-then-else)と比較され、これをもとに次の方向(真または偽)が選択されます。ディシジョン・ツリーのリーフ・ノードは、子ノードを持たないノードで、ユーザ定義クラスの1つ(結果)を含んでいます。加速度センサのデータのみを使用したアクティブ / 非アクティブ検出例に関するディシジョン・ツリーの簡単な説明については、以下の図をご覧ください。
ディシジョン・ツリーの内部ノード内でしきい値と比較される統計的パラメータは、使用可能なセンサ・データ(内部データおよび外部データ(センサ・ハブが使用できる場合)の両方)の中から、定義された時間枠内にユーザが選択した平均や分散などのパラメータです。
ユーザが選択したパラメータは、ディシジョン・ツリーのトレーニング中に評価されます。トレーニング後、統計的に関連性のあるパラメータのみが最終的なディシジョン・ツリーに含められます。
機械学習コア機能を使用する場合は、教師あり学習アプローチを使用する必要があります。これには、以下の手順が含まれます。
- 認識するクラスを定義し、それと同時に可能なあらゆるオプションを網羅
- クラスごとに十分な量のトレーニング・データのログを取得
- クラスごとに異なるパラメータを選択(このプロセスは、初回に最も適したパラメータを見つけられる保証がないため、反復プロセスとなる場合もあります)
- 関連するソフトウェア・ツールを使用してディシジョン・ツリーを作成
- トレーニング済みのディシジョン・ツリーをセンサに読み込める設定ファイルに変換
STのMEMS評価ソフトウェア・パッケージ「Unico-GUI」には、データ・ログのラベリングからセンサ用の設定ファイルの作成に至るまで、ディシジョン・ツリーの全作成プロセスをサポートするMLCツールが含まれています。
適切なアプリケーションとしては、観察に基づくパターン検索を伴う、帰納的アプローチに従って実行できるアプリケーションが挙げられます。こうしたアプリケーションには、行動認識、フィットネス活動認識、モーション強度検出、振動強度検出、運搬ポジション認識、コンテキスト認識などが含まれます。
MLC対応センサの詳細については、st.com/MLCまたはSTのMLCGitHubリポジトリをご覧ください。MLCリポジトリには、各種のセンサで評価可能なアプリケーション例および設定ファイルのほか、ディシジョン・ツリーの作成プロセスをガイドするSTのさまざまなハードウェアやソフトウェア・ツールが含まれています。主要ソフトウェアは、MLCの開発専用のツールであるUnico-GUIです。作成したMLC設定を評価する際は、使用する評価ハードウェアに応じて、Unico-GUIまたはAlgoBuilderとUnicleo-GUIのいずれかを使用できます。
対応センサ
- 民生機器向け:LSM6DSOX、LSM6DSO32X、LSM6DSRX、LSM6DSV16X、LSM6DSV16BX、LIS2DUX12、LIS2DUXS12
- 産業機器向け:ISM330DHCX、IIS2ICLX
- 車載用:ASM330LHHX
4. インテリジェント・センサ処理ユニット(ISPU)
ISPUは、小型で超低電力かつ高性能なプログラム可能なコアで、STマイクロエレクトロニクスが開発した独自アーキテクチャをベースとしています。本コアは、最大30個の個別ユーザ定義アルゴリズムを使用し、内部データ(加速度センサ、ジャイロセンサ、温度)および外部データ(センサ・ハブを介して外部センサと接続)の両方を処理することができます。これらのアルゴリズムは、新しいデータ群がサンプリングされるたび、アルゴリズム29からアルゴリズム0の順に実行されます。ISPUは、コード用の32KBおよび変数データ用の8KBの2つの個別RAMでサポートされており、クロックは5MHzまたは10MHzのいずれかで稼働するよう設定することができます。
以下の図に、データ処理に加え、センサとマイクロコントローラや外部センサとの接続について説明したスキームを示します。
ISPUは、ISPUツールチェーンでコンパイル可能なC言語アルゴリズムを実行することができます。また、NanoEdge™ AI Studioを使用して異常検出ライブラリも生成できます(ISM330ISN向け)。X-CUBE-ISPUソフトウェア・パッケージには、評価可能な例(補正アルゴリズム、センサ・フュージョン、手首動作検知など)のほか、新しいカスタム内蔵機能に使用する空のテンプレート・プロジェクト、異常検出プロジェクトの統合例、そしてUnicleoと連携して使用するデータ・ログ・ファームウェアが含まれています。X-CUBE-ISPUパッケージは、STのウェブサイトまたはSTのGitHubページから入手可能です。ISPUツールチェーンでコンパイルされるISPU設定ファイルを評価する際は、選択した評価ハードウェアに対応するAlgoBuilderとUnicleo-GUIを使用することができます。
ISPUセンサ・ファミリの詳細については、st.com/ISPUをご覧ください。
対応センサ
- 民生機器向け:LSM6DSO16IS
- 産業機器向け:ISM330IS、ISM330ISN
- 車載用:-
本記事では、STの一部のMEMSモーション・センサに内蔵されたプログラム可能な機能と、その最終アプリケーションに対するメリットについて解説しました。STマイクロエレクトロニクスは、今まで解説したすべての機能を提供している市場で唯一のサプライヤで、お客様がカスタム・データ処理をセンサ内部に組み込めるようにサポートしています。ピン配列に互換性があるため、標準アプローチを現在利用しているお客様でも、ソリューションを非常に簡単にアップグレードし、プログラム可能な内蔵機能によるメリットを活かすことができます。詳細およびSTの全MEMSセンサの製品ポートフォリオについては、 st.com/memsをご覧ください。