29
ウルシステムズ株式会社 http://www.ulsystems.co.jp mailto:[email protected] Tel: 03-6220-1420 Fax: 03-6220-1402 ULS Copyright © 2014 UL Systems, Inc. All rights reserved. 「グーグルの自動運転CARの技術要素」勉強会 2014/8/29 講師:近棟 稔

「グーグルの自動運転Carの技術要素」勉強会 2014.08.29

Embed Size (px)

Citation preview

ウルシステムズ株式会社http://www.ulsystems.co.jp

mailto:[email protected]

Tel: 03-6220-1420 Fax: 03-6220-1402

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

「グーグルの自動運転CARの技術要素」勉強会

2014/8/29

講師:近棟 稔

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

はじめに

近年、「人工知能(AI)」は多くの分野で応用され、その成果を目にしたり利用したりする機会が増えてきました。たとえば、多くの人が利用しているGoogle検索もその1つです。Google検索を支える基礎的な考え方は、人工知能由来のものとなっています。

一方で、AIの進歩が急速に見え、Elon Musk (Tesla MotorsのCEO)が以下の様な「AIは核兵器より危険かも」といった内容の tweet をし、様々な議論が沸き起こりました。いわゆるAI脅威論です。

将来がどうなるかは分かりませんが、AIの世界のさまざまな潮流の中で、ひときわ注目を集めているのはGoogle Carの存在だと思います。人間が運転する代わりに、AIが人間より安全に運転を代行する事が既に可能になりつつあります。

このGoogle Carの中身を知る事を通して、今のAIに何が出来て、何が出来そうにないかが分かって頂ければ幸いです。

1

https://www.youtube.com/watch?v=P0Nf3TcMiHoThe end of humanity: Nick Bostrom at TEDxOxford

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

Self-Driving Car の歴史

2004 DARPA Grand Challenge ・・・ゴールできた車なし

2005 DARPA Grand Challenge(砂漠のレース)Sebastian Thrun率いるスタンフォード大学のレーシングチームが優勝(車の名前はStanley)今はスミソニアン博物館に飾られています。

2007 DARPA Urban Challenge(市街地を想定したレース)優勝はカーネギーメロン大学+GMのチーム。Sebastian Thrun率いるスタンフォード大学のレーシングチームは2位。(車の名前はJunior)

その後、 Sebastian ThrunはGoogleにてGoogle Carの開発へと進み、 DARPAはGUSSの開発へと進みます。2004年に始まったチャレンジから10年でここまで進歩しました。

2

DARPAは、インターネットの歴史の中で出てくるARPA-NetのARPAです。GPSの開発でも有名です。ARPAはDefenseのDを先頭に付けて今ではDARPAと改名しています。

Stanley

Junior

GUSSGoogle Car Google Carhttps://www.youtube.com/watch?v=J3l5X3gYHPoジムカーナ的な事も出来ます。

https://www.youtube.com/watch?v=8fjNSUWX7nQハンドルなどが付いていないバージョンです。

https://www.youtube.com/watch?v=GVdeBEsbzuA

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

Sebastian Thrun による Self-Driving Car の関連論文とネット講座

Stanley: The Robot that Won the DARPA Grand Challengehttp://robots.stanford.edu/papers/thrun.stanley05.html

Junior: The Stanford Entry in the Urban Challengehttp://robots.stanford.edu/papers/junior08.html

Artificial Intelligence for Robotics - Programming a Robotic Car (Udacity)https://www.udacity.com/course/cs373

3

このレースは、砂漠でのレースだったため、車をコースアウト(もしくは谷底に落下)させずに、障害物(先行車含む)を回避しながら、速くゴールする事に主眼が置かれています。砂漠という環境では道の境界がはっきりしていないという難しさがあったようです。前方のみに注意を払えば良い条件だったため、センサーは前方に向けられています。

