Skip to content

mnrj-vv-w/wearable-motion-visualizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌀 wearable-motion-visualizer

モーションセンサー(LSM303AGR)出力をリアルタイムに可視化する
Webベースの加速度データ可視化ツール。

Visualizer: MCUからUART経由で送られる加速度データをリアルタイムに可視化します。
Analyzer: CSV出力データからグラフを復元し、パラメータを動的に変更して採点分析を行います。


📦 構成概要

WearableMotionAnalyzer-uTKernel/
└── MCU側(uT-Kernel3)
     ├── app_main.c         # センサー制御・UART出力
     └── ... 
wearable-motion-visualizer/
├── server.js              # Node.jsサーバ(シリアル→WebSocket中継)
├── public/
│   ├── index.html         # ブラウザUI(Visualizer/Analyzer/Settingsタブ)
│   ├── app.js             # Visualizer: WebSocketクライアント+グラフ描画
│   ├── js/
│   │   └── analyzer.js    # Analyzer: CSV解析・パラメータ変更・採点分析
│   └── style.css
├── logs/                  # ログファイル保存先(自動生成)
│   ├── sensor_log.csv     # リアルタイムログ
│   ├── sessions/          # セッションごとのCSVファイル
│   ├── raw/               # 生データ保存
│   └── edge-impulse/      # Edge Impulse用データ(JSON形式)
├── example/               # サンプル・テストファイル
└── package.json

MCU(micro:bit等)からUART経由で送られる
加速度データを Node.js 経由でブラウザにリアルタイム表示します。


🎯 目的・用途

X,Y,Z軸の時系列加速度データをパラメータ解析し、得点・評価に寄与するパラメータを調査するために使用しています。動作の有無、波形類似度(相関係数)、Feature類似度など複数指標の総合スコアを算出し、各パラメータの寄与度を分析することで、ラベル付けとデータ構築を効率化し、Edge Impulse TinyMLによるAI化に向けたデータ収集・解析を支援します。


⚙️ 動作環境

項目 推奨バージョン
Node.js v18.x 以上
npm v9.x 以上
ブラウザ Chrome / Edge 最新版
MCU micro:bit(uT-Kernel3, LSM303AGR搭載)

🚀 セットアップ手順

1️⃣ Node.js 側の準備

cd wearable-motion-visualizer
npm install

2️⃣ サーバ起動

npm start

実行後、コンソールに以下のようなメッセージが出ればOK:

Serial port open: /dev/tty.usbmodemXXXX
Server running on http://localhost:3000

3️⃣ ブラウザを開く

http://localhost:3000

🔌 MCU 側(uT-Kernel)出力仕様

MCUはUART経由で以下のようなテキストを出力します:

[CONFIG] ODR=200Hz, SCALE=±8g, MODE=HR, SHIFT=4
[SENSOR] 123,-456,789,96000,128000,-102400
  • [CONFIG]:現在のセンサー設定を表す行(起動時1回送信)
  • [SENSOR]:各軸の加速度値(LSBおよびmg単位)
  • 出力順序: X軸 (raw), Y軸 (raw), Z軸 (raw), X軸 (mg), Y軸 (mg), Z軸 (mg)
  • Node.js/Webアプリでは、後半の mg (ミリg) 単位の値(X, Y, Z の順)を利用します。

Node.jsはこのデータを自動的にWebSocketで配信し、
ブラウザ上でリアルタイムに描画します。


💻 ブラウザUIの説明

ボタン 機能
Connect / Disconnect WebSocket接続の開始・終了
Stop データ受信を停止し、CSVを自動保存
Clear グラフをクリア
グラフ描画一時停止 / 再開 描画負荷を抑えるために一時停止可能
モーションセンサー設定値取得 [CONFIG] 情報をブラウザに表示
ファイル選択 保存済みCSVファイルを再描画

📈 出力データ仕様(CSV)

列名 説明
x_raw, y_raw, z_raw センサー生データ(LSB)
ax, ay, az 換算加速度(mgまたはg)
timestamp 記録時刻(UNIX ms)

ファイル名例:

motion-2025-10-06T12-00-31-612Z.csv

⚠️ 注意事項

  • UARTは**一方向通信(MCU→Node.js)**のみ使用。
  • tm_printf()とUART送信が同一ポートのため、
    Node.js経由のコマンド送信は行いません。
  • センサー設定変更はMCUソースコードを変更して再ビルドしてください。

🧠 トラブルシューティング

現象 対応
MCUのAボタンで動かない UART競合。init_uart()呼出し位置を確認
「Serial port not found」 USBポート名(/dev/tty.usbmodem****)を確認
グラフが重い 「グラフ描画一時停止」を利用。サンプル数を減らす

🧩 今後の拡張予定

  • オフライン分析機能(CSV読込・統計分析)
  • 周波数解析(FFT表示)
  • モーション自動識別(機械学習連携)

🔗 関連プロジェクト

このプロジェクトは、Wearable Motion Analyzerシステムの一部です:

  • WearableMotionAnalyzer-uTKernel
    micro:bit上でμT-Kernel 3.0で動作するメインアプリケーション。LSM303AGR加速度センサーで手首動作を測定し、基準動作と比較動作を記録・分析します。

  • lsm303agr-utkernel
    micro:bit v2.21の内蔵加速度センサーLSM303AGRのキャリブレーションライブラリ。データシート準拠の正確なスケール計算を実装し、WearableMotionAnalyzer-uTKernelで使用されています。


使用目的とクレジット

このツールは、研究・教育用途を主目的とする参考実装です。

  • 研究・教育用途: Apache-2.0ライセンスに基づき、自由に使用・改変・配布できます
  • 実サービスへの組み込み: 可能ですが、クレジット表示とリンクをお願いします

このツールは、TRONコンテスト2025への応募作品「Wearable Motion Analyzer on μT-Kernel」の開発過程で生まれました。


👤 Author

  • Project: Wearable Motion Analyzer
  • Base: μT-Kernel 3.00
  • Visualization: Node.js + WebSocket + Chart.js
  • Maintainer: Ryuji Mori

About

Real-time accelerometer data visualization tool for LSM303AGR sensor

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors