自律走行ロボットとは、人間の操縦によらず、自ら経路を設定して走行するロボットである。 太田研究室では、人間が生活する場で働く自律走行ロボットを目標に、研究を行っている。
我々は、前述の目標の実現のために、つくばチャレンジ2009という技術チャレンジに参加した。
つくばチャレンジには、本研究室と共同研究を行っている 株式会社ミツバ との混成チームで参加した。
我々のチームのロボット、MG09の外観を以下に示す。 ロボットの開発はハードウェアをミツバが、ソフトウェアを本研究室が担当した。
MG09は2台のパソコンを搭載する。 1台は制御のために、もう1台は画像処理のために使用する。 これらのパソコンはEthernetで接続されている。
MG09は周囲の状況を把握するために、以下のようなセンサを使用する。
ここでは、本研究で作成する行動制御プログラム以外のソフトウェアについて述べる。
MG09の特徴の一つとして、自律走行に必要な機能を画像処理によって実現しているということが挙げられる。 ステレオカメラによって取得したロボット前方の画像から、以下のような処理を行う。
これらの処理を実装するプログラム(以下、画像処理プログラム)は研究室の他のメンバが開発した。
本研究で作成する行動制御プログラムは、以下の3つの機能を持つ。
MG09が搭載するセンサは、そのはたらきによって2つに分類できる。
同じはたらきをするセンサを複数搭載するのは、各センサの特長を生かし、システム全体の精度を向上させるためである。 行動制御プログラムは、センサからの情報を収集・統合し、ロボットとその周辺の状況を推定する。
ロボットを自律走行させるために、指定したコースを走行するような指令(以下、走行指令と呼ぶ)を計算する。 この計算には、我々が地図と呼ぶデータを使用する。 地図は、およそ10cmごとの走行距離と、そのときの車体角度からなる。 ロボットの現在位置をキーとして地図を探索し、進行方向を決定する。
この方法では、地図に従って走行するため、地図作成時にはなかったコース上の障害物を回避できない。 障害物を考慮した走行経路の設定は、行動制御プログラムが決定した経路をもとに、画像処理による障害物検知プログラムが行う。
走行指令をロボットに転送する。 ロボットに走行指令として速度と操舵角を与えると、ドライバがそれに応じた左右の車輪の回転量を計算して走行する。
画像処理プログラムは行動制御プログラムと異なるパソコンで動作しているため、ネットワークを介して情報交換を行う。
以上をふまえて、行動制御プログラムは下図のようなモジュール構成で実装した。 モジュール間の灰色の矢印は情報の流れを表す。
前述の3つの機能はロボットとの通信を伴うため、1つのモジュールにまとめて実装した。 ハードウェアの都合で、レーザレンジファインダを制御する必要があったため、この機能を内包する。
つくばチャレンジ2009において、我々は以下の成績を収めた。
結果 | 時間 | |
トライアル1回目 | 57m リタイア | 04分03秒 |
トライアル2回目 | 完走 | 09分33秒 |
本走行 | 50m リタイア | 03分33秒 |
初日のトライアルでは1回目にコースアウトによりリタイアしたものの、2回目で140mの自律走行に成功した。 これによって2日目の本走行に出場することができた。 しかし、本走行では再びコースアウトによりリタイアとなった。 原因としては、スタート直後から大きな誤差がオドメトリに生じ、画像処理によってもそれを修正できなかったためと考えられる。
本研究で作成した行動制御プログラムは、MG09に特化したものである。 このプログラムをモジュール化し、他の自律走行ロボットで再利用可能なものにすることが今後の課題である。