バッテリー駆動・マイクロコントローラー&IMUベースの動作パターン識別デバイスにおける消費電力の最適化
今回の要件は、特定の車両の動作パターンを識別するデバイスの開発だった。データはさらなる分析のため、モバイルアプリと定期的に(週1回程度)同期させる必要があり、データを一時的に保存する仕組みも求められた。デバイスは車両内の固定位置に取り付けるタグのように、できるだけ小型である必要があった。電力消費についても重要な検討事項だった。充電式バッテリーを使用するとはいえ、消費電力を極限まで抑える必要があった。理由は2つあり、1つは電力を最適化するほどバッテリーサイズを小さくできること、もう1つはデバイスが数ヶ月間充電せずに使用できれば、利用者が頻繁に充電状態を確認する必要がなくなることである。
これらの要件を踏まえ、部品選定・PCB設計・ファームウェアのアルゴリズム設計に着手した。システムの主要コンポーネントは以下の通りとした。
- マイクロコントローラー:ウェアラブルデバイスとして小型である必要があり、ニューラルネットワークの推論に対応できるマイコンを採用
- IMU(6軸加速度計、すなわち加速度計とジャイロスコープ):ウェアラブルデバイスで動作を検知できる唯一の選択肢。旋回や傾きなどのイベント検知にジャイロスコープも活用
- 充電IC
- レギュレーター
- BLE送信コンポーネント
- 表示(インジケーター):リアルタイム表示の要件がなく、電力節約のため搭載しないことに決定。LED表示はBLEのアドバタイズおよび通信時のみ動作する
Then we decided on the following things.
マイクロコントローラーの選定
処理ユニットにはSTM32WB55CGマイコンを採用することとした。選定理由は次の通りである。
- このシリーズのマイコンは超低消費電力設計で、3〜3.3V電源で1〜15mAの電流で動作するランモードから、シャットダウンモードでは50nA未満まで、複数の低消費電力モードに対応している。機能性と消費電力のバランスを用途に応じて調整できる。
- 通信インターフェースには、最も低消費電力な選択肢であるBLEを採用した。マイコン自体がBLEトランシーバーとして機能できるため、PCBサイズの削減にもつながる。また、このマイコンは低消費電力のBLEアドバタイズに対応しており、BLE通信時の消費電流は10マイクロアンペア未満である。
- このマイコンのもう一つの利点は、ニューラルネットワークの実行に対応していることである。メーカー各社は、TensorFlowやKerasのモデルをマイコン上で動作するライブラリに変換するツールも提供している。
IMUの選定
IMUの選定にあたり、既存製品には本用途に活用できる複数の機能があることが分かった。傾き検知、歩数計測、加速度・ジャイロ値のしきい値または勾配に基づく検知といった、あらかじめ定義された動作の検出機能。さらに、検出したいパターンに関するデータを与えることで学習できる機械学習コア(MLC)機能も備えている。
- 傾き検知、歩数計測、加速度・ジャイロ値のしきい値または勾配に基づく検知といった、あらかじめ定義された動作の検出機能。
- 検出したいパターンに関するデータを与えることで学習できる機械学習コア(MLC)機能。
上記2つの機能を備えていることから、IMUにはLSM6DSOXを採用した。さらに、高性能モードでの消費電流が約600マイクロアンペア、最低電力モードでは50マイクロアンペア未満という超低消費電力設計である点も採用理由である。
なお、本用途に特化して設計されたIMUは存在しないため、既存のIMUが持つ上記いずれかの機能を活用するか、割り込みモードで直接IMUを使用する必要があった。
レギュレーターの選定
レギュレーターは、システムの動作電圧とバッテリー電圧に応じて、高効率のスイッチングレギュレーター、または低ドロップアウト(高効率)のリニアレギュレーターから選定する必要がある。一般に、小型のウェアラブル・携帯機器では、リニアレギュレーター(LDO)が多く用いられる。理由は2つあり、1つはスイッチングレギュレーターのノイズが他の部品の動作に影響を与える可能性があること、もう1つは3Vや3.7Vのバッテリーを使う一般的なシステムでは、バッテリー電圧と動作電圧の差が小さいため、LDOでも十分な効率が得られることである。この考えに基づき、LDK130 3.3Vレギュレーターを採用した。なお、充電ICの選定については、消費電力やデバイスサイズに影響しないため、本記事では扱わない。
ファームウェア実装の選択肢
選択肢1
選択肢1:IMUを割り込みモードに設定し、IMUデータを継続的に処理してニューラルネットワーク推論を常時実行する方式。マイコンとIMUを用いる方式の中で最も精度が高いが、マイコンが常にランモードでIMUデータを処理し続けるため消費電力は大きくなる。
選択肢2
選択肢2:加速度計のしきい値超過検知機能を用いて選択肢1の電力を最適化する方式。デバイスが動いていない間、マイコンはストップモード、加速度計は低消費電力モードで稼働する。動作パターンの開始時に加速度値が一定のしきい値を超えると、IMUがマイコンに割り込みを送って起動し、選択肢1と同様の処理でパターンを検出する。動作が終わると、マイコンは加速度計をしきい値モードに再設定し、自身はストップモードに戻る。これにより、大きな動きがない限りマイコンがストップモードにとどまるため、消費電力を削減できる。

