ドライブサーバをテストする
ロボット作ろう:シェーキー製作記
ネットワークの仕様を決めたので、ドライブサーバのフレームワークを製作しました。
まだ、移動などの具体的なコマンドを決めていませんが、とにかくモーターを駆動するテストをしてみたいと思います。
組込んだメッセージ(コマンド)はAD変換の結果を返すCコマンドと、テストプログラムを実行するTコマンドだけです。ドライブサーバとPCをレベルコンバータで接続してPCからメッセージを送ります。
例えば、PCのTeraTermをID0として(仮に)ここからADの結果をモニターするCコマンドをID1のドライブサーバに送るには
@10C
とTeraTermに打ち込みます。するとドライブサーバから
@01aaabbbcccdddeeefff.......
といった感じで8チャネル分のAD変換結果(10ビット)がaaaのように16進数3桁で帰ってきます。
Tコマンドは受信すると速度制御で走行する無限ループを実行します。
これらのコマンドはデバッグ用です。
さて、今回テスト走行させてみたところでは、やはり、このように分解能の低いエンコーダでの速度制御は困難です。ウィーンウィーンとモーターの回転が脈打つ感じで、走行させるとアタマを少し左右に振ります。直進性も非制御よりはかなりいいですが、満足な精度ではありません。
エンコーダの1周期(駆動輪1回転で50周期)を一定の値に保つように制御しましたが、これが40ms-100msくらいと遅いので、単純な制御では振動が出易いのです。せめて10msごとにモーターパワーの調整を行えるくらいの分解能は欲しいところです。
ファジー制御のようなものを導入すればいいかもしれません。人間が速度計を見ながら、アクセルを調節するように、短期的にはばらつくが、長い目で見るとなめらかに速度が保たれているような速度の調節法です。
ただ、この方法だと左右の駆動輪を常に等しい速度に保持するのは困難なので、直進補正は何らかの方法で掛けなければなりませんね。
« シェーキーの体内ネットワークを考える(その3) | トップページ | モータードライブとPWM »
「ロボット作ろう」カテゴリの記事
- Raspberry Pi3でturtlebotを動かしたいのだけど(2016.06.11)
- STM32F4のAD変換トラブル(その2)(2013.03.29)
- TrueSTUDIOからEclipseへ乗り換える(拾遺)(2012.07.14)
- TrueSTUDIOからEclipseへ乗り換える(その3)(2012.07.13)
- TrueSTUDIOからEclipseへ乗り換える(その2)(2012.07.07)
コメント