市街地を想定したレースで、他の車が交差点などを走っている状況で、信号などの交通ルールを守りながら速く目的地に着いたり、駐車場で空いている駐車スペースを自動的に探して駐車するような事が試される内容です。GoogleCarの技術はこのレースで使われた技術にかなり似ています。そのため、この勉強会でもこの論文の内容を多く取り上げます。

Udacityというオンラインコースで Sebastian Thrun みずからGoogleCarの基本技術を教える講義が開かれました。無料で受講可能です。上記のDARPA Grand Challenge や DARPA Urban Challenge の論文では基礎技術に関して既知のこととして扱っている部分が多いのですが、そのような技術について基礎から積み上げて説明されています。また、GoogleCarについての言及もあり、GoogleCarが「Junior」とどう違うのかといった話も出てきます。

より重要

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

Juniorのセンサー

4

ライダー(LIDAR)レーザーによって対象物までの距離と対象物の反射率を測定

GPS複数のGPS衛星からの電波を受信し、位置を測定

ドップラーレーダー電波によって対象物までの距離と相対速度を測定

DMIホイールの回転数を数えて走行距離を測定

[まめ知識]OS: Linux使用言語: C++プロセス間通信:

Pub-Sub型メッセージパッシング

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

GoogleCarのセンサー

5

ライダー(LIDAR)レーザーによって対象物までの距離と対象物の反射率を測定

GPS複数のGPS衛星からの電波を受信し、位置を測定

ドップラーレーダー電波によって対象物までの距離と相対速度を測定

DMIホイールの回転数を数えて走行距離を測定

IMUinertial measurement unitの略。慣性航法のための6軸加速度センサー。

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

ライダー(LIDAR)で出来ること

距離の検出LIDARは、レーザーパルスを発射してから、そのパルスが何かの対象物に当たり、乱反射が見えるまでの時間を測定します。この測定した時間と光の速度を用いて距離を算出します。(C・T/2)

対象物の反射率の測定ライダーは距離の測定だけではなく、対象物の反射率も測定可能です。この反射率の情報は、道路のレーンマーカー(道路の白線)が3D空間上のどこに引かれているかが読み取れるため、非常に重要な情報になります。多くのレーンマーカーは、反射率の高い塗料を用いてペイントされているため、LIDARで読み取れるのです。

6

赤外線レーザー(eye safe)(どの方向に発射したかを正確に知っている。)

赤外線カメラ・・・パルスが乱反射するのを検知

赤外線パルス

対象物

(注) LIDARの種類によって赤外線以外のレーザーを使うものもあります

[Velodyne HDL64E の場合]測定可能距離: 約120mまで測定誤差: 5cm以下周囲360度の3D測定時間: 66ミリ秒

Velodyne HDL64Eのように周囲360度の距離をメッシュ状に測定するタイプの場合、一瞬(66ミリ秒)で周囲の3D構造をスキャン出来ます。

https://www.youtube.com/watch?v=oZ7P4RsTE64参考: https://www.youtube.com/watch?v=WJoaksSKaOo

[参考:LIDARとレーダーを併用する理由]「LIDARでかなり正確な情報が取れるのに、なぜGoogleCarはレーダーも併用するのでしょうか?」Udacityにて生徒からこのような質問が出ました。理由の1つは、LIDARとレーダーの特性の違いという解答でした。LIDARは波長が900nm程度と短く、霧や雨などによって前方が隠されてしまいますが、一方でレーダーは波長が数cm程度となり、霧の向こうを見ることも出来ます。また、測定可能距離も違います。車用レーダーは250m先を検出することも可能です。より重要な理由として、レーダーはドップラー効果を用いて対象物との相対速度を正確に測定することが出来、早期の動体検出が可能だという理由もあります。(ドップラーLIDARも存在するため製品上の制約かと思われます)

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

ロボットの思考と行動のサイクルと制御の難しさ

7

行動計画の立案

(結構得意)

