無駄のない完璧なロボットの走行~ETロボコンにおけるライントレースについて~
2022-04-09
azblob://2022/11/11/eyecatch/2022-04-07-whatislinetrase-000.jpg

新卒で入社した村上です。

ロボットを思った通りに動かすのって、簡単そうに見えて実は難しいんです。

ロボットに線の上を綺麗に走らせる、この簡単そうな動きにも実は様々な技術が隠れているんです。

そこでこの記事では私が学生時代最も努力してきたETロボコン、ライントレースについて書きたいと思います。

そもそも"ETロボコン"、"ライントレース"って何?

ETソフトウェアデザインロボットコンテスト(通称ETロボコン)は組み込みソフトウェアの技術を競うコンテストで、全チームが同じロボットを用い、黒い線が引かれたコースを走る速度、コース走行後にシーソーの上を走行するなどの難所の突破、それらの走行に使ったプログラムを設計図にしたモデルの完成度で評価されます。

このロボットには光センサがついていて、これによって床の明るさを判別して黒い線の上を走ることができます。

このようにロボットを線に沿って走らせることをライントレースといいます。

私はこのETロボコンで黒い線の上を早く走らせる部分を担当し、ライントレースを極めることになりました👍

ETロボコンにおけるロボットの走行って?

上に簡単な概要について書きましたが、もう少し詳しく書いていきたいと思います。

ETロボコンで使用するロボットには傾きセンサ、距離センサなどたくさんのセンサが付いていて、現在の状況が分かるようになっています。

そのセンサの一つである光センサは床の明るさを真っ白な状態を0、真っ黒な状態を100としたときの現在の値を出してくれます。

この値は1秒に何十回も出力されます。この変化していく値を用いて

「今線の上に居るよ~🧐」「今線の上に居ないよ~😥」「今線の境目だよ~🙃」

などの判断をしていきます。

この判断を基にして、 ロボットを動かしているタイヤのモータにどのような命令をしていくのかを決めます。

ここでどのような命令を出すのかが腕の見せ所です😎

どうやってライントレースさせたの?

では実際に私がどのようにライントレースを行ったのか、2つの制御方法を紹介します。

1.ON-OFF制御

ON-OFF制御は白と黒の間の値を閾値として、それを基準に左に曲がりながら進むのか右に回りながら進むのかを決める制御です。

ライントレースに初めて取り組む人はまずこの制御について学ぶと思います。

メリットは複雑な計算を行わないので初心者でも簡単に実装できることです。

しかし、このメリットはデメリットにもなります。

複雑な計算を行わないということは複雑な動作ができません。左か右に進むことしかできず、どんな時も同じ曲がり方をするので無駄が大きいものになります。

ON-OFF制御の例

この欠点を解決するのが次の方法です。

2.PID制御

PID制御のPIDはそれぞれProportional(比例)、Integral(積分)、Differential(微分)の頭文字になっています。

その名の通り、PID制御は比例積分微分を利用した制御です。

2-1 P制御

ON-OFF制御の無駄な動きを解消するために、目標値に対しての差に曲がる量を比例させる制御です。

これによって無駄な動きが少なくなります。

しかし、境界値に近くなると操作量が弱くなりすぎて、目標値の一歩手前で安定してしまうオフセット、境界値から遠くなると操作量が強くなりすぎて、目標値を超えてしまうオーバーシュートといった2つの現象が起こってしまうデメリットもあります。

(左)ON-OFF制御 (右)P制御

2-2 I制御

P制御のオフセットを解消するために、P制御では足りない曲がる量を偏差を累積し、積分することで解決する制御です。

(左)P制御 (右)PI制御

2-3 D制御

P制御のオーバーシュートを解消するために、今の偏差と前の偏差を比較してカーブの始まりを検知し、あらかじめ操作量を多くしておく制御です。

(左)P制御 (右)PID制御

この3つの制御を組み合わせたPID制御はとても安定したライントレースが可能です。

まだまだ奥深いライントレース

私が実際にETロボコンで用いたプログラムはPID制御を用いました。

完成したプログラムもそのままでは動きません。0.001単位でパラメータを変えてロボットにプログラムを書き込み走らせ、またパラメータを変え書き込み走れせ…これを数時間繰り返しました。

これを乗り越え、完璧な走行をさせることができた時の快感は格別です。

しかし、上には上がいるのが現実。もっと高速な走行が可能なプログラムを作成したチームもいました。まだまだでした…

ライントレースはとても奥深いものです。今回紹介した2つの制御方法の他、自己位置推定などの面白いかつ有益な方法もあります。いつかリベンジしたいです。

終わりに~ETロボコンはいいぞ~

以上でETロボコンとライントレースの話は終わりですが、ETロボコンにはライントレースだけでなくシーソーの上を転ばずに走らせたりする難所、走行プログラムを分かりやすく図解するモデリングなどまだまだ面白い要素があります。

まずはETロボコンを観戦してみてください。面白いものが見れる………かもしれません。