« 知能ロボットコンテスト2014結果 | トップページ | 風兎2014全体像 »

2014年6月19日 (木)

第26回知能ロボットコンテスト 一次予選

風兎2014の出場記録を順番に紹介していきたいと思います。 今年はロボットが完成したのが大会直前、しかも初日には一部のプログラムの機能が完成していない状態でしたので順番に見ていくのも面白いのではないかと思います。

一次予選です。 ライントレースの高速走行用プログラムが完成しておらず、速度をあげられない状態でしたがひとまず安全な速度で競技を行いました。具体的には停止位置が近くなった時の減速とコーナーの円弧部分が近くなった時の減速の処理ができておらず、実質一定速度での走行となっています。停止位置20mm以内に入ったら位置制御モードに切り替わるようになっており、そのときに急激に減速するようになっています。黄色ゴール前に停止するときに少し超過しているのは、急減速によって車輪がスリップし、車輪の回転数によって推定している現在位置が実際とずれたためです。また、対象物エリアに向かう時の方が遅いのもバグによるものでしたが、もっと根本的にはロボットの動作の定式化の問題ともいえるものでした。後日、速度制御の話としてまとめようと思っています。

また、最初の対象物の赤い缶に向かう際に急激な旋回をしています。これは車輪の回転数から推定したロボットの方向角を保持する変数(およびそれを利用した演算)が桁あふれを起こしてしまったため、本来進んでいるつもりの方向とは全く違う方向に進んでいるためです。注意していれば起こさないような設計ミスですが、風兎2010のプログラムを移植したのが事の発端でした。風兎2010では当時使用したマイコンの処理能力およびエンコーダーの分解能から必要な桁数を考慮して16ビット整数型の変数を使っていました。ところが2014ではエンコーダーの分解能が上がり、かつ車輪も小さくなったためロボットが2周回転するだけで16ビット整数型で扱える範囲を超えてしまうようになっていました。それでも運よく復帰したのは、必要に応じてこの変数をリセットしているためでした。車輪から方向角を推定しているとはいっても、走行中にいずれ推定は不正確になっていくため、この値を使うのは短い動作単位の間に限定しているのです。

黄色の缶を倒してしまっているのは、おそらく正面の対象物をPSD距離センサーで走査(スキャン)して探した際に「走査する→反応があった方向に向く→改めて確認するとなかったので誤検知とみなす」という動作をし、缶が進路上にないものとして進んだためだと思われます。以前は誤検知とみなす前にもう少し左右を見てみる、という動作を入れていたのですが速度向上のためにそれを除いてしまったのが裏目に出ました。ともかく、センサーの情報処理の問題というよりは移動の制御、旋回速度制御がうまくいっていなかったことがセンシングにも影響を与えた例だったと思います。

最後に、対象物を取った後ラインに戻ってからゴールに向かう際に旋回動作の途中で止まってしまいました。これは、旋回速度が誤って非常に小さい値に設定されていたためです。詳しくは後日まとめたいと思いますが、大まかには次のようなことが起こっています。風兎のプログラムでは、旋回動作の途中まで機体の角速度をPID制御器によって一定の目標値に保とうとしています。平均の速度はおよそ目標値になりますが、多少変動を続けます。変動の幅に比べて目標値が小さい場合、ロボットが実際に動き出す前にギアの遊びによってプログラムから見た速度が目標値を超えてしまい、また減速しようとしてしまいます。結果、永久に動き出さなくなる可能性があります。また、テープの段差に乗り上げるときなど、少し動いて戻る、ということを繰り返していた可能性もあります。いずれにせよ、きわめて遅い速度の場合は瞬間の速度だけを見るのではなくロボットの軌道(ロボット工学用語として、ここでは時間-旋回角度の関係のことを指す)が想定通りかどうかを基準にフィードバックするべきなのではないかと思いました。

競技の方は、止まるまでにゴールした2個のスポンジボールと自由ボールの得点で二次予選に進むことができました。

|

« 知能ロボットコンテスト2014結果 | トップページ | 風兎2014全体像 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/123969/59839087

この記事へのトラックバック一覧です: 第26回知能ロボットコンテスト 一次予選:

« 知能ロボットコンテスト2014結果 | トップページ | 風兎2014全体像 »