計画した動作を実行誤差が発生

状況把握

誤差を修正

ロボットの思考と行動のサイクル

ロボットは実世界で動作するため、コンピューターシミュレーションのようにはいきません。下記のような思考と行動のサイクルの中で常にロボットが思っている脳内世界と実世界との間に誤差(齟齬)が生まれます。この誤差が累積するようだと、ロボットをうまく制御することは出来ません。

正確な状況把握の難しさ

ロボットは、状況の把握のためにセンサーを使います。

センサーからの情報は、前回の動作の結果生じた、ロボットが考えている世界と実世界との間に生じた差異を修正するために利用します。

ロボットが考えている世界が実世界と適合していれば、次の行動立案はより正しいものになります。

しかし、センサーからの情報にも必ず「誤差」が含まれていますので、まるっきり信用するわけにもいきません。

正確な動作の難しさ

ロボットが行動する際、計画通りに正確な動作をすることは出来ません。

「1メートル前進」といった動作も、0.9メートルしか前進しなかったり、1.1メートル前進してしまったりします。

そのため、行動計画はロボットの不正確な動作を見越して余裕をもって立てる必要があります。(そうしないと崖下に落ちたりします)

また、行動後の状態が期待した状態になっているとも限りません。

現実世界と脳内との齟齬が拡大してしまうフェーズ

現実世界と脳内との齟齬を修正できる唯一のタイミング

このあたりをうまく扱う事がロボット制御の基本

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

制御ソフトウエアのオーバービュー

8

ライダー(LIDAR)

GPS

ドップラーレーダー

DMI

IMU

センサー群 状況の把握

ローカライゼーション既知の地図(空間)内のどこに自分が居るかを決定

SLAM既知の地図(空間)をセンサーデータをもとに更新 (simultaneous localization and mapping)

動くものを検出他の車やバイクや人など、動くものを検出し、移動方向や速度を見積もり、トラッキングする(気にし続ける)

プランニング(計画)

広域のルート計画既知の地図をもとに、カーナビゲーションがやっているように、目的地に到達するための道順を自動的に計画する。この際、どのレーンに居たほうが良いかや、右折と左折のどちらが簡単に曲がれるかといった事も気にして計画を立てる。

駐車場でのルート計画車庫入れ的な挙動が必要となる駐車場や狭い道でのUターンのための行動計画を自動立案する。

方針の決定finite state machine (状態遷移図)によってロボットの行動指針を定義し、いまやらなければならない事を自動決定する。

https://www.youtube.com/watch?v=bDOnn0-4Nq8

Google Carが認識する世界

走行計画の実行

PIDコントロールproportional-integral-derivative controlの略。計画した走行ラインにそって車をコントロールする方法。計画した走行ラインにそって車を走行させることにも工夫が必要で、うまく制御出来ないと走行ラインを中心に車が蛇行してしまったりする。

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

技術その1: localization: 既知の地図上のどこに自分が居るかを推定する

ローカライゼーションとは、既知の地図上のどこに自分が居るかを推定する事です。これが正確に行えなければ話になりません。

Q: 現在位置の特定はGPSを使えば良いのではないか?A: GPSだけでは十分な精度が出ません。DARPA Urban Challengeでは、レース中、

GPSの誤差が1mを超えることがしばしばあったようです。このような大きな誤差があると、センターラインを超えて対向車線を走ってしまったり、障害物に衝突してしまったりします。実用的に許容可能な誤差は10cm程度までです。GPSだけでは達成できません。

Q: 現在位置の特定に使えるセンサーデータはどれか?A: すべてのセンサーデータを利用可能です。たとえばLIDARは周囲の3D構造や白線の位置を

読み取ってデータ化します。このデータをGoogleCarの場合はGoogleMapの衛星写真情報を補正した道路地図情報(白線の情報や周囲の木々や建物の位置が入っている)と照らし合わせます。合致している可能性が高い位置は、この2つのデータの比較で判明します。

