#はじめに
こんにちは、HCB Advent Calendar 2021の21日目を担当するKimです。
僕は卒業研究でPC作業中の脚部動作促進システムの研究をしており、研究の中ではJoy-ConとPythonを使った脚部動作認識を実装しています。
今回は僕が実装した脚部動作認識について紹介します。
#脚部動作認識方法
##データの取得
開発中のシステムでは,Joy-Conから脚部動作中の加速度と角速度を取得し,その値を使ってMacで認識する流れになっています。
Joy-Conから加速度・角速度を取得する方法は@tocoteronさんの記事を参考にさせていただきました。
https://qiita.com/tocoteron/items/9a5d81c8f640ecaff7a9
Joy-Conから取得したデータは,その脚部動作を認識するための基準データとしてcsvファイル保存します。
##DTW距離の算出
DTW(Dynamic Time Warping)とは2つの異なる波形の類似度を距離として算出するアルゴリズムです。
DTW距離が小さいほど波形データの類似度が高いことを表します。
動作認識ではSVMなどの機械学習が僕の周りで流行っていますが,
DTWの場合は用意するデータが基準波形データと計測時の取得波形データの2つなので,データ収集の時間削減のために使用しています。
pythonだとfastdtwというライブラリを使うのが簡単だと思います。
distance_LegMotion,path_LegMotion = fastdtw(file1,file2,dist=euclidean)
DTW距離の算出は上記1行で算出できます。
file1は取得したデータのcsvファイル、file2は基準データのcsvファイルが入ります。
##DTW距離の比較
脚部動作ごとに基準データを取得できたら,取得データと基準データとのDTW距離が算出します。
DTW距離の中で最小値となった基準データを脚部動作として認識します。
#おわりに
今回は開発中のシステムで使っている脚部動作認識の方法について記述しました。
研究発表が終わっていないので,ソースコードは非公開です。
脚部動作の軌道が似ているとまだ誤認識がありますが,閾値や裏処理を工夫すれば減らせそうな気がするので,今後も開発を頑張っていこうと思います。