選択肢3
選択肢3:選択肢2のしきい値の代わりに、動作パターンの開始データで学習させた機械学習コア(MLC)を用いて、マイコンを起動する割り込みを送る方式。選択肢2との違いはしきい値の代わりにMLCを使う点のみであり、無関係な動きによるマイコンの誤起動を防ぎ、消費電力をさらに削減できる。

選択肢4
選択肢4:動作パターンの検出処理全体をIMU側のMLCで完結させ、検出後にマイコンを起動してデータ保存のみを行い、再びストップモードに戻す方式。マイコンをデータ保存時のみ使用するため、最も電力効率が高い方式である。

4つの方式を比較すると、選択肢1と2の精度はほぼ同等である。選択肢3は、動作開始パターンのMLC判定で偽陰性が発生し得るため、選択肢1・2よりやや精度が落ちる。選択肢4は他の3つの方式より精度が低くなる。
消費電力の大きさは、選択肢4 < 選択肢3 < 選択肢2 < 選択肢1 の順である。
したがって、消費電力と精度のトレードオフを踏まえた選定が必要だった。今回の要件では、一度に単一のパターンを識別すればよく、パターンの長さも大半が5秒未満で、識別すべきパターン数も5種類にとどまる。また、検出すべきパターンとIMU値との関係もそれほど複雑ではないため、まず選択肢4を試し、得られる精度に応じて選択肢3を検討する方針とした。
データ収集の手順
データ収集では、対象の動作パターンおよびヌルデータ(いずれのパターンにも該当しない時のデータ)を52Hzのレートで収集した。MLC専用の収集手法ではなく、別途データ収集用のファームウェアを作成し、この手順を4つの選択肢すべてに共通して利用できるようにした(今回は選択肢4または3を用いるが、将来似た要件で選択肢1や2が必要になる可能性を考慮したため)。
データ収集は、実際のパターン識別に使うデバイスと同一のもので行うことが望ましい。
収集時には、マイコンがデータを継続取得できるようランモードで動作し、BLE経由でスマートフォンのアプリへ送信する専用ファームウェアを使用する。IMUも連続データモードで動作し、設定された出力データレート(ODR)に応じて割り込みを発生させる。例えばODRを52Hzに設定した場合、IMUは毎秒52回の読み取りを行い、その都度マイコンに割り込みを送る。マイコンは割り込みを受けるとただちにIMUのデータバッファを読み取り、BLE経由でモバイルアプリに送信する。対象の動作を行っている間・行っていない間の両方でデータを収集する。
結果
収集したデータに基づき、対象パターンの識別において必要な精度を達成することができた。
この結果を受け、最終的に選択肢4を採用することとした。
その他の電力最適化の工夫
- ストップモードに移行する際、すべての周辺機能を無効化する
- BLEを使用していない間はBLEプロセッサを無効化する
- BLEアドバタイズによる消費電力を抑えるため、ユーザーがBLEボタンを押してから1分間のみアドバタイズを有効にする。この間にスマートフォンが接続されればパターンデータを転送でき、時間内に接続されなければアドバタイズを停止する
最終的なファームウェアは、選択肢4にBLE機能と上記の電力最適化手法を組み合わせて開発された。
同様の用途における一般的な制約
マイコンとMLCのメモリ制約により、検出可能なパターンの複雑さや数には限界がある。
Note - ストップモードの代わりにシャットダウンモードを同様の方法で使用することもできる。シャットダウンモードを使用した場合、マイコンは完全に電源off状態となり、ハードウェアリセットと同様の手順でファームウェアが再起動し、必要な処理を行う。ユーザーに頻繁な表示が求められるような用途では、シャットダウンモードは必ずしも適さないが、そうでない場合には消費電力削減の有効な選択肢となる。
Find the AIoT page that focuses on SenzMate's AI and IoT.
