Cork

大学生スプリンターの考えすぎる練習日誌

どこにでもいる大学2年生の短距離練習日誌

陸上競技 × ものつくり センサーによる体幹の傾きの計測

1/11 土 @等々力

 

センサーで友達の走りの姿勢推定

 

同じ400mスプリンターの myジィくん は、体が前傾しすぎていると言われてきて、本人もそう思っている。

 

では、実際どのくらい前傾しているのか?

今日の合同練習で、彼の体にセンサーをつけて、体の傾斜の数値化を試みた。

 

f:id:ryutaromiya:20200114153300p:plain

 

 

 

使用したもの

 

センサーデバイス

 TWELITE 2525-A  * 1   (センサー本体)

 TWELITE R  *  1   (プログラム書き込み装置)

 MONOSTIC  *  1   (PCとの通信装置)

 

f:id:ryutaromiya:20200114145447j:plain

f:id:ryutaromiya:20200114145454j:plain

 

http://akizukidenshi.com/catalog/g/gM-12120/

http://akizukidenshi.com/catalog/g/gM-09453/

http://akizukidenshi.com/catalog/g/gM-08264/

 

全部合わせて1万円ちょい。

ちょっと高い。



 

 

 

地獄の準備編 (読み飛ばし推奨)

 

センサー周辺の回路は作らなくて済んだが、プログラムや事前準備が非常にきつかった。

 

ネットの情報が少なすぎたり、挙げ句の果てに嘘が書いてあったり、公式のWindows版プログラムが動かなかったり。

 

Macのやり方を0から載せておく。きっと誰かの役にたつ。

 

 

 

パッケージのインストール

 

$ pip install pyserial

$ pip install pyqtgraph

$ pip install pyqt5

$ pip install pyftdi

$ brew install libusb  

  //これをインストしなかったせいでハマった。昔入れた気がしてて...

 

ポートの確認

 

MONOSTICMacに繋ぐ。

 

$ ls -1 /dev/cu.*    //  これでMONOSTICの接続ポートを確認する。あとで使うのでメモ

 

 

ファームウェア等のダウンロード

https://mono-wireless.com/download/SDK/MWSDK_201805/MWSDK_OSX_201805.tgz

 

 

FTDIドライバの停止

$ sudo kextunload -b com.apple.driver.AppleUSBFTDI

 

 

ファームウェアの書き込み

 

$ ./Tools/tweprog_py/tweterm.py -p ftdi://ftdi:232:MW3V3EU5/1 -F ./Wks_TWELITE/App_Tag/Parent/Build/App_Tag_Parent_RED_MONOSTICK_L1200_V2-1-3.bin -b 115200

 

ftdi://ftdi:232:MW3V3EU5/1 の部分は繋がっているポートの名前に書き換える。

バイナリデータ(App_Tag_Parent_RED_MONOSTICK_L1200_V2-1-3.bin )は、TWELITEREDBLUEかで異なるので注意

 

 

同様の手順でTWELITE 2525AファームウェアMONOSTICOTAを変更する。

 

 

TWELITE 2525Aファームウェアの書き換え

 

TWELITE RTWELITE 2525Aを公式説明動画をもとにつなぐ。

https://www.youtube.com/watch?v=hJ63sY_WY3I

 

ブレッドボードで接続したら接触不良になって、ハマったので手で押さえながら書き込むと良い。

あとは同じ。書き込むバイナリは

/Wks_TWELITE/App_Tag/EndDevice_Input/Build/App_Tag_EndDevice_Input_BLUE_LITE2525A_L1200_V2-1-3.bin

BLUEになってるけど気にしない。

 

MONOSTICOTA更新

 

Wks_TWELITE/App_Tag/EndDevice_Input/Build/App_Tag_EndDevice_Input_RED_OTA_L1200_V2-1-3.bin

を同様に書き込む。

インタラクティブの設定は公式動画を参考に。

