以下、検討する詳細を参照しながら本発明の各実施態様及び局面を記載して、図面において前記各実施態様を示す。下記記載及び図面は、本開示を説明するためのものであり、本発明を限定するためのものとして解釈されるべきではない。特定の詳細を多く記載することは、本開示の各実施態様を完全に理解するためである。しかしながら、本発明の実施態様を簡潔的に検討するために、周知または通常の詳細を記載しない場合がある。
本明細書において「一実施態様」または「実施態様」を言及することは、当該実施態様によって説明される特定の特徴、構成や特性が本発明の少なくとも1つの実施態様に含まれることを意味する。「一実施態様では」という語句の本明細書における各箇所での記載のすべては、必ずしも同一の実施態様を指すことに限定されない。
本明細書においては、HD地図又はHDポーズのように引用される「HD」又は「高精細度」とは、非常に高いレベルの精確度を有する地図及びポーズを指す。例えば、HD地図は、センチ又は数十センチのレベルの精確度を有することができる。
大きい地図領域においてGPS信号が弱い又はGPS信号がなくなる時に生じた問題及び計算複雑度の問題を解決するために、地図領域のトポロジ情報(例えば、ループ閉鎖)を用いて前記大きい地図領域をより小さい区画に分ける。その後、計算クラスタ(例えば、Hadoopクラスタ)の各ノードにおいてそれぞれの区画の計算を個別に実行(例えば、並行計算する)することによって、各ノードの計算負荷になることにより、全体として計算複雑度を低減することができる。また、トポロジ情報により、GPS信号が弱い又はGPS信号がなくなる時のポイントクラウド登録が洗練される。
第1態様によれば、自動運転車(ADV)のためのポイントクラウドの登録システムを開示する。システムは、地図作成すべきの走行可能領域のポイントクラウドをキャプチャするLIDARセンサが配置されているADVから、第1座標系(例えば、ADVの位置に対する相対座標系)に対応する複数のポイントクラウド及び対応するポーズを受信する。システムは、ポイントクラウドによりキャプチャされた走行可能ループ情報に基づき、ポイントクラウド及び対応するポーズを一つ又は複数のループ区画に分ける。システムは、各ループ区画について、ループ区画に対応するポイントクラウドに対して最適化モデルを用いることで、ポイントクラウドを登録し、ここで、ポイントクラウドを第1座標系から第2座標系(例えば、UTM座標系のようなグローバル座標系又は絶対座標系)に変換することが含まれる。システムは、ポーズグラフアルゴリズムを用いて一つ又は複数のループ区画を合併し、合併されたポイントクラウド区画を用いてADVの周囲の運転環境を感知する。
第2態様によれば、システムは、ADVの一つ又は複数のLIDARセンサからポイントクラウドフレームストリームをリアルタイムで受信するとともに、対応するポーズをリアルタイムで受信する。システムは、フレームストリームの各フレームにおける点の幾何学形状又は空間属性に基づき、フレームストリームの各フレームに用いられるセグメント情報を抽出し、なお、セグメント情報は、第1ポーズに対応する少なくとも第1フレームの一つ又は複数のセグメントを含む。システムは、セグメント情報に基づいてフレームストリームを登録する。システムは、フレームの登録に基づいてフレームストリームの第1ポイントクラウド地図を生成する。
第3態様によれば、システムは、ADVの一つ又は複数のLIDARセンサによりキャプチャされた複数のポイントクラウドを受信し、且つ、対応するポーズを受信する。システムは、ADVの一つ又は複数の画像キャプチャセンサから複数のRGB(赤、緑、青)画像を受信する。システムは、RGB画像をポイントクラウドと同期させてRGBポイントクラウドを得る。システムは、RGBポイントクラウドから、RGBポイントクラウドの状況情報及び空間情報を含む特徴を抽出する。システムは、抽出された特徴に基づいてRGBポイントクラウドを登録し、RGBポイントクラウドの登録に基づいてポイントクラウド地図を生成する。
第4態様によれば、システムは、ADVによりナビゲートされた道路を識別し、前記道路は、一つ又は複数のLIDARセンサからの一つ又は複数のポイントクラウドによりキャプチャされる。当該システムは、ポイントクラウドから識別された道路の道路標示情報を抽出し、前記道路標示情報は、識別された道路の一つ又は複数の道路標示を記述する。システムは、道路標示に基づいて道路を一つ又は複数の道路区画に分ける。システムは、道路区画に基づいてポイントクラウド地図を生成し、なお、ポイントクラウド地図を用いてADVの周囲の運転環境を感知する。
第5態様によれば、システムは、ポイントクラウドの初期フレームに基づいて占有格子地図を生成する。システムは、ポイントクラウドの一つ又は複数の後続フレームを受信する。システムは、各後続フレームに対しては、当該後続フレームに基づいて占有格子地図を更新する。システムは、上述した更新に基づいて一つ又は複数の異常ボクセルを識別し、異常ボクセルが壁オブジェクトであるか否かを判定し、異常ボクセルが壁オブジェクトであると判定されたことに応答し、前記システムは、異常ボクセルを後続フレームのゴースト効果ボクセルとして標示する。
図1は、本発明の一実施態様にかかる自動運転車のネットワーク構成を示すブロック図である。図1を参照すると、ネットワーク構成100は、ネットワーク102を介して1つまたは複数のサーバ103~104に対して通信可能に接続する自動運転車101を備える。1つの自動運転車のみを示すが、複数の自動運転車は、ネットワーク102を介して相互に接続し、および/またはサーバ103~104に接続可能である。ネットワーク102は、いずれのタイプのネットワークであってもよく、例えば、有線または無線のローカルエリアネットワーク(LAN)、インターネットのような広域ネットワーク(WAN)、セルラ網、衛星ネットワークまたはそれらの組み合せである。サーバ103~104は、いずれの形式のサーバまたはサーバクラスタであってもよく、例えば、Webサーバやクラウドサーバ、アプリケーションサーバ、バックエンドサーバまたはそれらの組み合せである。サーバ103~104は、データ解析サーバやコンテンツサーバ、交通情報サーバ、地図・関心地点(MPOI)サーバまたは位置サーバなどであってもよい。
自動運転車とは、自動運転モードにある可能に配置される車両を指し、前記自動運転モードで、車両は、運転者からの入力が非常に少なく又は完全にない状況で環境を通過するように案内される。そのような自動運転車は、車両運転環境に関する情報を検出可能に配置される1つまたは複数のセンサを有するセンサシステムを備えることが可能である。前記車両及びかかるコントローラは、検出された情報を使用して前記環境を通過するように案内される。自動運転車101は、マニュアルモード、全自動運転モードまたは一部自動運転モードで運転することが可能である。
一実施態様では、自動運転車101は、感知・計画システム110と、車両制御システム111と、無線通信システム112と、ユーザインタフェースシステム113と、情報エンターテインメントシステム114と、センサシステム115とを備えるが、これに限定されない。自動運転車101は、通常の車両に含まれる一部の汎用的な部材、例えば、エンジン、車輪、ステアリングホイール、変速機などを備えることが可能であり、前記部材は、車両制御システム111および/または感知・計画システム110により多種の通信信号および/または命令で制御され、当該多種の通信信号および/または命令は、例えば、加速信号または命令、減速信号または命令、操舵信号または命令、ブレーキ信号または命令などである。
部材110~115同士は、インターコネクト、バス、ネットワークまたはそれらの組合せを介して通信可能に接続されることが可能である。例えば、部材110~115同士は、コントローラエリアネットワーク(CAN)バスを介して通信可能に接続されることが可能である。CANバスは、マイクロコントローラと装置とがホストなしのアプリケーションで相互に通信することを許容するように設計される車両バス規格である。それは、最初に自動車における多重化電気配線のために設計される、メッセージベースのプロトコルであるが、様々な他の環境にも適用される。
図2を参照すると、一実施態様では、センサシステム115は、1つまたは複数のカメラ211と、全地球測位システム(GPS)ユニット212と、慣性計測ユニット(IMU)213と、レーダユニット214と、光検出・測距(LIDAR)ユニット215とを備えるが、これに限定されない。GPSユニット212は、自動運転車の位置に関する情報を提供するように操作可能な送受信器を備えることが可能である。IMUユニット213は、慣性加速度に基づいて自動運転車の位置及び方向変化を検知可能である。レーダユニット214は、電波信号により自動運転車のローカル環境におけるオブジェクトを検知するシステムを表すことが可能である。一部の実施態様では、レーダユニット214は、オブジェクトに加え、オブジェクトの速度および/または前進方向を検知可能である。LIDARユニット215は、激光により自動運転車が所在する環境におけるオブジェクトを検知することが可能である。LIDARユニット215は、他のシステム部材に加え、1つまたは複数のレーザ光源、レーザスキャナ及び1つまたは複数の検出器を備えることが可能である。カメラ211は、自動運転車の周囲の環境の画像を撮像するための1つまたは複数の装置を備えることが可能である。カメラ211は、スチルカメラおよび/またはビデオカメラであってもよい。カメラは、機械的に移動可能なものであってもよく、例えば、カメラが回転および/または傾斜するステージに取り付けられることにより移動可能である。
センサシステム115は、例えば、ソナーセンサや赤外線センサ、操舵角センサ、スロットルセンサ、ブレーキセンサ、オーディオセンサ(例えば、マイクフォン)などの他のセンサを備えることが可能である。オーディオセンサは、自動運転車の周囲の環境から音声を収音するように配置可能である。操舵角センサは、ステアリングホイール、車両の車輪またはそれらの組み合せの操舵角を検知するように配置可能である。スロットルセンサ及びブレーキセンサは、それぞれ車両のスロットル位置及びブレーキ位置を検知する。スロットルセンサ及びブレーキセンサは、集積式スロットル/ブレーキセンサに集積される場合もある。
一実施態様では、車両制御システム111は、操舵ユニット201と、スロットルユニット202(加速ユニットともいう)と、ブレーキユニット203とを備えるが、これに限定されない。操舵ユニット201は、車両の方向または前進方向を調整するためのものである。スロットルユニット202は、モータまたはエンジンの速度を制御することにより車両の速度及び加速度を制御するためのものである。ブレーキユニット203は、摩擦を与えることにより、車両の車輪またはタイヤを減速させて車両を減速させる。なお、図2に示す部材は、ハードウェア、ソフトウェアまたはそれらの組み合せで実現されることが可能である。
図1に戻って、無線通信システム112は、自動運転車101と、例えば装置やセンサ、他の車両などの外部システムとの通信を可能にする。例えば、無線通信システム112は、1つまたは複数の装置と直接に無線通信を行い、または通信ネットワークを介して無線通信を行うことが可能であり、例えば、ネットワーク102を介してサーバ103~104と通信する。無線通信システム112は、いずれのセルラ通信ネットワークまたは無線ローカルエリアネットワーク(WLAN)、例えば、WiFi(登録商標)を利用して他の部材やシステムと通信可能である。無線通信システム112は、例えば赤外線リンクやブルートゥース(登録商標)などを利用して装置(例えば、乗員の携帯機器、表示装置、車両101内のスピーカ)と直接に通信可能である。ユーザインタフェースシステム113は、車両101内で実現される周辺装置の部分であることが可能であり、例えばキーボード、タッチパネル式表示装置、マイクフォン及びスピーカなどを含む。
特に自動運転モードで操作される際に、自動運転車101の機能の一部または全部は、感知・計画システム110により制御または管理されることが可能である。感知・計画システム110は、必要なハードウェア(例えば、プロセッサ、メモリ、記憶装置)及びソフトウェア(例えば、オペレーティングシステム、計画・ルーティングプログラム)を含み、センサシステム115、制御システム111、無線通信システム112および/またはユーザインタフェースシステム113から情報を受信して、受信した情報を処理し、開始点から目的地点までのルートまたは経路を計画した後、計画・制御情報に基づいて車両101を運転する。その代わりに、感知・計画システム110は、車両制御システム111に集積されてもよい。
例えば、乗員であるユーザは、例えばユーザインタフェースを介して行程の開始位置及び目的地を指定することが可能である。感知・計画システム110は、行程に関するデータを取得する。例えば、感知・計画システム110は、MPOIサーバから位置・ルート情報を取得することが可能であり、前記MPOIサーバは、サーバ103~104の一部であってもよい。位置サーバは位置サービスを提供するとともに、MPOIサーバは地図サービス及び一部の位置のPOIを提供する。その代わりに、そのような位置及びMPOI情報は、感知・計画システム110の永続的記憶装置にローカルキャッシュされてもよい。
自動運転車101がルートに沿って移動する際に、感知・計画システム110は、交通情報システムまたはサーバ(TIS)からリアルタイム交通情報を取得してもよい。なお、サーバ103~104は、第三者エンティティにより操作されることが可能である。その代わりに、サーバ103~104の機能は、感知・計画システム110に集積されてもよい。感知・計画システム110は、リアルタイム交通情報、MPOI情報及び位置情報、並びにセンサシステム115により検出または検知されたリアルタイムローカル環境データ(例えば、障害物、オブジェクト、周辺車両)に基づいて、最適ルートを計画して、計画したルートに応じて、例えば制御システム111を介して車両101を運転すること可能であり、これにより、安全で且つ効率よく指定の目的地に到達することができる。
サーバ103は、複数のクライアントについてデータ解析サービスを実行するデータ解析システムであってもよい。一実施態様では、データ解析システム103は、データ収集器121及び機械学習エンジン122を備える。データ収集器121は、種々の車両(自動運転車または人間の運転者が運転する通常の車両)から運転統計データ123を収集する。運転統計データ123は、異なる時点で発行された運転命令(例えば、スロットル命令、ブレーキ命令、操舵命令)及び車両のセンサによってキャプチャされた車両の応答(例えば速度、加速、減速、方向)を示す情報を含む。運転統計データ123は、異なる時点での運転環境を記述する情報、例えば、ルート(開始位置及び目的地位置を備える)、MPOI、道路状況、気候状況などをさらに含むことが可能である。運転統計データ123は、例えば、車両に取り付けられているLIDARセンサによりキャプチャされ運転環境を記述するポイントクラウド画像や、IMU及びGPSセンサによりキャプチャされ車両の位置と向く方向を記述する対応するポーズなどのポイントクラウド情報を更に含む。
機械学習エンジン122は、各種の目的を達成するために、ワンセットのルール、運転統計データ123に基づき、アルゴリズム及び/または予測モデル124の集合を生成または訓練する。一実施態様においては、アルゴリズム124は、バンドル調整(bundle adjustment)アルゴリズム、交互方向乗数法(ADMM)アルゴリズム、画像セグメンテーションアルゴリズム(例えば、エッジ検出、運動検出等)、自己位置推定と環境地図作成(SLAM)アルゴリズム、ディープラーニングニューラルネットワークモデルを含むことができる。
アルゴリズム124は、自動運転の期間でリアルタイムで使用されるように、又は、サーバ103のその他のモジュール(例えば、HD地図生成エンジン125)に使用されるように、ADVにアップロードすることができる。一実施態様においては、HD地図生成エンジン125は、ADVにより収集されたポイントクラウドを登録し、登録されたポイントクラウドに基づいてHD地図を生成することができる。HD地図生成エンジン125は、サーバ103の一部として示されているが、幾つかの実施形態においては、エンジン125は、サーバ104の一部であっても良い。
図3A及び図3Bは一実施態様にかかる自動運転車とともに使用される感知・計画システムの例を示すブロック図である。システム300は、図1の自動運転車101の一部として実現されることが可能であり、感知・計画システム110と、制御システム111と、センサシステム115とを備えるが、これに限定されない。図3A~図3Bを参照すると、感知・計画システム110は、測位モジュール301と、感知モジュール302と、予測モジュール303と、決定モジュール304と、計画モジュール305と、制御モジュール306と、ルーティングモジュール307とを備えるが、これに限定されない。
モジュール301~307の一部または全部は、ソフトウェア、ハードウェアまたはそれらの組み合せにより実現されることが可能である。例えば、それらのモジュールは、永続的記憶装置352にインストールされて、メモリ351にローディングされ、且つ1つまたは複数のプロセッサ(図示せず)により実行されることが可能である。なお、それらのモジュールの一部または全部は、図2の車両制御システム111の一部または全部モジュールに対して通信可能に接続され、または集積される。モジュール301~307の一部は、集積モジュールに集積されてもよい。
測位モジュール301は(例えば、GPSユニット212を使用する)、自動運転車300の現在位置を特定し、ユーザの行程またはルートに関連する任意のデータを管理する。測位モジュール301(地図及びルートモジュールともいう)は、ユーザの行程やルートに関するデータ全体を管理する。ユーザは、例えばユーザインタフェースを介してログインして、行程の開始位置及び目的地を指定する。測位モジュール301は、自動運転車300の地図・ルート情報311のような他のモジュールと通信して、行程に関するデータを取得する。例えば、測位モジュール301は、位置サーバと地図・POI(MPOI)サーバから位置・ルート情報を取得することが可能である。位置サーバが位置サービスを提供するとともに、MPOIサーバが地図サービス及び一部の位置のPOIを提供することにより、地図・ルート情報311の一部としてキャッシュされることが可能である。自動運転車300がルートに沿って移動する際に、測位モジュール301は、交通情報システムまたはサーバからリアルタイム交通情報を取得してもよい。
感知モジュール302は、センサシステム115により提供されるセンサデータ及び測位モジュール301により取得される測位情報に基づいて、周囲環境への感知を特定する。感知情報は、通常の運転者がその運転している車両の周囲から感知したものを示す。感知は、例えばオブジェクト式による車線配置、信号機信号、他の車両の相対位置、歩行者、建物、横断歩道や他の交通に関する標識(例えば、止まれ標識、道譲れ標識)などを含むことが可能である。車線構成は、例えば車線の形状(例えば直線または曲率)、車線の幅、道路における車線数、一方通行車線または双方向車線、合流車線または分流車線、出口車線などの1つまたは複数の車線を記述する情報を含む。
感知モジュール302は、コンピュータビジョンシステムまたはコンピュータビジョンシステムの機能を含むことが可能であり、1つまたは複数カメラにより撮像された画像を処理して解析することにより、自動運転車環境におけるオブジェクトおよび/または特徴を認識する。前記オブジェクトは、交通信号、道路境界、他の車両、歩行者および/または障害物などを含むことが可能である。コンピュータビジョンシステムは、オブジェクト認識アルゴリズム、ビデオトラッキング及び他のコンピュータビジョン技術を使用することが可能である。一部の実施態様では、コンピュータビジョンシステムは、環境地図の描画、オブジェクトのトラッキングや、及びオブジェクトの速度の推定などを行うことが可能である。感知モジュール302は、レーダおよび/またはLIDARのような他のセンサにより提供される他のセンサデータに基づいて、オブジェクトを検出してもよい。
各オブジェクトに対して、予測モジュール303は、この場合の前記オブジェクトの挙動を予測する。前記予測は、ある時点で感知される運転環境の感知データに基づいて、地図・ルート情報311と交通規則312とのゼットに応じて実行される。例えば、オブジェクトが反対方向の車両であり、現在の運転環境が交差点を含むと、予測モジュール303は、該車両が前方に直進可能であるか、または旋回可能であるかを予測する。感知データは交差点に信号機がないことを示すと、予測モジュール303は、該車両が交差点に進入する前に完全に停車しなければいけない可能性がある、と予測することができる。感知データは該車両が左折専用車線または右折専用車線にあることを示すと、予測モジュール303は、それぞれ車両が左折または右折する可能性が高いと予測することができる。
決定モジュール304は、オブジェクト毎に対して、どのようにオブジェクトを対処するかを决定する。例えば、特定のオブジェクト(例えば、交差ルートにある他の車両)及びオブジェクトを記述するメタデータ(例えば、速度、方向、操舵角)に対して、決定モジュール304は、前記オブジェクトに行き合う時にどうのように動作するか(例えば、追い越し、一時停止、停止、越え)を決定する。決定モジュール304は、例えば交通ルールや運転ルール312のルール集合に基づいて、そのような决定を行うことが可能であり、前記ルール集合が永続的記憶装置352に記憶されることが可能である。
ルーティングモジュール307は、開始点から終点までの1つまたは複数のルートや経路を提供するように配置される。例えば、ユーザから受信した開始位置から目的地位置までの所定の行程に対して、ルーティングモジュール307は、地図・ルート情報311を取得し、開始位置から目的地位置までのすべての可能なルートまたは経路を決定する。決定された開始位置から目的地位置までの各ルートに対して、ルーティングモジュール307は、地形図の形態で基準線を生成することができる。基準線は、他の車両、障害物または交通状況などのいかなる干渉もない理想的なルートまたは理想的な経路を示す。即ち、道路には他の車両、歩行者や障害物がないと、ADVは、精確または密接に基準線に追従すべきである。その後、決定モジュール304および/または計画モジュール305に地形図を提供してもよい。他のモジュールによって提供される他のデータ(例えば、測位モジュール301からの交通状況、感知モジュール302によって感知された運転環境および予測モジュール303によって予測された交通状況)に基づいて、決定モジュール304および/または計画モジュール305は、全ての可能な経路をチェックして、そのうちの最適ルートの1つを選択し、修正する。ある時点での特定の運転環境によっては、ADVを制御するための実際のルートまたは経路は、ルーティングモジュール307により提供される基準線に対して近接し、または相違する可能性がある。
感知されたオブジェクト毎に対する决定に基づいて、計画モジュール305は、ルーティングモジュール307により提供された基準線を基にして、自動運転車に対してルートまたは経路、及び運転パラメータ(例えば、距離、速度および/または旋回角度)を計画する。つまり、所定のオブジェクトに対して、決定モジュール304は、当該オブジェクトが何をすべきかを決定する一方、計画モジュール305は、どのようにするかを決定する。例えば、所定のオブジェクトに対して、決定モジュール304は、前記オブジェクトを越えることを決定することが可能である一方、計画モジュール305は、前記オブジェクトの左側か右側かで越えることを決定することが可能である。計画・制御データは、計画モジュール305により生成されて、車両300が次の移動サイクル(例えば、次のルート/経路セグメント)でどのように移動するかを記述する情報を含む。例えば、計画・制御データは、車両300が30mphの速度で10メートル移動した後、25mphの速度で右側の車線に変更することを指示可能である。
計画・制御データに基づいて、制御モジュール306は、計画・制御データにより限定されるルートまたは経路に応じて、適当な命令または信号を車両制御システム111に発信することにより、自動運転車を制御して運転する。前記計画・制御データは、ルートまたは経路に沿って、異なる時点で適当な車両配置または運転パラメータ(例えば、スロットル、ブレーキおよび操舵命令)を使用して車両をルートまたは経路の第1点から第2点に走行させるための充分な情報を含む。
一実施態様では、計画段階が複数の計画周期(運転周期ともいう)で実行され、例えば、100ミリ秒(ms)の時間間隔で実行される。各計画周期または運転周期に対して、計画・制御データに基づいて1つまたは複数の制御命令を発行する。即ち、100ms毎に、計画モジュール305は、次のルートセグメントまたは経路セグメントを計画し、例えば、目標位置、及びADVがこの目標位置に到達するのに必要な時間を含む。その代わりに、計画モジュール305は、具体的な速度、方向および/または操舵角などを規定してもよい。一実施態様では、計画モジュール305は、次の所定の期間(例えば、5秒)に対してルートセグメントまたは経路セグメントを計画する。計画周期毎に、計画モジュール305は、前の周期で計画した目標位置に基づいて現在周期(例えば、次の5秒)のための目標位置を計画する。そして、制御モジュール306は、現在周期の計画・制御データに基づいて1つまたは複数の制御命令(例えばスロットル制御命令、ブレーキ制御命令、操舵制御命令)を生成する。
なお、決定モジュール304と計画モジュール305とは、集積モジュールに集積されることが可能である。決定モジュール304/計画モジュール305は、自動運転車の運転経路を決定するために、ナビゲーションシステムまたはナビゲーションシステムの機能を含むことが可能である。例えば、ナビゲーションシステムは、自動運転車が最終目的地への車道に基づく経路に沿って前進すると同時に、感知した障害物を実質的に回避するような経路に沿って、自動運転車が移動することを実現するための一連の速度及び前進方向を決定すること可能である。目的地は、ユーザインタフェースシステム113を介したユーザ入力に基づいて設定可能である。ナビゲーションシステムは、自動運転車が運転していると同時に、動的に運転経路を更新することが可能である。ナビゲーションシステムは、GPSシステム及び1つまたは複数の地図からのデータを合併して、自動運転車用の運転経路を決定することが可能である。
図4は、一実施態様に係るHD地図生成エンジンの例を示すブロック図である。HD地図生成エンジンは、ポイントクラウドを登録し、ポイントクラウドの登録に基づいてHD地図を生成することができる。図4に示すように、HD地図生成エンジン125は、例えば、ポイントクラウド受信モジュール401、ポイントクラウドダウンサンプリングモジュール403、ループ(loop)情報判定モジュール405、区画モジュール407、最適化ソルバモジュール409、合併モジュール411というような複数のモジュールを含んでも良い。なお、これらのモジュールの一部又は全部は、より少ないモジュールに集積されても良く、又は、より多いモジュールに分けても良い。
ポイントクラウド受信モジュール401は、ポイントクラウド(例えば、ADVのLIDARセンサによりキャプチャされたLIDAR画像)及び対応するポーズ(例えば、位置及び向き)を受信することができる。当該例では、ポイントクラウドとは、LIDAR装置により特定の時点においてキャプチャされた1組のデータポイントを指す。それぞれのデータポイントは、データポイントの位置情報(例えば、x、y及びz座標)と関連付けられる。ポイントクラウドダウンサンプリングモジュール403(選択可能であっても良い)は、空間又は時間上でポイントクラウドに対してダウンサンプリングすることができる。ループ情報判定モジュール405は、地理ループに形成された走行可能領域に対応する1組のポイントクラウドに対してループ閉鎖(loop closure)が存在しているか否かを判定する。区画モジュール407は、閉合情報又はブロック区画情報に基づいて一つ又は複数の走行可能領域を一つ又は複数の区画に分けることができる。最適化ソルバモジュール409は、精確なHD LIDARポーズを生成するために、区画に対応するポイントクラウド及びポーズに対し、最適化アルゴリズム(例えば、バンドル調整又はADMMアルゴリズムであり、図4のアルゴリズム415又は図1のアルゴリズム124の一部)を用いることができる。合併モジュール411は、複数の区画を合併してHD地図を生成することができる。なお、登録とは、地図を作成すべきの領域のポイントクラウドデータのアライメントである。
図5は、一実施態様に係るHD地図生成システムの例を示すブロック図である。HD地図生成システム500は、HD地図生成の概況を示している。HD地図生成システム500は、図1のHD地図生成エンジン125の一部であっても良い。図5に示すように、一実施態様においては、HD地図生成システム500は、ポイントクラウド登録サブシステム501と、HD地図生成サブシステム502とを含む。ポイントクラウド登録サブシステム501は、(例えば、IMU213、GPSユニット212及びLIDARユニット215からのそれぞれ)IMU信号、GPS信号及びLIDAR画像503を入力として受信し、受信された入力に基づいてHDポーズ504を生成することができる(又は、LIDAR画像503に対してポーズをアライメントする)。その後、HD地図生成サブシステム502は、LIDAR画像503及びHDポーズ504を入力として受信し、これらの入力に基づいてHD地図505を生成することができる。
図6は、一実施態様に係るHD地図生成システムに用いられるパイプラインの例を示すブロック図である。パイプライン600は、HD地図生成システム(例えば、図5のシステム500)又はHD地図生成エンジン(例えば、図4のエンジン125)に用いられるパイプラインであっても良い。図6に示すように、一実施態様においては、パイプライン600は、ダウンサンプリングプロセス601、分けプロセス602、Hadoop及びメッセージ通信インターフェース(MPI)並行登録プロセス603、ポーズグラフアライメントプロセス604及びポーズ調整プロセス605を含むが、これらに限定されない。これらの操作601~605の中の幾つかは、異なる処理ノードによりシリアル方式、パラレル方式、又はパイプライン方式で実行可能であり、これは、地図生成システムにより配分することができる。異なるプロセスに関する記述は、以下の通りである。
パイプラインの入力として、原始ポイントクラウドであっても良く、それらのポーズは、一つ又は複数のADVに取り付けられているLIDARセンサによりタスク場面から収集されたものである。通常、入力は、数万又は数十万の最適化すべき又はアライメントすべきのLIDARポーズを含む。パイプライン600に用いられる入力ポイントの数を最小化させるために、ダウンサンプリングプロセス601において、ポーズに対し、空間及び/又は時間上で連続してダウンサンプリングする。
一実施態様においては、プロセス601によれば、空間においてポイントクラウドに対してダウンサンプリングすることができる。例えば、プロセス601は、空間スライディングウインドウを決定することができる。スライディングウインドウは、所定の半径を有する円形のウインドウであっても良い。その後、プロセス601は、空間ウインドウ内の全てのポイントクラウドに対して、更なる処理をすべきの一つのLIDARポイントクラウド及び対応するポーズを識別する。別の実施形態においては、プロセス601によれば、更なる処理をすべきと識別されなかった、その他のLIDARポイントクラウド及び対応するポーズに対して、処理を行うことができる。一実施態様においては、関心の空間領域(例えば、スライディングウインドウの中心領域)から一つのLIDARポイントクラウドを識別することができる。
別の実施形態においては、プロセス601によれば、ポイントクラウドに対して時間上でダウンサンプリングすることができる。例えば、プロセス601において、時間スライディングウインドウを決定し、それぞれの空間スライディングウインドウに対して(例えば、タイムスタンプを使用して)一つの時系列のLIDARポイントクラウドを追跡することができる。その後、プロセス601は、それぞれの時系列に対し、一つのLIDARポイントクラウド及びその対応するポーズを識別して、更なる処理を行うことができる。例えば、二つの時系列(即ち、二つの時間クラスタ(cluster))が存在する場合、プロセス601において、二つの時系列のそれぞれに対してポイントクラウド及び対応するポーズを保つ。ADVが赤信号のところに止まっている場面においては、ポイントクラウドに対して時間上でダウンサンプリングすることが特に役に立つ。この場合、止まったADVは、一つの時系列のほぼ同じLIDARフレームをキャプチャすることができるが、一つのLIDARポイントクラウドのみが役に立つ。よって、ダウンサンプリングは、当該赤信号に対してキャプチャされた類似するポイントクラウドのあらゆる時系列における複数のLIDARポイントクラウドを識別することはなく、上記1つの時系列に対して一つのLIDARポイントクラウドを識別して、更なる処理を行うことになる。故に、ダウンサンプリングによれば、重複又は類似するポイントクラウドデータの数が低減され、パイプラインの入力データが最適化される。その後、分けプロセス602により、ダウンサンプリングされたポイントクラウドを分ける。
一実施形態においては、分けプロセス602において、一つ又は複数のコンピュータビジョンアルゴリズム(例えば、エッジ検出及び/又は画像分割アルゴリズム)に基づいてループ閉鎖情報を判定する。例えば、分けプロセス602は、コーナー検出(corner detection)アルゴリズムを用いて特徴又は画像エッジを検出することができる。コーナー検出アルゴリズム(例えば、Harrisコーナー検出器)により、LIDAR画像(例えば、ポイントクラウド)から特徴を抽出し推理することができる。その後、分けプロセス602により、対応するポーズと、検出された特徴及び/又は車両の時間と速度情報の集合(車両の位置を推測することができる)の組み合わせとに基づき、一つ又は複数のループを検出し追跡することができる。別の実施形態においては、道路輪郭又は道路輪郭の特徴に基づいて道路のループ閉鎖を識別する。次に、分けプロセス602は、ループ閉鎖情報に基づいて、1組のポイントクラウドがループと対応するポイントクラウドと対応するように、1組又は複数組のポイントクラウドに分ける。
一実施態様においては、検出されたループは、所定の閾値より大きい領域を跨る場合、分けプロセス602において、ループ区画に対し空間分けを実施することにより、ループ区画を更に二つ以上のブロック区画に分けることができる。これにより、各区画の計算負荷は、所定の閾値を超えることはない。一実施態様では、ループは、沢山の所定の空間領域に分けられる。その後、分けられたポイントクラウドは、Hadoop及びメッセージ通信インターフェース(MPI)プロセス603の中のノードクラスタを介し並行登録することができる。
ポイントクラウド登録とは、様々なポイントクラウドを参考ポーズ又は参考ポイントクラウドとアライメントすることである。それぞれのループ区画又はブロック区画に対しては、区画の中のポイントクラウドをアライメントするために、当該区画に対応するポイントクラウドに対して最適化アルゴリズムを用いることによって、これらのポイントクラウドに対するHD LIDARポーズを生成する。例えば、プロセス603において、1組のポイントクラウドに対し、反復最近接点(ICP)アルゴリズムを用いることができる。なお、ICPは、二つのポイントクラウドの間の差異を最小化するためのアルゴリズムである。ICPは、通常、異なる走査に基づいて2D又は3D表面を再構築するために用いられる。ICPに対しては、一つのポイントクラウド(例えば、参照)を一定に保ち、その他のポイントクラウドを当該参照に最適にマッチするように変換させる。当該アルゴリズムは、誤差計量(例えば、マッチペア同士の座標の平方差の合計又はその他のポイントクラウドから参考ポイントクラウドまでの距離)を最小化するために必要とする変換(例えば、平行移動及び回転)を反復して補正する。
例えば、対応するLIDARポーズを有するポイントクラウドiに対しては、変換マトリックス(例えば、R
i=(t
i,R
i)、ただし、t
iは、平行移動であり、R
iは、回転変換である)に対応するLIDARポーズ(x、y、z、(ヨー、ピッチ、ロール))は、ポイントクラウドiを相対座標系(車両に相対する)からユニバーサル横メルカトル(UTM)座標系に投影するのに用いられることができる。そして、投影方程式は、以下の式である。
ただし、x
kは、1組のポイントクラウドiの中の任意のポイントであり、t
iは、平行移動であり、R
iは、回転変換である。
それぞれの区画に対しては、プロセス603において、ポイントクラウドのポーズに基づいて関連ポイントクラウドペア(又は、フレームペア)を
として識別し、ただし、
は、ポイントクラウドiとポイントクラウドjのペアを表す。そして、二つのポイントクラウドのペアにおけるポイントを
に限定することができ、ただし、x
kは、LIDARポイントクラウドインデックスiの中のポイントであり、x
lは、LIDARポイントクラウドインデックスjの中のポイントであり、
は、ポイントペアを表す。そして、以上に基づく最適化すべきのバンドル調整(BA)式は、以下の通りである。
上述した等式(P)は、最適化アルゴリズム(例えば、Levenberg Marquardt(LM)アルゴリズム)により解くことができるが、その複雑度は、約O(m^3)であり、ただし、mは、フレームペアの数である。LMアルゴリズムは、局部の最小値を特定することによって、非線形最小二乗問題を解くものである。一実施態様においては、等式(P)は、一つ又は複数のサブ問題に細分化され、これらのサブ問題に対して最適化アルゴリズム(例えば、ADMMアルゴリズム)を用いて個別に解くことができる。一実施態様においては、ノードクラスタを用いてこれらのサブ問題を並行して解決する。例えば、与えられたフレームペア
について、m番目のフレームペアのi番目のポイントクラウドのポーズ変換マトリックスは、R
i
mであり、ここで、上付き文字は、フレームペアmのサブセットのインデックスを表し、下付き文字は、1組のポイントクラウドPの中のポイントクラウドiのインデックスを表す。そして、並行パイプラインに基づく最適化すべきのバンドル調整(BA)式は、以下の通りである。
当該例示においては、ノードクラスタの1つ又は複数のノードにより、最適化アルゴリズムを実行することができ、例えば、それぞれのノードは、一つのフレームペアを処理することができる。一実施態様においては、これらのフレームペアに対応するタイムスタンプに基づいてフレームペアが関連するか否かを判定することができ、例えば、連続するタイムスタンプを有するフレームペア、又は時間の閾値内にあるフレームペアは、関連するフレームペアであると判定してもよい。別の実施形態においては、ループ閉鎖情報に基づいて関連するフレームペアを判定する。例えば、別々のタイムスタンプを有するが、同じ又は類似する位置と一致する二つのフレームは、関連するフレームであると判定しても良い(例えば、ループ閉鎖)。この場合、二つのフレームのポイントクラウドは、ほぼ類似又はマッチすると判定すべきである。それぞれの区画に対してポーズをアライメント又は登録すると、プロセス604により、これらの区画を合併することができる。
一実施態様においては、ポーズグラフアライメントプロセス604は、ポーズグラフアライメントアルゴリズム(例えば、自己位置推定と環境地図作成(SLAM)アルゴリズム)に基づき、それぞれの区画をより大きい地図区画の中に合併することができる。一実施態様においては、並んだ区画の重なり領域を接続することによって、重なり領域について1組のみの出力を必要とされる。例えば、重なり領域は、二つの領域に共通するルートである場合、1組のみの重なりルートを必要とされる。
一実施態様においては、ポーズ調整プロセス605は、これらのポーズを洗練するか、又はUTM座標系に調整することができる。例えば、前のように、仮に、一つのポーズを、その他のポーズ及びポイントクラウドに対しアライメントするのための参考ポーズとする。プロセス605において、最終のポーズ調整を用いて、UTM座標系へのマッピングによるトータル誤差を減らすことができる。例えば、プロセス605において、最適化アルゴリズムを用いる前後の対応するポーズを比較することによって、GPS信頼度について、入力されたLIDARポーズを解析する。最大の信頼度で識別された(複数の)ポーズ(例えば、受信したポーズと計算されたHDポーズとの間の差異が閾値より低い)が保たれ、ポーズを調整するために用いらえる。そして、識別されたポーズに基づいて全てのポーズに対して形状保存変換(rigid body transformation)を用いる。形状保存変換は、変換すべきオブジェクトの形状及びサイズを保つ変換である。ここでは、回転変換又は反射変換は、形状保存変換である一方、拡大縮小は、形状保存変換ではない。最後に、調整されたポーズを有するポイントクラウドを用いて高精細度(HD)3Dポイントクラウド地図を生成する。一実施態様においては、3Dポイントクラウド地図を、鳥瞰図を有する2D測位地図に変換することができる。
図7Aは、一実施態様に係るループ閉鎖を有する地図領域を示す図である。図7Aに示すように、ループ閉鎖701は、一本の道路(例えば、円形)又は二本以上の道路の組み合わせにより形成されたループであっても良い。図7Aに示すように、ループ閉鎖701は、高速道路と道路の組み合わせにより形成されたループであり、高速道路及び道路の両方は、走行可能な道路である。一実施態様においては、ループ閉鎖は、最小の走行可能なループである。ここでは、ループ閉鎖701は、長さにおいて伸びてループ閉鎖701を通り抜ける沢山のその他の道路セグメントを含む。しかしながら、ループ閉鎖701は、ループ閉鎖内のその他の道路を含んでも良く、含まなくても良い。言い換えれば、ループ閉鎖の中のポイントクラウドに用いられるポーズに対してアライメントするのに必要とする計算負荷の閾値に基づき、ループ閉鎖701(取得しようとする道路分岐)を識別することができる。一実施態様においては、ループ閉鎖を囲む空間領域の閾値に基づいてループ閉鎖を識別する。
図7Bは、一実施態様に係るLIDAR画像の二次元鳥瞰図を示す画像である。図7Bに示すように、2D鳥瞰図は、HD3Dポイントクラウド地図から生成された測位地図の一部であっても良い。ここでは、図7BのLIDAR画像の2D鳥瞰図は、図7Aの位置703のビューに対応することができる。
図8は、一実施態様に係る方法の例を示すフローチャートである。プロセス800は、ソフトウェア、ハードウェアまたはその組み合わせを含むことができる処理ロジックによって実行することができる。例えば、プロセス800は、自動運転車の地図生成エンジン(例えば、サーバ103のHD地図生成エンジン125)により実行することができる。図8に示すように、ブロック801においては、処理ロジックは、地図作成すべきの走行可能領域のポイントクラウドをキャプチャするLIDARセンサが配置されているADVから、第1座標系に対応する複数のポイントクラウド及び対応するポーズを受信する。ブロック802においては、処理ロジックは、ポイントクラウドによりキャプチャされた走行可能ループ情報に基づき、これらのポイントクラウド及び対応するポーズを一つ又は複数のループ区画に分ける。ブロック803においては、処理ロジックは、各ループ区画について、当該ループ区画に対応するポイントクラウドに対して最適化モデルを用いることで、ポイントクラウドを登録し、ここで、ポイントクラウドを第1座標系から第2座標系に変換することが含まれる。ブロック804においては、処理ロジックは、ポーズグラフアルゴリズムを用いて一つ又は複数のループ区画を合併し、ポイントクラウドの合併された区画を用いてADVの周囲の運転環境を感知する。
一実施態様においては、時間スライディングウインドウに基づいて受信されたポイントクラウドに対して時間上でダウンサンプリングし、所定の空間半径を有する空間ウインドウに基づいて受信されたポイントクラウドに対して空間上でダウンサンプリングする。別の実施形態においては、走行可能ループ情報は、道路輪郭に基づいて走行可能道路ループ閉鎖を識別するループ閉鎖ポイントを含む。
一実施態様においては、ループ区画に用いられる複数のポイントクラウド及び対応するポーズは、所定の空間領域より大きい空間領域を跨る場合、処理ロジックは、ループ区画を所定の空間領域より小さい又は等しい複数のブロック区画に分ける。一実施態様においては、最適化モデルを用いることは、反復最近接点問題を解くことによって、バンドル調整最適化モデルに基づいてループ区画に用いられるポイントクラウドを登録することを含み、ループ区画の各ポイントクラウド及び対応するポーズを相対座標系からUTM座標系に投影し、ループ区画に対して関連するフレームを配分し、ポーズペアに対して最適化問題を解くことによって、ループ区画に対して投影されたポイントクラウドを登録することが含まれる。
一実施態様においては、交互方向乗数法(ADMM)最適化フレームワークにより、それぞれのループ区画に対する最適化問題を並行して解決する。別の実施形態においては、区画を合併することは、二つ以上のループ区画に用いられる重なりルートを識別し、二つ以上のループ区画に用いられる重なりルートを合併することによって、二つ以上のループ区画を合併することを含む。
一実施態様においては、処理ロジックは、合併後の区画のポーズに対しポーズ調整アルゴリズムを用いることによって、合併後の区画の特徴間の差異を最小化する。別の実施形態においては、ポーズ調整アルゴリズムを用いることは、合併後の区画のポーズに対し、閾値より高い信頼度を有するポーズに基づいて決められた形状保存変換を用いることを含む。
図9は、一実施態様に係る自動運転車と共に使用される感知・計画システムの例を示すブロック図である。システム900は、図1の自動運転車101の一部として実装することができ、感知・計画システム110、制御システム111及びセンサシステム115を含むが、これらに限定されない。図3Aのシステム300に類似し、システム900の感知・計画システム110は、測位モジュール301、感知モジュール302、予測モジュール303、決定モジュール304、計画モジュール305、制御モジュール306及びルーティングモジュール307を含むが、これらに限定されない。また、システム900は、リアルタイム地図生成モジュール308を含む。
モジュール301~308の中の幾つか又は全部は、ソフトウェア、ハードウェアまたはその組み合わせとして実装することができる。例えば、これらのモジュールは、永続的記憶装置352にインストールされ、メモリ351にロードされ、一つまたは複数のプロセッサ(示さず)によって実行されても良い。これらのモジュールの中の幾つか又は全部は、図2の車両制御システム111の幾つか又は全部のモジュールと通信可能に接続され、又は、一体に集積されることができることに注意すべきである。モジュール301~308の中の幾つかは、一体に集積モジュールとして集積されても良い。
現在、ADVにより、ADVに取り付けられている高精細度のLIDARセンサからの大量のポイントにおいてポイントクラウドを受信する。大量のポイントにより大量の計算及びメモリコストが生じてしまうという技術問題が存在している。また、高精細度のLIDARセンサは、視野が限られたために局部のオブジェクトを観測する、又は、異なるLIDARフレームにおいて、視野の中のオブジェクトが他のオブジェクトに阻まれる可能性がある。また、SLAMのような技術は、SLAMが推定したHDポーズにおいて時間経過と共にドリフトする可能性がある。幾つかの実施形態の技術解決案は、計算及びメモリコストを減らし、SLAMのドリフトも減らすことができた。
図10は、一実施態様に係るリアルタイムHD地図生成モジュールの例を示すブロック図である。リアルタイムHD地図生成モジュールは、ポイントクラウドを登録し、ポイントクラウドの登録に基づいてHD地図をリアルタイムで生成することができる。図10に示すように、一実施態様においては、リアルタイムHD地図生成モジュール308は、受信サブモジュール1001、セグメント情報抽出サブモジュール1003、フレーム登録/位置特定サブモジュール1005、地図生成サブモジュール1007、特徴情報抽出サブモジュール1009及びループ閉鎖検出サブモジュール1011のような複数のサブモジュールを含んでも良い。受信サブモジュール1001は、ADVの一つ又は複数のLIDARセンサからLIDAR画像フレームストリーム(例えば、ポイントクラウドフレームストリーム)を受信することができる。サブモジュール1001は、ADVにより配置されたIMU及びGPSユニットからポーズ情報を受信することもできる。セグメント情報抽出サブモジュール1003は、それぞれのLIDAR画像フレームから一つ又は複数のセグメントを抽出することができる。フレーム登録/位置特定サブモジュール1005は、セグメント情報に基づいてフレームを登録、又は位置特定することができる。地図生成サブモジュール1007は、フレームの登録に基づいてHD3Dポイントクラウド地図を生成することができる。特徴情報抽出サブモジュール1009は、抽出された各セグメントから特徴を抽出することができる。ループ閉鎖検出サブモジュール1011は、抽出された特徴に基づいてループ閉鎖を検出することができる。これらのモジュールの中の幾つか又は全部は、必要とする特定の配置に基づき、より少ないモジュールに集積される、又は、より多いモジュールに分けることができる。
図11Aは、一実施態様に係るリアルタイムHD地図生成パイプラインの例を示すフローチャートである。パイプライン1100は、リアルタイム地図生成モジュール(例えば、図10のモジュール308)により実行されるパイプラインであっても良い。図11Aに示すように、一実施態様においては、パイプライン1100は、セグメント抽出プロセス1102、セグメントに基づく登録プロセス1103、特徴抽出プロセス1104、ループ検出プロセス1105及びポイントに基づく登録プロセス1107を含むが、これらに限定されない。
図11Aに示すように、一実施態様においては、パイプライン1100は、ADVのLIDARセンサから初期フレーム1101(例えば、第1LIDARポイントクラウドフレーム)を受信する。そして、セグメント抽出プロセス1102は、受信したフレームからセグメントを抽出する。なお、セグメントとは、ポイントクラウド、スーパーポイント又は顕著画像領域(又は、ボクセル)のクラスタを指し、即ち、それぞれの表面、オブジェクト、輪郭又はオブジェクトの自然部分に対応する領域を指すことである。フレームにおいて検出されたオブジェクトの構造情報を用いてこれらのセグメント又はスーパーポイントオブジェクトを抽出することができる。一実施態様においては、セグメントは、セグメントタイプに分類される。セグメントタイプ又はオブジェクトタイプの例示としては、円柱形のオブジェクト、平らなパッチオブジェクト(patch object)であっても良く、又は、特殊の幾何学形状及び空間属性を有する任意の幾何学形状の識別可能オブジェクトであっても良い。ポイントクラウド特徴は、セグメントを抽出するために用いることができ、例えば、ポイントクラウドにより表されたオブジェクトの強度、テクスチャー又は近接度である。セグメント抽出プロセスは、ポイントクラウドに対して複数のアルゴリズム(図9のアルゴリズム/モデル313の一部)を用いてセグメントを抽出することができる。例えば、セグメント抽出プロセスは、画像分割アルゴリズム(例えば、エッジ検出、デュアルクラスタリング、領域成長又は分水嶺変換アルゴリズム等)を用いてLIDARフレームからセグメントを抽出することができる。
抽出したセグメントに基づき、セグメントに基づく登録プロセス1103は、それぞれのセグメントタイプからのフレームの限定ポイントセットを用い、ICPのような最適化アルゴリズム(図9のアルゴリズム/モデル313の一部)を用いて、バッフアの中の前の最も近いフレームから、同じセグメントタイプからマッチを探す。初期フレームは、唯一のフレーム(例えば、第1フレーム)であるならば、初期フレームを参考フレームとしても良く、初期フレームに用いられる相応するポーズは、参考ポーズであっても良い。
一実施態様においては、特徴抽出プロセス1104は、現在のフレームの各セグメントから特徴又は特徴表示を抽出し、ループ検出プロセス1105は、抽出された特徴を前のフレームの特徴と比較する。特徴を抽出することは、次元削減のプロセスであり、初期設定されたセグメントは、処理のために、1組の特徴に簡略化されるとともに、オリジナルなセグメントを精確で且つ完全に記述する。特徴の例としては、セグメント(例えば、パターン)の滑らかさ、線形性及びポイントの連続性を含む。当該比較の結果、所定の閾値(例えば、数又はパーセント)より高い複数のマッチ特徴が得られる場合、ループ閉鎖が検出されることになる。ここでは、前の視野と異なり、オブジェクトは、現在の視野において阻まれる又は部分的に見える可能性があるため、セグメントに対して比較することではなく、特徴に対して比較するようにする。一実施態様においては、特徴は、固有値に基づく特徴を含む。固有値に基づく特徴は、線形、平らさ、散乱、全分散(例えば、体積ポイント分布の特徴)等の特徴を含んでも良い。
一実施態様においては、抽出されたセグメントは、ターゲット地図に記憶することができ、セグメント又はセグメント情報は、セグメントの特徴を抽出するために用いられることができる。別の実施形態においては、プロセス1105は、最近傍検索、教師なし機械学習アルゴリズムのような機械学習アルゴリズム(図9のアルゴリズム/モデル313の一部)を用いて二つのセグメントがマッチするか否かを判定することができる。マッチするセグメントを候補セグメントペアとする。これらの候補セグメントペアに基づき、幾何学的一貫性推定アルゴリズムを用いてこれらのセグメント間の変換(例えば、変換マトリックス)を決定することができる。
その後、変換マトリックスを用いて検出されたループ閉鎖の確実性を検証することができる。別の実施形態においては、機械学習モデル(例えば、ディープラーニングニューラルネットワーク)を用いて現在のフレームと先に受信した任意のフレームとの間に特徴マッチが存在するか否かを判定することができる。例示するディープラーニングニューラルネットワークは、図12の多層パーセプトロン((MLP)1200であり、三層が含まれる。入力層は、現在のフレーム及び前のフレームから抽出された特徴を受信し、非表示層は、各入力を出力層に接続し、出力層は、セグメントマッチの確率を示す確率出力インジケーターを有する。図12のMLP1200は、入力層及び非表示層の中の四つの入力ノード及び四つの非表示ノードのそれぞれのみを示しているが、任意の数のノードであっても良い。
なお、機械学習モデルは、ニューラルネットワーク(完全接続、局部接続又はその組み合わせ)、サポートベクターマシン(SVM)、線形回帰、k近傍、ナイーブベイズ、k平均及びランダムフォレストモデルを含むが、これらに限定されない。ニューラルネットワークは、機械学習モデルであり、特定のタスクのルールでプログラミングすることをせずに、実例(例えば、入力/出力場面を用いて訓練する)を考慮することで、タスクを実行するように学習することができる。ニューラルネットワークは、一連の非表示層又は内層の中のニューラルユニット又はニューロンの大きの集合に基づく計算方法である。それぞれの非表示層は、1組のニューロンからなり、なお、それぞれのニューロンは、前にある層の中の一つ又は複数のニューロンに接続し、一つの層の中のニューロンは、完全に独立して働くことができ、当該層のその他のニューロンと如何なる接続も共用しなくても良い。ニューラルネットワークは、自主学習及び訓練するものであり、明確にプログラミングするものではない。
図11Aに示すように、プロセス1106において、前記ストリームのために処理されるその他のフレームが存在するか否かを判定し、存在の場合、プロセス1106は、プロセス1102に移行し、存在しない場合、プロセス1106は、プロセス1107に入る。プロセス1107は、当該ストリームの中の連続フレームのポイントクラウドに基づいて従来のICPアルゴリズムを用いることによって、フレームストリームのポイントクラウド登録を実行する。ここでは、初期段階においては、フレームツーフレーム(frame-to-frame)で、当該ストリームのフレームに対し、プロセス1102~プロセス1105を反復して実行することができる。
図11Bは、一実施態様に係るループ閉鎖の測位の例を示すフローチャートである。図11Aのループ検出プロセス1105により操作1110を実行することができる。図11Bに示すように、ループ閉鎖1111が検出されると、ターゲット地図又はセグメント地図生成プロセス1112は、前にループのフレームに対して抽出されたセグメントに基づいてターゲット地図を生成することができる。ターゲット地図又はセグメント地図は、フレームのセグメントのリストを記憶しているデータベース、構造又はクラスオブジェクトであっても良い。これらのセグメントは、セグメントに対応する複数のポイントとして記憶することができる。図13は、一実施態様に係るターゲット地図の例を示している。図11Bに戻り、ターゲット地図及び図11Aのプロセス1104により実行された前の登録結果に基づき、プロセス1113は、初期ポーズに対して最良候補ポーズを検索することによって、初期ポーズを更新する。一実施態様においては、更新された初期ポーズに基づき、プロセス1113は、初期ポーズ及び登録結果に対し、反復法を用いることによって、SLAMによるドリフトを減らすために登録結果に用いられるべき変換を決定する。この場合、ループ閉鎖は、初期ポーズの位置及び方向に対して第2指示を提供したので、SLAMのドリフトを減らすことができる。反復法の例としては、ランダムサンプルコンセンサス(RANSAC)であっても良い。RANSACは、反復法の一つであり、外れ値データポイントを含む1組の観測データに基づいてモデルを近似することに用いられ、この場合、近似すべきモデルに影響を与えない外れ値データポイントを付与すべきである。ポイントクラウドを登録すると、登録結果を用いてHDポイントクラウド地図を生成することができる。
図14は、一実施態様に係る方法の例を示すフローチャートである。プロセス1400は、ソフトウェア、ハードウェア又はその組み合わせを含む処理ロジックにより実行することができる。例えば、プロセス1400は、自動運転車の地図生成モジュール(例えば、図9のリアルタイム地図生成モジュール308)により実行することができる。図14に示すように、ブロック1401においては、処理ロジックは、ADVの一つ又は複数のLIDARセンサからポイントクラウドのフレームストリームをリアルタイムで受信するとともに、対応するポーズをリアルタイムで受信する。ブロック1402においては、処理ロジックは、フレームストリームの各フレームの中のポイントの幾何学形状又は空間属性に基づいて前記フレームのセグメント情報を抽出し、なお、セグメント情報は、第1ポーズに対応する少なくとも第1フレームの一つ又は複数のセグメントを含む。ブロック1403においては、処理ロジックは、セグメント情報に基づいてフレームストリームを登録する。ブロック1404においては、処理ロジックは、フレームの登録に基づいてフレームストリームから第1ポイントクラウド地図を生成する。
一実施態様においては、処理ロジックは、各フレームの各セグメントから一つ又は複数の特徴を抽出し、第1フレーム及び第2フレームからの特徴が含まれる。処理ロジックは、抽出された第1フレーム及び第2フレームの特徴に基づいて第1フレームと第2フレームの間のループ閉鎖を検出する。第1フレームと第2フレームの間のループ閉鎖が検出されたことに応答し、処理ロジックは、フレームの登録に基づいて第2フレームを位置特定し、位置特定及びフレームの登録に基づいて第1ポーズを更新することによって、第2ポイントクラウド地図を生成する。
別の実施形態においては、第1フレームと第2フレームの間のループ閉鎖を検出することは、第1フレーム及び第2フレームのセグメントの特徴に対して教師なし機械学習アルゴリズムを用いて二つのセグメントがマッチするか否かを判定することを含む。別の実施形態においては、第1フレームと第2フレームの間のループ閉鎖を検出することは、第1フレームと第2フレームに対してRANSACアルゴリズムを用いて二つのセグメントがマッチするか否かを判定することを更に含む。別の実施形態においては、教師なし機械学習アルゴリズムは、最近傍検索を含む。
別の実施形態においては、フレームツーフレームで、各フレームの各セグメントから特徴をリアルタイムで抽出し、第2フレームは、現在のフレームを含む。別の実施形態においては、フレーム毎にフレームストリームをリアルタイムで登録する。
一実施態様においては、フレームのセグメント情報を抽出することは、フレームに対して画像分割アルゴリズムを用いることで、フレームに用いられる一つ又は複数のセグメントを抽出し、フレームに用いられる一つ又は複数のセグメントを記憶するためのセグメント地図を生成することを含む。一実施態様においては、セグメント情報は、円柱体のオブジェクト、一つ又は複数の平らなパッチオブジェクト(patch object)、又は一つ又は複数の滑らかな表面オブジェクトの一つ又は複数のセグメントを含む。
一実施態様においては、セグメント情報に基づいてフレームストリームを登録することは、セグメント情報に基づいて前のフレーム及び後続フレームの複数のセグメントを識別し、複数のセグメントに対応する複数のポイントを識別し、複数のポイントに対して反復最近接点(ICP)アルゴリズムを用いてフレーム登録用の複数のポイントの中の最も近いポイントの間の距離を最小化することを含む。
一実施態様においては、処理ロジックは、前記ストリームの中の各フレームのポイントに対して反復最近接点(ICP)アルゴリズムを用いてフレームストリームを登録する。一実施態様においては、特徴は、セグメントに用いられる線形、平らさ、散乱及び/又は全分散の情報を含む。一実施態様においては、特徴は、固有値に基づく一つ又は複数の特徴を含む。
図15は、一実施態様に係る自動運転車と共に使用される感知・計画システムの例を示すブロック図である。システム1500は、図1の自動運転車101の一部として実装することができ、感知・計画システム110、制御システム111及びセンサシステム115を含むが、これらに限定されない。図3Aのシステム300に類似し、システム1500の感知・計画システム110は、測位モジュール301、感知モジュール302、予測モジュール303、決定モジュール304、計画モジュール305、制御モジュール306及びルーティングモジュール307を含むが、これらに限定されない。また、システム1500は、RGBポイントクラウドモジュール309を含む。
モジュール301~309の中の幾つかまたは全部は、ソフトウェア、ハードウェアまたはその組み合わせとして実装することができる。例えば、これらのモジュールは、永続的記憶装置352にインストールされ、メモリ351にロードされ、一つまたは複数のプロセッサ(示さず)によって実行されても良い。これらのモジュールの中の幾つかまたは全部は、図2の車両制御システム111の幾つかまたは全部のモジュールと通信可能に接続され、または一体に集積されることができることに注意すべきである。モジュール301~309の中の幾つかは、一体に集積モジュールとして集積されても良い。
ポイントクラウド及びADVの画像装置によりキャプチャされたRGB画像を用いる方法で付加情報(例えば、色)をポイントクラウドに加える。例えば、RGB画像により、LIDARセンサによりキャプチャできない環境の状況情報及び色情報を観測することができる。よって、特にLIDARポイントクラウド画像(例えば、灌木を有する道路(例えば、LIDAR画像を用いて区別することが不可能な空間特徴))だけを用いて区別しにくい環境に対して、RGB画像及びポイントクラウドを集積することで、地図生成の精確度を高めることができる。
図16は、一実施態様に係るRGBポイントクラウドモジュールの例を示すブロック図である。RGBポイントクラウドモジュールは、RGB画像をポイントクラウド画像と集積/同期させることによって、特徴に基づくHD地図生成のためのRGB/ポイントクラウド特徴を生成することができる。図16に示すように、一実施態様においては、RGBポイントクラウドモジュール309は、例えば、受信サブモジュール1601、同期サブモジュール1603、特徴抽出サブモジュール1605、登録サブモジュール1607及び地図生成サブモジュール1607というような複数のサブモジュールを含んでも良い。受信サブモジュール1601は、ADVの一つ又は複数のLIDARセンサから複数のLIDARポイントクラウド画像又はフレームを受信することができる。受信サブモジュールは、ADVに取り付けられている画像キャプチャ装置から大量のRGB画像又はフレームを受信することもできる。同期サブモジュール1603は、これらの画像がキャプチャされた時のタイムスタンプに基づいてポイントクラウドをRGB画像と同期させることができる。
特徴抽出サブモジュール1605は、RGBポイントクラウドから特徴ベクトルを抽出することができる。特徴ベクトルは、フレームに用いられるポイントクラウド及びRGB画像の特徴を含んでも良い。登録モジュールは、RGB/ポイントクラウド特徴に基づいてポイントクラウドを登録することができる。別の実施形態においては、登録サブモジュール1607は、最適化アルゴリズムを用いてポイントクラウドを登録することができ、前記最適化アルゴリズムは、RGB情報を有し、前記RGB情報は、ポイントクラウドと共に最適化アルゴリズムのコスト関数に集積される。地図生成サブモジュール1607は、これらの登録に基づいて地図を生成することができる。RGBポイントクラウドモジュール309は、ADVの感知・計画システム110の一部とされているが、RGBポイントクラウドモジュール309は、図1のサーバ103のHD地図生成エンジン125の一部であっても良く、及び/又は、一体に集積されても良い。これらのモジュールの幾つか又は全部は、特定のアプリケーションによって、より少ないモジュールに集積されても良く、より多いモジュールに分けても良い。
画像キャプチャ装置(例えば、カメラ)によりキャプチャされた画像は、LIDARセンサのキャプチャ周波数と異なる周波数にあっても良いので、第1操作は、RGB画像を適切なポイントクラウドと同期させることである。同期は、物理的な同期を含んでも良い。物理的な同期は、次のことを含んでも良い。カメラセンサは、同期すべきLIDARセンサユニットの立体ビューと同じ又はほぼ類似するビューをキャプチャするように、ある物理的な位置に設置されてもよく、例えば、パノラマカメラセット(例えば、複数のカメラからなる)は、LIDARセンサユニットに対応するビューを有するRGB画像をキャプチャできるように、回転するLIDARセンサユニットに取り付けられてもよい。
同様に、フラッシュLIDARセンサに対しては、立体ビューカメラは、フラッシュLIDARユニットの近くに取り付けてRGB画像をキャプチャすることができ、フラッシュLIDARセンサユニットのビューに対応する立体ビューを有する。別の実施形態においては、LIDARセンサユニットとカメラ設置は、オフラインでキャリブレートされる。別の実施形態においては、同期は、タイムスタンプを用いて時間同期を行うことを含んでも良く、例えば、RGBフレームを正しいポイントクラウドとマッチする。例えば、時間情報提供装置によるタイムスタンプは、LIDARユニットが画像フレームをキャプチャする際に画像フレームと関連することができる。一実施態様においては、タイムスタンプは、ミリ秒の精確度の閾値を有する。
同様に、カメラユニットは、画像フレームをキャプチャすることができ、時間情報提供装置は、キャプチャ時間を用いて画像フレームに対してタイムスタンプを付けることができる。時間情報提供装置は、LIDARと画像キャプチャ装置とに共有されることができる。一実施態様においては、時間情報提供装置は、コンピュータシステムのCPUにより提供されたローカルリアルタイムクロック(RTC)である。別の実施形態においては、時間情報提供装置は、ネットワークを通じて外部ソース(例えば、時間サーバからの原子時計)と周期的に同期させられる。別の実施形態においては、時間情報提供装置は、GPS信号と同期させられる。
ポイントクラウドとRGBは、何れもタイムスタンプと関連するので、異なる周波数で受信するポイントクラウドとRGB画像は、アライメントすることができる。例えば、5ヘルツ~20ヘルツでポイントクラウドをキャプチャし、且つ、約60ヘルツでRGB画像をキャプチャする場合、各ポイントクラウドフレームは、そのタイムスタンプに基づいてRGB画像と関連付けることができる。当該例示においては、ポイントクラウド画像のタイムスタンプと最も近いタイムスタンプを有するRGB画像を識別することによって、各ポイントクラウドを少なくとも1つのRGB画像と関連付けることができる。関連付けられないRGB画像は、ポイントクラウドとの集積/同期に用いられることが考慮されず、捨てられても良い。一実施態様においては、RGB画像のタイムスタンプは、対応するポイントクラウド画像の時間閾値内にあれば、何れのRGB画像でも、当該ポイントクラウドと関連することができる。別の実施形態においては、RGB画像キャプチャ周波数は、対応するポイントクラウドキャプチャ周波数より低くなる場合、受信したポイントクラウドフレームの中の幾つかは、RGB画像と同期しない可能性がある。この場合、RGBポイントクラウドは、後方互換であり、即ち、特徴の抽出に影響を与えず、その特徴の抽出においてRGB情報しかを考慮しない。別の一実施態様においては、画像キャプチャ装置のRGB画像キャプチャ周波数を調整することによって、LIDARセンサユニットと類似する周波数で画像をキャプチャすることができる。
RGB画像フレームとポイントクラウドフレームとが同期すると、LIDARフレームの対応するポイントは、RGB画像からの一つ又は複数の画素と同期することになる。図17は、一実施態様に係るRGBポイントクラウド同期の例を示すブロック図である。図17に示すように、図1700は、複数の画素を有するRGB画像に重ねた複数のポイントクラウド(1701~1709)を示している。LIDAR画像と比較した場合のRGB画像の解像度(又は、画素の密度)により、空間的近接性に基づいてポイントクラウドのポイントを一つのRGB画素又はRGB画素のクラスタにマッピングすることができる。例えば、RGBの色の特徴により、ポイント1701は、画素1711(星形状)にマッピングされても良く、又は、ポイント1703は、画素1713(五点形)にマッピングされても良い。別の例示においては、ポイントクラウドとRGBの間の解像度の差異に基づき、ポイント1705を単独の画素1715にマッピングする、又は、ポイント1707を画素1717(方形状)にマッピングする又は任意の形状の画素1719にマッピングすることができる。
一実施態様においては、ポイントクラウドのポイントと関連可能なRGB画像に対して、特徴抽出サブモジュール(例えば、図16の特徴抽出サブモジュール1605)は、RGB画素から状況及び位置情報を表す特徴を抽出することができ、下層のポイントクラウドから空間分布及び幾何学特徴を描く情報を抽出することもできる。上述した内容と同様に、例えば、aのような沢山のアルゴリズムを用いて特徴を抽出することができる。空間分布の例示は、各3D特徴に関する確率分布を含む。そして、この二種類のタイプの特徴を、直列させることによって、RGBポイントクラウドに用いられる特徴ベクトルを生成することができる。状況特徴は、例示として、少なくとも色パターン及びこれらの色パターンの複雑度を含むことで、あるLIDARフレームからその次のLIDARフレームまでの、同じ状況の二つのオブジェクトは、これらのオブジェクトが関連性を有することを示す確率が高くなる(例えば、それらは、二つの異なるフレームからの同じオブジェクトである)。位置情報の例示は、少なくとも隣接点の近接情報を含む。例えば、一つの特徴(例えば、エッジ)と抽出されたもう一つの特徴(例えば、もう一つのエッジ)間は、大きな距離で間隔を空ける場合、それらは、異なると見なされる。
一実施態様においては、生成された特徴ベクトルを用いてポイントクラウドに対して特徴に基づく登録を実行することができる。例えば、RGBポイントクラウドのサブセット(例えば、特徴ベクトルのサブセット)に対して、RGBコスト成分を有するICPアルゴリズムを用いることによって、候補点マッチ用のRGBポイントクラウドを最適化し、ポイントクラウド用のHDポーズを生成する。特徴に基づく登録結果を用いてポイントクラウド地図を生成することができる。別の実施形態においては、特徴に対してRANSACアルゴリズムのような発見的アルゴリズム(図15のアルゴリズム/モデル313の一部である)を用いることによって、特徴に基づいて登録を行うことができる。ここでは、大量の外れ値特徴(例えば、それは、登録用のマッチするペアの特徴を有しない)が存在しても、RANSACアルゴリズムによれり、ポイントクラウドを登録することができる。
別の実施形態においては、RGBポイントクラウドに対してRGBポイントに基づく第2登録を実行することができる。ここでは、全てのRGBポイントクラウドに対してRGBコスト成分を有するICPアルゴリズムを用いることによって、候補点マッチ用のポイントクラウドを最適化し、HDポーズを生成する。例えば、コスト成分により、画素のRGB色情報の平均値を合併することによって、最小化をすることができる。別の実施形態においては、四つのチャンネル(R、G、B及び奥行き)情報(例えば、三つのチャンネルは、RGBコンポーネントである)を有するRGBポイントクラウドに対して最適化をすることができる。そして、RGBポイントに基づく登録結果を用いてポイントクラウド地図を生成することができる。
図18は、一実施態様に係る方法の例を示すフローチャートである。プロセス1800は、ソフトウェア、ハードウェア又はその組み合わせを含む処理ロジックにより実行することができる。例えば、プロセス1800は、RGBポイントクラウドモジュールにより実行することができ、例えば、図16のRGBポイントクラウドモジュール309により実行することができる。図18に示すように、ブロック1801においては、処理ロジックは、ADVの一つ又は複数のLIDARセンサによりキャプチャされた複数のポイントクラウド及び相応するポーズを受信する。ブロック1802においては、処理ロジックは、ADVの一つ又は複数の画像キャプチャセンサから複数のRGB画像を受信する。ブロック1803においては、処理ロジックは、RGB画像をポイントクラウドと同期させることによって、RGBポイントクラウドを得る。ブロック1804においては、処理ロジックは、RGBポイントクラウドからRGBポイントクラウドの状況情報及び空間情報を含む特徴を抽出する。ブロック1805においては、処理ロジックは、抽出された特徴に基づいてRGBポイントクラウドを登録する。ブロック1806においては、処理ロジックは、RGBポイントクラウドの登録に基づいてポイントクラウド地図を生成する。
一実施態様においては、RGB画像をポイントクラウドと同期させることによって、RGBポイントクラウドを得ることは、各ポイントクラウドに対して当該ポイントクラウドのタイムスタンプを決定し、複数のRGB画像からポイントクラウドのタイムスタンプの時間閾値内にあるタイムスタンプを有するRGB画像を特定し、一つ又は複数の画素をポイントクラウドの一つ又は複数のポイントと関連付けることによって、RGB画像とポイントクラウドを関連付けることを含む。別の実施形態においては、RGBポイントクラウドから特徴を抽出することは、RGB画像と関連するポイントクラウドの両方からの状況情報及び空間情報に基づいて特徴を抽出することを含む。
一実施態様においては、状況情報は、特徴の色彩パターン及び色彩パターンの複雑度を含み、空間情報は、これらの特徴のポイントの位置に関する情報を含む。一実施態様においては、抽出された特徴に基づいてポイントクラウドを登録することは、複数のポイントクラウドに対して最適化アルゴリズムを用いることを含む。一実施態様においては、最適化アルゴリズムは、反復最近接点(ICP)アルゴリズムを含む。
一実施態様においては、処理ロジックは、RANSACアルゴリズムを、抽出された特徴に対し用いることで、外れ値特徴に対し用いる。一実施態様においては、処理ロジックは、RGBポイントクラウドに基づいてポイントクラウドを登録することによって、ポイントに基づいて登録を行う。一実施態様においては、ポイントに基づいて登録を行うことは、登録されたポイントクラウドに対してRGBに基づくICPアルゴリズムを用いることを含み、なお、RGB情報は、ICPアルゴリズムのコスト関数に集積される。
図19は、本願の幾つかの実施態様に係る自動運転車のネットワーク配置を示すブロック図である。図19に示すように、ネットワーク配置1900は、ネットワーク102を通じて一つまたは複数のサーバ103~104に通信可能に接続する自動運転車101を含む。図1に類似するように、サーバ103~104は、任意のタイプのサーバ又はサーバクラスタであっても良く、例えば、ネットワークまたはクラウドサーバ、アプリケーションサーバ、バックエンドサーバまたはその組み合わせであっても良い。サーバ103~104は、データ解析サーバ、コンテンツサーバ、交通情報サーバ、地図・関心地点(MPOI)サーバまたは位置サーバ等であっても良い。一実施形態においては、サーバ103は、地図区画エンジン126を含む。また、アルゴリズム/モデル124は、道路標示及び縁石ポイントを抽出する複数のアルゴリズム/モデルを含んでも良い。エンジン126は、地図サーバ104により提供された地図(又は、HD地図生成エンジン125により生成する地図)において使用される際、抽出された道路標示及び縁石ポイントに基づいて当該地図を一つ又は複数の部分に分けるようにする。
自動運転期間においてADVがリアルタイムで用いるために、地図を部分ごとにADVにアップロードすることができる。エンジン126は、サーバ103の一部として示されているが、幾つかの実施形態においては、エンジン126は、サーバ104の一部であっても良い。別の実施形態においては、エンジン126は、ADV101の一部であっても良く、例えば、図3Aの感知・計画システム110の一部である。例えば、地図は、ADVによりリアルタイムで生成することができ、地図区画エンジン(例えば、エンジン126)は、地図をADV101から部分ごとにサーバ103/104にアップロードする部分に分けることができる。
図20は、一実施態様に係る地図区画エンジンの例を示すブロック図である。地図区画エンジン126は、地図の道路及び縁石を抽出し、前記抽出に基づいて地図を分けることができる。図20に示すように、一実施態様においては、地図区画エンジン126は、道路識別装置モジュール2001、道路標示抽出モジュール2003、縁石特徴抽出モジュール2005、ラベラーモジュール2007、曲線生成モジュール2009及び区画モジュール2011のような複数のモジュールを含んでも良い。
道路識別装置モジュール2001は、ポイントクラウド地図内の道路を識別することができる。道路標示抽出モジュール2003は、識別された道路から道路標示を抽出することができる。縁石特徴抽出モジュール2005は、識別された道路に対して縁石特徴を抽出することができる。ラベラーモジュール2007は、縁石特徴と関連する縁石ポイントをラベリングすることができる。曲線生成モジュール2009は、縁石ポイントを表す曲線を生成することができる。区画モジュール2011は、識別された道路標示及び縁石曲線に基づいて地図を分けることができる。
図21は、一実施態様に係る道路標示抽出の例を示すフローチャートである。フローチャート2100は、図20の道路識別装置モジュール2001及び/又は道路標示抽出モジュール2003により実行することができる。一実施態様においては、道路ポイントクラウドを識別する前に、地図グローバル静的ポイントクラウド地図(GSPCM)生成プロセスによりポイントクラウドに対して処理を行う。生成プロセスは、地図の生成のために、任意の動的オブジェクトを除去し、例えば、地図の生成のために、静的オブジェクトだけを残す。異なる時間において地理的場所を少なくとも二回キャプチャすることによって、動的オブジェクトを検出することができる。そして、画像分割アルゴリズムを用いて静的オブジェクト及び動的オブジェクトを識別することができる。二回の再訪において変化が生じた特徴を有する画像セグメントは、動的オブジェクトとして標示されるので、地図の生成のために、除去される。その後、地図生成プロセスにおいて、グローバルリアル世界地図を生成することができ、例えば、GPS装置が使用する地図と類似する地図である。一実施態様においては、地図生成は、静的フレームポイントに対して変換を用いてGSPCMを得る。その後、路面ポイント及び道路標示を抽出する前に、GSPCMをポイントクラウドの二次元(2D)グリッド(又は、ブロック)に分けることができる。例示変換は、次のように表すことができる。
ただし、T
iは、第iフレーム変換マトリックスを表し、Pt
i
jは、第iフレームの第jポイントを表し、Mは、第iフレームに用いられるポイントの数を表し、Nは、ポイントクラウドフレームの総数である。
図21に示すように、一実施態様においては、フローチャート2100は、ポイントクラウド2101を受信する。ポイントクラウド2101は、GSPCMの2Dグリッドからのポイントクラウドのブロックであっても良い。そして、プロセス2103は、ポイントクラウド2101から地面ポイントを抽出する。一実施態様においては、ポイントクラウド2101からのポイントの高さ情報に基づいて地面ポイントの抽出を実行することができる。例えば、プロセス2103は、ポイントクラウドから最小の高さを有する単一ポイントを識別することができる。その後、識別された最小の高さの所定の閾値内の高さを有するポイントを地面ポイントとして識別する。別の実施形態においては、車両の付近の地面画素の平均高さを確定する。そして、地面ポイントは、当該平均高さの所定の閾値内にあると確定される。
幾つかの実施形態においては、識別された地面ポイントに基づいて、ポイントクラウドに対し例えばRANSACのような近似アルゴリズムを用いることによって、平らなオブジェクト又は平面(例えば、路面)を識別する。RANSACは、外れ値ポイントを除去するのに役立つ。RANSACのような近似アルゴリズムを反復して実行し、毎回近似の後に外れ値ポイントを捨て、残ったポイントに対して再び近似アルゴリズムを用いて一つ又は複数の平面を可能な地平面として得ることができる。その後、法線方向がZ軸(ポイントクラウドをキャプチャするLIDARセンサユニットの垂直軸線)に平行で且つ最も大きい面積を有する単一平面を表すポイントを、路面ポイントとすることができる。
路面ポイントに基づき、一実施態様においては、プロセス2105は、路面ポイントから
を計算する。強度勾配とは、画像の強度値(例えば、画像の中の任意の二つの最も接近するポイント)の方向変化である。一実施態様においては、強度勾配を計算することは、路面ポイントに対してメディアンフィルタのようなフィルタを用いることを含む。メディアンフィルタ又はメディアン強度フィルタは、ポイントクラウド画像からノイズを除去することによって、画像の勾配をより良く強調するのに用いられるフィルタである。路面ポイントに対してメディアンフィルタを用いることによって、路面ポイントから塩強度ノイズ及び胡椒強度ノイズを除去することができる。例示的なメディアンフィルタは、以下のアルゴリズムを用いることができる。1)各ポイントに対し、当該ポイント周囲の所定サイズの隣接領域内にある隣接ポイントを識別する。前記隣接ポイントは、2D又は3D又は任意の次元のKDツリーを用いて識別することができる。2)それらの強度値に基づいて識別された隣接ポイントに対してソートする。3)そして、上述した強度値に基づくソート結果に基づいて当該ポイントに対してメディアン強度値を配分する。
一実施態様においては、強度勾配を計算することは、各ポイント及びその隣接ポイントの強度値に基づいて強度の方向を確定することを含む。それぞれのポイントに対して強度の方向又はx方向及びy方向における強度の方向微分係数を計算することができる。その後、方向微分係数に基づいて勾配の大きさ及び方向を計算することができる。別の実施形態においては、それぞれのポイントの隣接ポイントに対して最小自乗法を用いて勾配を推定することができる。そして、方向微分係数及び推定された勾配に基づいて強度勾配を推定することができる。
次に、強度勾配(例えば、大きさ)に基づき、クラスタ(cluster)アルゴリズム(例えば、k平均法クラスタリングアルゴリズム)を用いて勾配ポイントを二つのカテゴリーにクラスタリングすることができ、なお、第1クラスタは、所定の閾値より高い大きさを有する路面ポイントに対するクラスタであり、第2クラスタは、所定の閾値又は第2所定の閾値より低い大きさを有する全ての他のポイントに対するクラスタである。ここでは、第1クラスタの中のポイントは、路面ポイントである。
プロセス2107については、第1クラスタの各ポイントを、シードポイントとして、道路標示ポイントを導き出す又は抽出することができる。一実施態様により、図22は、道路標示ポイントを抽出するために用いられる検索の例を示すことができる。図21及び図22に示すように、一実施態様においては、ポイントPは、第1クラスタのシードポイントの例示であっても良い。ポイントPに基づき、プロセス2107は、Pからの距離が所定の閾値距離内であるポイントP0を特定し、P0は、Pと同じ(又は、反対)の強度勾配方向を有する。そして、プロセス2107は、PからP0までの全てのポイントを道路標示ポイントに識別し分類する。図22の例を参考するように、ポイントP1は、PとP0の間にあり、なお、当該例示において、PとP0は、反対の方向強度勾配を有する。P1は、PとP0の間にあるので、P1を識別して道路標示ポイントとしてマークする。プロセス2017は、第1クラスタの中の全てのポイントを使い果たすまで、第1クラスタの中のポイントを用いて反復して実行することができる。故に、第1クラスタのシードポイントに基づいて、道路標示ポイントを効率よく成長する。その後、プロセス2109は、道路標示ポイントを道路標示抽出結果としてキャプチャする。
図23は、一実施態様に係る道路縁石抽出の例を示すフローチャートである。フローチャート2300は、図20の縁石特徴抽出モジュール2005により実行することによって、縁石(例えば、道路の左境界及び右境界)に属するポイントクラウドからポイントを抽出することができる。図23に示すように、フローチャート2300は、ポイントクラウド2301を受信する。操作2303に対し、ポイントクラウドの各ポイントから複数の特徴を抽出することができる。これらの特徴は、高さ関連特徴、強度特徴及びマルチスケール方向差異特徴等を含んでも良い。一実施態様においては、図24は、マルチスケール方向差異特徴が抽出される例を示している。
図23~図24に示すように、以下の方法でマルチスケール方向差異特徴を抽出することができる。1)それぞれのポイント(例えば、P)に対し、小さい隣接領域の半径r、大きい隣接領域の半径Rを設定し、対応する半径の隣接領域においてポイントセットNsmall又はNs及びNlarge又はNlをそれぞれ識別する。ここでは、Nlの中のポイントは、Nsの中のポイントを含んでも良い。2)次に、二つのポイントセットに対して主成分解析(PCA)アルゴリズムのような統計学アルゴリズムを用いることによって、それぞれ二つの法線ベクトルNVsmall及びNVlarge(図示せず)を得、なお、法線ベクトルは、平面の任意のポイントであっても良く、前記平面は、相応するポイントセットにより推定を行い、法線ベクトルは、前記平面の表面と直交(例えば、垂直)する方向を有する。
3)そして、NVsmallとNVlargeにおいて角度θ(図示せず)を計算し、ただし、角度θは、ポイントPに対するマルチスケール方向差異特徴であっても良い。主成分解析(PCA)は、直交変換を用いて1組の観測結果を1組の線形無相関な変数(主成分と呼ばれる)の値に変換する統計過程である。法線ベクトルは、主成分に垂直する方向のベクトルとして計算することができる。別の実施形態においては、ポイントクラウドに対して教師あり機械学習アルゴリズムを用いることによって、特徴を抽出し、ポイントクラウド画像内から道路縁石を識別することができる。
一実施態様においては、確定された地面の高さに基づいてポイントクラウドに対して高さ相関特徴又は高さ値を確定することができる。また、高さ分布分散(例えば、Vs及びVl)及びそれぞれの対応するポイントセットNs及びNlの最も高いポイントと最も低いポイント(例えば、Ds及びDl)の間の高さの差を計算することができる。ここでは、分散は、対応するポイントセットの高さとその平均高さの平方偏差に対する期待値である。
一実施態様においては、操作2305は、単純ベイズ分類器アルゴリズムを用いてポイントクラウドから初期縁石ポイントを抽出することができる。例えば、それぞれのポイントに対し、単純ベイズ分類器アルゴリズムは、θ、Vs、Vl、Ds及びDlを含む5次元特徴セットを用いて前記ポイントを縁石ポイントカテゴリー及び非縁石ポイントカテゴリーに分類することができる。
一実施態様においては、初期縁石ポイントの隣接ポイントに基づいてそれぞれの初期縁石ポイントの方向特性又は方向特徴を計算することができる。例えば、次の方法で方向特性を計算することができる。1)全ての初期縁石ポイントを含むKDツリーを生成する。2)KDツリーを用いてそれぞれの初期縁石ポイントのk個の隣接領域ポイントを検索する。3)それぞれの初期縁石ポイントの隣接領域ポイントに対して主成分解析(PCA)を実行して隣接領域ポイントの主方向を得、なお、主方向は、前記ポイントの方向特徴である。
一実施態様においては、縁石標示の生成のために計算された方向特徴に基づき、初期縁石ポイントに対して、ポイントのクラスタリング、又はグループ分けを行う。例えば、一実施態様においては、次の操作1~5により初期縁石ポイントのクラスタリングをすることができる。1)クラスタリングの半径r′、方向角閾値at及び高さ差閾値etを初期化する。全ての縁石ポイントを「クラスタリングされていない」と初期化する。空のシードポイントキューQseed及びクラスタ容器Vcurbを初期化する。全ての初期縁石ポイントを用いてKDツリーを構成する。2)「クラスタリングされていない」の初期縁石ポイントからポイントを、成長すべき初期シードポイントPgとしてランダムに選択し、シードポイントPgのラベルをLg(例えば、縁石ポイント)として初期化し、シードポイントPgをクラスタ容器Vcurbに挿入し(又は、プッシュし)、それを「クラスタリング中」に設定する。3)隣接領域の各ポイントPnに対し、KDツリーを用いてシードポイントPgの半径r′の内にある隣接ポイントセットを取得する。
PnとPgは、両方の間の角度がatより小さくなり、両方の間の高さの差がetより小さくなる場合、Pnは、シードポイントキューQseed及びクラスタ容器Vcurbに挿入する(又は、プッシュする)ことができ、Pnのラベルは、Pgと同じラベルに設定することができ、Pnは、「クラスタリング中」と設定することができる。4)キューQseedが空ではない場合、キューの先頭から一つのポイントをポップし、当該ポイントを新たなシードポイントとし、操作2)から操作を再びスタートする。キューが空である場合、縁石ポイントクラスタ成長が終わり、操作1)から操作を再びスタートする。5)全てのポイントが「クラスタリング中」と設定されるまで、操作1~4を繰り返すことができる。その後、縁石ポイントのクラスタを、道路ブロックを分けるのに用いることができる。
一実施態様においては、各クラスタのクラスタ特徴を計算することにより、縁石ポイントのクラスタを洗練することができる。そして、洗練された縁石ポイントのクラスタは、道路ブロックを分けるために用いることができる。計算されるクラスタ特徴の例示は、(a1、a2、a3)、長さLc(例えば、クラスタにより線を形成するポイントの距離)及び/又はそれぞれのクラスタに用いられる複数のポイントNcを含んでも良い。次に、クラスタに対して設定された所定のルールを満たさないクラスタを除去してこれらのクラスタを洗練することができる。ルールの例示は、{a1>∂1&a2>∂2&a3>∂3&Lc>l&Nc>n}であっても良く、なお、∂1、∂2、∂3、l、nのそれぞれは、所定の次元閾値、所定のクラスタ最小ポイント長さ及び所定の最小数である。
一実施態様においては、主成分解析(PCA)アルゴリズムをクラスタの中のポイントに用いて特徴(a
1、a
2、a
3)を計算することによって、ポイントの共分散行列の特徴値(λ
1,λ
2,λ
3)を得ることができる。そして、次の式により、特徴(a
1、a
2、a
3)を計算することができる。
一実施態様においては、操作2307に対し、抽出された縁石ポイントに基づいて(図20の曲線生成モジュール2009によって)一つ又は複数Cubic Bezier曲線を生成して一つ又は複数の縁石線を表すことができる。その式は、次の通りである。
生成された一つ又は複数の縁石曲線に基づき、道路の縁石境界を識別することができる。識別された道路縁石境界に基づいて(図20の区画モジュール2011によって)道路を分けることができる。一実施態様においては、縁石境界及び/又は道路標示ポイントに基づいて道路を分けることができ、なお、縁石境界は、道路境界であり、例えば、車両が道路で走行する方向と平行する境界である。
図25は、一実施態様に係る地図区画の例を示している。上述したように、抽出された道路標示ポイント及び抽出された縁石ポイント/曲線に基づいて道路を分けることができる。例えば、抽出された道路標示ポイントに基づき、道路標示ポイントに対してEuclideanクラスタアルゴリズムを用いることによって、ポイントの所定の距離及び/又は境界閾値に基づいて道路標示ポイントをクラスタリングすることができる。続いて、一つ又は複数のクラスタを一つのグループに分け、それを道路標示タイプとして分類することができる。所定の1組のタイプに基づいてクラスタを分類することができる。道路標示のタイプとしては、ゼブラロード標示、横断歩道標示、道路交差点道路標示等を含んでも良い。
一実施態様においては、各クラスタの間の距離閾値に基づき、それぞれのクラスタの中のポイントにより形成された線の長さ閾値により、前記クラスタを一つのタイプに分類することができる。例えば、ゼブラロード線のタイプに対し、クラスタの境界サイズが第1所定閾値(例えば、短い破線は、一つのクラスタであっても良く、図25に示されるゼブラロード線標示の中の波線により示される)より小さいならば、クラスタの中心ポイントを確定することができる。次に、Euclideanクラスタアルゴリズムを用いて他の周囲のクラスタの中心ポイントに対してグループ分けを行うことによって、ゼブラロード線標示を跨る中心線を生成することができる。ゼブラロード線(及び/又は他の道路標示)の中心線に基づいてゼブラロード線ブロック(例えば、図25の道路ブロック2)を識別することができる。
そして、ゼブラロード線ブロックに基づいて他の道路ブロック(例えば、道路ブロック1及び道路ブロック3)を分けることができる。例えば、図25に示すように、道路ブロック2に基づいて道路ブロック2のゼブラロード線の中心線において道路ブロック1を分けることができる。道路ブロック2に基づいて道路ブロック2の他のゼブラロード線の別の中心線において道路ブロック3を分けることができる。よって、道路標示ポイント及び縁石ポイント/曲線に基づいて地図をブロック区画に分けることができる。その後、サーバは、車両に対して地図のアップグレードを行う時又は車両から地図をダウンロードする時、分けられたそれぞれのブロックごとにアップグレード/ダウンロード処理を行うことができる。
図26A及び図26Bは、一実施態様に係る方法の例を示すフローチャートである。プロセス2600及びプロセス2650は、ソフトウェア、ハードウェア又はその組み合わせを含む処理ロジックにより実行することができる。例えば、プロセス2600及びプロセス2650は、図20の地図区画エンジン126により実行することができる。図26Aに示すように、ブロック2601においては、処理ロジックは、ADVによりナビゲートされた道路を識別し、前記道路は、一つ又は複数のLIDARセンサからの一つ又は複数のポイントクラウドによりキャプチャされる。ブロック2602においては、処理ロジックは、ポイントクラウドから識別すべき道路の道路標示情報を抽出し、道路標示情報は、前記識別される道路の一つ又は複数の道路標示を記述する。ブロック2603においては、処理ロジックは、道路標示に基づいて道路を一つ又は複数の道路区画に分ける。ブロック2604においては、処理ロジックは、道路区画に基づいてポイントクラウド地図を生成し、なお、ポイントクラウド地図は、ADVの周囲の運転環境を感知して測定するために用いられる。
別の実施形態においては、ポイントクラウド地図は、静的ポイントクラウド地図を含み、なお、前記静的ポイントクラウド地図は、ポイントクラウド地図の中の一つ又は複数の動的オブジェクトを除去することにより生成され、前記動的オブジェクトは、同じ位置の異なるタイミングにおいて二つ又は複数のポイントクラウド観測結果を収集し、二つ又は複数のポイントクラウド観測結果の間の差異を検出することにより除去される。一実施態様においては、道路を識別することは、高さ閾値をポイントクラウドに用いて複数の可能な地面ポイントを抽出し、近似アルゴリズムを用いて一つ又は複数の平らなオブジェクトを道路オブジェクトとして可能な地面ポイントに近似し、LIDARセンサの垂直軸線の方向に近似している法線方向を有するとともに最も大きい表面面積を有する平らなオブジェクトを道路オブジェクトとして選択することを含む。
別の実施形態においては、処理ロジックは、道路オブジェクトに対応するポイントクラウドを路面ポイントとして識別する。別の実施形態においては、道路標示を抽出することは、フィルタを用いて路面ポイントのノイズを除去し、路面ポイントクラウドの方向勾配を確定し、方向勾配の所定の閾値に基づいて路面ポイントクラウドに対してk平均法クラスタリングアルゴリズムを用いて路面ポイントクラウドを道路標示ポイント及び他の路面ポイントに分けることを含む。別の実施形態においては、道路標示は、少なくとも横断歩道に用いられる標示を含み、横断歩道に用いられる標示に基づいて道路が分けられる。
図26Bに示すように、ブロック2651においては、処理ロジックは、ポイントクラウドから、道路縁石を表す縁石特徴を抽出する。ブロック2652においては、処理ロジックは、縁石特徴に基づいて道路の縁石境界を識別する。ブロック2653においては、処理ロジックは、ポイントクラウドにおける、縁石境界に対応するポイントをラベリングする。ブロック2654においては、処理ロジックは、道路標示及びラベリングされた道路縁石ポイントに基づいて道路を一つ又は複数の道路区画に分ける。
一実施態様においては、ポイントクラウドに用いられる縁石特徴を抽出することは、ポイントクラウドの各ポイントに対し、一つ又は複数のマルチスケール方向差異特徴を抽出することによって、道路縁石を識別することを含む。別の実施形態においては、縁石特徴に基づいて道路の縁石境界を識別することは、ポイントクラウドの各ポイントに対し、抽出された特徴に対して機械学習アルゴリズムを用いて初期縁石ポイントとするポイントを識別し、それぞれの初期縁石ポイントに対し、初期縁石ポイントの一つ又は複数の方向特徴を確定し、初期縁石ポイントに基づいてポイントクラスタを生成し、ポイントクラスタの一つ又は複数の特徴を確定し、一つ又は複数の特徴が所定の条件を満たすならば、ポイントクラスタを縁石境界の一部として識別することを含む。別の実施形態においては、処理ロジックは、それぞれのポイントクラスタを表す曲線を生成し、なお、曲線は、Cubic Bezier曲線を含み、道路標示及び生成されたCubic Bezier曲線に基づいて道路が一つ又は複数の道路区画に分けられる。
図27は、一実施態様に係る自動運転車と共に使用される感知・計画システムの例を示すブロック図である。図27に示すように、ネットワーク配置2700は、ネットワーク102を通じて一つまたは複数のサーバ103~104に通信可能に接続する自動運転車101を含む。図19に類似するように、サーバ103~104は、任意のタイプのサーバまたはサーバクラスタであっても良く、例えば、ネットワークまたはクラウドサーバ、アプリケーションサーバ、バックエンドサーバまたはその組み合わせであっても良い。サーバ103~104は、データ解析サーバ、コンテンツサーバ、交通情報サーバ、地図・関心地点(MPOI)サーバまたは位置サーバ等であっても良い。一実施態様においては、サーバ103は、ゴースト効果エンジン127を含む。ゴースト効果エンジン127は、ポイントクラスタフレームの中のゴースト画像を検出することができる。
任意の二つの連続フレームの中のオブジェクトが突然現れる又は消える場合、当該連続ポイントクラウドフレームにおいてポイントクラウドのゴースト効果(又は、ゴースト効果、陰影)を識別することができる。オブジェクトが突然現れる又は消える原因として、ポイントクラウドの部分を一つに融合する際にエラーが生じることや、快速に移動するオブジェクト又は反射オブジェクトをキャプチャする際に精度が低いことがある。例えば、連続フレームにおいて突然現れる又は突然消えるオブジェクトは、ゴーストオブジェクトと見なされるべきである。ポイントクラウド地図からこのようなゴーストオブジェクトを除去すべきである。HD地図の高い精確度を保つことは、重要であるので、ポイントクラウドの中のゴーストオブジェクトを識別することによって、HD地図生成及び/又はHD地図検証に用いられるポイントクラウドの精確度を評価することは、非常に重要である。
図28は、一実施態様に係るゴースト効果エンジンの例を示すブロック図である。ゴースト効果エンジン127は、ポイントクラウドの中の複数のフレームを受信することによって、どのフレームがゴースト画像を有するかを標示することができる。生成された地図に基づいて標示されたフレームを除去する及び/又は標示されたフレームを用いて地図検証を行うことができる。図28に示すように、一実施態様においては、エンジン127は、フレーム受信モジュール2801、占有格子地図生成モジュール2803、異常ボクセル識別装置モジュール2805、壁ボクセル識別装置モジュール2807、状態変化識別装置モジュール2809及び標示/捨てモジュール2811のような複数のモジュールを含む。これらのモジュールの中の幾つか又は全部は、より少ないモジュールに集積されてもよい。
フレーム受信モジュール2801は、地図サーバ(例えば、図27のサーバ104)からポイントクラウドの中の複数のフレームを受信することができる。占有格子地図生成モジュール2803は、三次元(3D)占有格子地図を生成することができ、ポイントクラウドフレームは、当該3D占有格子地図に投影することができる。ここでは、占有格子地図は、複数のボクセルを含み、それぞれのボクセルは、何れも占有確率を含み、例えば、ボクセルは、オブジェクトに占められる確率である。異常ボクセル識別装置モジュール2805は、3D占有格子地図の中の異常ボクセルを識別することができる。異常ボクセルとは、突然な状態転換(例えば、占有状態からフリー状態への転換又はフリー状態から占有状態への転換)を有するボクセルを指す。壁ボクセル識別装置モジュール2807は、壁オブジェクトを表す確率が所定の閾値より大きいボクセルを識別することができる。状態変化識別装置モジュール2809は、ボクセルの状態変化を識別することができる。標示/捨てモジュール2811は、異常ボクセル及び/又は対応するポイントクラウドを標示し、地図生成及び/又は地図検証を行う際に考慮するために用いられることができる。
図29は、一実施態様に係るゴースト効果検出の例を示すフローチャートである。フローチャート2900は、ゴースト効果エンジン(例えば、図28のエンジン127)により実行することができる。図29に示すように、操作2901に対し、エンジン127は、3D占有格子地図を初期化する。3D占有格子は、ボクセル又は3Dユニットを含み、なお、それぞれのボクセルは、ボクセルが占められる確率値を含む。初期化の後、初期ポイントクラウドフレームに基づいて3D占有格子地図に対して光線投射操作を用いることによって、3D占有格子地図の各ボクセルの占有状態を初期化する。ここでは、初期ポイントクラウドフレーム及び/又は後続フレームは、予め登録されたものであり、例えば、以前にSLAMのタイプのアルゴリズムを用いてアライメントしたものである。
一実施態様においては、ポイントクラウドは、立体ビューを有する場合では、車両の位置から光線を投射することができる。別の実施形態においては、ポイントクラウドは、鳥瞰図を有する場合では、天井部から光線を投射することができる。光線投射操作により、光線がLIDARセンサのビューというようなビューを通過する。光線は、幾つかのボクセルを通過することができ、幾つかのボクセルの中に終わることができる。光線は、ボクセルを通過する場合、当該ボクセルは、「フリー」の状態を有する。光線は、ボクセルにおいて終わる場合、当該ボクセルは、「占有」の状態となる。光線は、ボクセルを通過しておらず、且つ、当該ボクセルにおいて終わっていない場合、当該ボクセルは、「未知」の状態となる。「占有された」各ボクセルは、「占有」される確率を示している確率値を含んでも良い。
操作2902において、後続フレームが受信されると、エンジン127は、後続フレームに基づいて3D占有格子地図を更新する。初期フレームと同様に、後続フレームに対して光線投射操作(例えば、光線追跡アルゴリズム)を用いることによって、後続フレームを3D占有格子地図に投射することができる。その後、以下のベイズの数式を用いて後続の光線投射に基づいて各ボクセルの確率値を更新することができる。
ただし、P(n│z
t)は、時間tにおける観測結果に基づくボクセルが時間tにおける占有確率を示し、P(n│z
1:t)は、以前の全ての観測結果を考慮した上での、時間tにおける観測結果に基づくボクセルが時間tにおける占有確率を示し、P(n│z
1:t-1)は、以前の全ての観測結果を考慮した上での、ボクセルが時間t-1における占有確率を示す。
操作2903において、エンジン127は、格子地図の各ボクセルの状態変化を確定する。格子地図の各ボクセルは、以下の状態変化の中の一項を含んでも良い:
A: “フリー”→“フリー”
B: “占有”→“占有”
C: “未知”→“未知”
D: “未知”→“フリー”
E: “未知”→“占有”
F: “フリー”→“占有”
G: “占有”→“フリー”
操作2904に対し、エンジン127は、異常の状態変化を有するボクセルを識別する。例えば、異常の状態変化は、状態変化F: “フリー”→“占有”及び状態変化G: “占有”→“フリー”を含む。ボクセルの占有確率の変化が所定の閾値より大きく、例えば、占有確率の差異(例えば、増加又は減少)が所定の閾値より大きい場合、異常の状態変化と識別することができる。
また、壁タイプオブジェクトに属するボクセルを識別することができる。例えば、ポイントクラウドフレームにオブジェクト検出アルゴリズム(例えば、画像分割、エッジ検出、機械学習ニューラルネットワーク等)を用いることによって、壁ボクセル又は壁タイプオブジェクトに対応するボクセルを抽出することができる。Cartesian座標系においては、壁オブジェクトは、平らなオブジェクトを含んでも良く、当該平らなオブジェクトは、z軸に垂直する平面の法線方向又はx-y平面に平行する平面の法線方向を有する。以上は平らな壁タイプオブジェクトのみを述べたが、壁オブジェクトは任意の形状とサイズを有しても良い。識別された壁オブジェクトに基づいて、対応する壁ボクセルを識別することができる。
その後、ゴースト効果を有するボクセルを、壁ボクセルを有する異常ボクセルとして識別することができる。次に、ゴースト効果ボクセルを標示し、後続地図生成及び/又は地図検証において標示されたボクセル及び/又はフレームを除去することを考慮しても良い。例えば、一実施態様においては、フレームのゴースト効果ボクセルのカウントが所定の閾値より大きいならば、ポイントクラウド地図生成から当該フレームを除去する。
操作2905に対し、エンジン127は、処理される付加フレームが存在するか否かを判定する。存在する場合、操作2902において操作を再びスタートし、存在していなければ、操作2906において操作を完了させる。
図30は、一実施態様に係る方法の例を示すフローチャートである。プロセス3000は、ソフトウェア、ハードウェア又はその組み合わせを含む処理ロジックにより実行する。例えば、プロセス3000は、ゴースト効果エンジン(例えば、図28のエンジン127)により実行することができる。図30に示すように、ブロック3001においては、処理ロジックは、ポイントクラウドの初期フレームに基づいて占有格子地図を生成する。ブロック3002においては、処理ロジックは、ポイントクラウドの一つ又は複数の後続フレームを受信する。ブロック3003においては、各後続フレームに対し、処理ロジックは、当該後続フレームに基づいて占有格子地図を更新する。ブロック3004においては、処理ロジックは、前記更新に基づいて一つ又は複数の異常ボクセルを識別する。ブロック3005においては、処理ロジックは、異常ボクセルが壁オブジェクトに属するか否かを判定する。ブロック3006においては、異常ボクセルが壁オブジェクトに属すると判定したことに応答し、処理ロジックは、異常ボクセルを後続フレームのゴースト効果ボクセルとして標示する。
一実施態様においては、処理ロジックは、光線追跡アルゴリズムを用いて初期フレーム又は後続フレームを占有格子地図に投影する。別の実施形態においては、初期フレーム又は後続フレームを占有格子地図に投影することは、占有格子地図の各ボクセルの占有状態を決定することを含み、なお、占有状態は、フリー、占有又は未知の中の一種類である。別の一実施態様においては、更新に基づいて一つ又は複数の異常ボクセルを識別することは、占有格子地図の各ボクセルに対し、ボクセルの占有状態の変化を検出し、占有状態がフリーから占有へ変化する場合、又は、占有からフリーへ変化する場合、当該ボクセルを異常として識別することを含む。
一実施態様においては、ベイジアンアルゴリズムを用いて後続フレームに基づいて占有格子地図を更新し、なお、占有格子地図は、占有確率を示すボクセルを含む。一実施態様においては、異常ボクセルが壁オブジェクトに属するか否かを判定することは、異常ボクセルが、平らな表面を有するとともに前記平らな表面は垂直するz軸に垂直する法線を有する、という属性を有するオブジェクトに属するか否かを識別することを含む。一実施態様においては、処理ロジックは、フレームのゴースト効果ボクセルの数が閾値より大きい場合、ポイントクラウド地図から当該フレームを除去する。
なお、上記のように記載された部材の一部または全部は、ソフトウェア、ハードウェアまたはそれらの組み合せにより実現されることが可能である。例えば、そのような部材は、永続的記憶装置にインストールして記憶されるソフトウェアとして実現されることが可能であり、前記ソフトウェアがメモリにローディングされてプロセッサ(図示せず)により実行されることで、本明細書に記載のプロセスや操作を実施することができる。その代わりに、そのような部材は、専用ハードウェア(例えば、集積回路(例えば、特定用途向け集積回路(ASIC)、デジタルシグナルプロセッサ(DSP)またはフィールドプログラマブルゲートアレイ(FPGA))にプログラミングされ、又は組み込まれる、実行可能なコードとして実現されてもよく、前記実行可能なコードが、アプリケーションからの相応的なドライバおよび/またはオペレーティングシステムを介してアクセス可能である。また、そのような部材は、プロセッサまたはプロセッサコアにおける特定ハードウェアロジックとして実現されることが可能であり、ソフトウェア部材が1つまたは複数の特定命令によりアクセス可能な命令セットの一部とされる。
図31は、本願の一実施態様と共に使用されるデータ処理システムの例を示すブロック図である。例えば、システム1500は、図4のHD地図生成エンジン125、図5のHD地図生成システム500、図6のパイプライン600、図10のリアルタイム地図生成モジュール308、図15のRGBポイントクラウドモジュール309、図19の地図区画エンジン126、図27のゴースト効果エンジン127、図3Aの感知・計画システム110又は図1のサーバ103~104の中の任意の一つのような、前記の任意のプロセスまたは方法を実行する前記の任意のデータ処理システムを表すことができる。システム1500は、様々の部材を備えることが可能である。それらの部材は、集積回路(IC)、集積回路の一部、別体の電子デバイスや回路基板(例えば、コンピュータシステムのマザーボードまたは挿入カード)に適用される他のモジュールとして実現され、又は、他の方式でコンピュータシステムのラックに組み込まれる部材として実現されることが可能である。
なお、システム15900は、コンピュータシステムの多くの部材の上位図を示すためである。しかしながら、一部の実施態様では、付加部材を有してもよく、また、他の実施態様では、図示する部材と異なるレイアウトを有してもよいこと、を理解すべきである。システム1500は、デスクトップ型コンピュータ、ラップトップ型コンピュータ、タブレット型コンピュータ、サーバ、携帯電話、メディアプレイヤ、携帯情報端末(PDA)、スマートウォッチ、パーソナル通信機器、ゲーム装置、ルータやハブ機器、アクセスポイント(AP)やリピーター、セットトップボックス、またはそれらの組み合せを示すことが可能である。また、単一の機器またはシステムのみを示すが、「機器」または「システム」という用語は、1つ(または複数)の命令セットを個別または一緒に実行すことにより、本明細書で検討するいずれかの1種または複数種の方法を実行する機器またはシステムの集合のいずれを含むことを、理解されるべきである。
一実施態様では、システム1500は、バスまたはインターコネクト1510を介して接続されるプロセッサ1501、メモリ1503及び装置1505~1508を含む。プロセッサ1501は、単一のプロセッサコア、または複数のプロセッサコアの1つのプロセッサや複数のプロセッサを含むことを表すことが可能である。プロセッサ1501は1つまたは複数の汎用プロセッサ、例えば、マイクロプロセッサ、中央処理ユニット(CPU)などを表すことが可能である。より具体的には、プロセッサ1501は、複合命令セットコンピュータ(CISC)方式のマイクロプロセッサ、縮小命令セットコンピュータ(RISC)方式のマイクロプロセッサ、VLIW(Very Long Instruction Word)型マイクロプロセッサや他の命令セットを実施するプロセッサ、または命令セットの組み合せを実施するプロセッサであってもよい。プロセッサ1501は、1つまたは複数の専用プロセッサ、例えば、特定用途向け集積回路(ASIC)、セルラやベースバンドプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、ネットワークプロセッサ、グラフィックプロセッサ、通信プロセッサ、暗号化プロセッサ、コプロセッサ、組込み用途向けプロセッサ、または命令を処理可能な他のロジックのいずれであってもよい。
プロセッサ1501(低パワーマルチコアプロセッサジャケットインタフェース、例えば超低電圧プロセッサであってもよい)は、前記システムの種々の部材と通信するためのメイン処理ユニット及び中央ハブとして使用されることが可能である。そのようなプロセッサは、オンチップシステム(SoC)として実現されることが可能である。プロセッサ1501は、本明細書で検討する操作及びステップを実行するための命令を実施するように配置される。システム1500は、選択可能なグラフィックサブシステム1504と通信可能なグラフィックインタフェースを更に含み、グラフィックサブシステム1504が、表示制御部、グラフィックプロセッサおよび/または表示装置を備えることが可能である。
プロセッサ1501は、メモリ1503と通信可能であり、一実施態様では、メモリ1603が所定量のシステム用の記憶を提供するように、複数のメモリ装置により実現されることが可能である。メモリ1503は、1つまたは複数の揮発性記憶(またはメモリ)装置、例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)または他のタイプの記憶装置を含むことが可能である。メモリ1503は、プロセッサ1501または他の装置により実行される命令列を含む情報を記憶可能である。例えば、種々のオペレーティングシステム、デバイスドライバ、ファームウェア(例えば、入出力基本システムまたはBIOS)および/またはアプリケーションの実行コードおよび/またはデータは、到メモリ1503にローディングされてプロセッサ1501により実行されることが可能である。オペレーティングシステムは、いずれのタイプのオペレーティングシステム、例えば、ロボットオペレーティングシステム(ROS)、Microsoft(登録商標)社のWindows(登録商標)オペレーティングシステム、アップル社のMAC OS(登録商標)/IOS(登録商標)、Google(登録商標)社のAndroid(登録商標)、LINUX(登録商標)、UNIX(登録商標)、または他のリアルタイムや組み込みオペレーティングシステムであってもよい。
システム1500は、IO装置、例えばネットワークインタフェース装置1505、選択可能な入力装置1506及び他の選択可能なIO装置1507を含む装置1505~1508をさらに備えることが可能である。ネットワークインタフェース装置1505は、無線送受信器および/またはネットワークインタフェースカード(NIC)を含むことが可能である。前記無線送受信器は、WiFi送受信器、赤外線送受信器、ブルートゥース送受信器、WiMax送受信器、無線携帯電話送受信器、衛星送受信器(例えば、全地球測位システム(GPS)送受信器)や他の無線周波数(RF)送受信器、またはそれらの組み合せであってもよい。NICは、イーサネット(登録商標)カードであってもよい。
入力装置1506は、マウス、タッチパネル、タッチスクリーン(表示装置1504に集積されることが可能である)、ポインティングデバイス(例えば、スタイラスペン)および/またはキーボード(例えば、物理的なキーボードまたはタッチスクリーンの一部として表示される仮想的なキーボード)を含むことが可能である。例えば、入力装置1506は、タッチスクリーンに接続されるタッチスクリーンコントローラを含むことが可能である。タッチスクリーン及びタッチスクリーンコントローラは、例えば複数種のタッチセンシティブ技術(容量、電気抵抗、赤外線及び弾性表面波技術を含むが、これに限定されない)のいずれか1種、及び他の近接センサアレイまたはタッチスクリーンに接触する1つまたは複数のポイントを特定するための他の素子により、その接触、及び移動や間欠を検出する。
IO装置1507は、オーディオ装置を含むことが可能である。オーディオ装置は、音声を支持する機能、例えば音声認識、音声再生、ディジタル記録および/または電話機能を促すために、スピーカおよび/またはマイクフォンを含むことが可能である。他のIO装置1507として、ユニバーサルシリアルバス(USB)ポート、パラレルポート、シリアルポート、プリンタ、ネットワークインタフェース、バスブリッジ(例えば、PCI-PCIブリッジ)、センサ(例えば、加速度計などのモーションセンサ、ジャイロ、磁力計、光センサ、コンパス、接近センサなど)またはそれらの組み合せを含むことが可能である。装置1507は、カメラ機能(例えば、写真及び動画セグメントの記録)を促すための光学センサ、例えば電荷結合素子(CCD)または相補型金属酸化物半導体(CMOS)光学センサを備える撮像処理サブシステム(例えば、カメラ)をさらに含むことが可能である。システム1500の具体的な構成または設計に応じて、センサ・ハブ(図示せず)を介して、いくつかのセンサをインターコネクト1510に接続することができる一方、キーボードや熱センサなどの他のデバイスを、組み込みコントローラ(図示せず)によって制御することができる。
例えばデータ、アプリケーション、1つまたは複数のオペレーティングシステムなどの情報の永続的な記憶を提供するために、大容量記憶装置(図示せず)がプロセッサ1501に接続されてもよい。種々の実施態様では、薄型化且つ軽量化のシステム設計を実現するとともにシステムの応答性を改良するために、そのような大容量記憶装置は、固体装置(SSD)により実現されることが可能である。しかしながら、他の実施態様では、大容量記憶装置は、主にハードディスクドライブ(HDD)により実現されてもよく、そのうち少量のSSD記憶装置は、SSD用キャッシュとされることにより、停電期間でコンテキストの状態及び他の情報の非一時的記憶を実現して、システム活動が再起動する際に急速通電を実現することができる。また、フラッシュメモリは、例えばシリアルペリフェラルインタフェース(SPI)を介してプロセッサ1501に接続されることが可能である。そのようなフラッシュメモリは、前記システムのBIOS及び他のファームウェアを含むシステムソフトウェアの非一時的記憶を提供することが可能である。
記憶装置1508は、本明細書に記載のいずれか1種または複数種の方法や機能を実現する1つまたは複数の命令セットやソフトウェア(例えば、モジュール、ユニットおよび/またはロジック1528)が記憶されているコンピュータアクセス可能な記憶媒体1509(機械可読記憶媒体またはコンピュータ可読な媒体ともいう)を含むことが可能である。処理モジュール/ユニット/ロジック1528は、上記部材のいずれか1つ、例えば計画モジュール305、制御モジュール306を表すことが可能である。また、処理モジュール/ユニット/ロジック1628は、データ処理システム1500、メモリ1503及びプロセッサ1501により実行されている期間で、全部または少なくとも一部が機械アクセス可能な記憶媒体を構成するメモリ1503および/またはプロセッサ1501に貯留されることが可能である。更に、処理モジュール/ユニット/ロジック1528は、ネットワークによりネットワークインタフェース装置1505を介して伝送または受信を行うことが可能である。
コンピュータ可読記憶媒体1509は、上述した一部のソフトウェア機能を永続的に記憶することが可能である。コンピュータ可読記憶媒体1509は、例示的な実施態様では単一の媒体として示されるが、「コンピュータ可読記憶媒体」という用語は、前記1つまたは複数の命令セットを記憶する単一の媒体または複数の媒体(例えば、集中または分散データベースおよび/または関連するキャッシュメモリ及びサーバ)を含む、と考えられる。「コンピュータ可読記憶媒体」という用語は、機械により実行されるとともに、前記機械が本発明のいずれの1種または複数種の方法を実行させる命令セットを記憶またはコーディング可能ないずれの媒体を含む、と考えられる。よって、「コンピュータ可読記憶媒体」という用語は、固体メモリ、光学媒体及び磁気媒体、または他の非一時的機械可読媒体のいずれを含むが、これに限定されない、と考えられる。
本明細書に記載の処理モジュール/ユニット/ロジック1528、部材及び他の特徴は、個別ハードウェア部材とされ、またはハードウェア部材(例えば、ASICS、FPGA、DSPまたは同様な装置)の機能に集積されるように、実現可能である。また、処理モジュール/ユニット/ロジック1528は、ハードウェア装置におけるファームウェアまたは機能回路として実現されることが可能である。また、処理モジュール/ユニット/ロジック1528は、ハードウェア装置とソフトウェア部材とのいずれの組み合せにより実現されることが可能である。
なお、システム1500は、データ処理システムの種々の部材を備えるように示されるが、部材を相互に接続する特定の構成または態様を示すためではない。よって、そのような詳細は、本発明の実施態様と密接な関係がない。さらに、より少ない部材またはより多い部材を有するネットワークコンピュータ、ハンディコンピュータ、携帯電話、サーバおよび/または他のデータ処理システムも、本発明の実施態様とともに使用可能であることを、認識すべきである。
詳細に記載した前記内容の一部は、既にコンピュータメモリで行われるデータビットの演算のアルゴリズム及び符号表示に応じて表現された。それらのアルゴリズムの記載及び表示は、データ処理分野での技術者が使用する方式であり、技術者らの実質的な動作を効率よく本分野での他の技術者に伝達するためである。本明細書では、アルゴリズムは、通常に所望の結果を達成する自律操作シーケンスとして考えられる。それらの操作とは、物理量を物理的に操作する必要がある操作である。
ところで、そられの用語及びその類似する用語のすべては、適当な物理量に関連するためであり、且つ単にそれらの物理量を便利に表記することに適用されることはいうまでもない。以上の検討において他の態様で明確に限定しない限り、明細書全体では、用語(例えば、添付した特許請求の範囲に記載の用語)により検討されることは、コンピュータシステムのレジスタ及びメモリでの物理(電子)量として表示されるデータを操作して、前記データをコンピュータシステムメモリやレジスタ、または他の情報記憶装置、伝送装置や表示装置での同様に物理量として表示される他のデータを変換するコンピュータシステムや類似する電子計算装置の動作及び処理である。
本発明の実施態様は、本明細書における操作を実行するためのデバイスにさらに関する。そのようなコンピュータプログラムは、非一時的コンピュータ可読媒体に記憶されている。機械可読媒体は、機械(例えば、コンピュータ)可読態様で情報を記憶するための機構全体を含む。例えば、機械可読(例えば、コンピュータ可読)媒体は、機械(例えば、コンピュータ)可読記憶媒体(例えば、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置)を含む。
前記図面に記載のプロセスや方法は、ハードウェア(例えば、回路、専用ロジックなど)、ソフトウェア(例えば、非一時的コンピュータ可読媒体で実現される)またはそれらの組み合せを含む処理ロジックにより実行されることが可能である。前記プロセスや方法は、上記の内容において一部の順序操作に基づいて記載されるが、前記操作の一部が異なる順序で実行されてもよいことを、理解すべきである。また、一部の操作は、順序に実行されることではなく、並列に実行されてもよい。
本発明の実施態様は、いずれの特定のプログラミング言語を参照して記載されることではない。複数種のプログラミング言語を使用して本明細書に記載の本発明の実施態様の教示を実施可能であることを、理解すべきである。
以上の明細書では、本発明の具体的な実施態様を参照して本発明の実施態様を記載した。添付した特許請求の範囲に記載の本発明の更なる広い要旨及び範囲を逸脱しない限り、本開示を様々な形態で変形可能であることが、明らかである。したがって、明細書および図面は、制限的な意味ではなく、例示的な意味で理解されるべきである。