ただし、LIDARとGoogleMapの比較は、他の車によって視界が遮られたり、白線が書き換えられたり、雪が降ったりと、さまざまな要因でノイズが入るため、絶対的に信頼できるものでもありません。

9

LIDARからの情報例 GoogleMapの情報

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

技術その1: Markov localizationを用いた現在位置の特定

x座標のみの空間(1次元空間)があるとして、そのどこかにロボットカーが居るとします。

すべてのセンサーデータを用い、x座標中のどこにロボットカーが居るのかを様々な方法で推定し、それを確率で表現します。

行動計画を立案し、1ほど右に車を動かす事にしたとします。しかし、実際に車がちゃんと1ほど右に動くとは限りません。上記確率分布は以下のように変化します。

新たなセンサーデータを用い、居場所の特定を行います。

新たなセンサーデータから算出した存在確率(B)と、行動後の車の存在確率(A)を合成し、より精度の高い位置情報を得ます。合成する方法は次のページで引き続き説明します。

10

x

x位置xにロボットが居る確率

センサーによると、このあたりに存在する確率が高い このあたりもあやしいけど

センサーのノイズかも・・・?

x

移動 移動すると自信がなくなり、確率分布の山が低くなり、山の裾野も広がる。つまり居場所があいまいに。

移動

x

位置xにロボットが居る確率

位置xにロボットが居る確率

新しいセンサーデータによると、このあたりに存在する確率が高い

・・・(A)

・・・(B)

困ったことに、このあたりの存在確率も高い

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

技術その1: Markov localizationにおける、新たなセンサーデータから算出した存在確率(B)と、行動後の車の存在確率(A)を合成する方法

車の移動後に再度センサーデータを取得した際、以下の(A)と(B)を合成することで更に精度の高い確率分布が得られます。

11

x位置xにロボットが居る確率

x位置xにロボットが居る確率

・・・(A)

移動後の予想

センサーデータからの予想

(A)と(B)の両方で存在確率が高い場合、その合成をすると、より高く鋭いピークが得られる。→確度の高い情報が得られている

(A)か(B)のどちらかにしか山がない場合、合成後はより低い山しか得られない。→ノイズは自然に除去される!

x位置xにロボットが居る確率

・・・(B)

合成後の予想→より正確

確率の掛け算 確率の掛け算 確率の掛け算

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

技術その1: Markov localizationのアルゴリズムのバリエーション

Markov localization のコンセプトを実現するアルゴリズムには、代表的には以下のバリエーションがあります。なお、すべてfilterという名前が付いていますが、これは、これらの処理が probabilistic low-pass filter と言われる種類のものでもあるためです。「フィルター」という意味では信号処理で出てくるローパス・フィルターなどの仲間でもあります。(recursive Bayesian estimatorとも呼ばれます)

Google Carは上記の3種類のアルゴリズムを用途によって使い分けているそうです。また、DARPA Grand ChallengeのStanleyとDARPA Urban ChallengeのJuniorでも、使用するアルゴリズムが変わっています。

12

名前 特徴 説明

Histogramfilter

素朴遅い

前ページまでの計算を素朴に実装したものです。x座標を等間隔に細かな区画に分け、1つ1つの区画に車が居る存在確率を計算します。この方法は区画の数が多くなると手に負えなくなるほど計算時間がかかる事が欠点です。

Kalmanfilter

近似で高速

車の存在確率の表現として正規分布を用いる方法です。x座標を区画に分ける必要がなくなる一方、本来の確率分布が正規分布では表現できない(たとえば確率の山は1つしかなくなってしまう)ため、どうしても近似表現となります。その代わり計算は高速です。

Particlefilter

実装が簡単

ある程度高速

