DARPA Grand Challengeの必勝法

ASE2006という国際会議の基調講演がACM会員には無料だということで,会議の内容と関係ない仕事をしているのだが聞きに行ってきた.というのは,砂漠を無人ロボットカーで横断する過酷なレースであるDARPAのGrand Challengeでどのように勝つことができたかを,優勝チームのスタンフォード大学のプロジェクトリーダのSebastian Thrun自身が話してくれるからだ.これは車好きで元ロボット屋としては絶対聞き逃すわけにはいかないだろう!彼のホームページは次にあり,論文,講演資料,動画などが公開されているので,興味ある人はぜひ見て頂きたい.楽しいぞ!

http://robots.stanford.edu/

また,スタンフォード大学レーシングチームのホームページにも,いろいろな資料がある.

http://www.stanfordracing.org/

追記:安藤さんによると,Google社内の講演の様子がGoogle Videoで公開されているそうである.

http://opengl.jp/blogger/2006/09/darpa-grand-challenge.html

さて,この話は以下のようにすでに報道されているので,知っている人が多いだろう.凄いのは,1回目が106チームで完走なし…どころか,最長7.4マイルしか走れなかったのに,2回目が195チーム中5チームが142マイルを完走し,しかも予想を遙かに上回るタイムだったことだろう.この急激なレベル向上は,彼が史実を紹介しながら言った言葉によると「技術は賞金によって進歩する(Technology advances through prize)」である.

http://journal.mycom.co.jp/news/2004/03/15/001.html
http://japan.cnet.com/news/media/story/0,2000056023,20088623,00.htm

講演の内容はスタンフォード大学のStanleyの開発体制とスケジュールなどから始まり,どのように開発していったか,どのような技術が使われているか,最大のライバルであるCMUチームとの違いは何かが,動画を豊富に活用して詳細に説明された.しかも,失敗した一年目の状況とか,同じスタンフォード大学二輪車でチャレンジしているチームの様子(1年目はまともに走らず…しかし,2年目はなんと転倒したら自分で起きるように進化したのだっ!(笑))をジョーク混じりで紹介するなど,しっかり笑いを取るのも忘れない(笑).その内容といい,プレゼン方法といい,非常にすばらしい講演であった.

さて,スタンフォード大学はなぜ勝てたのだろうか?講演後にトヨタの某ロボット技術者とも話したが,その一つはセンサシステムにあるのではないかと思う.近距離をレーザー,中距離をカメラ,遠距離をレーダーを使ってセンサ統合して認識結果をマップしていくのだが,オフロードはそもそもどこまでが道かを判断するのが難しい.そこで,カメラで取った画像のテクスチャ情報を利用して,かつ人間のドライブデータを学習させることで,道とそうでないところを高い精度で識別し,道を外れる確率を劇的に減らしているらしい.講演では,その状況が色分けされて表示してくれた.

もう一つは,開発体制にあるのだと思う.CMUは,軍と共同開発しているらしく非常に潤沢な資金を使って高度・高価なハードウェア…ものすごい開発費をかけてきたセンサシステムやHAMMER(これなら道を少々はずれようが関係ないよなあ(笑))を持ち込んだ.これに対して,スタンフォード大の方は,普通のVWSUVを使うなど,個々のハードウェアはそれほどでもないが,ソフトウェアを工夫することで総合力を向上させたと言えるのでないかと思う.全部で約10万行のC/C++コードから成る24モジュールを4台のLinuxマシン上で実行したようだが,開発当初からシステムの統合に注力して,エンド・トゥー・エンドの膨大なテストを行うという,現代のアジャイル開発的なアプローチを取る.テスト中は人間が同上し,異常事態が生じたら即座に割り込んで運転を代わっていたようだが,さすがに怖くてたまらなかったようである(笑)ちなみに,195チーム中5チームが完走という結果は,まさに「ほとんどの大規模ソフトウェアプロジェクトは失敗する」という言葉を思い出す.これは高度に複合したシステムを正常稼働させるまで持ち込むことがどれほど大変かということであるが,優勝したのは適切なプロジェクトマネージメントのたまものであろう.

なお,悪路を走行するので,例外やエラーも大量に発生する.タイヤのスライドのために舵角と進行方向が一致しないのは当然として,車体のピッチングによる車体に固定されたセンサの認識結果にゴーストが発生したりする.さらに,実レース中には,195回ものLinuxの不可解な500ミリ秒の停止に見舞われ,そのうち2回は実際に道をはずれてしまった(まさにその問題のシーンの動画を見せてくれた).なお原因はカーネルのバグか振動によるハードディスクのリードエラーなのか不明のようだ.

次は,なんとUrban Challenge!つまり,市街地走行!…と言っても,本当の市街ではなさそうだが…考えることが凄い.

http://japanese.engadget.com/2006/05/02/darpa-urban-challenge/

最後に,将来的な目標のイメージとして,歩行者に道を譲るロボットカーのシーンを流して終わったが,本当に素晴らしい講演であった.できれば私も大学教授に転職して,この種の魅力的な(ソフトウェア)プロジェクトをやってみたいくらいだ.聴講の機会を与えてくれたACM Japanに感謝したい.