読者です 読者をやめる 読者になる 読者になる

エヌがのロボット製作日記

どうも「エヌがの」です。主にマイクロマウスのことばかり書いているぶろぐです。とあるuniqueでexcitingな大学に在学中です。

磁気式エンコーダ その3

こんにちは。エヌがのです。

 磁気式エンコーダ第3回です。取得した速度データを滑らかに加工して制御をしやすくしたのが前回の記事です。今回は、取得した角度情報を使って補完した話を書こうと思います

 毎回ですが、モータに一定のdutyをかけ、空転させたとき取得したデータがこのようになっています
左:速度mm/s 右:取得角度(14bit/rot)
f:id:megato:20151129022235p:plain:w300 f:id:megato:20151129022248p:plain:w300
 ここから、磁石1回転分の角度情報を抜き出します。
この角度情報を無理やり理想的な形(1次線形)に線形変換します
f:id:megato:20151204032301p:plain:w400

変換した角度情報はこちらになります
f:id:megato:20151204032920p:plain:w400

線形変換は6次の線形近似を使用していますが、完全な近似ではないのでだいぶぶれています。おそらく他に方法はあると思いますが、思いつかなかったのでこれで良しとしました。単純に自分の知識不足なので、もっと良い方法はいくらでもあるでしょう

 気になる速度の情報はこちらになります
f:id:megato:20151204033204p:plain:w400
だいぶマシになったかなという程度です。線形変換のやり方を改善すればもっとよくなりそう
一応、1回転したときの整合性を合わせるために、1回転したときの角度値を変えております
 実装に関して、1ms毎に6次の近似方程式を2回解いていますが、問題なく動いています。さすがRX


 今回はここまでとします。磁気式エンコーダに関する記事はこれで最後にしようと思ったのですが、クラシックマウスでの体験談を後1回で書こうと思います。
 長文になりましたが、ここまで読んでくださり、ありがとうございました。

おまけ:
 これは全日本前あたりになって試みたことなのですが、かの有名なカルマンフィルタを使ってみました。
結果はこんなかんじ
f:id:megato:20151204033637p:plain:w400
 青線がフィルタを通さなかったデータで、黄線がカルマンフィルタを通した値です
 ものすごく改善した気がします。やはりカルマンさんは偉大。これで全日本決勝は走りました
 ただ、フィルタの設計や補正項など評価ができてないので詳しくは書きません(というか書けない)。見かけ上うまくいってるだけかも