車の存在確率を大量の粒子(particle)の粗密で表現する方法です。存在確率の高いx座標には沢山のparticleが集まって来ることで、そこに車が居る確率が高いことを表現します。1つしか確率の山が持てないKalman filterとは違い、複数の場所に確率の山を作ることが可能なうえ、用いるparticleの数を調整することで、計算の正確さと計算速度の調整が可能です。たとえば計算が荒くなることを承知で計算速度を上げたければparticleの数を少なくし、計算が遅くなったとしても、より解像度の高い計算結果が欲しければparticleの数を増やします。プログラミングが楽であることもParticle filterの特徴です。

Stanley 全面的にKalman filterを使用。

Junior走行レーン内における左右の位置推定には1次元Histogram filterを使用。既知の地図上における自分の居場所の推定と、他の車の位置のトラッキングにはParticle filterを使用。

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

技術その1: localization: Histogram filter

Histogram filterは、ロボットの存在確率を棒グラフのような表現で計算する方法です。この方法は、ヒストグラム1本1本の計算が必要になり、非常に時間がかかります。

13

x位置xにロボットが居る確率

x位置xにロボットが居る確率

移動後の予想

センサーデータからの予想

x位置xにロボットが居る確率

合成後の予想→より正確

確率の掛け算 確率の掛け算 確率の掛け算

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

技術その1: localization: Kalman filter

Kalman filterは、ロボットの存在確率を正規分布(ガウス関数)で近似して扱う方法です。ガウス関数の性質上、確率分布の山は1つしか表現できないため、近似の方法として荒いのですが、その分、計算のパフォーマンスは非常に高いです。

14

x位置xにロボットが居る確率

x位置xにロボットが居る確率

・・・(A)

移動後の予想

センサーデータからの予想

x位置xにロボットが居る確率

・・・(B)

合成後の予想→より正確

ガウス分布の合成

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

技術その1: localization: Particle filter

Particle filterは、ロボットの存在確率をparticle(粒子)の密度として表現する方法です。ロボットの位置が、より良く推測出来ている状態では、particleは1箇所に固まって存在する状態になります。推測が出来ない状態になると、広くバラバラに存在する状態になります。

15

x位置xにロボットが居る確率

x位置xにロボットが居る確率

・・・(A)

移動後の予想

センサーデータからの予想(それぞれのparticleの存在確率を計算: particle filterでは「ウエイト」と呼び、そのparticleの重要性を表現する)

x位置xにロボットが居る確率

・・・(B)

合成後の予想→より正確

各particleの存在確率をもとに、particleを「リサンプリング」します。存在確率の高いparticleは子供を多く産み、存在確率の低いparticleは消滅します。なお、このリサンプリング時に、ガウス乱数に基づいて、子供は親の近くのどこかに生成します。

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

技術その1: localization: 地図上のどこに自分が居るかを推定している例

以下はJuniorの論文に掲載されていた推定例です。ここでは、以下の2つの位置を推定しています。

車の左側面の位置(図中の黄色の線)

白線の位置(図中の緑色の線)

この例では上記2つの情報を表示していますが、実際にはより多くの位置情報を推定します。たとえばStanleyは 位置(3軸)、速度(3軸)、車の向き(3軸) などを推定しています。

なお、GPS情報は赤い線とエリアで示されています。この場合80cmほど右にずれています。

16

GPSの取付位置

この場合80cmほどGPS情報がずれている

車の左側面の推定位置

白線の推定位置

白い線はLIDARによる3Dデータ

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

技術その2: 他の車や自転車や歩行者のトラッキング

他の車や自転車や歩行者の動きをトラッキングして、衝突しないようにします。このような処理にもMarkov localizationを用います。大まかな処理ステップは以下の通りです。

1. ドップラーレーダー(前方の遠距離にいる移動体向け)やLIDARを用い、障害物を検出します。トラッキングする障害物として認識するか否かは、既知の地図に載っているか否かで判断するそうです。

