(58)【調査した分野】(Int.Cl.,DB名)
前記自動運転車とオブジェクトとの衝突コストを計算することは、前記オブジェクトの種類に基づいてオブジェクト衝突コストを特定することを含む請求項1に記載の方法。
前記オブジェクト/コストマッピング表は、複数のマッピングエントリを含み、各マッピングエントリは、オブジェクトの特定の種類を、予め定められた衝突コストにマッピングする請求項3に記載の方法。
前記自動運転車とオブジェクトとの衝突コストを計算することは、前記自動運転車の第一速度と前記オブジェクトの第二速度の差に基づいて速度衝突コストを計算することを更に含む請求項2に記載の方法。
前記自動運転車とオブジェクトとの衝突コストを計算することは、前記自動運転車の第一の方向ベクトルと前記オブジェクトの第二の方向ベクトルに基づいて方向衝突コストを計算することを更に含むことを特徴とする請求項2に記載の方法。
前記自動運転車とオブジェクトとの衝突コストを計算することは、前記オブジェクトの種類に基づいてオブジェクト衝突コストを特定することを含む請求項8に記載の機器可読媒体。
前記オブジェクト/コストマッピング表は、複数のマッピングエントリを含み、各マッピングエントリは、オブジェクトの特定の種類を、予め定められた衝突コストにマッピングする請求項10に記載の機器可読媒体。
前記自動運転車とオブジェクトとの衝突コストを計算することは、前記自動運転車の第一速度と前記オブジェクトの第二速度との間の差に基づいて速度衝突コストを計算することを更に含む請求項9に記載の機器可読媒体。
前記自動運転車とオブジェクトとの衝突コストを計算することは、前記自動運転車の第一の方向ベクトルと前記オブジェクトの第二の方向ベクトルに基づいて方向衝突コストを計算することを更に含む請求項9に記載の機器可読媒体。
前記自動運転車とオブジェクトとの衝突コストを計算することは、前記オブジェクトの種類に基づいてオブジェクト衝突コストを特定することを含む請求項15に記載のシステム。
前記オブジェクト/コストマッピング表は、複数のマッピングエントリを含み、各マッピングエントリは、オブジェクトの特定の種類を、予め定められた衝突コストにマッピングする請求項17に記載のシステム。
前記自動運転車とオブジェクトとの衝突コストを計算することは、前記自動運転車の第一速度と前記オブジェクトの第二速度との間の差に基づいて速度衝突コストを計算することを更に含む請求項16に記載のシステム。
前記自動運転車とオブジェクトとの衝突コストを計算することは、前記自動運転車の第一の方向ベクトルと前記オブジェクトの第二の方向ベクトルに基づいて方向衝突コストを計算することを更に含む請求項16に記載のシステム。
【発明を実施するための形態】
【0012】
図1は、本願の一つの実施形態による自動運転車のネットワーク配置を示すブロック図である。
図1を参照すると、ネットワーク配置100は、ネットワーク102を介して一つまたは複数のサーバー103〜104に通信可能に接続する自動運転車101を含む。一台の自動運転車しか示されていないが、複数台の自動運転車がネットワーク102を介して互いに接続され、及び/またはサーバー103〜104に接続されても良い。ネットワーク102は、任意のタイプのネットワークであっても良く、例えば、有線または無線のローカルエリアネットワーク(LAN)、インターネットのようなワイドエリアネットワーク(WAN)、移動体通信ネットワーク、衛星ネットワークまたはその組み合わせであっても良い。サーバー103〜104は、任意のタイプのサーバーまたはサーバークラスタであっても良く、例えば、ネットワークまたはクラウドサーバー、アプリケーションサーバー、バックエンドサーバーまたはその組み合わせであっても良い。サーバー103〜104は、データ分析サーバー、コンテンツサーバー、交通情報サーバー、地図と関心地点(MPOI)サーバーまたは位置サーバー等であっても良い。
【0013】
自動運転車は、自動運転モードとして配置できる車両を指す。前記自動運転モードにおいて、運転手からの入力が非常に少ない状況、または運転手からの入力がない状況において車両が環境を通過するようにナビゲートされる。このような自動運転車は、車両の運行環境と関係のある情報を計測する一つまたは複数のセンサーを有するように配置されるセンサーシステムを含んでも良い。前記車両と関連するコントローラは、計測した情報を使用して車両が前記環境を通過するようにナビゲートを行う。自動運転車101は、手動モード、全自動運転モードまたは部分自動運転モードで走行することができる。
【0014】
一つの実施形態において、自動運転車101は、感知と計画システム110と、車両制御システム111と、無線通信システム112と、ユーザーインターフェースシステム113と、センサーシステム115とを含むが、これらに限定されない。自動運転車101は、さらに普通の車両に含まれる通常の部材、例えば、エンジン、ホイール、ステアリングホイール、トランスミッション等を含むことができ、前記部材は複数の種類の通信信号及び/または命令を使って車両制御システム111及び/または感知と計画システム110によってコントロールされることができる。当該複数の種類の通信信号及び/または命令は、例えば、加速信号または命令、減速信号または命令、ステアリング信号または命令、ブレーキ信号または命令等である。
【0015】
部材110〜115は、インターコネクト、バス、ネットワークまたはその組み合わせを通じて互いに通信可能に接続することができる。部材110〜115は、コントローラエリアネットワーク(CAN)バスを通じて互いに通信可能に接続することができる。CANバスは、ホストコンピュータがない応用においてマイクロコントローラーと装置が互いに通信できるように設計された車両バス規格である。CANバスは、最初は自動車内部の多重化電気配線用に設計されたメッセージベースのプロトコルであるが、多数のその他の環境においても使用される。
【0016】
図2に示すように、一つの実施形態において、センサーシステム115は、一つまたは複数のカメラ211と、グローバル・ポジショニング・システム(GPS)ユニット212と、慣性計測装置(IMU)213と、レーダーユニット214と、光検出と測距(LIDAR)ユニット215とを含むが、これらに限定されない。GPSシステムは、自動運転車の位置に関する情報を提供するように操作可能なトランシーバを含んでも良い。IMUユニット213は、慣性加速度に基づいて自動運転車の位置と向く方向の変化をセンシングすることができる。レーダーユニット214は、無線信号を使って自動運転車のローカル環境内のオブジェクトをセンシングするシステムを表すことができる。幾つかの実施形態において、オブジェクトをセンシングする以外に、レーダーユニット214は、さらにオブジェクトの速度及び/または進行方向をセンシングすることができる。LIDARユニット215は、レーザーを使って自動運転車を取り巻く環境の中のオブジェクトをセンシングすることができる。その他のシステム部材以外に、LIDARユニット215は、一つまたは複数のレーザー光源、レーザースキャンナー及び一つまたは複数の検出器を更に含むことができる。カメラ211は、自動運転車の周囲環境の画像を採集するために使う一つまたは複数の装置を含むことができる。カメラ211は、スチールカメラ及び/またはビデオカメラであっても良い。カメラは、機械的に移動できるものであっても良く、例えば、カメラを回転及び/または傾斜する台に取り付けられても良い。
【0017】
センサーシステム115は、ソナーセンサー、赤外センサー、ステアリングセンサー、スロットルセンサー、ブレーキセンサー、及びオーディオセンサー(例えば、マイクロホン)のようなその他のセンサーを更に含むことができる。オーディオセンサーは、自動運転車の周囲環境から音声を採集するように配置されても良い。ステアリングセンサーは、ステアリングホイール、車両のホイールまたはその組み合わせのステアリング角度をセンシングするように配置されても良い。スロットルセンサーとブレーキセンサーは、それぞれ車両のスロットル位置とブレーキ位置をセンシングする。幾つかの状況において、スロットルセンサーとブレーキセンサーは、集積式スロットル/ブレーキセンサーとして集積されても良い。
【0018】
一つの実施形態において、車両制御システム111は、ステアリングユニット201と、スロットルユニット202(加速ユニットとも呼ばれる)と、ブレーキユニット203とを含むが、これらに限定されない。ステアリングユニット201は、車両の方向または進行方法を調整するために使用される。スロットルユニット202は、モーターまたはエンジンの速度をコントロールするために使用され、モーターまたはエンジンの速度により、車両の速度と加速度を更にコントロールする。ブレーキユニット203は、摩擦を提供することによって車両のホイールまたはタイヤを減速させ、ひいては車両を減速させる。
図2に示す部材は、ハードウェア、ソフトウェアまたはその組み合わせとして実装できることに注意すべきである。
【0019】
図1の参照に戻り、無線通信システム112は、自動運転車101が例えば装置、センサー、その他の車両等の外部システムと通信できるように許可する。例えば、無線通信システム112は、一つまたは複数の装置と直接的に無線通信することができ、または通信ネットワークを通じて無線通信することができ、例えば、ネットワーク102を通じてサーバー103〜104と通信することができる。無線通信システム112は、任意の移動体通信ネットワークまたは無線ローカルエリアネットワーク(WLAN)を使用することができ、例えば、WIFIを使って他の部材またはシステムと通信することができる。無線通信システム112は、例えば赤外線リンク、ブルートゥース(登録商標)等を使って装置(例えば、乗客のモバイル装置、ディスプレイ装置、車両101の内部のスピーカー)と直接通信することができる。ユーザーインターフェースシステム113は、車両101の内部で実装された周辺装置の部分であっても良く、例えば、キーボード、タッチパネルディスプレイ装置、マイクロホンとスピーカー等である。
【0020】
特に自動運転モードで操作するとき、自動運転車101の機能の幾つかまたは全部は、感知と計画システムによってコントロールまたは管理することができる。感知と計画システム110は、センサーシステム115、車両制御システム111、無線通信システム112及び/またはユーザーインターフェースシステム113から情報を受信し、受信した情報を処理し、起点から目的地点までのルートまたは経路を計画し、そして計画と制御情報に基づいて車両101を運転するように、必要なハードウェア(例えば、プロセッサー、メモリ、記憶装置)とソフトウェア(例えば、オペレーティングシステム、計画とルーティングプログラム)を含む。その代わりに、感知と計画システム110は、車両制御システム111と一体に集積されても良い。
【0021】
例えば、乗客としてのユーザーは、例えばユーザーインターフェースを通じて行程のスタート位置と目的地を指定することができる。感知と計画システム110は、行程に関するデータを取得する。例えば、感知と計画システム110は、MPOIサーバーから位置とルートの情報を取得することができる。MPOIサーバーは、サーバー103〜104の一部分であってもよい。位置サーバーは位置サービスを提供し、MPOIサーバーは地図サービスと幾つかの位置のPOIを提供する。その代わりに、この種類の位置とMPOI情報は、感知と計画システム110の永続的記憶装置にローカル的にキャッシュされても良い。
【0022】
自動運転車101がルートに沿って移動する時、感知と計画システム110は、交通情報システムまたはサーバー(TIS)からリアルタイムの交通情報を更に取得することができる。サーバー103〜104は、サードパーティーによって操作されてもよいことに注意すべきである。その代わりに、サーバー103〜104の機能は、感知と計画システム110と一体に集積されても良い。安全でかつ効率よく指定の目的地に到達するように、リアルタイムの交通情報、MPOI情報、位置情報及びセンサーシステム115によって検出またはセンシングされたリアルタイムのローカル環境データ(例えば、障害物、オブジェクト、付近車両)に基づいて、感知と計画システム110は、最適なルートを計画し、そして計画されたルートに基づき、例えば車両制御システム111を通じて車両101を運転する。
【0023】
サーバー103は、各種の顧客のためにデータ分析サービスを実行するデータ分析システムであっても良い。一つの実施形態において、データ分析システム103は、データ収集器121と機械学習エンジン122を含む。データ収集器121は、各種の車両(自動運転車または人間の運転手によって運転される通常の車両)から運転統計データ123を収集する。運転統計データ123は、出された運転命令(例えば、スロットル、ブレーキ、ステアリング命令)及び車両のセンサーが異なる時刻で捕捉した車両の反応(例えば、速度、加速度、減速度、方向)を表す情報を含む。運転統計データ123は、異なる時刻における運転環境を表す情報、例えば、ルート(スタート位置と目的地位置を含む)、MPOI、道路状況、気候状況等を更に含んでもよい。
【0024】
運転統計データ123に基づき、各種の目的のために、機械学習エンジン122は、ルールセット、アルゴリズム及び/または予測モデル124を生成及び/または訓練する。一つの実施形態において、アルゴリズム124は、オブジェクト衝突コスト、速度衝突コスト、方向衝突コスト及び/又は衝突位置の衝突コストを計算するために、アルゴリズム、コスト関数及び/又はコストマッピング表を含み、さらに、オブジェクト衝突コスト、速度衝突コスト、方向衝突コスト及び/又は衝突位置の衝突コストのうちの一つ又は複数に基づいて総衝突コストを特定するアルゴリズムを含んでも良い。アルゴリズム又はコスト関数124のうちの幾つかをADVにアップロードしてリアルタイムで用いることによって、このような状況での衝突損害を最小化させる経路を計算してもよい。
【0025】
図3Aと
図3Bは、一つの実施形態による自動運転車と一緒に使用される感知と計画システムの例示を示すブロック図である。システム300は、
図1の自動運転車101の一部分として実装することができ、感知と計画システム110と、車両制御システム111と、センサーシステム115とを含むが、これらに限定されない。
図3Aと
図3Bに示すように、感知と計画システム110は、測位モジュール301と、感知モジュール302と、予測モジュール303と、決定モジュール304と、計画モジュール305と、制御モジュール306と、ルーティングモジュール307と、衝突コスト計算機308とを含むが、これらに限定されない。
【0026】
モジュール301〜308の中の幾つかまたは全部は、ソフトウェア、ハードウェアまたはその組み合わせとして実装することができる。例えば、これらのモジュールは、永続的記憶装置352にインストールされ、メモリ351にロードされ、一つまたは複数のプロセッサー(示さず)によって実行されても良い。これらのモジュールの中の幾つかまたは全部は、
図2の車両制御システム111の幾つかまたは全部のモジュールと通信可能的に接続され、または一体に集積されることができることに注意すべきである。モジュール301〜308の中の幾つかは、一体に集積モジュールとして集積されても良い。例えば、衝突コスト計算機308は、計画モジュール305及び/又は制御モジュール306の一部として実装することができる。
【0027】
測位モジュール301は、自動運転車300の現在位置(例えば、GPSユニット212を使って)を特定し、ユーザーの行程またはルートに関する任意のデータを管理する。測位モジュール301(地図とルートモジュールとも呼ばれる)は、ユーザーの行程またはルートに関する任意のデータを管理する。ユーザーは、例えばユーザーインターフェースを通じてログインし、行程のスタート位置と目的地を指定することができる。測位モジュール301は、行程に関するデータを取得するために、地図とルート情報311のような、自動運転車300のその他の部材と通信する。例えば、測位モジュール301は、位置サーバーと、地図とPOI(MPOI)サーバーから位置とルートの情報を取得できる。位置サーバーは位置サービスを提供し、MPOIサーバーは地図サービスと幾つかの位置のPOIを提供する。それらは、地図とルート情報311の一部分としてキャッシュできる。自動運転車300がルートに沿って移動する時、測位モジュール301は、交通情報システムまたはサーバーからリアルタイムの交通情報を取得することができる。
【0028】
センサーシステム115から提供されたセンサーデータと測位モジュール301から取得した定位情報に基づき、感知モジュール302は、周囲環境に対する感知を特定する。感知情報は、普通の運転手が運転している車両の周囲から感知する情報を表すことができる。感知は、オブジェクトの形で、例えば車道配置(例えば、直線車道または曲がる車道)、交通信号、もう一つの車両の相対位置、歩行者、建築物、横断歩道またはその他の交通関連標識(例えば、停止標識、譲れ標識)等を含むことができる。
【0029】
感知モジュール302は、一つまたは複数のカメラから採集した画像を処理分析し、自動運転車の環境の中のオブジェクト及び/または特徴を識別するように、コンピュータビジョンシステムまたはコンピュータビジョンシステムの機能を含むことができる。前記オブジェクトは、交通信号、道路の境界、他の車両、歩行者及び/または障害物等を含むことができる。コンピュータビジョンシステムは、オブジェクト識別アルゴリズム、ビデオトラッキング及びその他のコンピュータビジョン技術を使うことができる。幾つかの実施形態においては、コンピュータビジョンシステムは環境地図を描き、オブジェクトを追跡し、オブジェクトの速度を見積もることができる。感知モジュール302は、さらに、例えばレーダー及び/またはLIDAR等のようなその他のセンサーから提供されたその他のセンターデータに基づき、オブジェクトを検出することができる。
【0030】
各々のオブジェクトに対して、予測モジュール303は、オブジェクトがこの状況においてどう振舞うかを予測する。予測は、地図/ルート情報311と交通ルール312を考慮した上、運転環境をその時刻で感知した感知データに基づいて実行される。例えば、オブジェクトは反対方向の車両であり、かつ現在の運転環境は交差点を含むなら、予測モジュール303は、車両が直進するか、または曲がるかを予測する。感知データは、交差点に交通信号がないと表しているなら、予測モジュール303は、車両は交差点に進入する前に完全停車する必要があるかもしれないと予測する。感知データは、車両が現在左折専用車線または右折専用車線にあると表しているなら、予測モジュール303は、車両が左折または右折する可能性がより高いと予測する。
【0031】
各々のオブジェクトに対して、決定モジュール304は、オブジェクトをどう処置するかの決定を下す。例えば、特定のオブジェクト(例えば、交差するルートの中の別の車両)及びオブジェクトを記述するメタデータ(例えば、速度、方向、操舵角)に対して、決定モジュール304は、如何にして前記オブジェクトと遭遇するか(例えば、追い越し、譲り、停止、通過)を決定する。決定モジュール304は、例えば交通ルールまたは運転ルール312のようなルール集に従ってこれらの決定を下すことができる。前記ルール集は、永続的記憶装置に記憶されても良い。
【0032】
ルーティングモジュール307は、起点から目的地までの一つまたは複数のルートまたは経路を与えるように配置される。スタート位置から目的地の位置までの所与の行程(例えば、ユーザーから受け取った)に対して、ルーティングモジュール307は、ルートと地図情報311を取得し、スタート位置から目的地の位置に到達するまでの全ての可能なルートまたは経路を特定する。ルーティングモジュール307は、地形図の形式で、その特定したスタート位置から目的地の位置に到達するまでの各ルートに対して、基準線を生成することができる。基準線とは、他の車両、障害物または交通状況という他のものからの如何なる干渉も受けない理想的なルートまたは経路を指す。すなわち、道路上に、他の車両、歩行者または障害物がない場合、ADVは、精確にまたはぴったりと基準線に従うべきである。そして、地形図は、決定モジュール304及び/または計画モジュール305に提供される。他のモジュールによって提供された他のデータ(例えば、測位モジュール301からの交通状況、感知モジュール302によって感知された運転環境、及び予測モジュール303によって予測された交通状況)に基づき、決定モジュール304及び/または計画モジュール305は、全ての可能なルートを検査して、最適なルートの中から一つのルートを選択して修正する。ADVをコントロールするための実際のルートまたは経路は、ルーティングモジュール307によって提供された基準線と接近しても良く、異なってもい。それは、その時刻における特定の運転環境に依存する。
【0033】
感知されたオブジェクトの中の各々に対する決定に基づき、計画モジュール305は、ルーティングモジュール307の提供した基準線をベースに、自動運転車のためにルートまたは経路及び運転パラメータ(例えば、距離、速度及び/または操舵角)を計画する。言い換えれば、所与のオブジェクトに対して、決定モジュール304は、当該オブジェクトに対して何をするかを決定し、計画モジュール305は、どのようにそれをするかを決定する。例えば、所与のオブジェクトに対して、決定モジュール304は前記オブジェクトを通過すると決定することが可能であり、計画モジュール305は前記オブジェクトの左側から通過するか、または右側から通過するかを決定することが可能である。車両300が次の移動サイクル(例えば、次のルート/経路区間)でどのように移動するかに関する情報を含む計画と制御データは、計画モジュール305によって生成される。例えば、計画と制御データは、車両300が時速30マイル(mph)の速度で10メートルだけ移動してから、25mphの速度で右側車線に変更すると指示することができる。
【0034】
計画と制御データに基づき、制御モジュール306は、計画と制御データによって限定されたルートまたは経路に従って、適切な命令または信号を車両制御システム111に送信することにより、自動運転車を制御と運転する。経路またはルートに沿って異なる時刻において適切な車両設置または運転パラメータ(例えば、スロットル、ブレーキと操舵命令)を使用し、車両をルートまたは経路の第1の地点から第2の地点まで運転できるように、前記計画と制御データは、十分の情報を含む。
【0035】
一つの実施形態において、計画段階は、(命令周期とも呼ばれる)多数の計画周期で(例えば、100ミリ秒(ms)の時間間隔で)実行される。計画周期または命令周期の各々に対して、計画データと制御データに基づいて一つまたは複数の制御命令を発行する。即ち、計画モジュール305は、100ms毎に、次のルート区間または経路区間を、例えば、オブジェクト位置及びADVがオブジェクト位置に到着するまでの時間を含んで、計画する。その代わりに、計画モジュール305は、具体的な速度、方向及び/または操舵角等を特定できる。一つの実施形態において、計画モジュール305は、次の所定時間間隔(例えば、5秒)のためにルート区間または経路区間を計画する。各計画周期に対して、計画モジュール305は、前の周期で計画したオブジェクト位置に基づき、現在の周期(例えば、次の5秒)に使用されるオブジェクト位置を計画する。そして、制御モジュール306は、現在の周期の計画データと制御データに基づき、一つまたは複数の制御命令(例えば、スロットル命令、ブレーキ命令、操舵制御命令)を生成する。
【0036】
決定モジュール304と計画モジュール305は、集積モジュールとして集積されてもよいことに注意すべきである。自動運転車の運転経路を決定するために、決定モジュール304/計画モジュール305は、ナビゲーションシステムまたはナビゲーションシステムの機能を含んでもよい。例えば、自動運転車が感知した障害物を大体避けながら最終目的地に到達する車道に基づく経路に沿って移動するように、ナビゲーションシステムは、一連の速度と進行方向を特定することができる。目的地は、ユーザーインターフェースシステム113を経由して行われたユーザーの入力によって設定することができる。ナビゲーションシステムは、自動運転車が運行していると同時に、動的に運転経路を更新できる。自動運転車の運転経路を決定するために、ナビゲーションシステムは、GPSシステムからのデータと、一つまたは複数の地図のデータとを合併してもよい。
【0037】
決定モジュール304/計画モジュール305は、自動運転車の環境における潜在的な障害物を識別したり、評価したり、回避したり、他の方法で通過したりするために、衝突防止システム又は衝突防止システムの機能を含んでも良い。例えば、衝突防止システムは、車両制御システム111のうちの一つ又は複数のサブシステムが方向転換動作、操舵動作、ブレーキ動作等を取ることによって、自動運転車のナビゲートされる時の変化を実現することができる。衝突防止システムは、周囲の交通モードと、道路状況等に基づいて、障害物を回避するための実行可能な動作を自動的に特定することができる。衝突防止システムは、他のセンサーシステムにより、自動運転車が方向転換して入ろうとする隣接エリアに位置する車両、建物障害物等が検出された場合、方向転換動作をしないように配置されることができる。衝突防止システムは、使用可能で、かつ自動運転車の乗員の安全性を最大化させる動作を自動的に選択することができる。衝突防止システムは、自動運転車の乗員室において最小量の加速を生じさせると予測する退避操作を選択することができる。
【0038】
一つの実施形態において、計画モジュール305は、交通をナビゲートするの経路を計画してみるとき、計画モジュール305は、ADVの周囲の少なくとも一つのオブジェクトと衝突することが回避できないことを確定することが可能である。計画モジュール305は、ADVの操作状態(例えば、速度及び前進の方向)に基づき周囲の運転環境に応じてこのような状況を確定することが可能である。例えば、ADVの現在の速度が与えられる
場合、前方の車両が突然に異常の減速率で減速する場合、最大のブレーキ命令が発行されても、ADVが依然として前方の車両と衝突する恐れがある。類似的に、ADVの速度が与えられると、後方の車両が異常の加速率で接近する場合、ADVは、最大限の加速率を指示する最大のスロットル命令が与えられても、依然として後方からの車両の衝突を回避できない。
【0039】
衝突が回避できないと確定されたことに応じて、衝突コスト計算機308が呼び出されてADVの周囲の各々のオブジェクトに対して、例えばコスト関数313を使用して、衝突コストを計算する。コスト関数313は、データ分析システム103により、様々な道路で走行する様々な車両から集められた運転統計データに基づいて作ったり訓練したりすることができる。計画モジュール305によっては、最小限の衝突コストを有するオブジェクトの中の一つのオブジェクトを選択することができる。計画モジュール305は、選択されたオブジェクトと衝突するように、選択されたオブジェクトへの経路を計画する。よって、他の物体と衝突したことによる損害に比べ、上述した衝突による損害を最小限にすることが確保できる。
【0040】
図4は、特定の運転環境の例示を示している。
図4に示すように、当該例示においては、ADV401がオブジェクト411〜415に囲まれている。ADV401の計画モジュール305は、感知モジュール302により提供された運転環境の感知情報及び予測モジュール303により提供されたオブジェクト411〜415の行動予測に基づき、オブジェクト411〜415のうちの少なくとも一つのオブジェクトと衝突することが回避できないことを確定する。例えば、ADV401の速度と前方の車両411の速度との間の差異、及び、現在のADV401と前方の車両411との間の距離から、ADV401に最大のブレーキ命令を発行しても、ADV401は、依然として車両411と衝突する可能性がある。同時に、隣接する車道には、オブジェクト412、413及び415が存在している。ADV401は、車道を変えることを試みるならば、ADV401は、オブジェクト412、413又は415のうちの一つのオブジェクトと衝突する可能性が高い。
【0041】
類似的に、ADV401の速度と後方から接近する車両414の速度との間の差分、及び、ADV401と車両414との間の距離が与えられると、ADV401は、車両414がADV401の後端と衝突する可能性が高いかを確定することができる。衝突を避けるために、ADV401は、前へ加速しなければならない可能性がある。加速するために、最大のスロットル命令をADV401に用いても、車両414は、依然としてADV401の後端と衝突する。また、前方に他の一台の車両411が存在しているので、ADV401は、加速し過ぎると、ADV401は、車両411と衝突する可能性がある。ADV401は、車道を変えれば、ADV401は、オブジェクト412、413及び415の中の少なくとも一つのオブジェクトと衝突する可能性がある。よって、衝突が避けられないが、ADV401は、オブジェクト411〜415の中のどのオブジェクトと衝突すれば、損害を最小にすることができるかは、課題になる。
【0042】
一つの実施形態においては、衝突コスト計算機308は、1組のコスト関数又はコストアルゴリズム313を用いてオブジェクト411〜415の中の各オブジェクトの衝突コストを計算する。従って、オブジェクト411〜415の中の各オブジェクトに対して計算された衝突コストが存在している。オブジェクトの種類、オブジェクトの速度、オブジェクトの進行方向及び/又は車両の衝突箇所に基づいてオブジェクトの衝突コストを計算する。オブジェクト411〜415と関連付ける衝突コストに基づき、計画モジュール305は、オブジェクト411〜415から衝突コストが最小である一つのオブジェクトを選択し、選択されたオブジェクトへの経路を計画することによって、ADV401は、選択されたオブジェクトと衝突するようにさせる。例えば、オブジェクト415は、全てのオブジェクト411〜415において衝突コストが最小であると仮定する。当該例示においては、オブジェクト415は、電柱又はゴミ箱のような静的障害物であると仮定する。計画モジュール305は、オブジェクト415を選択して経路又は軌跡を計画することによって、ADV401は、オブジェクト415と衝突することを許す。このように計画するのは、ADVを、なるべく人に与える傷害が少ない又は完全に傷害がないオブジェクトと衝突させることを目的とする。
【0043】
図5は、一つの実施形態による衝突コスト計算機を示すブロック図である。
図5に示すように、衝突コスト計算機308は、オブジェクトの衝突コスト計算機501と、速度衝突コスト計算機502と、方向衝突コスト計算機503と、衝撃位置衝突コスト計算機504とを備える。オブジェクト衝突コスト計算機501は、オブジェクトの種類に基づいてADVとオブジェクトの衝突に対してオブジェクト衝突コストを計算するように配置されている。一つの実施形態においては、オブジェクト衝突コスト計算機501は、オブジェクトと衝突コスト(オブジェクト/コスト)マッピング表511を用いることによって、オブジェクト衝突コストを計算する。オブジェクト/コストマッピング表511は、異なる種類のオブジェクトを、対応する衝突コストにマッピングするように配置されている。
【0044】
図6Aは、一つの実施形態によるオブジェクト/コストマッピング表の例示を示す図である。
図6Aに示すように、オブジェクト/コストマッピング表600は、複数のマッピングエントリを含む。それぞれのマッピングエントリは、特定の種類のオブジェクト601を対応する衝突コスト602にマッピングする。
図6Aに示すように、人に関するオブジェクトの衝突コストが静的障害物に関するオブジェクトの衝突コストより高くなる。当該例において、通行人に関する衝突コストが静的障害物に関するオブジェクトの衝突コストより高くなる。その理由としては、通行人との衝突が通行人に傷害を与える可能性が高くなる一方、静的障害物との衝突が誰にも傷害を与えない可能性があるからである。類似的に、通行人の衝突コストは、車両の衝突コストより高くなる。その理由としては、車両内の運転手又は乗員が車両のフレームによってより良く保護されるので、潜在的な傷害が通行人との衝突による傷害より低いからである。人身傷害を招く如何なる衝突でも、より高い衝突コストを有する。
【0045】
図5に戻り、速度衝突コスト計算機502は、速度衝突コスト関数512を用い、ADVの速度とオブジェクトの速度との差に基づき、ADVとオブジェクトの速度衝突コストを計算するように設置されている。速度衝突コスト関数512は、
図6Bに示す曲線と類似する曲線で表すことができる。速度衝突コスト関数は、y = a * e
bx + cで表すことができ、但し、xは、速度の差異を示し、yは、速度衝突コストを示している。過去の運転統計データに基づいて係数a、b及びcを訓練して配置することができる。
図6Bに示すように、比較的大きい速度の差は、比較的高い速度衝突コストを招き、その理由としては、速度の差が比較的高くなると、衝突の衝撃が大きいからである。
【0046】
一つの実施形態において、方向衝突コスト計算機503は、方向衝突コスト関数513を用い、ADVの進行方向とオブジェクトの進行方向の差に基づき、ADVとオブジェクトの方向衝突コストを計算する。静的障害物が移動しないので、静的障害物の進行方向は、静的障害物が所在する車道又は道路の方向と同じ方向であると見なされる。方向衝突コスト関数513は、
図6Cに示す曲線と類似する曲線で表すことができる。方向衝突コスト関数は、y = a * e
bx + cで表すことができ、但し、xは、進行方向の差異を示し、yは、方向衝突コストを示している。過去の運転統計データに基づいて係数又はパラメータa、b及びcを訓練して配置することができる。
図6Cに示すように、大きい進行方向の差は、高い方向衝突コストを招き、その理由としては、進行方向の差が大きくなると、衝突の衝撃が大きいからである。
【0047】
一つの実施形態において、衝撃位置衝突コスト計算機504は、衝撃位置衝突コスト関数514を用い、ADVとオブジェクトの潜在的な衝突又は衝撃に基づき、衝撃位置衝突コストを計算するように配置されている。具体的には、特定の実施形態により、潜在的な衝突が生じた際に、ADVの運転手又は乗員とADVの衝突又は衝撃位置の間の距離に基づき、衝撃位置衝突コストを決める。衝撃位置衝突コスト関数514は、
図6Dに示す曲線と類似する曲線で表すことができる。衝撃位置衝突コスト関数は、y = a * e
b/x + cで表すことができ、但し、xは、進行方向の差を示している。過去の運転統計データに基づいて係数又はパラメータa、b及びcを訓練して配置することができる。具体的な実施形態においては、衝撃位置衝突コスト関数は、y = e
1/x − 1で表されている。
図6Dに示すように、ADVの運転手又は乗員とADVの衝突位置の間の距離が大きくなると、コストがより低くなり、その理由としては、運転手又は乗員に与える潜在的な損害がより低いからである。
【0048】
前記衝撃位置衝突コスト関数は、自己衝撃位置衝突コストと呼ばれ、ADVの運転手又は乗員とADVの衝突位置の間の距離に基づくものである。一つの実施形態により、オブジェクトの衝突位置とオブジェクトの乗用者又は乗員の間の距離に基づいてオブジェクトの衝撃位置衝突コストを計算する。オブジェクトは車両であれば、少なくとも運転手が車両に乗用していると仮定する。オブジェクトは、静的オブジェクトであれば、オブジェクトの衝撃位置衝突コストはゼロである。総衝撃位置衝突コストは、予め決められた式を用い、自己衝撃位置衝突コスト及びオブジェクトの衝撃位置衝突コストに基づいて、例えば、この2つの衝撃位置衝突コストに対して加算及び/又は乗算することにより決められる。
【0049】
一つの実施形態においては、予め決められた式(例えば、重み付け式)を用い、オブジェクト衝突コスト、速度衝突コスト、方向衝突コスト及び衝撃位置衝突コストに基づいて総又は最終的な衝突コストを決める。一つの具体的な実施形態においては、総衝突コストは、次の式に基づいて決めることができる。
総コスト=オブジェクト衝突コスト*衝撃位置衝突コスト*(速度衝突コスト+方向衝突コスト)
【0050】
図7は、一つの実施形態において自動運転車を操作するプロセスを示すフローチャート図である。プロセス700は、ソフトウェア、ハードウェア又はその組み合わせを含む処理ロジックにより実行することができる。例えば、プロセス700は、衝突コスト計算機308により実行することができる。
図7に示すように、操作701においては、ADVとADVの周囲のオブジェクトの相対位置及び相対速度に基づき、ADVの物理的な制限を踏まえて、ADVが必ずオブジェクトの中の少なくとも一つのオブジェクトと衝突することを確定する。ADVの物理的な制限は、ADVの最大の加速度又は最大の減速度を含む。操作702においては、各オブジェクトに対して1つ又は複数の衝突コスト関数の集合を用いてADVとオブジェクトの衝突コストを計算する。衝突コストは、衝突が生じた際の潜在的な損害量を示している。操作703においては、全てのオブジェクトから衝突コストが最も低い1つのオブジェクトを選択する。操作704においては、選択されたオブジェクトへの軌跡を計画することによって、ADVと選択されたオブジェクトの潜在的な衝突が生じた際の潜在的な損害を最小化する。
【0051】
図8は、一つの実施形態によるオブジェクトに関する衝突コストを計算するプロセスを示すフローチャート図である。プロセス800は、操作702に係る操作の一部として実行することができる。
図8に示すように、操作801においては、オブジェクトの種類に基づいてオブジェクト衝突コストを計算する。一つの実施形態においては、オブジェクトの種類に基づいてオブジェクト/コストマッピング表の中において検索操作を行ってオブジェクト衝突コストを取得する。操作802においては、ADVとオブジェクトの速度の差に基づき、速度衝突コスト関数を用いて速度衝突コストを計算する。操作803においては、ADVとオブジェクトの進行方向の差に基づき、方向衝突コスト関数を用いて方向衝突コストを計算する。操作804においては、潜在的な衝突の衝突又は衝撃位置に基づき、衝撃位置衝突コスト関数を用いて衝撃位置衝突コストを計算する。衝撃位置衝突コストは、自己衝撃位置衝突コスト及び対象衝撃位置衝突コストを含む。操作805においては、オブジェクト衝突コスト、速度衝突コスト、方向衝突コスト及び衝撃位置衝突コストに基づいて総衝突コストを決める。
【0052】
前記文章で示され、説明された部材の中の幾つかまたは全部は、ソフトウェア、ハードウェアまたはその組み合わせとして実装することができる。例えば、この種類の部材は、永続的な記憶装置にインストールされ、かつ記憶されるソフトウェアとして実装することができる。当該ソフトウェアは、プロセッサー(図示せず)を通じてメモリにロードし、メモリの中で本願を貫いて説明したプロセスまたは操作を実行する。代替できるように、この種類の部材は、専用ハードウェア(例えば、集積回路(例えば、専用集積回路またはASIC)、デジタルシグナルプロセッサー(DSP)または現場でプログラム可能なゲートアレイ(FPGA))にプログラムされたまたは埋め込まれた実行可能なコードとして実装することができる。当該実行可能なコードは、アプリケーションからの対応する駆動プログラム及び/またはオペレーティングシステムを通じてアクセスすることができる。さらに、この種類の部材は、ソフトウェアが一つまたは複数の特定の命令でアクセスできる命令集の一部分となるように、プロセッサーまたはプロセッサーのコアの中の特定のハードウェアロジックとして実装することができる。
【0053】
図9は、本願の一つの実施形態と共に使用されるデータ処理システムの例示を示すブロック図である。例えば、システム1500は、
図1の感知と計画システム110またはサーバー103〜104の中の任意の一つのような、前記のプロセスまたは方法を実行する前記の任意のデータ処理システムの中の任意の一つを表すことができる。システム1500は、多数の異なる部材を含むことができる。これらの部材は、集積回路(IC)、集積回路の一部分、独立な電子装置、または回路基板(例えば、コンピュータシステムのマザーボードまたはアドインカード)に用いられるその他のモジュールとして実装することができ、またはその他の方式でコンピュータシステムのシャーシに組み入れられる部材として実装することができる。
【0054】
システム1500の趣旨は、コンピュータシステムの複数の部材の高レベルの様子を示すことにあることに注意すべきである。幾つかの実施形態においては、付加的部材を有することができ、また、他の実施形態においては、図示部材の異なる配置を有することができる。システム1500は、デスクトップコンピュータ、ラップトップコンピューター、タブレットコンピュータ、サーバー、携帯電話、メディアプレーヤー、パーソナルデジタルアシスタント(PDA)、スマートウォッチ、パーソナルコミュニケータ、ゲーム装置、ネットワークルーターまたはハブ、ワイヤレスアクセスポイント(AP)またはリピーター、セットトップボックスまたはこれらの組み合わせを表すことができる。さらに、シングルの機器またはシステムしか示されていないが、用語“機器”または“システム”は、本願で検討した任意の一つまたは複数の方法を実行するように、単独的にまたは共同的に一つ(または複数の)命令集を実行する機器またはシステムの任意の集まりであると理解されるべきである。
【0055】
一つの実施形態において、システム1500は、バスまたはインターコネクト1510と通じて連結されるプロセッサー1501、メモリ1503及び装置1505〜1508を含む。プロセッサー1501は、シングルのプロセッサーコアまたは複数のプロセッサーコアを含むシングルのプロセッサーまたは複数のプロセッサーを表すことができる。プロセッサー1501は、一つまたは複数の、例えばマイクロプロセッサー、中央処理装置(CPU)などのような汎用プロセッサーを表すことができる。より具体的に、プロセッサー1501は、複合命令セットコンピューティング(CISC)マイクロプロセッサー、縮小命令セットコンピューティング(RISC)マイクロプロセッサー、超長命令語(VLIW)マイクロプロセッサー、またはその他の命令集を実行するプロセッサー、または命令集の組み合わせを実行するプロセッサーであっても良い。プロセッサー1501は、例えば、専用集積回路(ASIC)、移動体またはベースバンドプロセッサー、現場でプログラム可能なゲートアレイ(FPGA))、デジタルシグナルプロセッサー(DSP)、ネットワークプロセッサー、グラフィックスプロセッサー、通信プロセッサー、暗号化プロセッサー、コプロセッサー、組み込みプロセッサー、または命令を処理できる任意のその他のタイプのロジックのような、一つまたは複数の専用プロセッサーであっても良い。
【0056】
プロセッサー1501(低電力マルチコアプロセッサーソケットであっても良く、例えば超低電圧プロセッサー)は、前記システムの各種部材との通信の主プロセッサーユニットと中央ハブとして振舞うことができる。この種類のプロセッサーは、システムオンチップI(SoC)として実装することができる。プロセッサー1501は、本願で議論した操作とプロセスを実行するための命令を実行するように配置される。システム1500は、ディスプレイコントローラ、図形プロセッサー及び/またはディスプレイ装置を含むオプションの図形サブシステム1504と通信する図形インターフェースをさらに含むことができる。
【0057】
プロセッサー1501は、メモリ1503と通信することができる。一つの実施形態において、メモリ1503は、複数のメモリ装置によって規定の量のシステムメモリを提供するように実装されることができる。メモリ1503は、例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)、またはその他のタイプのメモリ装置のような、一つまたは複数の揮発性ストレージ(またはメモリ)装置を含むことができる。メモリ1503は、プロセッサー1501またはその他の任意の装置によって実行する命令シーケンスを含む情報を保存することができる。例えば、各種のオペレーティングシステム、デバイスドライバ、ファームウェア(例えば、入出力基本システムまたはBIOS)、および/またはアプリケーションの実行可能なコード及び/またはデータは、メモリ1503にロードされ、プロセッサー1501に実行されることができる。オペレーティングシステムは、任意タイプのオペレーティングシステムであっても良く、例えば、ロボットオペレーティングシステム(ROS)、Microsoft(登録商標)のWindows(登録商標)オペレーティングシステム、AppleのMacOS(登録商標)/iOS(登録商標)、Google(登録商標)のAndroid(登録商標)、LINUX、UNIX(登録商標)、その他のリアルタイムまたは組み込みオペレーティングシステムであっても良い。
【0058】
システム1500は、例えば、オプションのネットワークインターフェース装置1505、オプションの入力装置1506、及びその他のオプションのIO装置1507を含む装置1505〜1508のようなIO装置を更に含むことができる。ネットワークインターフェース1505は、無線トランシーバ及び/またはネットワークインターフェースカード(NIC)を含むことができる。前記無線トランシーバは、WIFIトランシーバ、赤外トランシーバ、ブルートゥーストランシーバ、WiMaxトランシーバ、無線移動体電話トランシーバ、衛星トランシーバ(例えば、グローバル・ポジショニング・システム(GPS))、またはその他の無線周波数(RF)トランシーバまたはそれらの組み合わせであっても良い。NICはイーサネット(登録商標)カードであっても良い。
【0059】
入力装置1506は、マウス、タッチパッド、タッチセンシティブ画面(表示装置1504と一体に集積されて)、ポインター装置(例えば、スタイラスペン)、および/またはキーボード(例えば物理的キーボード、またはタッチセンシティブ画面の一部分として表示される仮想キーボード)を含むことができる。例えば、入力装置1506は、タッチパネルに接続するタッチパネルコントローラを含むことができる。タッチパネルとタッチパネルコントローラは、例えば複数の種類のタッチセンシティブ技術(キャパシタンス、抵抗、赤外線および表面音波技術を含むが、これらに限定されない)を使用することができ、またはその他の類似するセンサーアレイまたはタッチパネルと接触する一つまたは複数の点を特定するために用いられるその他のデバイスを使用し、接触、移動または中断を検出することができる。
【0060】
IO装置は、オーディオ装置を含むことができる。オーディオ装置は、例えば音声識別、音声複製、デジタル記録及び/または電話機能等の音の機能のサポートを促進するために、スピーカー及び/またはマイクロホンを含むことができる。その他のIO装置1507は、ユニバーサル・シリアル・バス(USB)ポート、パラレルポート、シリアルポート、プリンタ、ネットワークインターフェース、バスブリッジ(例えばPCI−PCIブリッジ)、センサー(例えば、加速度計運動センサー、ジャイロ、磁力計、光センサー、コンパス、近接センサー等)またはその組み合わせを更に含むことができる。装置1507は、画像処理サブシステム(例えば、カメラ)を更に含むことができる。当該画像処理サブシステムは、例えば電荷結合素子(CCD)または相補型金属酸化物半導体(CMOS)光センサーのような、カメラ機能(例えば、写真やビデオクリップを記録する)を促進するために使用される光センサーを含むことができる。幾つかのセンサーは、センサーハブ(図示せず)を経由してインターコネクト1510に接続しても良く、例えばキーバードまたは熱センサーのようなその他の装置は、システム1500の具体的な配置または設計に従って埋め込み式コントローサ(図示せず)によってコントロールされても良い。
【0061】
データ、アプリケーション、一つまたは複数のオペレーティングシステム等の情報に対する永続的な保存を提供するために、大容量記憶装置(図示せず)はプロセッサー1501に接続しても良い。各種の実施形態において、より薄くより軽いシステム設計を実現し、システム応答性を改善するために、この種の大容量記憶装置は、ソリッドステートドライブ(SSD)によって実装しても良い。しかし、その他の実施形態において、大容量記憶装置は、主にハードディスクドライブ(HDD)を使用して実装し、それに加えて容量の比較的に小さいSSD記憶装置をSSDキャッシとして使用し、これによって電源が切られたイベントおいて文脈状態及びその他のこの種類の情報の非揮発性保存を実現し、システムの活動が再び起動する時に素早い電源投入を実現する。なお、フラッシュメモリ装置は、例えばシリアル・ペリフェラル・インタフェース(SPI)を経由してプロセッサー501に接続しても良い。この種類のフラッシュメモリ装置は、前記システムのBIOS及びその他のファームウェアを含むシステムソフトウェアの非揮発性保存を提供する。
【0062】
記憶装置1508は、本願で記述した一つまたは複数の方法または機能を具体的に表現する一つまたは複数の命令集またはソフトウェア(例えば、モジュール、ユニットまたはロジック1528)を記憶する、コンピュータのアクセス可能記憶メディア1509(機器可読媒体、コンピュータ読み取り可能メディアとも呼ばれる)を含むことができる。処理モジュール/ユニット/ロジック1528は、例えばドリフト補正モジュール308のような、前記部材の中の任意の一つを表すことができる。処理モジュール/ユニット/ロジック1528は、データ処理システム1500、メモリ1503とプロセッサー1501によって実行されている期間において、完全にまたは少なくとも部分的にメモリ1503及び/またはプロセッサー1501の中に駐留することができ、メモリ1503とプロセッサー1501もコンピュータのアクセス可能な記憶メディアを構成する。処理モジュール/ユニット/ロジック1528は、ネットワークを通じて、ネットワークインターフェース装置1505を経由して送信と受信を行うことができる。
【0063】
コンピュータ読み取り可能メディア1509は、前記で説明した幾つかのソフトウェア機能を永続的に記憶するためにも使用される。コンピュータ読み取り可能メディア1509は、例示的な実施形態においてはシングルのメディアとして示されているが、用語“コンピュータ読み取り可能メディア”は、前記一つまたは複数の命令集を記憶するシングルのメディアまたは複数のメディア(例えば、集中式または分布式データベース及び/または関連するキャッシュとサーバー)を含むと理解すべきである。用語“コンピュータ読み取り可能メディア”は、機器によって実行され、かつ本願の任意の一つまたは複数の方法を当該機器に実行させる命令集を、記憶するまたはエンコードすることができる任意のメディアを含むと理解すべきである。故に、用語“コンピュータ読み取り可能メディア”は、ソリッド・ステート・メモリ、光メディアと磁気メディア、または任意のその他の非一時的な機器可読媒体を含むが、これらに限定されないと理解すべきである。
【0064】
本願で説明する処理モジュール/ユニット/ロジック1528、部材及びその他の特徴は、独立なハードウェア部材として実装しても良く、ハードウェア部材(例えば、ASICS、FPGA、DSPまたは類似の装置)の機能の中に集積しても良い。さらに、処理モジュール/ユニット/ロジック1528は、ハードウェア装置の中のファームウェアまたは機能回路として実装しても良い。なお、処理モジュール/ユニット/ロジック1528は、ハードウェア装置とソフトウェア部材との任意の組み合わせとして実装しても良い。
【0065】
システム1500は、データ処理システムの各種の部材を有するように示されているが、部材が互いに接続する任意の特定のアーキテクチャまたは方式を表すことではない。これは、この種類の詳細は本願の実施形態と密接な関係がないからである。より少ない部材またはより多い部材を有するネットワークコンピュータ、ハンドヘルドコンピュータ、携帯電話、サーバー、および/または他のデータ処理システムは、本願の実施形態と一緒に使用しても良いと認識すべきである。
【0066】
前述の詳細な説明の中の一部分は、コンピュータメモリ内のデータビットに対する演算のアルゴリズムおよび記号表現に従って提示した。これらのアルゴリズム記述および表現は、データ処理領域の当業者が、仕事の本質を最も有効的に同じ領域の当業者に伝えるように、使用する方式である。本願において、アルゴリズムは、予期の結果をもたらすセルフコンシステント操作のシーケンスであると一般的に考えられる。これらの操作は、物理量に対して物理的な動作を行う必要がある操作であることを指す。
【0067】
これらのすべての用語と類似の用語は、適切な物理量と関連するためのものであり、便宜上にこれらの量に応用される標識に過ぎないと理解すべきである。以上の議論においてその他の方式で明確的に表明している時以外に、本願全体において、用語(例えば付属の特許請求の範囲の中で説明する用語)を利用して行った討論は、コンピュータシステムまたは類似の電子計算装置の動作と処理を指す。前記コンピュータシステムまたは類似の電子計算装置は、コンピュータシステムのレジスターとメモリの中の、物理(電子)量として表されているデータを動作し、前記データを、コンピュータシステムのメモリまたはレジスターまたはその他のこのような情報の記憶装置、転送装置またはディスプレイ装置の中の、類似的に物理量として表されているその他のデータへ変換する。
【0068】
本願の実施形態は、本願文章の中の操作を実行するために用いられる設備にも関わる。この種のコンピュータプログラムは、非一時的なコンピュータ読み取り可能メディアの中に記憶される。機器可読媒体は、機器(例えば、コンピュータ)読み取り可能な形式で情報を記憶する任意の機構を含む。例えば、機器読み取り可能(例えば、コンピュータ読み取り可能)メディアは、機器(例えば、コンピュータ)読み取り可能な記憶メディア(例えば、リードオンリーメモリ(“ROM”)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶メディア、光記憶メティア、フラッシュメモリ装置)を含む。
【0069】
前記図面の中で説明されたプロセスまたは方法は、ハードウェア(例えば、回路、専用ロジックなど)、ソフトウェア(例えば、非一時性コンピュータ読み取りメディアに具現して)またはその組み合わせを含む処理ロジックによって実行されても良い。前記プロセスまたは方法は、上記の文章おいて幾つかの順序操作によって説明されていたが、前記操作の中の幾つかは異なる順序で実行されても良いと理解すべきである。さらに、幾つかの操作は、順序で実行されるのではなく、並列的に実行されても良い。
【0070】
本願の実施形態は、何らかの特定のプログラミング言語を参考にして説明されているものではない。説明した本願の実施形態の教えは、複数のプログラミング言語を使って実装することができると認識すべきである。
【0071】
以上の明細書において、本願の具体的で例示性のある実施形態を参考にして、本願の実施形態に対して説明を行った。添付する特許の請求範囲の中で論述した本願のより広範な精神と範囲を逸脱しない限り、本発明に対して各種の修正をすることができる。故に、制限性の意味ではなく、説明性の意味で本明細書と図面を理解すべきである。