エッジインパルスを使用したモーション認識
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
Seeed Studio XIAO nRF52840 Sense エッジインパルス入門

このクイックスタートウィキへようこそ!ここでは、Seeed Studio XIAO nRF52840 Sense とエッジインパルスを使用して、オンボードのIMUセンサーを活用し、人間の動きを検出し、さまざまな動作を分類する方法を探ります。経験豊富な開発者でも初心者でも、このチュートリアルは、XIAO nRF52840 Sense ボードでエッジインパルスを使用するための知識とスキルを提供します。それでは、始めましょう!
はじめに
このウィキでは、Seeed Studio XIAO nRF52840 Sense の加速度センサーをエッジインパルスと組み合わせて使用し、モーション認識を実現する方法を紹介します。ここで紹介するコードは、最新バージョンの Seeed nRF52 Boards に対応しています。
組み込みAIアプリケーションに関しては、「Seeed nrf52 mbed-enabled Boards Library」の使用を強くお勧めします。
ハードウェア
このウィキでは、以下の材料を準備する必要があります:
- Seeed Studio XIAO nRF52840 Sense
- Li-poバッテリー (702025)
- Grove - OLED Display 0.66"
- デュポンケーブルまたはGroveケーブル
- 3Dプリントされたシェル
- ライトガイドプラスチックファイバー
ハードウェアのセットアップ
ステップ 1. Grove - OLED Display 0.66" のGroveベースをハンダゴテで取り外します。
ステップ 2. デュポンケーブルを約3cmの長さに切り、両端の内側のケーブルを約2mm露出させます。
ステップ 3. ファイバーを前面の小さな穴に通し、端をLEDに配置します。
ステップ 4. 以下の図に従って、Seeed Studio XIAO nRF52840 Sense を他の要素とハンダ付けします:
ハンダ付け部分を強化するためにホットメルト接着剤を使用すると良いでしょう。
ステップ 5. すべてのコンポーネントを組み立てます:
- ファイバーをシェル前面の小さな穴に通します。
- 画面を固定位置に取り付けます。
- バッテリーを Seeed Studio XIAO nRF52840 と画面の間に挟みます。
- ワイヤーを慎重に処理します。
- ライトガイドプラスチックファイバーの端を Seeed Studio XIAO nRF52840 のRGBライトに配置し、余分を切り取ります。
- ケースを組み立てます。
組み立て後の状態:
ソフトウェア
必要なライブラリは以下の通りです。ここで提供されるコードを使用して、ハードウェアが正常に動作しているか確認することを強くお勧めします。ライブラリのインストールに関する問題がある場合は、こちらを参照してください。
Seeed Studio XIAO nRF52840 Sense をエッジインパルスでセットアップするには、以下のソフトウェアをインストールする必要があります:
- Node.js v12 以上。
- Arduino CLI
- Edge Impulse CLI とシリアルモニター。以下のコマンドをコマンドプロンプトまたはターミナルで実行してインストールします:
npm install -g edge-impulse-cli
CLI のインストールに問題がありますか?詳細については、インストールとトラブルシューティングを参照してください。
Edge Impulseへの接続
すべてのソフトウェアが準備できたら、開発ボードをEdge Impulseに接続します。
- ステップ 1. USB Type-Cケーブルを使用して、Seeed Studio XIAO nRF52840 Senseをコンピュータに接続します。
- ステップ 2. Edge Impulseで新しいプロジェクトを作成します。
- ステップ 3. 「Accelerometer data」を選択し、「Let’s get started!」をクリックします。
データ収集とトレーニング
このステップでは、Seeed Studio XIAO nRF52840 SenseのオンボードIMUから「加速度計データ」を収集し、データセットを構築してから、Edge Impulseプラットフォームでモデルをトレーニングします。
- ステップ 4. 「Accelerometer Raw Data」スケッチをSeeed Studio XIAO nRF52840 Senseにアップロードします。
Seeed_Arduino_LSM6DS3ライブラリをダウンロードし、ZIPファイルとして保存します。
Arduino IDEを開き、スケッチ > ライブラリをインクルード > .ZIP形式のライブラリを追加...
を選択し、ダウンロードしたZIPファイルを開きます。
以下のコードをアップロードし、シリアルモニタを開きます。
// XIAO BLE Sense LSM6DS3 Accelerometer Raw Data
#include "LSM6DS3.h"
#include "Wire.h"
// LSM6DS3クラスのインスタンスを作成
LSM6DS3 myIMU(I2C_MODE, 0x6A); // I2Cデバイスアドレス 0x6A
#define CONVERT_G_TO_MS2 9.80665f
#define FREQUENCY_HZ 50
#define INTERVAL_MS (1000 / (FREQUENCY_HZ + 1))
static unsigned long last_interval_ms = 0;
void setup() {
Serial.begin(115200);
while (!Serial)
;
if (myIMU.begin() != 0) {
Serial.println("デバイスエラー");
} else {
Serial.println("デバイスOK!");
}
}
void loop() {
if (millis() > last_interval_ms + INTERVAL_MS) {
last_interval_ms = millis();
Serial.print(myIMU.readFloatAccelX() * CONVERT_G_TO_MS2, 4);
Serial.print('\t');
Serial.print(myIMU.readFloatAccelY() * CONVERT_G_TO_MS2, 4);
Serial.print('\t');
Serial.println(myIMU.readFloatAccelZ() * CONVERT_G_TO_MS2, 4);
}
}
シリアルモニタに、以下のように加速度計とジャイロスコープのデータが順番に表示されます。
- ステップ 5.
terminal
、cmd
、またはpowershell
で以下のコマンドを実行して開始します。
edge-impulse-data-forwarder
- ステップ 6. CLIを使用してSeeed Studio XIAO nRF52840 SenseをEdge Impulseに接続します。まずアカウントにログインし、プロジェクトを選択します。
加速度計とデバイスの名前を設定します。
- ステップ 7. XIAO nRF52840 SenseをEdge Impulseに接続します。
Edge Impulseの「Data acquisition」ページに移動し、接続が成功すると以下のような結果が表示されます。ページの右側に"Seeed Studio XIAO nRF52840 Sense"デバイスが表示されます。
- ステップ 8. センサーを「3 axes」に設定します。ラベルを
up
とdown
に設定し、サンプル長(ms)を20000に変更して「Start sampling」をクリックします。
- ステップ 9. Seeed Studio XIAO nRF52840 Senseを上下に振り、20秒間その動きを続けます。収集結果は以下のように表示されます。
- ステップ 10. 生データの右上をクリックして「Split Sample」を選択し、データを分割します。「+Add Segment」をクリックしてグラフを選択します。これを20回以上繰り返してセグメントを追加します。「Split」をクリックすると、1秒ごとのサンプルデータが表示されます。
- ステップ 11. ステップ 8とステップ 9を繰り返し、異なる名前でデータにラベルを付けて、異なる動作データを収集します(例:
left
とright
、clockwise
、anticlockwise
など)。例として、上下、左右、円運動を分類していますが、必要に応じて変更可能です。
ステップ9では、分割時間が1秒であるため、ステップ8で1秒間に少なくとも1回上下運動を行う必要があります。そうしないと、結果が正確になりません。また、動作速度に応じて分割時間を調整することができます。
機械学習モデルの構築
- ステップ 12. データセットをリバランスするには、Dashboard をクリックし、ドロップダウンページから Perform train / test split を見つけます。
Perform train / test split をクリックし、「Yes」を選択して確認します。
- ステップ 13. インパルスを作成する
Create impulse をクリック -> 処理ブロックを追加 -> Spectral Analysis を選択 -> 学習ブロックを追加 -> Classification (Keras) を選択 -> インパルスを保存
- ステップ 14. スペクトル特徴
クリックして設定します。
Spectral features をクリック -> ドロップダウンページで Save parameters をクリック -> Generate features をクリック
出力ページは以下のようになります:
- ステップ 15. モデルをトレーニングする
NN Classifier をクリック -> Start training をクリック -> Unoptimized (float32) を選択
トレーニングモデルの精度は最終結果に非常に重要です。出力トレーニング結果が65%未満の場合は、再トレーニングを強くお勧めします。
Seeed Studio XIAO nRF52840 Sense へのデプロイ
- ステップ 16. モデルテスト
Model testing をクリック -> Classify all をクリック
精度が低い場合は、トレーニングセットを増やし、サンプル時間を延長することでデータセットを確認できます。
- ステップ 17. Arduino ライブラリをビルドする
Deployment をクリック -> Arduino Library をクリック -> Build をクリック -> .ZIP ファイルをダウンロード
- ステップ 18. .ZIP ファイルの名前は非常に重要です。デフォルトでは Edge Impulse プロジェクトの名前として設定されています。ここではプロジェクト名が "XIAO-BLE-gestures_inferencing" です。ファイルを選択して、Arduino ライブラリに「.ZIP ファイルを追加」します。
- ステップ 19. ここ からコードをダウンロードします。ヘッダーファイルの名前を自分の名前に変更し、アップロードします。
- ステップ 20. Seeed Studio XIAO nRF52840 Sense を動かしたり保持したりして、結果を確認します:
Arduino の右上隅にあるモニターをクリックします。
Seeed Studio XIAO nRF52840 Sense を左右方向に動かすと:
モニターは以下のように出力します:
出力表示は以下のようになります:
Seeed Studio XIAO nRF52840 Sense を上下方向に動かすと:
モニターは以下のように出力します:
出力表示は以下のようになります:
Seeed Studio XIAO nRF52840 Sense をアイドル状態で保持すると:
モニターは以下のように出力します:
出力表示は以下のようになります:
おめでとうございます!プロジェクトの最後まで達成しました。さらに多くの方向を試し、どの方向が最良の出力を示すかを確認することをお勧めします。
リソース
技術サポート & 製品ディスカッション
.
弊社製品をお選びいただきありがとうございます!お客様が弊社製品をスムーズにご利用いただけるよう、さまざまなサポートを提供しております。お客様のご希望やニーズに応じた複数のコミュニケーションチャネルをご用意しています。