2.検出した障害物1つ1つに対し、Markov localizationで位置や移動速度や移動方向の推定をします。Juniorの場合は、Markov localizationの中でもParticle filterを用いていたそうです。別の実装では、Kalman filter を用いたものもあるそうです。

17

https://www.youtube.com/watch?v=TsaES--OTzM障害物1つ1つをトラッキングし、現在位置と移動方向と移動速度を推定

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

技術その3: 走行ルートの計画

現在位置から目的地までの走行ルートの計画方法は、カーナビが行っている事と大差ありません。ただし、カーナビよりも計画の内容が細かく、前を走っている遅い車を追い越した方が良いか、走行レーンを変更したほうが良いかなどといった走行ルートの計画も行います。

走行ルートの決定をする際には「コスト」の小さいルートを選びます。「コスト」というのは、単純に「走行ルートの走行距離」をコストとする事もありますし、それに加えて右折や左折が少ないルートの方が、単純に走行距離が短いルートよりコストが小さいと定義したりすることもあります。

コストが最小になる走行ルートを算出する際、GoogleCarは「A*(Aスター)」という汎用アルゴリズムを用います。A*を用いてルート探索している様子を以下に示します。

18

車の動ける範囲はこのように

限られている

車の動ける範囲をもとに、動ける範囲のツリーを検索してゴールに近づく

動いた先で次にどう動く?

参考: https://www.youtube.com/watch?v=0gk8ioVjNO4

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

技術その3: 走行ルートの計画: A*アルゴリズムの基本的な考え方

A*アルゴリズムは、基本的には幅優先探索の特殊なものになります。幅優先探索を最短経路問題などに使えるようにしたものとしてbest-first searchという汎用アルゴリズムがあり、更にbest-first searchを高速化するためにA*が考え出されました。A*は、電車のルート検索やカーナビのルート探索など、さまざまな場面で使われています。

幅優先探索 → best-first search → A*

best-first search の基本的な挙動→ 計算済みのエリアを更に広げる際、「コスト的にbestな部分を優先的に(best-first)」展開していく方法です。

コストが同じエリアが広がっている場合、同心円状に探索エリアが広がっていってしまい、非効率です。

A*の基本的な挙動→基本的にはbest-first searchと同じですが、目的地の方向を意識し、目的地の方へ優先的に探索エリアを

伸ばすという工夫が追加された方法です。目的地の方へ優先的に探索エリアを伸ばすために、コストの算出時に意図的に目的地の方向へ近づく方向のコストをわずかに安く見積もります。このような特徴的なコストの算出法をbest-first searchに適用したものがA*の正体です。

19

目的地

目的地

現在地

現在地

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

技術その4: PIDコントロール

走行ラインの計画が終わった後、いよいよロボットカーはステアリングの舵角を決定したり、アクセルやブレーキを調整したりします。以降、単純化のため、ステアリングの舵角のみに焦点をあてて説明します。

ステアリングの舵角は、PIDコントロール(proportional-integral-derivative control)という方法で決定します。もともとは船の自動操舵方法として発展したもののようです。

20

走りたい走行ライン

走行ラインに戻るためには、右に打を切ったほうが良い。でもどのくらい切ればいいんだろう?

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

技術その4: PIDコントロール: Pコントロール

Pコントロールを説明するために、まずCTE(cross tracking error)の説明をします。CTEとは、走りたい走行ラインから車がどれだけ離れているかを測定した距離情報です。走行ラインの真上をちゃんと走行している場合はCTEはゼロです。もしも走行ラインの左を走っている場合は正の値となり、走行ラインの右を走っている場合は負の値となります。

Pコントロールの考え方は単純で、CTEに比例した量だけ右に打を切れば、走行ラインに戻る方向に打を切れるという理屈になります。なお、PコントロールのPは比例(proportional)の意味です。

