(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-24
(45)【発行日】2022-12-02
(54)【発明の名称】シミュレーションシステム、シミュレーションプログラム及びシミュレーション方法
(51)【国際特許分類】
G16Z 99/00 20190101AFI20221125BHJP
【FI】
G16Z99/00
(21)【出願番号】P 2021542966
(86)(22)【出願日】2020-08-26
(86)【国際出願番号】 JP2020032194
(87)【国際公開番号】W WO2021039845
(87)【国際公開日】2021-03-04
【審査請求日】2021-12-01
(31)【優先権主張番号】P 2019154125
(32)【優先日】2019-08-26
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】519310193
【氏名又は名称】株式会社GSEC
(74)【代理人】
【識別番号】110003339
【氏名又は名称】弁理士法人南青山国際特許事務所
(72)【発明者】
【氏名】竹之上 典昭
【審査官】宮地 匡人
(56)【参考文献】
【文献】特開2001-256267(JP,A)
【文献】特開平11-317743(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G16Z 99/00
JSTPlus(JDreamIII)
JST7580(JDreamIII)
(57)【特許請求の範囲】
【請求項13】
任意の座標空間において起動する起動時間が記憶された複数のイベントによって構成されるシミュレーションモデルをシミュレーションするシミュレーション方法において、
離散的な時間の中で次の時刻と評価される時間の刻み幅がタグとして複数設定されて該タグに前記イベントが関連づけられて登録される複数のタイムホイールを時間単位の異なる複数の時間階層に亘る前記イベントの前記起動時間に対応させて階層化タイムホイールとして生成し、
生成した前記階層化タイムホイールの複数の前記タイムホイールの前記タグに前記イベントを関連づけて登録することによって前記イベントを登録し、
前記階層化タイムホイールのうち任意の前記時間階層に対応する前記タイムホイールを第1タイムホイールとした場合に該第1タイムホイールに予め設定された現在時間を示す第1指示位置と前記第1タイムホイールに対して下位の前記時間階層に対応するタイムホイールを第nタイムホイールとした場合に該第nタイムホイールに予め設定された現在時間を示す第n指示位置との差分に基づいて前記イベントに記憶された前記起動時間と実際に前記イベントが起動する前記起動時間との間に生じる誤差を調整し、
前記第1タイムホイールの前記第1指示位置及び前記第nタイムホイールの前記第n指示位置が前記タグに関連づけられた前記イベントの前記起動時間と一致した場合に前記イベントが起動する、
ことを特徴とするシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、シミュレーションシステム、シミュレーションプログラム及びシミュレーション方法、特に、任意の座標空間において起動する起動時間が記憶された複数のイベントによって構成されるシミュレーションモデルをシミュレーションするシミュレーションシステム、シミュレーションプログラム及びシミュレーション方法に関する。
【背景技術】
【0002】
例えば、軍事作戦における軍隊の行動や、車両の走行環境における自動運転車両の走行状況といった、種々のイベントが存在するシミュレーションモデルについて、そのシミュレーションモデルに基づくシミュレーションによって対象物を分析したり評価したりする技術が提案されている。
【0003】
特許文献1には、論理回路に基づくシミュレーションを行うシミュレーションシステムにおいて、イベントの登録が一意的に決定されるタイムホイールを用いて、イベントの発生しない時刻をスキップしてシミュレーションの速度を高速化することが開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、種々のイベントが存在するシミュレーションモデルを上記のようなシミュレーションシステムでシミュレーションする場合には、時間単位の異なる複数の時間階層に亘る起動時間が記憶されたイベントを、各時間階層に対応するタイムホイールに登録できるようにして、シミュレーションモデルに応じて正確な起動時間でイベントが起動されるように柔軟にタイムホイールを構築できれば便宜である。
【0006】
本発明は、上記事情に鑑みてなされたものであり、シミュレーションモデルに応じて正確な起動時間でイベントが起動されるようにタイムホイールを構築することができる、汎用性に富んだシミュレーションシステム、シミュレーションプログラム及びシミュレーション方法を提供することを課題とするものである。
【課題を解決するための手段】
【0007】
上記課題を達成するための、本発明に係るシミュレーションシステムは、任意の座標空間において起動する起動時間が記憶された複数のイベントによって構成されるシミュレーションモデルをシミュレーションするシミュレーションシステムにおいて、離散的な時間の中で次の時刻と評価される時間の刻み幅がタグとして複数設定されてタグにイベントが関連づけられて登録される複数のタイムホイールを時間単位の異なる複数の時間階層に亘るイベントの起動時間に対応させて階層化タイムホイールとして生成するタイムホイール生成モジュールと、タイムホイール生成モジュールで生成した階層化タイムホイールの複数のタイムホイールのタグにイベントを関連づけて登録することによってイベントを登録するイベント登録モジュールと、を備え、階層化タイムホイールのうち任意の時間階層に対応するタイムホイールを第1タイムホイールとした場合に第1タイムホイールに予め設定された現在時間を示す第1指示位置と第1タイムホイールに対して下位の時間階層に対応するタイムホイールを第nタイムホイールとした場合に第nタイムホイールに予め設定された現在時間を示す第n指示位置との差分に基づいてイベントに記憶された起動時間と実際にイベントが起動する起動時間との間に生じる誤差を調整し、第1タイムホイールの第1指示位置及び第nタイムホイールの第n指示位置がタグに関連づけられたイベントの起動時間と一致した場合にイベントが起動する、ことを特徴としている。
【0008】
これによれば、時間単位の異なる複数の時間階層に亘る起動時間が記憶されたイベントを、各時間階層に対応するタイムホイールに登録できるように、階層化タイムホイールを生成することができる。
【0009】
さらに、イベントに記憶された起動時間と実際にイベントが起動する起動時間との間に生じる誤差が調整されることから、所望の起動時間にイベントを起動させることができる。
【0010】
したがって、シミュレーションモデルに応じて正確な起動時間でイベントが起動されるように柔軟に階層化タイムホイールを構築することができることから、汎用性に富んだシミュレーションシステムが実現される。
【0011】
このシミュレーションシステムのタイムホイール生成モジュールは、階層化タイムホイールが生成される際にタグの数をシミュレーションモデルに応じて任意の数に設定することを特徴としている。
【0012】
さらに、タイムホイール生成モジュールは、イベントの起動時間の時間階層に対応させて生成する階層化タイムホイールの複数のタイムホイールをメモリに登録し、イベント登録モジュールは、タイムホイール生成モジュールがメモリに登録した階層化タイムホイールの複数のタイムホイールのタグにイベントを関連づけて登録する、ことを特徴としている。
【0013】
このシミュレーションシステムのイベント登録モジュールは、階層化タイムホイールのうち第nタイムホイールの第n指示位置が示す現在時間をオフセット補正値として記憶し、イベントを起動する際にオフセット補正値に基づいてイベントの起動時間の誤差を調整することを特徴としている。
【0014】
このシミュレーションシステムは、タイムホイール生成モジュールで生成した階層化タイムホイールを構成する複数の時間階層に対応するタイムホイールが記憶され、タイムホイールが記憶されることによってタイムホイールと階層化タイムホイールとが関連づけられることを特徴としている。
【0015】
さらに、このシミュレーションシステムは、階層化タイムホイールのうち第nタイムホイールの時間階層においてイベントの起動に向かって第nタイムホイールのタグの始点からタグの終点までイベントを進行させたときに第1タイムホイールの時間階層においてイベントの起動に向かって第1タイムホイールの現在のタグから次のタグまでイベントを進行させることを特徴としている。
【0016】
しかも、このシミュレーションシステムは、第1タイムホイールに対して上位の時間階層に対応するタイムホイールが存在する場合において、第1タイムホイールの時間階層においてイベントの起動に向かって第1タイムホイールの現在のタグから次のタグまでイベントを進行させることによって上位の時間階層に対応するタイムホイールのタグに関連づけられたイベントを起動させることを特徴としている。
【0017】
さらに、シミュレーションシステムは、階層化タイムホイールのうち第1タイムホイールを基準として起動されるイベントを第1イベントとし、かつ階層化タイムホイールのうち第nタイムホイールを基準として起動されるイベントを第nイベントとし、第1タイムホイールに対応する時間階層に基づいて第1イベント及び第nイベントを起動する場合に、第1タイムホイールの時間階層と第nタイムホイールの時間階層とが一致するように第nタイムホイールに対応する時間階層に基づいて第nイベントを繰り返して起動させることを特徴としている。
【0018】
一方、イベント登録モジュールは、シミュレーションモデルに含まれて座標空間に配置されるエンティティが活動を開始する時間をタイムホイールのタグに関連づけてイベントとして登録することを特徴としている。
【0019】
ところで、シミュレーションモデルは、自動運転車両の評価であってもよい。
【0020】
上記課題を達成するための、本発明に係るシミュレーションシステムは、任意の座標空間において起動する起動時間が記憶された複数のイベントによって構成されるシミュレーションモデルをシミュレーションする計算機を備えるシミュレーションシステムにおいて、時間単位の異なる複数の時間階層に亘るイベントの起動時間に対応せしめられて生成される、離散的な時間の中で次の時刻と評価される時間の刻み幅がタグとして複数設定されてタグにイベントが関連づけられて登録される複数のタイムホイールによって構成され、各タイムホイールが隠蔽された状態において計算機上で実行される階層化タイムホイールと、階層化タイムホイールを生成し、生成した階層化タイムホイールの複数のタイムホイールのタグにイベントを関連づけて登録することによってイベントを登録するシミュレーションプログラムと、シミュレーションモデルに含まれて座標空間に配置されるエンティティを生成するアプリケーションソフトウェアと、を備えることを特徴としている。
【0021】
上記課題を達成するための、本発明に係るシミュレーションプログラムは、任意の座標空間において起動する起動時間が記憶された複数のイベントによって構成されるシミュレーションモデルをシミュレーションするシミュレーションプログラムにおいて、離散的な時間の中で次の時刻と評価される時間の刻み幅がタグとして複数設定されてタグにイベントが関連づけられて登録される複数のタイムホイールを時間単位の異なる複数の時間階層に亘るイベントの起動時間に対応させて階層化タイムホイールとして生成するタイムホイール生成モジュールと、タイムホイール生成モジュールで生成した階層化タイムホイールの複数のタイムホイールのタグにイベントを関連づけて登録することによってイベントを登録するイベント登録モジュールと、を備え、階層化タイムホイールのうち任意の時間階層に対応するタイムホイールを第1タイムホイールとした場合に第1タイムホイールに予め設定された現在時間を示す第1指示位置と第1タイムホイールに対して下位の時間階層に対応するタイムホイールを第nタイムホイールとした場合に第nタイムホイールに予め設定された現在時間を示す第n指示位置との差分に基づいてイベントに記憶された起動時間と実際にイベントが起動する起動時間との間に生じる誤差を調整し、第1タイムホイールの第1指示位置及び第nタイムホイールの第n指示位置がタグに関連づけられたイベントの起動時間と一致した場合にイベントが起動する、ことを特徴としている。
【0022】
上記課題を達成するための、本発明に係るシミュレーション方法は、任意の座標空間において起動する起動時間が記憶された複数のイベントによって構成されるシミュレーションモデルをシミュレーションするシミュレーション方法において、離散的な時間の中で次の時刻と評価される時間の刻み幅がタグとして複数設定されてタグにイベントが関連づけられて登録される複数のタイムホイールを時間単位の異なる複数の時間階層に亘るイベントの起動時間に対応させて階層化タイムホイールとして生成し、生成した階層化タイムホイールの複数のタイムホイールのタグにイベントを関連づけて登録することによってイベントを登録し、階層化タイムホイールのうち任意の時間階層に対応するタイムホイールを第1タイムホイールとした場合に第1タイムホイールに予め設定された現在時間を示す第1指示位置と第1タイムホイールに対して下位の時間階層に対応するタイムホイールを第nタイムホイールとした場合に第nタイムホイールに予め設定された現在時間を示す第n指示位置との差分に基づいてイベントに記憶された起動時間と実際にイベントが起動する起動時間との間に生じる誤差を調整し、第1タイムホイールの第1指示位置及び第nタイムホイールの第n指示位置がタグに関連づけられたイベントの起動時間と一致した場合にイベントが起動する、ことを特徴としている。
【発明の効果】
【0023】
この発明によれば、シミュレーションモデルに応じて正確な起動時間でイベントが起動されるように柔軟に階層化タイムホイールを構築することができる、汎用性に富んだシミュレーションシステムが実現される。
【図面の簡単な説明】
【0024】
【
図1】本発明の実施の形態に係るシミュレーションシステムの概略を説明する図である。
【
図2】同じく、本実施の形態に係るシミュレーションシステムの計算機の構成の概略を説明するブロック図である。
【
図3】同じく、本実施の形態に係るシミュレーションシステムの計算機のメモリに記憶された階層化タイムホイールの構成の概略を説明するブロック図である。
【
図4】同じく、本実施の形態に係るシミュレーションシステムの計算機のメモリに記憶された階層化タイムホイールを構成する複数のタイムホイールの構成の概略を説明する図である。
【
図5】同じく、本実施の形態に係るシミュレーションシステムの計算機のメモリに記憶された階層化タイムホイールの作動概略を説明する図である。
【
図6】同じく、本実施の形態に係るシミュレーションシステムの計算機のメモリに記憶された階層化タイムホイールの作動概略を説明するフローチャートである。
【
図7】同じく、本実施の形態に係るシミュレーションシステムの計算機のストレージの構成の概略を説明するブロック図である。
【
図8】同じく、本実施の形態に係るシミュレーションシステムの計算機のストレージにおけるシナリオデータの構成の概略を説明するブロック図である。
【
図9】同じく、本実施の形態に係るシミュレーションシステムの計算機のストレージに格納されたシミュレーションプログラムにおけるタイムホイール生成モジュール の処理の概略を説明するフローチャートである。
【
図10】同じく、本実施の形態に係るシミュレーションシステムの計算機のストレージに格納されたシミュレーションプログラムにおけるイベント登録モジュールの処理の概略を説明するフローチャートである。
【
図11】同じく、本実施の形態に係るシミュレーションシステムの計算機のストレージに格納されたシミュレーションプログラムにおけるイベント登録モジュールの処理の概略を説明する概念図である。
【
図12】同じく、本実施の形態に係るシミュレーションシステムの使用手順の概略を説明するフローチャートである。
【
図13】同じく、本実施の形態に係るシミュレーションシステムで起動されるイベントが生成されるイベントモデルの概略を説明する図である。
【
図14】本発明の他の実施の形態に係るシミュレーションシステムの概略を説明する図である。
【発明を実施するための形態】
【0025】
次に、
図1~
図13に基づいて、本発明の実施の形態に係るシミュレーションシステムについて説明する。
【0026】
図1は、本実施の形態に係るシミュレーションシステムの概略を説明する図である。図示のように、シミュレーションシステム1は、シミュレーションモデル100を生成する計算機10によって構成される。
【0027】
シミュレーションモデル100は、本実施の形態では、自動運転車両の評価を行うものであって、評価対象となる対象物である評価車両やその他の車両、あるいは自転車や歩行者といったエンティティの活動がイベントとして登録されて、登録されたイベントが座標空間110上で起動される。
【0028】
計算機10は、ユーザUの操作によって生成したシミュレーションモデル100に基づいて対象物を評価するものであって、本実施の形態では、サーバとして機能するコンピュータ、デスクトップ型のコンピュータ、ノート型のコンピュータ、スマートフォンあるいはタブレット型コンピュータといった各種のコンピュータによって実装される。
【0029】
図2は、計算機10の構成の概略を説明するブロック図である。図示のように、計算機10は、プロセッサ11、メモリ12、ストレージ13、送受信部14、及び入出力部15を主要構成として備え、これらが互いにバス16を介して電気的に接続される。
【0030】
プロセッサ11は、計算機10の動作を制御し、各要素間におけるデータの送受信の制御や、プログラムの実行に必要な処理等を行う演算装置である。
【0031】
このプロセッサ11は、本実施の形態では例えばCPU(Central Processing Unit)であり、後述するストレージ13に格納されてメモリ12に展開されたプログラムを実行して各処理を行う。
【0032】
メモリ12は、DRAM(Dynamic Random Access Memory)等の揮発性記憶装置で構成される主記憶装置、及びフラッシュメモリやHDD(Hard Disc Drive)等の不揮発性記憶装置で構成される補助記憶装置を備える。
【0033】
このメモリ12は、プロセッサ11の作業領域として使用される一方、計算機10の起動時に実行されるBIOS(Basic Input/Output System)、及び各種の設定情報等が格納される。
【0034】
本実施の形態では、後述する階層化タイムホイールが生成される場合に、階層化タイムホイールを構成するタイムホイールがディクショナリとして登録されて、階層化タイムホイールが記憶される。
【0035】
ストレージ13は、プログラムや各種の処理に用いられる情報等が記憶されている。このストレージ13の構成については、後述する。
【0036】
送受信部14は、計算機10をインターネット網等のネットワークに接続するものであって、Bluetooth(登録商標)やBLE(Bluetooth Low Energy)といった近距離通信インターフェースを具備するものであってもよい。
【0037】
入出力部15には、入出力機器が接続されるインターフェースであって、これら入出力機器としては、例えばキーボードやマウス、ディスプレイといったものが想定される。
【0038】
バス16は、接続したプロセッサ11、メモリ12、ストレージ13、送受信部14及び入出力部15の間において、例えばアドレス信号、データ信号及び各種の制御信号を伝達する。
【0039】
図3は、メモリ12にディクショナリとして登録されて記憶された階層化タイムホイール21の構成の概略を説明する図である。図示のように、階層化タイムホイール21は、時間単位の異なる複数の時間階層にそれぞれ対応した複数のタイムホイールによって構成され、本実施の形態では、シミュレーションモデル100に応じて、「日」、「時」、「分」、「秒」及び「ミリ秒」の時間階層に対応したタイムホイール22~26によって構成される。
【0040】
図4は、階層化タイムホイール21を構成する各タイムホイール22~26の構成の概略を説明する図である。図示のように、各タイムホイール22~26は、離散的な時間の中で次の時刻と評価される時間の刻み幅がタグTとして設定され、このタグTがイベント処理の時間差分の最大数をもって環状に配列されたタイムテーブル型の記憶領域である。
【0041】
本実施の形態では、各タイムホイール22~26のタグTの数は、シミュレーションモデル100に応じて任意の数に設定される。
【0042】
例えば、「ミリ秒」の時間階層に対応したタイムホイール26の場合、本実施の形態ではタグTの数が1000タグであって、1タグあたりの刻み幅が1ミリ秒であることが基準であるところ、タグTの数を100タグとして1タグあたりの刻み幅を10ミリ秒としたり、タグTの数を10タグとして1タグあたりの刻み幅を100ミリ秒としたりすることができる。
【0043】
各タイムホイール22~26のタグTの数は、階層化タイムホイール21を生成するときのみに設定が可能であって、これにより、生成したシミュレーションモデル100が不用意に改変されることが防止される。
【0044】
このように、各タイムホイール22~26のタグTの数が任意に設定されることによって、例えばfps(frame per second)単位で映像を処理するようなシミュレーションを行う際に、スムーズに対応することができる。
【0045】
これら各タイムホイール22~26のタグTには、イベントが関連づけられて登録され、各タイムホイール22~26に予め設定された、現在時間を示す第1指示位置~第n指示位置であるアベイルA1~A5が、タグTに関連づけられたイベントの起動時間と一致した場合に、イベントが起動する。
【0046】
各タイムホイール22~26は、階層化タイムホイール21によって、メモリ12に不正に侵入するプログラムに対して隠蔽されることから、このプログラムに検知されて改変されることが防止される。
【0047】
さらに、各タイムホイール22~26は、階層化タイムホイール21によって、計算機10を操作するユーザUも不可視とされることから、ユーザUは階層化タイムホイール21を生成するに際して階層化タイムホイール21を構成する各タイムホイール22~26の設定を行う必要がない。したがって、シミュレーションを簡易に実行することができる。
【0048】
図5は、階層化タイムホイール21の作動概略を説明する図である。図示のように、「時」、「分」及び「秒」の時間階層に対応するタイムホイール23~25が構成される場合において、例えばタイムホイール24を第1タイムホイールとする。
【0049】
この場合、タイムホイール24に対して下位の時間階層である「秒」の時間階層に対応するタイムホイール25を第nタイムホイールとすれば、タイムホイール25のアベイルA4が位置する始点のタグTから終点のタグTまでイベントが進行すると、第1タイムホイールであるタイムホイール24のアベイルA3が現在のタグTから次のタグTまでイベントが進行する。
【0050】
タイムホイール24のアベイルA3が現在のタグTから次のタグTまでイベントが進行すると、本実施の形態では、タイムホイール24に対して上位の時間階層である「時」の時間階層に対応するタイムホイール23に登録されたイベントが起動する。
【0051】
図6は、階層化タイムホイール21の作動概略を説明するフローチャートである。
【0052】
例えば、階層化タイムホイール21のうち「秒」の時間階層に対応するタイムホイール25を第1タイムホイールとして第1イベントが起動され、階層化タイムホイール21のうち「ミリ秒」の時間階層に対応するタイムホイール26を第nタイムホイールとして100ミリ秒で繰り返される第nイベントが起動されるとする。
【0053】
この場合において、第nタイムホイールであるタイムホイール26の時間階層である「ミリ秒」に基づいて起動される第nイベントは、「秒」の時間階層に対応するタイムホイール25の刻み幅に含まれることから、「秒」の時間階層において第nイベントを評価するには、タイムホイール26の時間階層である「ミリ秒」に基づいて第nイベントを10回繰り返して起動する必要がある。
【0054】
しかし、第1タイムホイールであるタイムホイール25の時間階層である「秒」に基づいて第1イベント及び第nイベントを起動させると、第nイベントは、タイムホイール25の時間階層である「秒」に基づいて起動される第1イベントと同様に1回しか起動されないこととなる。
【0055】
このように、10回繰り返して起動しなければ「秒」の時間階層において適正な評価をすることができない第nイベントが、1回のイベントの起動によって「秒」の時間階層において評価されることとなれば、適正な評価を行うことができなくなるという不具合が生じる。
【0056】
そこで、本実施の形態では、ステップS1において、タイムホイール26の「ミリ秒」の時間階層に基づいて第nイベントを10回繰り返して起動する。
【0057】
第nイベントの繰り返しの起動によって、ステップS2において、第1タイムホールであるタイムホイール25の「秒」の時間階層と第nタイムホールであるタイムホイール26の「ミリ秒」の時間階層とが一致した場合、ステップS3において、第1タイムホイールであるタイムホイール25の時間階層である「秒」に基づいて第1イベント及び第nイベントを起動させる。
【0058】
上記のような構成のタイムホイールを用いてシミュレーションを行う場合、イベントが関連づけられて登録されていないタグをスキップして演算処理が実行されることから、シミュレーションにおける処理を高速で処理することができる。
【0059】
図7は、ストレージ13の構成の概略を説明するブロック図である。図示のように、ストレージ13は、ストレージ13の記憶領域に記憶されるシナリオデータ30、シミュレーションプログラム40及び三次元表示処理プログラム50を備える。
【0060】
図8は、シナリオデータ30の構成の概略を説明するブロック図である。図示のように、シナリオデータ30は、空間データD1、イベントデータD2及びエンティティデータD3によって構成される。
【0061】
空間データD1は、本実施の形態では、シミュレーションモデル100の座標空間110やこの座標空間110にエンティティである自動運転車両等が走行する路面等を生成するデータである。
【0062】
イベントデータD2は、例えば緊急車両の走行、信号の変化や歩行者の歩行等といったシミュレーションモデル100において起動するイベントを生成するデータである。
【0063】
エンティティデータD3は、本実施の形態では、対象物となる自動運転車両や他の車両、自転車あるいは歩行者等といった移動体となるエンティティを生成するデータである。
【0064】
図7で示すように、シミュレーションプログラム40は、タイムホイール生成モジュール41及びイベント登録モジュール42を備える。
【0065】
タイムホイール生成モジュール41は、本実施の形態では、シミュレーションモデル100に応じて必要となる任意のタイムホイール22~26を階層化タイムホイール21として生成するモジュールある。
【0066】
図9は、タイムホイール生成モジュール41の処理の概略を説明するフローチャートである。図示のように、タイムホイール生成モジュール41は、シミュレーションモデル100で起動するイベントの起動時間の時間階層に対応させて階層化タイムホイール21を生成する場合に、ステップS10において、生成する階層化タイムホイール21を、タイムホイール22~26ごとにメモリ12にディクショナリとして登録する。
【0067】
例えば、シミュレーションモデル100で起動するイベントの起動時間の時間階層が「時」、「分」及び「秒」に亘る場合には、生成する階層化タイムホイール21のタイムホイール23~25をメモリ12にディクショナリとして登録する。
【0068】
このように、生成するタイムホイール23~25をメモリ12にディクショナリとして登録することにより、シミュレーションモデル100に不要なタイムホイール22~26が無用に生成されることがないことから、シミュレーションシステム1の処理能力の低下が回避される。
【0069】
ステップS11において、メモリ12にディクショナリとして登録した任意のタイムホイール22~26、本実施の形態では例えばタイムホイール23~25を、階層化タイムホイール21として生成してメモリ12に記憶させる。
【0070】
階層化タイムホイール21を構成するタイムホイール23~25がメモリ12にディクショナリとして登録されて記憶されると、タイムホイール23~25と階層化タイムホイール21との関連づけがなされる。
【0071】
これにより、階層化タイムホイール21が、イベントが登録されたタイムホイール23~25をイベントの起動に向かって直接的に進行させることができる。
【0072】
続くステップS12において、シミュレーションモデル100に応じて、各タイムホイール22~26のタグTの数が任意のタグTの数に設定される。
【0073】
イベント登録モジュール42は、本実施の形態では、タイムホイール生成モジュール41で生成した階層化タイムホイール21の任意のタイムホイール22~26の任意のタグTに、イベントを関連づけて登録するモジュールである。
【0074】
任意のタイムホイール22~26に登録されるイベントには、イベント処理の時間差分が起動時間として記憶されており、イベントの起動時間が時間単位の異なる複数の時間階層に亘る場合は、階層化タイムホイール21の複数のタイムホイール22~26の全てあるいはいずれかに亘ってイベントが登録される。
【0075】
図10は、イベント登録モジュール42の処理の概略を説明するフローチャートであり、
図11は、イベント登録モジュール42の処理の概略を説明する概念図である。
【0076】
図10で示すように、イベント登録モジュール42でイベントが登録される場合は、ステップS20において、複数の時間階層に亘るイベントの起動時間に対応する任意のタイムホイール22~26が階層化タイムホイール21として生成されていて任意のタイムホイール22~26がメモリ12に登録されているかどうかをディクショナリに確認する。
【0077】
例えば、イベントの起動時間の時間階層が「分」及び「秒」に亘る場合には、「分」及び「秒」の時間階層に対応するタイムホイール24、25がメモリ12に登録されているかどうかをディクショナリに確認する。
【0078】
続いて、階層化タイムホイール21の複数のタイムホイール22~26にイベントが登録される際に、ステップS21において、イベントの起動時間が時間単位の異なる複数の時間階層に亘る場合は、イベントに記憶された起動時間と実際にイベントが起動する起動時間との間に誤差が生じることとなる。
【0079】
例えば、
図11(a)で示すように、「分」の時間階層に対応したタイムホイール24のアベイルA3が0分に位置し、「秒」の時間階層に対応したタイムホイール25のアベイルA4が10秒に位置する場合において、例えば、起動時間が2分10秒として記憶されたイベントXがタイムホイール24に登録される。
【0080】
このとき、タイムホイール24に対して下位の時間階層である「秒」の時間階層に対応するタイムホイール25を第nタイムホイールとすれば、タイムホイール25のアベイルA4が位置する10秒のタグTを始点としてイベントXが進行して50秒が経過し、タイムホイール25のアベイルA4が0秒のタグTを終点としてイベントXが進行する。
【0081】
これに伴って、「分」の時間階層においてイベントXの起動に向かってタイムホイール24のアベイルA3が0分のタグTから1分のタグTに位置して、イベントXが進行する。
【0082】
その後、
図11(b)で示すように、タイムホイール24のアベイルA3が2分のタグTに位置し、タイムホイール25のアベイルA4が10秒のタグTに位置すると、起動時間が2分10秒として記憶されたイベントXが起動する。
【0083】
しかし、イベントXがタイムホイール24に登録された際にアベイルA3及びアベイルA4が位置していた時間は0分10秒であることから、起動時間が2分10秒として記憶されたイベントXは、アベイルA3及びアベイルA4が2分20秒に位置したときに起動することが想定されていたはずである。
【0084】
このように、アベイルA3が位置する時間とアベイルA4が位置する時間との差分に基づいて、イベントXに記憶された起動時間と実際にイベントXが起動する起動時間との間に誤差が生じる。
【0085】
このとき、
図10で示すように、ステップS22において、最も上位の時間階層の任意のタイムホイール22~25よりも下位の時間階層の任意のタイムホイール23~26の任意のアベイルA2~A5が位置する時間がオフセット補正値として記憶される。
【0086】
例えば、
図11(a)及び
図11(b)で示すように、イベントXがタイムホイール24に登録される際に、下位タイムホイールであるタイムホイール25のアベイルA4が位置する10秒がオフセット補正値として記憶される。
【0087】
これにより、「秒」の時間階層に対応するタイムホイール25においてイベントXが進行する際にオフセット補正値が付加されて、イベントXに記憶された起動時間と実際にイベントXが起動する起動時間との間に生じる誤差が調整される。
【0088】
したがって、本実施の形態では、イベントXは、アベイルA3及びアベイルA4が2分20秒に位置したときに起動することとなる。
【0089】
図7で示すように、三次元表示処理プログラム50は、シミュレーションモデル100を計算機10に接続されるディスプレイに三次元で表示するように処理するプログラムである。
【0090】
次に、本実施の形態のシミュレーションシステム1の使用手順を説明する。
【0091】
図12は、シミュレーションシステム1の使用手順の概略を説明するフローチャートである。本実施の形態では、まず、シミュレーションモデル100及びシミュレーションモデル100で起動されるイベントに応じて生成される階層化タイムホイール21が、タイムホイール22~26ごとにメモリ12にディクショナリとして登録され、図示のように、ステップS100において、階層化タイムホイール21が生成される。
【0092】
例えば、イベントの起動時間が「時」の時間階層、「分」の時間階層及び「秒」の時間階層に亘る場合には、タイムホイール23~25がディクショナリとして登録されて記憶され、タイムホイール23~25によって階層化タイムホイール21が生成される。
【0093】
このとき、タイムホイール23~25のタグTの数は、シミュレーションモデル100に応じた任意の数が設定される。
【0094】
続いて、ステップS101において、イベントが登録される。登録されるイベントは、本実施の形態では、
図13で示すように、イベントデータD2として作成されたイベントモデルMの派生から生成されており、シミュレーションモデル100に基づいた任意のイベントが登録される。
【0095】
本実施の形態では、例えば、エンティティデータD3に基づいて生成されるエンティティである評価車両や、同じくエンティティである緊急車両や自転車といった他の車両等が座標空間110に出現する時間や位置等がイベントとして登録される。
【0096】
ステップS101では、イベントの起動時間に対応するタイムホイール23~25が階層化タイムホイール21としてメモリ12に登録されているかどうかがディクショナリに確認される。
【0097】
タイムホイール23~25にイベントが登録される際に、登録されるイベントの起動時間が時間単位の異なる複数の時間階層に亘る場合は、本実施の形態では、タイムホイール24、25のアベイルA3、A4が位置する時間がオフセット補正値として記憶される。
【0098】
次に、ステップS102において、シミュレーションモデル100に基づいてシミュレーションが実行され、評価車両の自動運転に関するシミュレーションに基づいて、評価車両の自動運転が評価される。このとき、シミュレーションモデル100は、本実施の形態では、計算機10に接続されるディスプレイに三次元で表示される。
【0099】
このように、本実施の形態のシミュレーションシステム1によれば、時間単位の異なる複数の時間階層に亘る起動時間が記憶されたイベントを、各時間階層に対応するタイムホイール22~26に登録できるように、階層化タイムホイール21を生成することができる。
【0100】
さらに、イベント登録モジュール42によって記憶されたオフセット補正値に基づいて、イベントに記憶された起動時間と実際にイベントが起動する起動時間との間に生じる誤差が調整されることから、所望の起動時間にイベントを起動させることができる。
【0101】
したがって、シミュレーションモデルに応じて正確な起動時間でイベントが起動されるように柔軟に階層化タイムホイール21を構築することができることから、汎用性に富んだシミュレーションシステム1が実現される。
【0102】
(他の実施の形態)
次に、
図14に基づいて、本発明の他の実施の形態に係るシミュレーションシステム2について説明する。
【0103】
なお、シミュレーションシステム2において、シミュレーションシステム1と同様の構成には同一の符号を付して、その説明を省略する。
【0104】
図示のように、シミュレーションシステム2は、計算機10、計算機10上で実行される階層化タイムホイール21、階層化タイムホイール21を生成するとともに生成した階層化タイムホイール21にイベントを登録するシミュレーションプログラム40、及び階層化タイムホイール21上でエンティティを生成するアプリケーションソフトウェア60を備える階層モデルによって実現される。
【0105】
このシミュレーションシステム2では、シミュレーションモデルをシミュレーションする計算機10のOS(Operating System)として、階層化タイムホイール21を用いることができる。
【0106】
一方、シミュレーションシステム2では、階層化タイムホイール21上にイベントとして登録されて座標空間に配置されるエンティティを生成するアプリケーションソフトウェア60を開発する環境が、例えばAPI(Application Programming Interface)によって提供される、あるいはアプリケーションソフトウェア60のソースコードを公開することによって提供される。
【0107】
アプリケーションソフトウェア60は、本実施の形態では、シミュレーションモデルに含まれて座標空間に配置されるエンティティを生成するものである。
【0108】
アプリケーションソフトウェア60としては、例えば、シミュレーションモデル100であれば、自動運転車両や他の車両といった移動体を生成する移動体生成アプリケーションソフトウェア、座標空間110や座標空間110に自動運転車両等が走行する路面といった空間を生成する空間生成アプリケーションソフトウェア等が想定される。
【0109】
さらに、例えば、移動体の進行方向を制御する方向制御アプリケーションソフトウェアや、シミュレーションモデル100のディスプレイへの表示を制御する表示制御アプリケーションソフトウェア等、エンティティのユーティリティに関するアプリケーションソフトウェアも想定される。
【0110】
なお、アプリケーションソフトウェア60によってシミュレーションプログラム40が実装されるように構成することもできる。
【0111】
このように、本実施の形態のシミュレーションシステム2によれば、階層化タイムホイール21を構成する各タイムホイール22~26が階層化タイムホイール21によって隠蔽されて計算機10上で実行されることから、メモリ12に不正に侵入するプログラムに検知されて階層化タイムホイール21が改変されることが防止される。
【0112】
一方で、各タイムホイール22~26は、階層化タイムホイール21によって、アプリケーションソフトウェア60を開発する開発者にも不可視とされることから、開発者はアプリケーションソフトウェア60を開発するに際して階層化タイムホイール21を構成する各タイムホイール22~26の設定を行う必要がなく、アプリケーションソフトウェア60の開発を簡易に実行することができる。
【0113】
したがって、メモリ12に侵入するプログラムに階層化タイムホイール21が改変されることのない安全な環境において、各タイムホイール22~26を意識することなく生成されたアプリケーションソフトウェア60を用いながら、シミュレーションモデルに応じて柔軟に階層化タイムホイール21を構築することができることから、汎用性に富んだシミュレーションシステム2が実現される。
【0114】
なお、本発明は上記実施の形態及び上記他の実施の形態に限定されることはなく、発明の趣旨を逸脱しない範囲で種々の変更が可能である。
【0115】
上記実施の形態では、シミュレーションモデル100が自動運転車両の評価である場合を説明したが、例えば鉄道交通網やバス交通網の運行評価、軍隊の行動評価、航空管制システムの評価、ドローンの飛行進路の評価等、各種の評価に用いることができる。
【0116】
1、2 シミュレーションシステム
10 計算機
21 階層化タイムホイール
22~26 タイムホイール
40 シミュレーションプログラム
41 タイムホイール生成モジュール
42 イベント登録モジュール
60 アプリケーションソフトウェア
A1~A5 アベイル(第1指示位置~第n指示位置)
D2 イベントデータ
T タグ