command + shift + "+"

+3回、センス良くリズミカルに押せばインタラクティブに入れる。

 

グラフの描画

 

https://mono-wireless.com/jp/products/TWE-Lite-2525A/howtouse-graph.html

 

ここからpyファイルを拾う。モジュールも一緒についてくるので、作業ディレクトリはGraph内で。

 

MONOSTICを先にMacにつないで、その近くで2525Aの電池を入れると接続される。

 

$ python Graph.py -t /dev/cu.usbserial-MW3V3EU5 -r 6 -l -a

 

このコマンドで電波強度と3軸加速度がリアルタイムで描画される。縦軸は6g (m/ss)にした。

-a のオプションでCSVに保存できる。

 

あとはRだのPythonだのExcelだので心ゆくまで分析すればいい。

 

 

取り付けベルトの作成

100円ショップの良さがなやつを買った。

切って縫って。

f:id:ryutaromiya:20200114145757j:plain

 

 

 

 

 

 

 

実際に使用した

 

 

f:id:ryutaromiya:20200114145856j:plain

f:id:ryutaromiya:20200114145853j:plain

後ろ (センサー位置)

↑ ベルトの真ん中についているのがセンサー

 

f:id:ryutaromiya:20200114145901j:plain

笑顔 (100点)

 

結果

f:id:ryutaromiya:20200115105221p:plain

結果 (80mの後半40m)

 

通信距離が見通し1000mって書いてあったけど、人体に直接貼り付けている分、体内でだいぶ電波が減衰している模様。

 

一度センサーを捉えてしまえば、100mくらいなら追跡できるけど、センサーを捉えるためには、プログラムを実行した瞬間にセンサーがPCの30-40m以内にいなくてはいけないことがわかった。

中継器を挟めば解決しそうだ。

 

 

 

データの解析

 

ここで、データから体の傾きを導出してみる。

データの周期性に着目し、z方向加速度の1周期を取り出す。

 

 

走っていると、ジャンプの要素が加わって微小な変動がある。

その変動をならすことで、静止している状態に近似できるだろう。

 

変動をならす方法は、簡易的なものとして、同じ面積の長方形に近似する方法がある。

 

(データ数の方向にを積分すればいいんだが、データ幅が均等であるから平均値を求めることと等しくなる。)

 

f:id:ryutaromiya:20200114102541p:plain

 

平均するとz方向加速度は0.508g m/ss となった。

つまり、高さ0.508gの長方形と同じ面積。

 

次に、この0.508gが何を意味するのか考える。

 

f:id:ryutaromiya:20200114103833p:plain

 

体の傾きが、センサーの傾きにつながる。

 

センサーの付け方と軸に注目して、体の傾斜角θを用いると、z方向加速度a_zは

a_z = g * sinθ

となる。よって sinθ=0.508 となるθはθ=30.5° となる。

 

つまり彼は、31°の傾きで走っていたことになる。

(センサーはジャージの中に移した)

f:id:ryutaromiya:20200114144944p:plain

f:id:ryutaromiya:20200114144947p:plain

 

 

センサーを首に近い位置につけたため、猫背の彼の場合、実際よりも傾いた値が取れている。体幹部は31°も傾いていない。

というか31°も傾いていると大変なことになる。

 

センサー位置も工夫すべきかもしれない。

 

 

あとがき

 

今回は、初めての取り組みとしてセンサーデバイスを装着して簡易的な姿勢推定を行った。

体の傾斜だけでなく、データの振動具合を見ることで、「パワーポジション」や「体幹のブレ」がわかるかもしれない。

 

また、このセンサーは複数を同時使用することができる。

そのため、両腕と両脚につけたりして、「腕振りと脚の挟み込みのズレ」なども数値化できる。

 

電池含めて6.5g。一度バッテリーを入れれば半年はもつというこのセンサー。工夫次第で、今まで動画だけではできなかった運動分析ができるだろう。