設計と実装がシンクロして見えた奥深きETロボコンの世界ETロボコン2009、挑戦記(6)(2/3 ページ)

» 2009年09月18日 00時00分 公開
[上口翔子,@IT MONOist]

 ここからはチーム@IT MONOistの結果を報告します。

――地区大会からさかのぼること約2週間。前回紹介した東海地区での勉強会に参加してきたチーム@IT MONOistは、勉強会の中で目にしたPID制御走行の効果に魅了され、早速開発に取りかかりました。

 昨年の地区大会レポートでも取り上げたPID制御ですが、これは現在世の中のあらゆる機器に用いられているフィードバック制御の基礎となるものです。ETロボコン 性能審査団の近政 隆氏によると「考え方としてはものすごく普遍的なもの」ということで、ざっくりいうと安定したライントレースを実現するために、目標とするラインからどれだけ離れているか、そのズレに対する旋回量(ステアリング操作量)を制御するものです。

 以下、サヌックや近政氏から聞いた解説を参考に、@IT MONOistが行ったPID制御を簡単に紹介します(実際にはPD制御になります)。

PID制御について細かく記載されていたモデル PID制御について細かく記載されていたモデル(ささちゃんファミリー)を紹介

 まずは目標とするライン値(@IT MONOistは白と黒の間の値にしました)を決めます。これはキャリブレーション時に得る光センサの値から計算します。その後、実際の走行時に先ほど定めた目標値からのズレに応じて旋回量を調整します(内側のラインを通りたいので、目標値より光センサの値が小さい場合は右に、大きい場合は左に旋回します)。これがP(比例)制御と呼ばれるもので、具体的にいうと、直線でX軸が掛ける傾きの変化量(y=axのaに当たるもの)です。ズレの量に応じて増減します。

 しかしこのままでは、スピードを上げるにつれて急カーブに入った際などにコースアウトしてしまいます。原因は直線とカーブとで目標値とのズレの量が異なるためで、例えば直線から急にカーブに入ると対応しきれず、曲がり切れなくなってしまいます。そこで、必要となるのがD(微分)制御です。微分制御では時間の概念が入ってくるので、NXTが行っている倒立振子制御の周期(4ms)ごとに変化するズレを更新して、現在のズレと前回のズレを比較しながら、最適な係数を割り当てる必要があります。

 ここでいう係数は試走を何度も繰り返しながら最適な値(走行体ごとに異なります)を導き出すほかありません。なお、@IT MONOistの場合は走行する環境ごとに係数を変更していました。試走会や普段の練習時にはうまくいっていたはずが、スピードを上げたり、光の量が変わるたびに走行が不安定になってしまうのです。

 最後にI(積分)制御ですが、これは目標値からのズレの累積量です。これはある絶対的なポジションにものを動かし、到達時に停止したい場合などに有効な制御となります。ETロボコンの場合は常にコース状況が変化しているので、昨年度のレポートでも紹介したように、I制御は使用してもしなくても変わらないというのはそうした理由からです。@IT MONOistでもI制御は使用しませんでした。

 以上のような論理の基、何とかPD制御走行を実装し、安定した走行ができるようになりました。なお、今回は難所を狙わない安定走行を目指しましたが、せめてもと思い、モータの回転角度から距離を測ることで(距離検知)ゴール後停止にも挑戦しました。

――そして迎えた大会当日。

 事前に行われた抽選により、@IT MONOistの走行順は大会1日目(9月5日)41チーム中、20チーム目となりました(1度に2チームずつ走行するため、正確には10番目になります)。

試走の様子車検の様子 試走の様子/車検の様子

 地区大会当日の午前中には、各チーム15分×2回の試走時間が割り当てられています。その後、車検を行い、無事に通過すると本番用の電池が配布されます。そして、後は本番を待つのみです。

――インコース。ついにスタート

 1回の走行が約2分で終わるため、すぐに順番がやってきました。緊張で手が震えながらも順調なスタートを切ることができ、試走時に若干不安定だったPD制御走行も何とか安定していました。

無事にスタート!ややリードか!?ん? 無事にスタート! 順調です/ややリードか!? まぁインコースなので/ん? 何かを発見した様子

 しかし……。

急旋回!!!!!沈黙 急旋回! ちょ……/!!!! あぁぁぁ〜/沈黙 パタリ

 開始10秒ほど経過したころでしょうか、急に右旋回をし始め、なんとアウトコースを走行していた「チーム 海○星」さんの走行体に激突してしまいました。

 結果は「失格」。大会1日目で唯一の失格チームとなってしまいました。なお、チーム 海○星さんはすぐに再走行を行った結果、見事に完走されました。おめでとうございます!(そして本当にすみませんでした)。

ゴール後停止も狙っていたのに……失格の文字が! ゴール後停止も狙っていたのに……。/失格の文字が!

――昼休憩時

 1回目の走行が終わるとすぐにコックピットに戻り、再調整を行いました。変更したプログラムがうまく動作するか確認できないかと周りを見渡すと、何チームかテスト用のコースを持参していたので、そちらを貸してもらい、何度か調整を行うことができました(「チームキトク」さん、「ワオキツネザル」さん、ありがとうございました!)。

各チーム4名まで入れるコックピットコースを貸してもらい、最後の試走 各チーム4名まで入れるコックピット/コースを貸してもらい、最後の試走

――気を取り直して、アウトコース

 結局、調整時にも途中で大きなコースアウト(急旋回)をしてしまうという現象が改善されず、アウトコースではPD制御をせずに、通常のライントレース走行(難所を通らずにゴール後停止のみ)をすることにしました(安定走行にするため、スピードもギリギリまで下げました)。その結果、タイムアウトにはなってしまいましたが、中間地点通過のポイントを獲得。完走できなかった悔しさは残りますが、2回連続「失格」にはならずにすみました。

 こうして@IT MONOistの競技部門は終了しました。事前に提出していたモデルについては、ユースケース記述が不十分との指摘をいただきました。

提出したモデル審査委員からのコメント 提出したモデル/審査委員からのコメント

Copyright © ITmedia, Inc. All Rights Reserved.