鍬形です。社内研修でマイクロマウスやってます。前回は研修1日目でPi:Co Classic3を組み立てました。今回はいよいよパラメータ調整をして迷路を走らせます。
本連載一覧はマイクロマウス研修(鍬形)をご覧ください。
基礎知識編マニュアルがおすすめ
Pi:Co Classic3のマニュアルは組み立て手順やプログラミング解説など複数あるのですが、基礎知識編マニュアルがかなり充実してておすすめです。マイクロマウス競技そのものの説明や機体の構成、モータやエンコーダの原理、迷路探索アルゴリズムなどかなり詳細に解説されています。
Pi:Co Classic3で使われていないハードについてもマイクロマウスでメジャーなものなら解説が載ってます。マイクロマウス競技を知らない状態でもこれ読んだらかなり通ぶれるのではないでしょうか。読まなくてもキットは動かせるのですが是非読んでみてほしいです。
パラメータ調整
ロボットが正しく迷路を認識、走行するためにいろいろな数値を入力します。壁を認識するセンサの値や車輪の直径などは機体ごとに微妙に異なるのであれこれ計測してプログラムに書き込みます。
例えば周囲の壁の有無は光センサで判定しているのですが、センサ値がどのくらいになったら壁があると判定するかなどを書き込みます。難しそうに聞こえるかもしれませんがサンプルプログラムが親切にできているので、PCとロボットをUSB接続すると入力すべき数値が勝手に表示されるので安心です。
光センサは目に見えない赤外線を計測しているのですが、目に見える赤色も発光しているので壁のどこに光が当たっているかわかりやすいです。思ったように壁を認識しないと思ったらそもそも光がちゃんとあたっていなかったということもよくあります。ソフトと同様にハードも調整がつきものです。
パラメータ調整の詳しい手順やコツについてはしゅうさんが書いているのでぜひご覧ください。
ちなみに迷路の横でずっとしゃがみながら調整してたところ、タイトルにあるように翌日筋肉痛になりました。ロボット分野では筋力や体力を必要とする場面はしばしばあります。
最初の一歩で盛大に躓く
調整が済んだので満を持して迷路を走らせたのですが、壁の端と端の間をすり抜ける際に大きく右に旋回してしまいました。光センサは壁に対して斜めに光が当たるとセンサ値が下がってしまうので、そのまま前の壁を検知できず衝突しています。
動画を拡大すると壁の端に光センサの光があたっています。これによってロボットは右側に壁が続いていると判断してしまったようです。光が一部しかあたっていないので反射する光量も小さく、遠くに壁があると認識していると予想できます。
こんな感じで動画を撮っておくと後から何度も確認できてとてもおすすめです。コマ送りやズームもできるので目視よりよく見ることができます。特に僕はめんどくさがりなので、極力ロボットを動かさなくて済むようにこまめに動画を撮りました。
壁の端を検知して姿勢が大きく乱れる対処方法を考えます。壁の広い面と端面では反射する光の量が異なるため、センサ値で違いを判断できると仮定して調整を重ねてみました。しかし予想よりセンサ値にあまり違いが無かったようで、どうしても同じ場所で急旋回してしまいます。
最終的に壁沿い走行用のゲインを下げることで解決しました。このゲインはロボットが迷路内の壁に沿ってまっすぐ走るために使われます。ゲインが大きいほどロボットが素早く旋回して姿勢を保とうとするのですが、今回は壁の端のような瞬間的なセンサ値の変化にも追従しようとして姿勢が乱れてしまいました。
ゲインを下げると旋回がゆるやかになるので壁の端につられて大きく旋回することはなくなります。ゲインが小さすぎると大きな姿勢の乱れを修正できなくなるわけですが、基本的には大きくなる前になんとかするのがセオリーのようです。
二歩目も躓く
調整を重ねてゴール付近までたどり着くようになりました。まだゲインが大きすぎたようで壁の端に差し掛かるとビクッと動いていることがわかります。鍬形の情けない声とともにお楽しみください。
一度壁に衝突した後に復帰して走り出しましたが、ロボットは壁にぶつかったことを検知していないので問題なく走行したと記録されます。ロボットが考える自分の位置と、実際のロボットの位置がずれてしまったためゴールの1マス隣で探索を終了してしまいました。
おわりに
今回は各種パラメータを調整し、ゴール付近までたどり着くようになりました。ロボットの挙動を見るとまだゲインが大きすぎることと、前壁の検知に失敗して衝突していることが気になります。次回はこの2点を中心にハードとソフトを調整します。