こんにちは,きっちゃん(@I_am_Entraineer)です.
有名なVBTツールの1つであるPush2.0がサービスを終了したとのことです.
VBTとはVelocity Based Trainingの略で,ウエイトトレーニング時の挙上スピードを計測することで,疲労度や成長を管理するためのツールです.一般には記録を管理するためのアプリと物理デバイスをセットで販売しているようで,Push2.0もセットで販売されていました.
HPによると,昨年9月にはアプリが使えなくなったようですが,最近になってTwitterでユーザーさんの声が聞こえてきましたので,3月いっぱいまではサービスしていたのかもしれません.ただ,機器を所有しているユーザーさんは軒並み困っているようです.レベルの高いスポーツチームでは積極的に活用されているようで,そういった場合は複数台購入しているでしょう.高いお金を出して準備した機器が使えなくなったのは痛恨だと思います.
個人的にはVBT(Velocity Based Training)には以前から興味があったのですが,機器が高価だったこともあり,なかなか手が出ないなと思っていました.アプリ開発に興味を持っていた時期と重なっていたこともあり,安い機材で同じようなものが作れないかなとぼんやり考えていたりました.
この手の機材は,鉛直方向の速度を計測するのが主たる目的です.速度の計測だけでしたら,加速度センサとジャイロセンサさえ付いていれば実現できるようです.実際にスマホにもこれらセンサは搭載されていますし,そのため速度が計測できます.そこでスマホでやってみようかな...と一時考えました.今どきスマホは全員持っています.
しかしユースケースとして,「挙上スピードが一定のしきい値を超えたらエクササイズを終了する」といった使い方や,「トレーナーがスマホで速度を見ながらトレーニーに指示をする」といった使い方が想定されるようです.なので,アプリと計測機材をひとつのスマホで完結するのは使い勝手が悪いようです.
そこでスマホでもない,安価で多くの人が持っている機器で,加速度センサとジャイロセンサが付いているものを考えました.ありました...皆さんリングフィットとかで遊んでますよね...あれセンサないとできないですから...
ちゃんとついています.しかもBluetoothまで実装されています.Amazonで片側なんと4,000円.下手に自作するよりよっぽど高品質で安上がりです.ということで,Joy-Conを使って作れないか考えていくことにしました.
しかし機能として期待できることは判明したものの,ゲームのために作った機器ですので,目的外の使い方は想定されていません.当然機器の詳細な仕様については非公開です.しかし世の中,変態(褒め言葉)というのはいるものでして,これをリバースエンジニアリングした強者がいます.
そして,この成果を踏まえてpythonで実装されたJoy-Conのドライバがこちら.この方も素晴らしいです.
ただし,取得できるのは生のセンサ情報です.
私もこの世界はよく知らなかったのですが,精度よく速度や加速度を計測するには,加速度センサの情報だけでは足りないようです.世の中のロボットやドローンは,加速度センサとジャイロセンサの情報を取得して,いい感じにミックスして精度を出しています.そのいい感じにミックスする方法が「拡張カルマンフィルタ」です.センサ統合と呼ばれる技術ですね.
正直土木屋には辛い世界ですが,ちょっと頑張って実装しました.以下を参考にしました.
先人の知恵と成果を使ってチョコチョコと書くことで,VBTに使えるようにモジュールを作成しました.私がやったのは些細なことです...
Joy-ConとBluetooth接続すると絶対座標系の加速度情報が取得できます.つまり,その情報を時間で積分してあげれば速度が得られます.
ちゃんと鉛直方向に重力加速度が出ますので,ひとまずJoy-Conで経時的に加速度が取れるところまでは確認できています.
(あとで使ってみた様子を掲載しておきます)
募集
で,私としてはせっかくなので,これを形にしたいです.つまりVBTデバイスとしてJoy-Conを用いたアプリを制作したいです.そのためには以下のような作業が必要です.
- Joy-Conで得られる速度情報の精度検証(他のVBTデバイスとの比較)
- 上記
joycon_estimator
のレビュー(センサ統合のコードが正しいか) - スマホアプリ制作(Flutterベース)
正直,デバイスの検証やコードによるアプリ制作の経験はありませんので,一人でやるのは辛いです.前述の通り,困っている方もおられるでしょうから,早期にリリースもしたいです.ですので,我こそはという方がおられましたら,是非一緒にやりませんか?興味のある方は(@I_am_Entraineer)にDMをお送りください...