mononichi.com
Wiiバランスボードを使った重心推定(アルゴリズム編)
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