GR-CITRUSとMIKANを試してみる(8)
前回はタンクをつくってみましたが、今回はジャイロセンサを使って倒立ロボットを作ってみました。参考にしたのはこのURLの製作記事です。
コントロール基板はタンクと同様です。異なるのは、下記の4点です。
①コントロール基板に供給する電源を3.7Vリチウムポリマー電池から別電源としました。タンクを製作した時に、モータの正逆回転時にマイコンがリセットされる症状が時々出ていました。別電源とすることでこの症状を回避することができました。
②タイヤは比較的安価なタミヤのオフロードタイヤセットを採用
③モータ用電源(単三×3本)と3.7Vリチウムポリマー電池はモータ取り付け位置の反対側に取り付け(バランス重視)
④コントロール基板は、モータ取り付け側の上部に水平に取り付け
そのため、ベースプレートにLアングル(2個)で取り付けました。よってジャイロセンサのY軸方向のみを使います。もし、コントロール基板をベースプレートと平行に取り付けると、ジャイロセンサのデータが異常な値となり、上手く倒立できません。
実際に作った倒立ロボットはつぎのとおりです。
mrubyで書いたプログラムはつぎのとおりです。ポイントは下記の4つです。
①今回WiFiは使わないので除いています。
②モータ制御に外部から値が変えられるように以下のメソッドを追加
ll_motorf(value),rr_motorf(value), ll_motorb(value), rr_motorb(value)
③ジャイロセンサからのデータを高速で入手する必要があるのでL3GD20_CTRL_REG1(0x20)の値を0xCF(OUTPUT DATA RATE を760Hz、Cut offを30Hz)に設定しています。また測定レンジを±250dpsと感度を高く設定しています。
④倒立させるにはk1~4のパラメータ@kAngle、@kOmega 、@kSpeed 、@kDistanceを設定する必要があります。カットアンドトライでこれらの値を変えますが、PCからUSBシリアルコマンドで設定できるようにプログラムを追加しています。
例えばTeraTermのブロードキャストコマンドからk1 120と入力して送信をクリックすると@kAngleの値が120に設定されます。
gistb28e54aaa9ffcb198cfd0e3b9689b3a5
動画はこちらです。