CTEがゼロの場合は打を切らない CTEが正(走行ラインの左側)の場合はCTEが大きいほど大きく打を右に切る CTEが負(走行ラインの右側)の場合はCTEが大きいほど大きく打を左に切る

ただ、実際にはPコントロールだけでは、走行ラインを中心に蛇行してしまいます。あたかも走行ラインを中心に振動しているような振る舞いになります。

21

走行ラインに戻るためには、CTEに比例した量だけ、右に打を切ったほうが良い。=Pコントロール

走りたい走行ラインから車がどれだけ離れているかはCTE(cross tracking error)と呼ばれます。

走りたい走行ライン

走りたい走行ライン

CTE

走行結果

舵角 = 𝑎 ∙ CTE(aは定数)

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

技術その4: PIDコントロール: PDコントロール

Pコントロールだけを使うと、走行ラインを中心に蛇行してしまいます。この蛇行を抑制するために、Dコントロールという制御を追加します。Dはderivative(微分)のDです。Dコントロールを理解するために、まず⊿CTEを説明します。

⊿CTEはCTEの変化量です。たとえば⊿t時間前の前回のCTEの値がCTE1で、再度CTEを測定した際の値がCTE2だった場合、⊿CTE=CTE2 - CTE1となります。

⊿CTE/⊿tは以下の様な意味を持ちます。 ⊿CTE/⊿tがゼロの場合、車は走行ラインと平行に走っています。 ⊿CTE/⊿tが正の場合、どんどん左にそれています。よって、それだけ打を右に切る必要があります。 ⊿CTE/⊿tが負の場合、どんどん右にそれています。よって、それだけ打を左に切る必要があります。

PDコントロールでは、この⊿CTEに比例した量だけの舵角をPコントロールに加えて補正します。そうすると、なめらかに走行ラインに沿うようになります。

22

走りたい走行ライン

CTE1 CTE2

⊿CTE = CTE2 - CTE1

走りたい走行ライン

舵角 = 𝑎 ∙ CTE + 𝑏 ∙⊿CTE

⊿t(a, bは定数)

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

技術その4: PIDコントロール: PIDコントロール

完全な世界であればPDコントロールだけでもうまく機能するかもしれませんが、実際にはもう一つ解決しなければならない問題があります。それは「機械的な狂い」です。たとえば車のホイールの取り付け角などが若干悪く、ステアリングを切ってなくても左へ左へと曲がってしまう場合があります。このような機械的な狂いがある場合、PDコントロールだけではうまく走行ラインに乗せられません。

機械的な狂いの問題を解消するため、PDコントロールに加え、Iコントロールというものを追加します。Iはintegralの略で、積分という意味です。Iコントロールでは、移動の開始以降に測定したすべてのCTEの量を累積し、その累積量に比例した量で舵角を補正します。

23

[極端なドリフトの例]舵角をゼロに保った状態でもホイールの向きがもともと曲がったりしていて、旋回してしまう。 走行ライン

ドリフトがあると、走行ラインにうまく乗らない

走行ライン

舵角 = 𝑎 ∙ CTE + 𝑏 ∙⊿CTE

⊿t+ 𝑐 ∙ CTE

(a, b, cは定数)

PIDコントロールによる舵角の決定

[参考]PIDコントロールの定数項a,b,cは、最適な値を見付けるためにTwiddleという方法を用います。

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

技術その4: PIDコントロール: Google Car のコンソール上に表示されるCTE

おまけの情報ですが、Google Car のコンソール上にはよくCTEが表示されています。右上の方に表示があり、この場合は3cmのズレがあることが分かります。また、CTEの下に表示されているPlanは、おそらく車の速度調整です。速度もPIDコントロールを用いていると思われます。

24

https://www.youtube.com/watch?v=TsaES--OTzM

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

制御ソフトウエアのオーバービュー(再掲)

25

ライダー(LIDAR)

GPS

ドップラーレーダー

DMI

IMU

センサー群 状況の把握

