本連載では、公開情報を基に主にソフトウエア(AI、アルゴリズム)の観点でGoogle Carの仕組みを解説していきます。今回は、制御AIの思考と行動のサイクル、位置推定の考え方「Markov Localization」における3つのアルゴリズムと、その使い分け、現実世界の認識における課題などについて。
グーグルが開発した自動運転車(以下、Google Car)の仕組みについて、公開情報を基に、主にソフトウエア(AI、アルゴリズム)の観点で解説していく本連載。前回の「あなたの知らない自動運転技術の歴史とGoogle Carの自動運転に使用するセンサーの基礎知識」では、自動運転技術の歴史を概説し、Google Carの自動運転に使用するセンサーについても説明しました。
今回は、Google Carを制御するためのロボット(AI、人工知能)の思考と行動のサイクル、ロボットによる制御の難しさ、Google Carにおける解決方法、位置推定の考え方「Markov Localization」における3つのアルゴリズムと、その使い分け、現実世界の認識における課題について説明します。
一般的に、ロボットの制御は下の図のようなサイクルを高速に回すことによって制御します。Google Carに関しても例外ではなく、このような制御サイクルを回しています。
制御サイクルを順を追って説明すると、まずロボットは「状況の把握」を行います。Google Carは、「状況の把握」のためにはセンサーを用いて、以下のような情報を把握します。
これらの情報は、Google Carが現在認識している世界を構成する情報です。Google Carが認識している世界というのは、ドライビングシミュレーションゲームの世界に非常に似ています。3Dの世界があり、周囲に道路が伸びていて、その世界における自車や他車、歩行者それぞれの位置・移動方向・スピードが把握されています。
Google Carは、このドライビングシミュレーションゲームに似た仮想世界が、現実世界と合致していることを前提に走行します。「Google Carは現実世界を非常にうまくコンピューター内に再現した仮想世界を走る」と言ってもいいかもしれません。
これは少し奇妙に感じられるかもしれませんが、私たち人間にも当てはまることです。私たち人間の脳も、実際には視覚などの感覚器から脳に情報を取り込み、脳内で現実世界を仮想的に捉えています。その意味で、Google Carがやっていることは人間がやっていることと同じです。なお、このようにロボットが認識する仮想世界は、「モデル」とも呼ばれます。
いったん、現実世界を非常にうまく再現した仮想世界が作られると、Google Carは次にこの仮想世界の中でロボットによる「行動計画の立案」を行います。具体的に行うことは主に以下のようなことです。
特に「走行ライン」は重要です。ここで言う「走行ライン」とは、「Google Carが仮想世界の中のどの座標を通っていくか」を表現した情報であり、仮想世界の中の地上に引かれた一本の線で表現されます。Google Carは、実際にこの走行ラインに沿って走ることになります。
「行動計画の立案」はコンピューターが得意とする分野です。経路を自動検索するような技術は、カーナビゲーションシステムが日常的に行っていることから、可能であることが分かると思います。走行ラインの決定や、車速の決定に関しても、簡単なものであればドライビングシミュレーションゲームで見掛ける機会があります。例えば、コンピューターによって操られている車が、人が操っている車を上手に避けて走るのを見たことがあるのではないでしょうか。
Google Carの行動計画アルゴリズムはゲームより高度ですが、基礎となっている技術は、1990年代のゲームに使われている前から存在するものです。
走行ラインや車速などの行動計画が決まると、Google Carはその計画を実行に移します。計画を実行するためには、ステアリングの角度を何度にするかや、アクセルやブレーキをどのように調整するかを具体的に決める必要があります。つまり、行動計画を実現するための物理的なアクション量を算出します。
このためには、連載の後半で説明する予定の「PIDコントロール」という方式を用います。ステアリングの角度などが決まったら、Google Carは実際にアクチュエーターを動かし、実際の動作を行います。
この際、動作は仮想世界と現実世界の両方で実行します。仮想世界でも行動を実行しておく理由は、「現実世界では、こうなるだろうな」ということを物理シミュレーションし、仮想世界の状態を現実世界にあらかじめ近づけておくためです。つまり、いったん仮想世界を作り上げた後、Google Carはセンサーだけでなく、仮想世界の情報も組み合わせて、現実世界での位置や周囲の状況を把握するのです。
以上が大まかな制御サイクルです。行動をした後は、再びセンサーを使って外界を認識し直し、再度「状況の把握」を行います。
なおGoogle Carは、このような制御サイクルを0.1秒サイクルで行っています。
前述の制御サイクルのうち、ロボットによる制御を難しくしているのは「状況の把握」の部分です。
ロボットは、現実世界を非常にうまく再現した仮想世界を元に行動計画の立案や、行動計画に基づいた行動を起こします。そのため、うまくロボットを制御するためには、この仮想世界が現実世界を本当に反映しきれていることが大前提となります。
しかしながら、この「状況の把握」というタスクはAI研究の中でも難しいもので、現在でも十分に技術が洗練されているとは言い難い領域です。ロボットの挙動としてよく見掛ける、「慎重に慎重を重ねて動く」ロボットは、この状況の把握を時間をかけて一生懸命行っているのです。しかし、技術が洗練されていないばかりに現実世界を見誤り、簡単に制御に失敗してしまいます。
なぜ状況の把握は難しいのでしょうか? それは、現実世界と仮想世界をつなぐ部分に必ず不確実性が伴うためです。
まず、センサーを用いて現実世界をスキャンする際には必ず測定誤差が入り込みます。例えば、GPSの読み取りデータに1m以上の測定誤差が入り込むことは頻繁に発生します。
また、ロボットが行動を起こす際にも不確実性が入り込みます。例えば、1m前進しようとしても、何センチかは1mに届かなかったり、逆に1mをオーバーしてしまったりするでしょう。現実世界は仮想世界ほど完璧に状況を捉えられる世界ではないのです。
Copyright © ITmedia, Inc. All Rights Reserved.