Arduino Due + Rotary Encoder
前回のエントリから2週間弱が経過してしまい,,,当初の目標をちょっとデコミットしてしまいました...がそんなときもあります.ただ,何もやっていなかったわけではなく,,,あらたな問題を解決しています(笑)
実は,TebLocalPlannerの軌道生成に使うにあたって,使っていたエンコーダの分解能が荒すぎることが発覚し,いまこの付け替えをしてます.なんだか素朴な感じで恥ずかしいのですが,もともと田宮のラジコンをベースに使っていたため,ラジコンのタイヤにネオジム磁石を張り付けてこれをホールセンサで読み取ることでオドメトリを計算してました.
タイヤとネオジム磁石
ホールセンサ
で,タイヤの直径が12cmで,一周37.68cmになります.一秒間に一周したとしたら大体40cm/sになるのですが,張り付けた磁石の数が20個なので50msに一回パルスが立つか立たないかという計算になります.このくらいの速度が出ていれば問題ないのですが,停止状態から滑らかに速度を立ち上げる場合,低速域でもある程度速度コントロールができないといけないのですが,ここがどうしても荒くなってしまって最終位置精度を高くできませんでした.
ということで,思い切ってエンコーダを付け替えることにしました.購入したエンコーダは結構いいやつで,OMRONの産業用のものです.
が,付け替えようと思った矢先,マイコンの割込みのピンが足りないことが発覚...結局マイコン周りも大幅に改修しないといけなくなってしまいました...マイコンは Arduino Due を聖地(笑)秋葉原まで行って購入してきました.UNOやLeonardと違ってAVRではなくARMを使っているとのことで,クロック数も上がっていたのでマイコンを一つに集約しました.
平日は朝仕事前に作業をしていたのですが,ハードをいじりだすと作業毎にいちいち部屋を片付けられないのでリビングが荒れ放題です(笑).独身万歳ですね.
今週末でハードの取り付け・マイコン周りのSWの整理を終わらせたいのですが...頑張ります.制御のキメが細かくなったらまたアップします.