ローカライゼーション既知の地図(空間)内のどこに自分が居るかを決定

SLAM既知の地図(空間)をセンサーデータをもとに更新 (simultaneous localization and mapping)

動くものを検出他の車やバイクや人など、動くものを検出し、移動方向や速度を見積もり、トラッキングする(気にし続ける)

プランニング(計画)

広域のルート計画既知の地図をもとに、カーナビゲーションがやっているように、目的地に到達するための道順を自動的に計画する。この際、どのレーンに居たほうが良いかや、右折と左折のどちらが簡単に曲がれるかといった事も気にして計画を立てる。

駐車場でのルート計画車庫入れ的な挙動が必要となる駐車場や狭い道でのUターンのための行動計画を自動立案する。

方針の決定finite state machine (状態遷移図)によってロボットの行動指針を定義し、いまやらなければならない事を自動決定する。

https://www.youtube.com/watch?v=bDOnn0-4Nq8

Google Carが認識する世界

走行計画の実行

PIDコントロールproportional-integral-derivative controlの略。計画した走行ラインにそって車をコントロールする方法。計画した走行ラインにそって車を走行させることにも工夫が必要で、うまく制御出来ないと走行ラインを中心に車が蛇行してしまったりする。

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

おまけ:おそらく最も安く、有名な、3Dセンサー

Kinect for Xbox One や、second-generation Kinect for Windows v2は、LIDARと同じくtime-of-flight 方式の深度センサー(3Dセンサー)を持っています。これにより、GoogleCarと同じく、周囲の状況を3Dデータとして把握する事が出来ます。Kinectは安価なので、これを自作ロボットの目として使う人もいます。ロボットの目としては、CCDカメラのように2次元情報しか検出できない物を使うより、周囲の状況と自分の位置が3次元データとして直接得られる方が都合が良いのです。

26

https://www.youtube.com/watch?v=WPDi-WAmUDc

KinectをRumbaに取り付けて目にしてみたものhttps://www.youtube.com/watch?v=eWmVrfjDCyw

Kinectをクアドコプターの目にしてみたもの

Kinectfor Windows v2 sensor$199

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

おまけ:ステレオビジョン・・・LIDAR以外の3D検出技術。安価。

人間をはじめとする多くの動物は2つの目を使って世界を3Dと認識して処理しています。このような技術は、AIおよびコンピュータービジョンの世界では「ステレオビジョン」と呼ばれています。有名なのは、スバルの使っているEyeSightが代表例になります。

27

https://www.youtube.com/watch?v=EYrTDMSylrU

Subaru EyeSight

http://news.mynavi.jp/series/computer_vision/021/

コンピュータビジョンのセカイ - 今そこにあるミライ

前方を同時に撮影する2つのカメラ(目)

ステレオカメラで周囲を3Dデータとして読み取る

ULS Copyright © 2014 UL Systems, Inc. All rights reserved.

おまけ:structure from motion (SfM): 動画から3D構造を復元

28

http://openmvg.readthedocs.org/en/latest/software/SfM/SfM/ http://cg.cs.uni-bonn.de/aigaion2root/attachments/schwartz-2009-improvesfm.pdf

ステレオカメラではなく、単眼の普通のカメラ(スマートフォンのカメラでもOK)で動画(複数の写真でもOK)を撮影し、その動画から、被写体の3D構造を復元する技術があり、structure from motion (SfM) と呼ばれています。

最近の利用例としては、NHKが土砂災害の情報を伝えるために、ヘリコプターで災害現場をビデオ撮影し、その動画から、structure from motionを用いて現場の3D構造を復元して用いた例があります。

また、structure from motionによって3D空間を算出した後、カメラの動きをスムージングすることで、手ブレを抑えた動画に再編集するHyperlapseという技術も開発されています。(http://japanese.engadget.com/2014/08/12/hyperlapse-ms/?ncid=rss_truncated)