wiiバランスボードを使った重心推定のアルゴリズムについてです。数学出来ない人が頑張って数学使ってぷろぐらむ書きました。
wiiバランスボードは角に4つの重さセンサがついているのでそのセンサから重心を推定します。
重さを単純に考えるとこうなります。
これをわかりやすいように横にして2次元的にします。
そして中心に寄せます。グラフっぽくなりました。
この際、重さをグラフのように展開するので、例えば右下のセンサは(x座標,y座標)=(重さ,-1*重さ)
のように -1をかけてあげてy座標を負の方向にさせます。また重さによってy=-xのグラフ上を動きます。
そして得られた4つの線のx座標とy座標の平均がベクトルの重心となり、図でいうと点Qのような重心の点が求まります。
前後左右の判定はグラフの軌跡を用います。例えば点Qが y=xのグラフより上 && y=-xのグラフより上 の場合は前進となります。
y=xのグラフより下 && y=-xのグラフより上 の場合は右となります。
最後に立ち止まっている静止状態の状態の判定方法です。立ち止まっているときは重心(図の場合点Q)が中心付近に集まります。よって何センチの円の中だったら静止状態と判断します。
実装方法はベクトルの大きさを用いて 点Q √(x座標^2+y座標^2)を行いそれが〇〇(円の半径にしたい数値)以内の場合、とすれば半径〇〇円の中に重心が入っていると判定できます。
以下の処理をwindowsC#上で視覚的にシミュレーションしました。画質悪い。。
また、前回の記事のようにArduinoと通信して同じアルゴリズムを適応すると以下のようになります。
ソースコードは次回のせましゅ。wiiボードの今更感あるけど、操縦おもしろくて良きb
バランスボードの監修に入っておりました、キングラン株式会社 経営戦略室の大畠と申します。
いや、面白いですね。
本体がリニューアルしてしまったので、ボードが不要になった方も多いのではと思いますが、
こちらを使えば、そんなに動けない方でも、ルンバを操縦して掃除したりなど、介護やリハビリの場面で活躍しそうに思います。
また、ただ運動するだけでなく、それが何かを生産できても面白いなー。
一度、お話を伺いにお邪魔してもよいでしょうか!!!!