皆さん こんにちは この動画では 電子ペンの状態検出を例としてSTのメムスセンサに内蔵された 機械学習コアの設定手順を説明いたしますアイディアを思いついたとき 一行のコードも書くことなくわずか15分ほどで 実現性の確認を行うことができますターレットとするアプリケーションの位置例としてアクティブ式の電子ペンを 想定してみましょうタブレットなどで利用される電子ペンは 小型軽量化のために内蔵される電池容量が限られていますそのため 加速度センサを利用して ペン自体の使用状態を検出することで効率的な電源管理を実現し 電池の消費量を提現することができます今回の例では このような電子ペンの使用状態を 使用していない ステディユーザーがペンを手に持っているが 作業を行っていない アイドル実際に電子ペンとして使用されている ライティングの3つの状態に分類してみますそして これら3つの動作状態を検出するため 機械学習コアを利用した判定アルゴディズムを実際に 作成してみたいと思いますまずは 使用するツールをご紹介しますハードウェアとしては メムスセンサ評価用の プロフェッショナルメムスツールを使用しますこれはSTM32マイコンを搭載したマザーボード STEVAL MKI109V3とセンサを搭載したアダプターボードを 組み合わせて使用するSTセメムスセンサ用の基本的な評価ボードですアダプターボードは各種センサ用がラインナップされていますが今回は 機械学習コアを内蔵の4製品の中から6軸センサ LSM6DSOXを搭載したSTEVAL MKI197V1を使用します一方 ソフトウェアですが ユニコGUIというメムスセンサ評価用の専用ソフトウェアを使用します無料でダウンロードおよび資料をいただくことができるものでWindows版だけでなく MacOSやLinux版も用意されていますこのソフトウェアは 先ほどのプロフェッショナルメムスツールに完全に対応しており センサのデータリード ログファイルの保存全デジスタのリードライトを始めとして機械学習コアの設定を行うことができる唯一のツールですそれでは具体的な手順を見ていきましょう機械学習コアの設定はこの図に示すような5つのステップで簡単に行うことができますまず 最初に 判定したい状態ごとにセンサのログデータを収集しますでは実際に作業を始めてみましょうボードのセットアップを行います非常に簡易的で見た目も悪いですがまずはアイディアを思いついた直後の初期検討という想定でこのように評価ボードをペンに取り付けてみましたもちろん 最終的にはペンの形状とセンサの搭載位置 基盤の機械的な設計などが結果に影響しますただし あくまでも初期検討段階であればこのようなセットアップでも始められますさて ボードをUSBケーブルでパソコンに接続しボード上の青いLEDが点灯したら準備完了ですボードを接続したらユニコを起動します最初にデバイスの選択画面が出ますのでアイネもイナーシャルモジュールのディストから今回使用するLSM6DSOXを選択しセレクトデバイスボタンを押しますユニコのメインウィンドウが開きましたまず最初にオプションタブを選びセンサーの設定を行います加速度センサーのフルスケールは初期値の20位のままアウトプットデータレートは26ヘルツを選びますチャイルは今回使用しないのでパワーダウンのままとしておきます設定が完了したらスタートボタンを押しますこの状態でプロットを開くとこのように加速度センサーの動作を確認することができます次にロードセーブタブを開きログファイルの設定を行いますプラウスボタンをクリックしログファイルの保存場所とファイルネームを設定します最初は精視した状態ステーブルのログを記録するのでファイルネームはステーブルとしておきましょう次にログファイルに記録するデータをこれらのチェックボックスで選択します今回はアクセラデーションのみを残して他は全てを押しますこれで準備が整いましたボードがログを取りたい状態つまり生じしていることを確認しスタートボタンを押すとログの記録が開始されます簡単な動作確認であれば1分くらいログを取れば十分ですストップボタンを押すとログの記録が停止されますこれで精視の状態のログが記録できました次はボードを手に持っている状態アイドルの状態でログを取りますファイル名はアイドルとしておきますボードを手に持ちスタートボタンを押します同様に1分ほどこの状態でログを取ってみましょうこれでアイドルの状態のログが取れました最後はペンで文字を書いている状態ライティングのログを取りますファイル名はライティングとしておきますボードを手に持ち文字を書いているような動作をしながらスタートボタンを押しますこれでライティングの状態のログも取れました以上で機械学習を行うためのベースとなるログファイルが全て取得できました続いて取得したログにラベルを付かしながらユニコGUIの機械学習コアツールに読み込み特徴量の演算などを行いますその上で機械学習を実行しDecision 3を生成しますでは引き続き作業の様子をご覧くださいまずユニコのメイン画面からMLCツールを起動します最初にデータパターンタブで先ほど処方したログファイルを読み込んでいきますプラウスボタンからこのようにして先ほど記録したログファイルを選択していきますまず最初にステーブルテキストを読み込んでみましょう読み込めたらこちらのボックスでクラスメンを付けていきますこのデータにはステーブルとクラスメンを付けてみますそしてロードボタンを押します同様の手順でアイドルテキストを読み込みクラスメンをアイドルと名付けロードしますさらにライティングも同様に読み込みますこれで全てのログの読み込みとラベル付けができました次にコンフィグレーションタブに飛び機械学習コアの設定を行っていきますまずはターレットデバイスとしてLSM6DSOXを選びます次に機械学習コアのODRを26Hzに設定します機械学習コアへの入力は加速度センサーのみなのでアクセラロメーターオンリーを選びフルスケールを2GODRを26Hzとしますこれらはログを取得した際のセンサーの設定と一致させてください次に作成するディシロンツリーの数は1つウィンドウレングスは26Hzで1秒間とする場合26サンプルを選びますデジタルフィルターは今回は使用しないので何もせずに次へ進みますそして次が特徴量の選択です今回は各状態の判定のために軸ごとの平均値さらにベクトルの分散を使うことで判定ができると考えられるのでこうして平均値とベクトルの分散にチェックを入れますログファイルに対する特徴量の演算結果を中間ファイルに保存しておきます適当な名前をつけて整合してくださいそして設定した3つのクラス判定すべき状態に対する出力コードを設定します今回はデフォルトのままとしておきますステーブルの場合は0アイドルは4ライティングの場合は8という出力コードがそれぞれ割り当てられますここでいよいよログファイルから学習をしてディシションツリーを生成しますこの青いジェネレートボタンをクリックすると一瞬で機械学習が完了します学習結果はこのウインドウに表示されていますこれがディシションツリー下の方には混動行列なども表示されます次に各クラス出力に対するメタクラスファイアを設定する場合はここで設定が可能です今回の場合は0としておきます最終結果としてディシションツリーを含む設定ファイルを保存します.ucfというユニコ独自のファイル形式で保存されます以上で機械学習をコアの設定は完了です最後に生成されたディシションツリーをセンサー上に書き込み実行して動作確認を行います必要であればこの作業を繰り返すことでより精度の高いディシションツリーを得ることができますそれでは作業の予想をご覧くださいでは先ほど作成したディシションツリーをセンサーに産み込んで動作確認をしてみましょうまずユニコのロードセーブタブを開きコンフィグレーションのロードボタンをクリックします先ほど機械学習をした結果を保存した.ucfファイルを選択しオープンしますここにローデッドと表示されればucfファイルにより新しい設定がセンサーに書き込まれディシションツリーも動作をし始めていますその結果を確認するにはまずスタートボタンを押してからデータを開きますするとこのようにリアルタイムにセンサーデータが数値で表示されていますこのウィンドウの株にはディシションツリーの結果も表示されています今回作成したディシションツリーは1つなのでこの左端のボックスに注目してくださいログを取ったときと同様にペンをテーブルに置いた状態は0手に持つとこのように4に変わりますそして何かを書くような動作をすると8になります止めると4テーブルに置くと0となりますこうして先ほど作成したディシションツリーがほぼ期待通りに動作していることが確認できました非常に簡単な作業による初期権と行うことでより高精度な判定を行うための次のステップにスムーズに着手することができますこのようにSTの機械学習コア内蔵メムスセンサを使えば思いついたアイデアをすぐに試してみることができますぜひご活用くださいご視聴ありがとうございました