以下、本発明を実施するための最良の形態を図示例と共に説明する。なお、以下、本明細書中では、自動車等の車両を対象に説明するが、本発明はこれに限定されず、船舶や歩行者等、ドライバや人自身が自らの判断で移動するものであればすべて適用可能なものである。また、本発明による仮想ドライバや仮想歩行者を、エージェントと呼ぶこととする。
図1は、本発明のドライビングシミュレータの全体的な概要を説明するための概略ブロック図である。本発明のドライビングシミュレータは、主に操作者が搭乗しシミュレーションのための運転を行い仮想交通環境内で自車両を操作するためのコックピット11と、仮想交通環境を構築し他車両を自律的に移動させるための交通流シミュレーション装置12とからなる。なお、本明細書中で「自車両」とは、操作者による物理的な操作に対応して仮想交通環境内で移動する車両をいい、「他車両」とは仮想交通環境内に存在する自車両以外の他の車両をいい、これは交通流シミュレーション装置12により自律的に移動するものである。
コックピット11には、ハンドルやブレーキ、アクセル等の車両を操作するための装置が備わっており、通常の自動車の運転席等と同様の環境が再現されている。そして、ハンドル等の操作をシミュレーション側に伝えるために、各種センサが取り付けられている。なお、加速Gや横G、振動等をリアルに再現できるように、既知の運動装置等をコックピット11に設けることが好ましい。また、交通流シミュレーション装置12は、後に詳細に説明するが、パーソナルコンピュータ等の電子計算機からなるものである。
また、コックピット11と交通流シミュレーション装置12とは、車両ダイナミクス計算機13を介して接続されている。車両ダイナミクス計算機13は、パーソナルコンピュータ等の電子計算機からなるものであり、これは操作者の物理的な操作によりコックピット11のセンサから送信されたデータに基づき、仮想交通環境内で移動する仮想的な自車両の運動、例えば自車両の加速度、ヨーレイト等を計算するためのものである。
そして、交通流シミュレーション装置12によるシミュレーション結果は、リアルタイムに画像生成装置14に送られ、プロジェクタ15で再生されてコックピット11の操作者に提供される。画像生成装置14もパーソナルコンピュータ等の電子計算機で実現可能である。また、これはコックピット11のフロントウインドウやサイドウインドウ、リアウインドウの景色を生成し、それに対応する位置に設けられたプロジェクタ15で再生するものである。なお、ルームミラー等の表示も必要により加えることが可能である。
これらの交通流シミュレーション装置12や車両ダイナミクス計算機13、画像生成装置14を実現する電子計算機は、それぞれを別の電子計算機で構築しても良いし、すべて同じ電子計算機上で構築しても構わない。また、複数台の電子計算機を用いる場合には、各電子計算機間はLANで接続され、例えばTCP/IPやUDPプロトコルにより情報の送受信を行えば良い。
次に、交通流シミュレーション装置12の詳細を以下に説明する。図2は、本発明のドライビングシミュレータに用いられる交通流シミュレーション装置の概略模式図である。なお、当該交通流シミュレーション装置は、基本的には本願出願人による特願2005−230664に記載のものと同様のものである。交通流シミュレーション装置12は、パーソナルコンピュータ等の電子計算機であり、CPU等の演算手段2、当該演算手段2によって処理されるデータ若しくは処理後のデータを記憶するハードディスク、RAM、ROM等の記憶手段3、入出力手段4等を備える。
記憶手段3には、本願発明におけるエージェントに関する情報やそれに応じて動作をシミュレーションするプログラム等が記憶されている。また、記憶手段3には、交通網の情報、具体的には道路に関するデータが記憶されており、さらに、この道路上で移動する移動体に関する情報、例えば車両の位置の情報やその大きさ、移動方向、移動速度等のデータも記憶されている。
なお、交通流シミュレーション装置12は、勿論1台でも構わないが、複数のコンピュータにより分散処理することも可能である。この場合、後述の車両存在情報マトリクスを用いることで、コンピュータ間の通信すべき必要最小限の情報を特定することが可能となり、コンピュータ間のトラフィックを軽減し処理速度を向上することが可能となる。
以下、本発明のドライビングシミュレータの仮想交通環境内の他車両を運転する仮想的な運転者であるエージェントについて説明する。図3は、本発明のドライビングシミュレータに用いられる交通流シミュレーション装置12のエージェントを説明するためのブロック図である。図示の通り、エージェント20は、知覚部201と認識部202と判断部203と操作部204とから主になるものである。このエージェント20により他車両が操作される。そして、仮想交通環境内には、このようなエージェント20が複数おり、エージェント20により運転される他車両も複数いることになる。また、車両を運転するエージェント以外に、エージェントが通行人となって仮想交通環境内に存在していても良い。
シミュレーションを行うときに、複数の他車両のうち、移動させる操作の対象であるターゲットとなる他車両を中心に説明すると、知覚部201は、記憶手段3に記憶された移動体に関する情報のうち、ターゲットとなる他車両の位置に関する情報を基に、ターゲットとなる他車両から見て死角となる位置関係にある物体を、演算手段2により演算して検知し、知覚対象から死角となる物体を除去する。なお、死角となる位置関係にある物体には、他の車両は勿論のこと、信号機や街路樹、歩行者等、種々のオブジェクト、さらには操作者により操作される自車両が含まれる。死角は、他の車両の影の位置や曲がった道路の先等、様々な要因で生ずる。このようにして知覚部201でエージェントの知覚模擬を行う。
そして、この知覚部201の知覚結果に基づき、知覚された他の車両の存在や位置、移動方向等を認識部202で識別し、それらと衝突をさけるために、このまま進むべきか止まるべきか、曲がるべきか等の判断を判断部203で行った上で、ターゲットとなる他車両を操作部204により操作する。これにより、仮想交通環境内では、実際のドライバが死角にいた歩行者を轢いてしまう等のシミュレーションを、実際に近い形で行うことが可能となる。
また、より現実に近い交通環境を仮想的に実現するために、知覚部201により除去されずに残った物体に対して、所定の確率で物体をさらに除去する見落とし処理を行うようにしても良い。これは、死角にならずに本来は見えているにも関わらず、脇見運転を行った場合のように見落とすことを模擬するために行う。これにより、さらに実際に近い形で仮想交通環境を構築することが可能となる。なお、他のパラメータ、例えばドライバの年齢や運転嗜好、運転経験、生理的・精神的状態、安全態度等の個性を考慮したパラメータを追加して、個々の他車両がそれぞれ個性を持って移動するようにすることが好ましい。
なお、交通流シミュレーションを行うすべての他車両に対して死角になっているか否かを判断するのは処理時間の観点から無駄が多いため、エージェントの視野に関する情報も記憶手段3に記憶しておき、知覚部201では、これを用いて視野内に存在する物体を特定し、特定された各物体に対してターゲットとなる移動体から見て死角となる位置関係にある物体を除去するようにすることが好ましい。
交通流シミュレーション装置の実現、すなわちエージェントの認知的行為のプログラム化にあたって、演算処理量の最も多くなるのは「知覚」のための近接可視な仮想車両の検索処理である。最もシンプルなプログラム化の方法は、総当りによって仮想車両間の距離と可視性を調べることである。しかし、この方法によって多数存在している各車両それぞれについて位置関係等を演算により取得するには、領域内に存在する車両台数をNとすると、1台の車両につき、N−1回の演算が必要であるから、N(N−1)回の演算が必要になり、Nが大きくなると計算量が膨大となってしまう。また、各車両は交通流として、次々と領域上を刻々と遷移していくものであり、時間の経過に合わせて、前述した車両間の相対的位置関係に基づいた検索処理を繰り返す必要がある。このように、総当りによる検索方法では演算処理量の増加に伴って使用するハードウエアに対する負担が多くなるので、これを避けるために、本発明に用いられる交通流シミュレーション装置においては、以下に説明するような種々の手法で計算量を減らすことが可能である。
以下、上述の交通流シミュレーション装置を実現するための、より具体的な例を説明する。図2の記憶手段3には、シミュレーション設定データとして道路に関するデータが記憶されており、本実施例においては、一例として東京都中央区の「三原橋交差点」を中心とした領域についての道路に関するデータが記憶されている。当該道路に関するデータとしては、道路セクション座標データ、車両存在情報マトリクスデータ、及び遷移可能セクションマトリクスデータがある。
まず、道路セクション座標データについて説明する。図4(a)は、「三原橋交差点」を中心とした半径約100mmの地域を表した地図である。同地図に記載した2点鎖線による複数の円は、交差点の中央を中心として半径約20m毎に描いた線である。本実施例では、当該「三原橋交差点」付近の地図(主として車道)を演算処理可能なデータとするために、車道を連続する矩形状の領域に区切った座標データを作成する。なお、当該座標データは、北緯・東経によって表される絶対座標の他、代替的にX−Y座標(道路座標と呼ぶ)を用いてモデル化した座標データであっても良い。本実施例においては、後者のX−Y座標を用いてモデル化した座標データを作成し、以後の演算に使用する。図4(b)は、図4(a)に記載した地図の中心部を交差する2本の幹線道路をモデル化するために、交差点の中央から約20m単位で車線を区切り、当該区切られた領域を1つのセクションとしてそれぞれ符号(S1〜S28)を付したものである。なお、図4(b)では、交差点の中央からの等間隔にセクションを定義しているが、必ずしも等間隔にセクションを作成しなければいけないというわけではない。セクションの大きさは、当該道路の交通量に応じて、例えば交通量が多い箇所は密に、交通量が少ない箇所は大きく、というように任意に設定が可能である。
図5は、図4(b)に示した各セクションS1〜S28で示した領域を、交差点の中央の座標を(X,Y)=(0,0)としたX−Y座標によってモデル化したものである。本実施例においては同図に表したように道路セクション座標(道路座標)によって各セクションを定義する。例えば、図4(b)に示した交差点内を4分割した各セクションS1、S2、S3、S4で示された領域は、モデル化した図5記載の道路座標では次の(X,Y)座標で表される。すなわち、セクションS1とは(X0,Y0)と(X1,Y1)で定義される領域、セクションS2とは(X−1,Y0)と(X0,Y1)で定義される領域、セクションS3とは(X−1,Y−1)と(X0,Y0)で定義される領域、セクションS4とは(X0,Y−1)と(X1,Y0)で定義される領域として代替的に表される。なお、図5では説明の便宜上、座標値を0、1、2のような整数値としたが、実際の道路座標系の座標値としては、実際の寸法値に近似した実数値が入力されるようになっていても良い。
以上説明したように、道路セクション座標データとは、道路を複数のブロックに区切ってモデル化した際のセクションの位置を定義するための座標系を表す道路データである。
次に、車両存在情報マトリクスデータについて説明する。図6は、車両存在情報を示す表である。同表は、道路上のセクションに存在する車両のID番号を、逐次時間の経過とともに表すための表である。当該表として表されるデータは、セクション番号を指定すれば、そこに存在する車両の台数及びID番号を取り出すことができるデータ群である。
また、遷移可能セクションマトリクスデータを、図7を用いて説明する。図7は、遷移マトリクスを示す表である。遷移マトリクスとは、道路座標上の任意のセクションが他のどのセクションと道路として連続しているのかを配列した隣接領域データである。なお、後ほど説明するように、車両(車両モデル)は2次元平面上を運動学に従って連続的に移動するものであり、あるセクションから別のセクションへと離散化された空間を瞬間的に移動するわけではない。あくまで当該遷移マトリクスとは、セクション内に存在する車両の直近の移動可能範囲を表したものである。
さらに、記憶手段3には、シミュレーション設定データとして、車両やエージェントに関する車両データが記憶されている。また、その他のオブジェクトとして、例えば信号機に関するオブジェクトと歩行者に関するオブジェクトも記憶されている。
車両データとは、道路上を移動する車両をモデル化した車両データであり、車両の位置情報を保持し、運動学に従って位置、姿勢角が変更されるものである。各車両は、車両毎に異なるID番号(本実施例においては、自然数)が付されており、例えば前記道路座標(X−Y座標)上の位置(Xv、Yv)で表される浮動小数点型の変数による位置情報と、当該X−Y座標上における角度Фvで表される姿勢角の情報を有している。
また、エージェントに関するデータとは、知覚された他のオブジェクトのデータ格納用変数、車両操縦コマンド、ドライバの視野方向と視野角(θv,αv)等の視野情報等、各種情報を有するデータである。
さて、これらの各データを用いた交通流のシミュレーションの処理工程を、図8を用いて説明する。図8は、本発明のドライビングシミュレータに用いられる交通流シミュレーション装置の処理工程を説明するためのフローチャートである。シミュレーションが開始されると、記憶手段3に記憶された道路座標(図5参照)、車両存在情報マトリクス(図6参照)、遷移可能セクションマトリクス(図7参照)、車両データ、エージェントデータ、信号機オブジェクト、歩行者オブジェクト等の各種データが読み込まれると共に、各データが保有する変数等の初期化が行われる(ステップS1)。
次いで、交通流シミュレーションが作り出す仮想世界の中における時間であって、その時間で何時間分(あるいは何日分、何ヶ月分)のシミュレーションを行うのかという実行時間と、交通流シミュレーションが作り出す仮想世界の中における時間を何秒単位で進めるのかというシミュレーション時間間隔(あるいはサンプリング時間と呼ぶ)等を入出力手段4等を用いて設定することも可能である(ステップS2)。但し、ドライビングシミュレータの場合には、リアルタイムな時間軸での処理になるため、ここでは実時間を設定することになる。
続くステップを説明すると、道路座標上に存在する車両オブジェクト(エージェント)すべてについて、車両オブジェクト毎に、知覚の模擬シミュレーション(ステップS3〜S7)を行った後、当該知覚の模擬に基づいて車両を判断・操作(ステップS8)する。すなわち、当該知覚の模擬に基づいて必要な運転操作を判断し、操作を実行する。次に、操作者の物理的な操作によって変化する自車両の位置、姿勢角、速度等の情報を、車両ダイナミクス計算機13との通信により取得する(ステップS9)。そして、エージェントに自車両を加えた回数だけ(ステップS10)、各車両オブジェクトを移動させる模擬(ステップS11)を行い、各車両オブジェクトの移動に伴うセクション間の遷移があった場合の処理(ステップS12〜S14)を行う。その結果として得られる各車両オブジェクトの位置、姿勢角等の情報を、画像生成機14に送信する(ステップS15)。ステップS3からステップS15までの処理が完了すると、実際の時間(実時間)が予め設定されているサンプリング時間分だけ経過するまで待機し(これには例えばコンピュータに付属のタイマを用いる)、サンプリング時間分の時間が経過したら、シミュレーション内の時間をサンプリング時間分だけ進める(ステップS16)。これによって、リアルタイムな時間軸での処理が実現される。そしてステップS2に戻り、以降、指定された実行時間に至るまで、上記の処理がサンプリング時間毎に繰り返される。以下、これらのステップを詳細に説明する。
エージェントの知覚の模擬に関するシミュレーションでは、まず視野内のセクションの特定が行われる(ステップS4)。この処理は、一の車両(以下「ターゲットとなる車両」等という)が存在するセクションを基準として、エージェントの視野情報を用いて視野に含まれるセクションを特定するものである。なお、計算効率等を考慮しなければ、ターゲットとなる車両以外のすべての車両に対して知覚の模擬を行っても良いが、計算機の負荷を減らすためには、視野内のセクションを特定してそのセクションに対して知覚の模擬を行えば良い。また、現実の交通流でも、ドライバの視野以外の車両に関しては考慮する必要がないため現実に即しているといえる。
次に、死角となる位置関係にある物体を除去するために、視野外オブジェクトの除去が行われる(ステップS5)。この処理は、ステップS4で特定された視野内のセクションに存在するオブジェクトの中から、ターゲットとなる車両から見た視野角の中に含まれる他の車両等を得るために、視野外のオブジェクト(車両、歩行者、二輪車、信号機等)を除去する処理である。具体的には、車両を操作するエージェントの視野に関する視野情報を用いる。視野情報には、視野角が含まれるが、視野角とは、視線・目線の方向である視野方向を中心とした、視覚で認識として可能な角度であって、本実施例においては例えば一般的に言われている±60度ほどの範囲に設定される。視野外とは当該視野角の範囲外をいうものである。人間は、自分の周囲360度すべての方向を同時に見る事はできず、ある一瞬に良く見る事の出来る範囲(視野)は、顔が前を向いている方向(正確には視線・目線の方向)を中心として、±60度ほどの範囲であると言われている。したがって、例えば、前を向いて車を運転しているとき、自分の後ろにいる車は(ルームミラーなしでは)見る事ができないので、知覚対象とはならないオブジェクトを除去する処理を行う。また、自分が後ろを向いていれば、後ろの車は知覚対象となり、反対に車両の前方にいる車が視野外のオブジェクトとして除去されることになる。
図9は、他車両(ターゲットとなる車両)とそれ以外の他の車両等のオブジェクトとの位置関係をX−Y座標を用いて表した図である。まず、ターゲットとなる車両の位置を(XV、YV)とし、他の車両等の位置を(Xp、Yp)とする。また、車両の姿勢角をФV、エージェントの視野方向と視野角を(θV,αV)とする。
以下に、ターゲットとなる車両に搭乗しているエージェントから視認可能な前方角度(視野角)の範囲内に他のオブジェクトが存在しているか否かを判定するための演算内容を説明する。車両位置(XV、YV)に対する他のオブジェクトの相対位置r(rrelX,rrelY)は、次式で表せる。
また、左右の視野の限界を与えるベクトルs1、s2は、それぞれ数2、数3で表せる。
上記数2、数3を用いてrを表すと、次式になる。
線形代数学によれば、a>0かつb>0であれば、rはs1とs2に挟まれる領域に存在することになるから、a,bを求めれば、他のオブジェクトがエージェントの視野内にいるか視野外にいるかを判別することができる。
ここで、a,bは次式で表せる。
ここで、sinα>0であることから、a,bはそれぞれ数6、数7で求められる。
この演算の結果、a,bが共に0よりも大きい場合(a>0,b>0)には他のオブジェクトの相対位置rは視野内であり、a又はbの何れかが0以下であるならばオブジェクトの相対位置rは視野外であると判定する。
なお、以上の数1から数7の処理は、視野内のセクションに存在している他のオブジェクトすべてについて行うものであり、視野内にある車両の車両IDを保存するとともに、車両の総数をカウントする。
このようにして視野外のオブジェクトを除去した後、隠れオブジェクトの除外処理を行う(ステップS6)。この処理は、ステップS5にて除去されて残った視野内に存在するオブジェクトに対して、ターゲットとなる車両から見て死角となる位置関係にある物体、すなわち、他のオブジェクトによって遮蔽されたために知覚することが出来ない隠れオブジェクトを除外する処理である。
実際のドライバは、死角になって隠れて見えないものを見ることができないので、本発明のドライビングシミュレータに用いられる交通流シミュレーションでも同様の模擬を行う。実際に事故が起きる原因として、何かの陰に隠れていて見えなかったものが急に出てきて衝突したというようなことがあるので、そのような状況を模擬するために、隠れて見えないものの情報をエージェントに伝えないために当該処理をするものである。本実施例における交通流シミュレーション装置では、このような知覚・認識・判断のミスによって事故の発生をシミュレーションするものであり、いつ事故が発生するかは、実際の交通流における事故の発生と同様に、まったく確率的になっている。
このような死角となる物体の除去処理は、図10に示すように、視野内のオブジェクトの位置と姿勢角(XO,YO,ZO,ΦO)、オブジェクトの長さ、幅、高さ(l,w,h)、エージェントの視野方向と視点の座標(θV,XE,YE,ZE)、ターゲットとなる車両の位置と姿勢角(XV,YV,ФV)に基づいて行われるものである。当該処理は、視野外オブジェクトの除去によって得られた複数の視野内のオブジェクト(入力されたオブジェクト)について、ドライバ前方の仮想スクリーンへの透視変換を施し、ターゲットとなる車両からの距離を算出する処理を行い(Step1)、視野外オブジェクトの除去によって得られた複数の視野内のオブジェクトを、ターゲットとなる車両からの距離によってソートする処理を行い(Step2)、奥から手前に向かって可視判定を行い、可視オブジェクトを決定する処理を行うことで(Step3)、視野内の可視オブジェクトの総数とID番号を得るものである。なお、ソート処理にはクイックソートのアルゴリズムを用いるのが好ましい。また、仮想スクリーンとは、処理の便宜上導入したものである。例えば、同じ大きさの物体でも、それが自分から遠くに置かれていれば小さく見え、近くなら大きく見える。このように、物体がどのように見えるかは、物体の大きさそのもののほかに、どの位置にあるかが重要となる。物体の大きさと置かれている距離を同時に考慮して、どのように見えるかを知るには、透視変換(遠近法)と呼ばれる方法で、3次元空間を2次元平面へ移せば良く、その2次元平面のことをここでは仮想スクリーンと呼んでいる。なお、「仮想」とあるのは、実際のドライバはこのようなことをしておらず、便宜上導入しただけなので仮想としている。
図11は、前記Step1の具体的な処理の内容を説明するための説明図である。車両に搭乗するエージェントの視点の道路座標系における座標(Xe,Ye,Ze)は、次式で表される。
また、他の車両を略長方形状の物体と仮定すると、道路座標系における当該他の車両の四隅の座標(X1,Y1,±Z1)、(X2,Y2,±Z2)、(X3,Y3,±Z3)、(X4,Y4,±Z4)は、それぞれ数9、数10、数11、数12で表される。
これらオブジェクトを仮想スクリーン上に投影するための前処理として、これらオブジェクトの4隅の(X,Y)座標系での値を、エージェントの視線の方向をx軸、仮想スクリーンの横方向をy軸とする(x,y)座標系での値に座標変換して表すと、次式のように表すことができる。
なお、図11中、dは、ドライバから仮想スクリーンまでの距離を表している。この距離によって、投影された図の縮尺が変わる。ただし、オブジェクト同士の大小関係が変わるわけではないので、隠れオブジェクトを除去するというためには、この値をいくつに設定するかということはあまり重要ではない。本実施例では、dをエージェントからフロントガラスまでの距離程度として、1.0mと設定している。
上記のようにして得たオブジェクトの4隅の座標を透視変換すると、仮想スクリーン上における他オブジェクトの座標は次式で表せる。
そして、仮想スクリーン上に透視されたオブジェクトの輪郭を与える座標は次式のように決定される。
また、ターゲットとなる車両からの距離は次式によって算出することができる(Step2)。
これによって、スクリーン上での大きさと、車両からの距離が分かるので、Zソート法を用いて可視判定を行うことができる状態となる。なお、Zソート法は、視点から遠いものから順番に描画することで、後ろのものを手前の物体で上書きしていく手法である。
次に可視判定(Step3)について説明する。可視判定は、上記数16によって算出されたターゲットとなる車両と他の車両及び他オブジェクトとの距離の遠近によって、近い(最前面)側から遠い(最奥面)側に向かってオブジェクトを並び変えた後に、これらのオブジェクトが可視可能であるか否かを判定する処理である。図12は、可視判定ベクトルを表している。可視判定ベクトルは、最前面側に位置するオブジェクトから最奥面に位置するオブジェクトのそれぞれについて、ターゲットとなる車両から見えるか否かを「1」「0」で表したものである。可視判定の具体的な手順を以下に説明するが、ベクトルの要素とは、例えば、a=[1 2]というベクトルがあったときに、1や2等、ベクトルを構成する数値のことを「要素」といい、可視判定ベクトルの最後の要素というと、可視判定ベクトルを構成する数値の並びの中で、一番最後の数値のことを意味する。本実施例の場合、可視判定ベクトルを構成する数値とエージェントが知覚可能なオブジェクトとは一対一に対応しているので、要素=オブジェクトと考えることができる。したがって、可視判定ベクトルの最後の要素を1にするということは、一番遠くにあるオブジェクトは可視であるとすることを意味する。可視判定は、具体的には以下の手順で行われる。
(1)可視判定ベクトルの最後の要素の値を1にする
(2)I=1〜N−1について、以下の(3)、(4)を繰り返す
(3)可視判定ベクトルのN−I番目の要素の値を1にする
(4)N−I番目のオブジェクトと、可視判定ベクトルの要素の値が1であるN−I番目以降のオブジェクトとの遮蔽判定を行う。可視の場合は、可視判定ベクトルの値はそのまま、また必要があれば可視領域の修正を行い、不可視の場合は、可視判定ベクトルの値を0に変更する
ここで、上記の遮蔽判定について具体的に説明する。図13は、遮蔽判定を説明するための図であり、I=2番目のオブジェクトがI=1番目のオブジェクトによって遮蔽されているのか否かを判定する場合を表したものである。仮想スクリーン上におけるI=1番目のオブジェクト(オブジェクト1)の外形の座標は、(ymax1,zmax1),(ymin1,zmin1)によって表される。また、仮想スクリーン上におけるI=2番目のオブジェクト(オブジェクト2)の外形の座標は、(ymax2,zmax2),(ymin2,zmin2)によって表される。そして、オブジェクト2がオブジェクト1によって遮蔽されているか否かは、以下のように判定する。
ymax1>ymax2、ymin1<ymin2、zmax1>zmax2、zmin1<zmin2
この条件をすべて満たす場合には、オブジェクト2はオブジェクト1に完全に遮蔽されているので不可視と判断する。
ymax1>ymax2、ymin1>ymin2、ymax2>ymin1
この条件をすべて満たす場合には、オブジェクト2はオブジェクト1に部分的に遮蔽されているので可視と判断すると共に、ymax2=ymin1に変更する。
ymax1<ymax2、ymin1<ymin2、ymax1>ymin2
この条件をすべて満たす場合には、オブジェクト2はオブジェクト1に部分的に遮蔽されているので可視と判断すると共に、ymin2=ymax1に変更する。
ymin1>ymax2、ymin2>ymax1、zmin1>zmax2、zmin2>zmax1
この条件の何れかを満たす場合には、オブジェクト2はオブジェクト1を遮蔽していないので可視と判断する。
図14は、隠れオブジェクトの除去についての具体例を表したものであり、図14(a)は一例としてのターゲットとなる車両と他のオブジェクトの上から見た配置を表しており、図14(b)は、車両から見た仮想スクリーン上に表される他の各オブジェクトの輪郭を表したものである。図14(a)の場合、車両から見て一番手前側から「大型車」(I=1)、「乗用車」(I=2)、「乗用車」(I=3)、「信号機」(I=4)の順で各オブジェクトが並んでいる。当該各オブジェクトの並びは、数16に示した式に基づいて決定される。図14(a)に示した各オブジェクトの配置を、車両から見た仮想スクリーン上に表すと図14(b)のようになる。すなわち、一番手前側に「大型車」(I=1)が見え、当該「大型車」によって「乗用車」(I=3)及び「信号機」(I=4)が隠され、「乗用車」(I=2)の一部が「大型車」によって隠された状態になっている。この場合の、「乗用車」(I=3)及び「信号機」(I=4)が「隠れオブジェクト」となる。
各オブジェクトが「隠れオブジェクト」であるか否かの判定は、図12、図13を用いて説明した可視判定ベクトルによって行われる。具体的には、図15に示すように、はじめに一番遠い「信号機」(I=4)の可視判定ベクトルのI=4の要素の値を「1」とする。次に、「信号機」(I=4)が「乗用車」(I=3)によって遮蔽されているか否かを判断する。この例では遮蔽されていないので、可視判定ベクトルのI=4の要素の値には「1」を記録し、「乗用車」(I=3)の要素の値にも「1」を記録する。次いで、「乗用車」(I=3)が「乗用車」(I=2)によって遮蔽されているか否か、及び「信号機」(I=4)が「乗用車」(I=2)によって遮蔽されているか否かを判断する。この例では、「信号機」(I=4)及び「乗用車」(I=3)は「乗用車」(I=2)によって遮蔽されていないので、可視判定ベクトルのI=2、I=3、I=4の要素の値にはそれぞれ「1」が記録される。なお、「乗用車」(I=3)は、「乗用車」(I=2)と一部重なる部分があるので、「乗用車」(I=3)の可視領域を修正する。次いで、「乗用車」(I=2)が「大型車」(I=1)によって遮蔽されているか否か、「乗用車」(I=3)が「大型車」(I=1)によって遮蔽されているか否か、及び「信号機」(I=4)が「大型車」(I=1)によって遮蔽されているか否かを判断する。図示した例では、「乗用車」(I=2)は「大型車」(I=1)に遮蔽されておらず、前記可視領域が修正された「乗用車」(I=3)及び「信号機」(I=4)が「大型車」(I=1)に遮蔽されていると判断されるので、可視判定ベクトルのI=1、I=2の要素の値には「1」が記録さ、I=3、I=4の要素の値には「0」が記録される。
以上の処理により、可視判定ベクトルが「0」である「乗用車」(I=3)及び「信号機」(I=4)は、視覚となる位置関係にあるということで除去される。
そして、この死角となる位置関係にある物体の除去後、視野内の可視オブジェクトを見落とすというヒューマン・エラーを模擬する処理を行う(図8のステップS7)。この処理は、図16に示すように、その前までの処理によって除去されず残った視野内の可視オブジェクトの総数とID番号及び見落としが発生する確率に基づき行われるものである。図16に示すように、まず一様分布に従う0から1までの間の実数値をランダムに発生させる。次に、当該ランダムに発生させた数値が、上記「見落としが発生する確率」よりも小さい(yes)か否(no)かを判定する。上記ランダムに発生させた数値が「見落としが発生する確率」よりも小さい(yes)場合には、見落としによって知覚されないオブジェクトとして除外する処理を行う。また、ランダムに発生させた数値が「見落としが発生する確率」よりも大きい(no)場合には、知覚されたオブジェクトとして、総数とID番号を記憶用変数に記憶する処理を行う。
以上のように、図8に示した知覚の模擬(ステップS4〜ステップS7)を行った後に、知覚の模擬による情報に基づいて、エージェントに対して判断及び車両の操作を行わせる(ステップS8)。次いで、シミュレーション領域内に存在するすべての車両について、同様に知覚の模擬及び当該知覚の模擬による情報に基づくエージェントの判断及び車両の操作を行わせる処理を行わせる。
これらの処理の後、車両ダイナミクス計算機との通信を行い(ステップS9)、自車両を仮想環境内に参加させた上で、ターゲットとなる車両について車両の運動模擬、移動を行わせる処理を行い(ステップS11)、車両の移動に基づいて次に説明するセクション間遷移の検出(ステップS12)、セクション間の遷移の判定(ステップS13)、車両存在情報マトリクスの更新(ステップS14)等の処理を行う。なお、ステップS11の車両の運動模擬、移動処理について、他車両については通常の処理を行い、自車両についてはドライバによる実操作に基づく車両の位置、速度等の変化を車両オブジェクトに代入する処理を行う。
ステップS11に示す車両の運動模擬及び移動処理を行った後、車両が別のセクションへと移動した場合には、車両存在情報マトリクスの内容を書き換える必要があるので、以下に示す処理内容によって車両存在情報マトリクスの更新を行う。
以下、図17等を用いて、ステップS12のセクション間遷移の検出からステップS14の車両存在情報マトリクスの更新までの処理について説明する。車両の位置、これまでにいたセクション番号、各セクションの2隅の座標が、それぞれ(XV,YV)、Si、(XSmax,YSmax)(XSmin,YSmin)で与えられる。また、前述した図7に示す遷移可能セクションマトリクスに示した情報が与えられる。各セクションの2隅の座標及び遷移可能セクションについては、シミュレーション実行前に予め設定されている。これらの情報に基づき、各車両についてセクション間の遷移(移動)を検出し(ステップS12)、遷移があった場合(ステップS13)に、車両存在情報マトリクスの更新(ステップS14)が行われる。
図18は、セクション間の遷移検出についての説明図である。まず、(XV,YV)、Si、(XSmax,YSmax)(XSmin,YSmin)を基に、これまでのセクションに存在しているか否かの確認(存在確認)を行う。存在確認は、図19を用いて以下に説明する方法で行われる。同図において、車両の位置は(XV1,YV1)、(XV2,YV2)で表される。このとき、セクションの左下、右上の頂点から車両までの位置ベクトルは、次式で与えられる。
これらの位置ベクトルの要素を用いて、次式に示すPXとPYを算出する。
このPXとPYを用いて、PX≦0及びPY≦0の場合には車両はセクション内に存在すると判断され、PX>0又はPY>0の場合には車両はセクション内に存在しないと判断される。
このような判断によって、これまでのセクション内にまだ存在していると判断された場合には、決定されたセクション番号Sjを入力されたセクション番号Siとする。一方、これまでのセクション内に存在していないと判断された場合には、図7に示す遷移可能セクションで指定されるセクションについて存在確認を行い、車両が存在しているセクションを探し出し、その番号を決定されたセクション番号Sjとする。
セクション間の遷移の判定(ステップS13)では、決定されたセクション番号Sjと入力されたセクション番号Siとを比較し、それらが異なる場合には、セクション間の遷移が起ったか否かを示す変数Flag_Transを1とし、同じ場合には0とする。以上の処理により、車両が存在しているセクションと変数Flag_Transの値(0又は1)が得られる。
次に、図20、図21を用いて車両存在情報マトリクスの更新について具体的に説明する。図20(a)は、修正前の車両存在情報マトリクスを表しており、セクションSi内に存在する車両台数は4台であり、セクション内に存在する車両のID番号は、「7」「W」「9」「10」でありそれぞれ当該順序で並んでいる状態を表している。また、当該セクションSiに隣接するセクションSj内に存在する車両台数は3台であり、セクション内に存在する車両のID番号は、「2」「4」「13」であり、それぞれ当該順序で並んでいる状態を表している。
図20(a)に示した状態から、車両「W」がセクションSiからセクションSjに遷移した場合の車両存在情報マトリクスの修正について説明する。車両存在情報マトリクスの修正を行う場合には、「遷移前のセクション番号」、「遷移後のセクション番号」、「車両のID番号」に基づいて次の処理が行われる(図19参照)。車両存在情報マトリクスのi行目(セクションSi)から、値がWの列を探す。そして、Wがあった部位に0を代入するとともに、0を代入した部位の右側列に他の車両(他のID)がある場合には左に詰め、車両総数を1減らす処理を行う。当該処理によって、図20(a)に示した車両存在情報マトリクスが、図20(b)のセクションSiの行に示すように修正される。
次に、車両存在情報マトリクスのj行目から、値が0になる初めの列の要素にWを代入し、車両総数に1を足す。以上の処理により、車両(一例としてID=Wの車両)がセクション間を遷移した場合の車両存在情報マトリクスの更新が行われる。
上述のように、セクション間の遷移を検出し遷移があった場合には車両存在情報マトリクスの更新処理をシミュレーション領域内に存在するすべての車両に対して行った後、その結果を画像生成機に送信し(ステップS15)、シミュレーション内の時間をサンプリング時間分だけ進める処理を行い(ステップS16)、一つの処理サイクルを終了し、以降最初に設定された実行時間まで同様の処理を繰り返するようになっている。
上記に述べたような本発明のドライビングシミュレータに用いられるの交通流シミュレーション装置により、エージェントの知覚・認識・判断・操作という一連の認知的行為によって仮想車両一台一台が自律的に移動し、さらにはエージェントが知覚ミス・認識ミス・判断ミスによっては交通事故が発生し得るような仮想交通環境を実現可能となる。このような仮想交通環境において、例えば、車線変更をしようとしたときに、ちょうど車両から死角になっている領域に車両が隠れてしまっていたため、その存在に気付かずに車線変更を実行して衝突してしまう状況や、脇見をしていたために先行車が減速したことに気付かず、気付いてブレーキをかけたときにはもう間に合わずに追突してしまう状況等、現実に起る多くの事故を模擬できることになる。
なお、事故発生の判定は、一つの処理サイクルの終了後、次の処理サイクルが始まる前に行う。事故発生の判定は、最も接近している車両を探索し、その距離が車両の大きさより小さくなったか否かで行えば良い。これをシミュレーション領域中に存在しているすべての車両について行う。事故発生の判定を行うにあたっても、総当たりによる演算を行うとすると、総数N台の車両が存在するとすれば、合計でN(N−1)/2回の衝突判定のための演算が必要となる。明らかに、車両同士の距離が離れすぎていて接触を起こす可能性の全くない組み合わせについても事故判定をする総当たり的な演算は無駄であり、シミュレーション時間の遅延、ハードウエアに対する負荷の増大といった問題を招く。しかしながら、本願発明のドライビングシミュレータに用いられるシミュレーション装置は、道路に関する情報として道路領域を細分化した車両存在情報マトリクスを設けることにより細分化した各領域に存在している車両の情報を持たせている。さらに、前記細分化した領域が隣接しているか否かを判別できる遷移可能セクションマトリクスを有しており、車両存在情報マトリクスと遷移可能セクションマトリクスとを組み合わせることによって、演算が必要な車両の組み合わせを特定することができ、ドライバの知覚の模擬のための近接車両の探索のためだけではなく、事故発生の判定を行うにあたっても全く事故の発生する可能性の無い車両の組み合わせを排除し、計算量の低減を図ることができるという特徴を有しているものである。
また、複数台のコンピュータを並列的に動作させて交通流シミュレーションを行う場合、グリッドコンピューティングのように分散処理を行うのではなく、分割されたセクションをグループ分けして、各グループ内のシミュレーションをそれぞれのコンピュータが行うようにすることが好ましい。本発明のドライビングシミュレータに用いられる交通流シミュレーション装置においては、車両存在情報マトリクスを利用してセクション内にいる車両のID番号を管理している。したがって、隣接するセクションを担当するコンピュータにそのセクション内の車両の位置情報の提供を要求すると、要求を受信したコンピュータでは、そのコンピュータが管理している車両すべての位置情報を送信する必要はなく、要求に応じたセクション内の車両の位置情報のみを送信するだけで済むので、送信データ量の低減、計算機による計算量の低減が図れるという特徴も有する。
さて、上述に詳細に説明したこのような交通流シミュレーション装置12を用いたドライビングシミュレータの動作について以下に説明する。交通流シミュレーション装置12により構築した仮想交通環境内に、操作者による物理的な操作により移動する仮想自車両を走らせる。具体的には、操作者(被験者等)は、プロジェクタ15により表示された交通環境を知覚し、コックピット11に備えられたハンドルやアクセル、ブレーキにより運転操作を行う。これらハンドル等に備えられたセンサにより検知された操作量が、車両ダイナミクス計算機13に送られる。そして自車両の加速度やヨーレイトが計算され、その結果が交通流シミュレーション装置12に渡される。交通流シミュレーション装置12では、与えられたデータをエージェントの情報の代わりに用いて、自車両を操作者による物理的な操作に応じて仮想交通環境内で移動させるようにする。
このように、知覚、認識、判断、操作といったことを自律的に行うエージェントによる仮想的な他車両が存在する仮想交通環境内において、実際のドライバによる仮想自車両の操作により実時間でインタラクションを受けるシステムが実現可能となる。各エージェントは、自車両の動作によって影響を受けるため、操作者は現実に近い交通環境でのドライビングシミュレーションが可能となる。
本発明のドライビングシミュレータは、より現実に近い形でのシミュレーションが可能なため、実際の走行環境と同等の条件で操作者に関するデータの取得も可能となる。すなわち、例えば運転支援システムの導入がドライバの運転行動に及ぼす影響を調査するため等に、運転支援システムの有無による実際のドライバの挙動等に関するデータを取得することが可能となる。さらに、このようにして取得されたデータを元に、エージェントのパラメータを再調整し、さらに現実に近い仮想交通環境を構築することも可能となる。
なお、本発明のドライビングシミュレータは、上述の図示例にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。