二輪倒立ロボットのプログラム
目次
ライントレース
設定A:コースの状態から速度を変更
設定 B:速度を時間で変化させる方法
実演内容
ライントレース
step.1 LEDの初期化
白い物体に光が反射した状態でその時に受け取る光の量を測ります。
それぞれのLEDに対して30回分測定し,その平均値を使用します。
step.2 ライントレース
LED1の読み取り電圧からLED4の読み取り電圧を除算し,
この値が0に近づくように左右のタイヤの回転量を操作します。
LED2と5,LED3と6に対しても同様です。この方法をとっている理由は,
黒い線の上を走るだけでなく,グレースケール上でも正確に走行できるようにするためです。
ライントレースはPD制御で行われています。黒い線からの距離に比例して操作量を変化させるP成分と,
前回の測定量からの変化量に応じて操作量を変化させるD成分に分かれています。
また実際のライントレースでは途中で周囲の明るさが変化することもあるので,全体が明るくなった時に感度を下げ,
全体が暗くなった時に感度を上げるプログラムや,微小に入ってくるノイズを取り除く操作も行われています。
設定A:コースの状態から速度を変更
設定Aでは,コースの形状や目印の情報よりリアルタイムで速度を変化することを行いました。
情報を読み取るセンサにはLEDとフォトトランジスタで構成されるライントレースセンサを使用しました。
ライントレースセンサに認識させる地点はコースに付けた目印と直角地点としました。
具体的なプログラムについては以下で述べます。
目印を認識する時には二輪倒立のロボットの一番右側に設置されているLED6に
ある程度大きな値が入ると直角の手前だと判断し,直角を曲がることが出来る速度まで速度を落とします。
その後二輪倒立ロボットの一番左側に設置されているLED3に大きな値が入ると直角に進入したと判断し,
そこから速度を上げて倒立走行ができる最高速まで加速します。
設定 B:速度を時間で変化させる方法
設定Bでは,最初からコースの形状を知っているものとして,時間に応じて速度を変化させることを行いました。
この「時間」の設定は実際にコースを何度か走らせ,速度を上げたい区間や直角部分を曲がれる速度まで下げたい
区間に達するまでの秒数を細かく計測して,それに合わせてプログラムを調節しました。
具体的なプログラムについては以下で述べます。
ベースプログラムでは制御周波数が120Hzとなっており,これは実行したい動作の書かれたプログラム(メイン関数)
の処理を1秒間に120回繰り返すように設定されています。
その事を利用して,走行モード内では1回ごとにその数をカウントする事にしました。これにより,「120カウント」
されれば「1秒」ということになるので,計測した秒数に合わせて調節を行う事が可能となりました。
最終的に走行プログラムは,上図に示すような9段階の速度変化をさせました。
例えば直角ラインを曲がる場合では,遅い速度で走らなければコースアウトしてしまうので,
T5秒になったら速度を下げ,T6秒からはまた速度を上げるように設定しています。