水平状態でMPU6050から加速度を取得できるようになりました。しかし設置場所によっては水平に置くことが出来ずに、出力結果にバイアスがかかってしまう場合があります。
調べてみると座標を回転させることで補正が出来そうだという事が分かったので、現在どのような姿勢(グローバル座標から何度傾いているか)を求めて補正を掛けていきたいと思います。
初めて座標の回転について勉強したため間違った情報があればご指摘お願いいたします。
今回はこちらの記事を元に他の記事も参考にしながら勉強していきます。
目次[非表示]
2次元の回転について考える
いきなり3次元の回転について考えるのは難しいため、まずは二次元の回転について考えます。
まず初めに図1に示したように座標Pの点\beta回転させて、点Qに移動する場合を考えます。
図1:回転前後の座標 |
回転前の点Pは原点からの長さr、角度\alphaなので極座標形式であらわすと次のようになります。
\begin{equation}x_p = r\cos \alpha \\ y_p =r\sin \alpha \end{equation}
次に点Pを\beta回転させた点Qを考えます。点Qの角度は\alpha+\betaなので、(1)式同様に極座標形式であらわすと以下のようになります。
\begin{equation}x_q = r\cos (\alpha+\beta) \\ y_q =r\sin (\alpha+\beta) \end{equation}
(2)式を加法定理を使って展開すると以下のようになります。
\begin{equation}x_q = r(\cos \alpha \cos\beta - \sin\alpha\sin\beta) \\y_q =r(\sin\alpha \cos\beta + \cos\alpha\sin\beta) \end{equation}
この(3)式に(1)式を代入して整理すると以下のようになります。
\begin{equation}x_q = x_p\cos\beta - y_p\sin\beta \\y_q =x_p \sin\beta + y_p\cos\beta \end{equation}
最後にこれを行列形式であらわすと以下のようになり、回転行列を求めることが出来ます。
\begin{equation}\begin{bmatrix}x_q \\ y_q \end{bmatrix} = \begin{bmatrix}\cos\beta & -\sin\beta \\ \sin\beta & \cos \beta \end{bmatrix} \begin{bmatrix}x_p \\ y_p \end{bmatrix} \end{equation}
座標の回転を考える
先ほどまでは点の回転を考えてきましたが、今度は"座標"の回転を考えていきます。
図1のようにx - y座標を\beta回転させて、x^{\prime} - y^{\prime}に変換する場合を考えます。
図2:今回考える座標の回転 |
この座標系に点Pを置いて、回転前の座標から見た点Pが回転後の座標から見ると次のように点Pが近づいてきて点Qに移動するように見えます。
0 件のコメント:
コメントを投稿