Edge Impulseで加速度センサ値を学習(XIAO nRF54L15 Sense編)

本サイトはアフィリエイト広告を利用しています。
Zephyr

Edge Impulseで加速度センサのデータを学習させました。

XIAO nRF54L15 Senseを使用しています。

プログラムから、Edge Impulseへのデータのアップ含めて紹介します。

 

スポンサーリンク

Edge Impulseで加速度センサ値を学習(XIAO nRF54L15 Sense編)

Edge Impulseで加速度センサのデータを学習させました。

XIAO nRF54L15 Senseを使用しています。

 

プログラムから、Edge Impulseへのデータのアップ含めて紹介します。

実際に学習させた際の動画含めて紹介しています。

 

XIAO nRF54L15 Sense

Seeed社が販売している、XIAO nRF54L15 Sense でデモをしています。

NordicのnRF54L15 がSoCとして搭載されています。概要を紹介したブログ記事が下記です。

XIAO nRF54L15 Senseの始め方(westでのビルド編)

XIAO nRF54L15 Senseの始め方(westでのビルド編)
XIAO nRF54L15 SenseでZephyrのHello Worldをしてみました。NordicのツールのnRF Connectを使わずにテストしてみました。ZephyrのWestを使ったビルドした内容を紹介します。XIAO nRF...

 

加速度センサ、マイクのセンサが内蔵されているので、簡単にデモが可能です。

 

nRF Connect

下記の公式手順ではNordicのツールのnRF Connectでテストする手順が紹介しています。

まずはこの手順に従いテストすることをおススメします。

今回実施した環境はV.3.0.1で実施しています。

 https://wiki.seeedstudio.com/xiao_nrf54l15_sense_getting_started/

 

VS Code上でインストールする手順もブログ記事でまとめていますので参照ください。

nRF Connectの開発環境をVSCodeで構築してみた

nRF Connectの開発環境をVSCodeで構築してみた
NordicのnRF54L15やnRF5430を開発するための環境を整えました。普通のWindowsのPCとVSCode上で構築しています。Nordicのソフトウェア開発環境として使用したツールと、セットアップ方法を紹介します。nRF Co...

 

Edge Impulseでデバイス上の加速度センサ値を取得

Edge Impulseでデバイス上でのデータ値を取得するには、事前準備が必要です。

  • USBシリアルでデバイスからデータ値を取得
  • Edge Impulse CLIを使ってアップロード

 

ZephyrでUSBシリアルでデータ値を取得

下記公式ドキュメントを参考にしながら、加速度センサ値を取得するプログラムを作ります。

 https://docs.edgeimpulse.com/tools/clis/edge-impulse-cli/data-forwarder

 https://github.com/nrfconnect/sdk-nrf/tree/main/samples/edge_impulse/data_forwarder

 

XIAO nRF54L15 Senseに搭載されている加速度センサはLSM6DS3TR-Cです。

Seeed公式にも加速度センサの値を取得するプログラムが用意されています。

 https://github.com/Seeed-Studio/platform-seeedboards/tree/main/examples/zephyr-imu

 

上記を改造して、Edge Impulse CLIで104Hzで取得できるように改造しました。

実際に使ったプログラムは下記に保存しています。

zephyr-ei-xiao-nrf-demo/src/nrf54l15/imu_dataforwarder at main · iotengineer22/zephyr-ei-xiao-nrf-demo
This repository present Zephyr Demo with Edge Impulse and XIAO nRF54l15/nRF52840 Sense - iotengineer22/zephyr-ei-xiao-nr...

 

下記のようにI2C経由でx,y,xの加速度センサ値が104Hzで連続して表示するプログラムです。

 

Edge Impulse CLI

シリアルメッセージをEdge Impulseにデータを上げるための環境を下記を見て整えます。

 https://docs.edgeimpulse.com/tools/clis/edge-impulse-cli/installation

 

公式ドキュメントに従って、PythonとNode.jsが入っていること確認してインストールしました。

npm install -g edge-impulse-cli --force

コマンドプロンプトでCLIを入れたログを下記に残しておきます。

 

Edge Impulseで加速度センサ値を学習する

冒頭でも紹介しましたが、実際に学習させた際の動画含めて紹介しています。

 

XIAO nRF54L15 Senseにはプログラムは書き込み済です。

 

Edge Impulse CLIでログインして、加速度センサの値をアップロードします。

ラベル、各データの名前なども入力したりします。

edge-impulse-data-forwarder --frequency 104

 

実際のEdge Impulse CLI上でのログが下記となります。

 

サンプリングを繰り返し、必要なデータを入手します。

idle, circle, updown, flickの4パターンで学習させています。

3分間の学習データ、1分間のテストデータを取得しました。

 

Create Impulseの箇所でどのように学習させるかを設定できます。

この辺りは、下記公式のサンプルを参考にしています。

 https://docs.edgeimpulse.com/datasets/time-series/continuous-motion-recognition

 

今回は下記設定で対応しています。他は全てデフォルト設定です。

  • Time series data…Window size:1000ms→2000ms
  • Processing block…Spectral Analysis
  • Learning block…Classification, Anomaly Detection (K-means)

 

後は全てデフォルト設定で進めていきます。

Spectral features, Classifier, Anomaly detectionを順に学習します。

Anomaly detection settingsではaccx RMS, accy RMS, accz RMS の3つを設定しています。

 

最後はDeploymentの箇所でビルドします。

今回はC++ライブラリを設定して、ビルドします。

 

raw_data(加速度センサ)

ビルド済のデータはパラメータ・モデルなどの箇所にライセンスがあるため、展開できません。

各個人でEdge Impulseで作成をお願いします。

 

但し、今回取得した加速度センサのデータ値は共有しています。

もし必要でしたら、idle, circle, updown, flickの4パターンのデータを使ってください

下記にGitHubに保存しています。

zephyr-ei-xiao-nrf-demo/raw_data at main · iotengineer22/zephyr-ei-xiao-nrf-demo
This repository present Zephyr Demo with Edge Impulse and XIAO nRF54l15/nRF52840 Sense - iotengineer22/zephyr-ei-xiao-nr...

 

最初のデータのupload data箇所で解凍したフォルダを選択すれば使用可能です。

 

おまけ(XIAO nRF52840 Sense)

今回のデータ収集方法を、一つ古いモデルのXIAO nRF52840 Senseでも試してみました。

しかし、結果はNGでした。(多分プログラムが悪いと思います)

nRF52840では104Hzで加速度センサのシリアルメッセージを表示できませんでした。

 

ただ12.5Hzの加速度センサ値のシリアルメッセージは取得できました。

Edge Impulse にもデータをアップロードできることは確認しました。

下記にプログラムを置いています。

zephyr-ei-xiao-nrf-demo/src/nrf52840/imu_dataforwarder_nrf52_12_5hz at main · iotengineer22/zephyr-ei-xiao-nrf-demo
This repository present Zephyr Demo with Edge Impulse and XIAO nRF54l15/nRF52840 Sense - iotengineer22/zephyr-ei-xiao-nr...

 

nRF52840のUSBのIPの速度影響なのか、それともスペックの影響なのか不明でした。

(nRF52840はnRF54L15と違って、USBが直接ICに繋がっています。)

参考までに、情報を展開しときます。

 

まとめ

Edge Impulseで加速度センサのデータを学習させました。

XIAO nRF54L15 Senseを使用しています。

プログラムから、Edge Impulseへのデータのアップ含めて紹介しました。

 

下記の記事で、今回作ったモデルを利用して実際にジェスチャー認識をしています。

一緒にご覧ください。

コメント