JP5821745B2 - シミュレーション方法、シミュレーション装置およびシミュレーションプログラム - Google Patents

シミュレーション方法、シミュレーション装置およびシミュレーションプログラム Download PDF

Info

Publication number
JP5821745B2
JP5821745B2 JP2012075190A JP2012075190A JP5821745B2 JP 5821745 B2 JP5821745 B2 JP 5821745B2 JP 2012075190 A JP2012075190 A JP 2012075190A JP 2012075190 A JP2012075190 A JP 2012075190A JP 5821745 B2 JP5821745 B2 JP 5821745B2
Authority
JP
Japan
Prior art keywords
simulation
time
predicted
unit
received
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012075190A
Other languages
English (en)
Other versions
JP2013206188A (ja
Inventor
藤田 卓志
卓志 藤田
北川 英志
英志 北川
宮田 亮介
亮介 宮田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012075190A priority Critical patent/JP5821745B2/ja
Publication of JP2013206188A publication Critical patent/JP2013206188A/ja
Application granted granted Critical
Publication of JP5821745B2 publication Critical patent/JP5821745B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)

Description

本発明は、シミュレーション方法、シミュレーション装置およびシミュレーションプログラムに関する。
従来からコンピュータ上に仮想的に構築された仮想世界内の複数のオブジェクトの動きを、ネットワークを介して接続された複数のクライアント装置から操作して仮想世界を体験するシミュレーションシステムが提供されている。例えば、このようなシミュレーションシステムとしては、コンピュータ上に仮想的に構築されたレーシングコース上で、複数人がそれぞれのクライアント装置から車両を運転してレースを行うシミュレーションゲームがある。このようなシミュレーションシステムでは、ネットワークの通信の遅延によるクライアント装置の表示内容の食い違いの回避と、各クライアント装置からの操作に対する表示レスポンスの確保の両立が課題となる。
そこで、次のような従来技術が提案されている。例えば、複数のゲーム装置をネットワークを介して接続した対戦型レースゲームにおいて、各ゲーム装置は、ゲーム装置を操作するプレイヤー自身が運転する車両の挙動を計算し、計算した車両の挙動を他のゲーム装置に通信ネットワークを経由して送信する。また、各ゲーム装置は、他のゲーム装置から受け取った他の車両の挙動の情報から他の車両の現在の挙動を予測する。そして、各ゲーム装置は、計算したプレイヤー自身が運転する車両の挙動と、予測した他の車両の挙動とを表示する。
特開2006−320502号公報 特開2004−105671号公報
しかしながら、従来技術は、それぞれ車両の挙動の計算や予測を各クライアント装置で行うため、各クライアント装置がシミュレーションに要する各種の情報やシミュレーションプログラムを保持する必要があり、クライアント装置の構成が複雑になる。
開示の技術は、上記に鑑みてなされたものであって、クライアント装置を複雑な構成にすることなくシミュレーションを行うことができるシミュレーション方法、シミュレーション装置およびシミュレーションプログラムを提供することを目的とする。
本願の開示するシミュレーション方法は、コンピュータが、ネットワークを介して接続されたクライアント装置において仮想世界上のオブジェクトに対する操作が入力されるよりもネットワークの遅延時間以上前にオブジェクトに対する操作を予測する。シミュレーション方法は、コンピュータが、予測した操作に基づいて仮想世界上のオブジェクトの状態をシミュレーションする。シミュレーション方法は、コンピュータが、予測した操作を示す操作情報およびシミュレーションした結果を示すシミュレーション情報を記憶部に登録する。シミュレーション方法は、コンピュータが、記憶部に記憶されたシミュレーション結果を示すシミュレーション情報を時刻順にクライアント装置へ送信する。シミュレーション方法は、コンピュータが、クライアント装置からオブジェクトに対する操作を受信する。シミュレーション方法は、コンピュータが、受信した操作が、記憶部に記憶された、当該受信した操作が行われた時刻の予測した操作と所定以上異なる場合、受信した操作に基づいて、記憶部に記憶された、当該受信した操作が行われた時刻以降の操作を再予測する。シミュレーション方法は、コンピュータが、再予測した操作に基づいて前記受信した操作が行われた時刻以降のオブジェクトの状態を再シミュレーションする。シミュレーション方法は、コンピュータが、記憶部に記憶された、当該受信した操作が行われた時刻以降の予測した操作およびオブジェクトの状態を、再予測した操作および再シミュレーションしたオブジェクトの状態に更新する。
本願の開示するシミュレーション方法によれば、クライアント装置の構成を複雑にすることなくシミュレーションを行うことができる。
図1は、実施例1に係るシミュレーションシステムの構成を示す図である。 図2は、シミュレーションを行う仮想世界の一例を示す図である。 図3は、クライアントにおいて表示される映像の一例を示す図である。 図4は、実施例1に係るクライアントの機能的構成を示すブロック図である。 図5は、実施例1に係るサーバの機能的構成を示すブロック図である。 図6は、実施例1に係るシミュレーション結果データの構成例を示す図である。 図7は、シミュレーションの流れを示すタイムチャートである。 図8は、実施例1に係るシミュレーション結果データの構成例を示す図である。 図9は、実施例1に係るシミュレーションシステムにより求めた車両の移動経路の一例を示す図である。 図10は、サーバが受信した操作情報に基づいて車両の挙動を計算した場合の車両の移動経路の一例を示す図である。 図11は、実施例1に係るシミュレーション処理の手順を示すフローチャートである。 図12は、実施例1に係る制御処理の手順を示すフローチャートである。 図13は、実施例2に係るシミュレーション結果データの構成例を示す図である。 図14は、実施例2に係るシミュレーション結果データの構成例を示す図である。 図15は、実施例2に係るシミュレーション処理の手順を示すフローチャートである。 図16は、実施例3に係るクライアントの機能的構成を示すブロック図である。 図17は、シミュレーションシステムにより求めた車両の移動経路の一例を示す図である。 図18は、実施例3に係る制御処理の手順を示すフローチャートである。
以下に、本願の開示するシミュレーション方法、シミュレーション装置およびシミュレーションプログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[システム構成]
まず、本実施例に係るシミュレーションシステムの構成について説明する。図1は、実施例1に係るシミュレーションシステムの構成を示す図である。シミュレーションシステム10は、サーバ12上に仮想的に構築された仮想世界内の複数のオブジェクトの動きを1つまたは複数のクライアント11からユーザが操作して仮想世界を体験するものである。本実施例では、サーバ12が仮想世界として道路空間を構築し、オブジェクトとして道路空間内の車両をクライアント11からユーザが操作して仮想世界を体験する場合を例にして説明する。
図1に示すように、シミュレーションシステム10は、クライアント11と、サーバ12とを有する。なお、図1の例では、1つのクライアント11を有する場合を例示したが、開示のシステムはこれに限定されず、クライアント11を任意の数とすることができる。
これらサーバ12およびクライアント11の間は、ネットワーク13を介して通信可能に接続される。かかるネットワーク13には、有線または無線を問わず、インターネット、LAN(Local Area Network)やVPN(Virtual Private Network)などの任意の通信網を採用できる。
サーバ12は、シミュレーション対象とする仮想世界を構築してクライアント11へ提供し、クライアント11から操作に応じて仮想世界内の複数のオブジェクトの状態変化をリアルタイムで計算する装置であり、例えば、サーバコンピュータなどである。かかるサーバ12は、1台のサーバコンピュータとして実装することとしてもよく、また、複数台のサーバコンピュータによるクラウドとして実装することもできる。なお、本実施例では、サーバ12を1台のサーバコンピュータとした場合を例として説明する。本実施例では、サーバ12は、シミュレーション対象とする仮想世界として道路空間を構築してクライアント11へ提供し、クライアント11から操作に応じて道路空間内の複数の車両の状態変化をリアルタイムで計算する。
クライアント11は、サーバ12に構築された仮想世界をユーザが体験するための装置である。クライアント11は、出力部30と、操作入力部31とを装置内または装置外に備える。なお、図1の例では、クライアント11が出力部30および操作入力部31を1つずつ備えた場合を例示するが、クライアント11が出力部30および操作入力部31を複数備えてもよい。
出力部30は、サーバ12が提供する仮想世界の映像や音声、振動などユーザが仮想世界を体験するための各種情報を出力する。例えば、出力部30は、車両の運転者席に着座した利用者が、シミュレートされた仮想世界内で車両を運転したときに体験する視界映像、走行音、振動などを出力する。
操作入力部31は、ユーザから仮想世界内のオブジェクトの動きを指定する操作を受け付ける。例えば、操作入力部31は、道路空間内を走行する車両を運転するためのハンドル操作、アクセル操作やブレーキ操作を受け付ける。
[シミュレーション対象とする仮想世界の例]
次に、本実施例に係るシミュレーションシステム10によりシミュレーションを行う仮想世界について説明する。図2は、シミュレーションを行う仮想世界の一例を示す図である。図2の例では、仮想世界として2車線の道路上が構築されている。また、図2の例では、オブジェクトとして道路空間内を走行する車両が設けられている。図2の例では、2車線の道路上を3台の車両21〜23が走行している。車両21は、クライアント11から運転操作を行う操作対象車両である。車両22、23は、サーバ12上で動作する所定の走行プログラムにより挙動を決定して走行させる自動走行車両である。また操作対象の車両21の右後方には、自動走行の車両22が走行している。操作対象の車両21の前方には、自動走行の車両23が走行している。
図3は、クライアントにおいて表示される映像の一例を示す図である。なお、図3は、図2の場面で車両21を操作するクライアント11の出力部30に表示される映像の例である。図3の例は、運転席から前方を見た視界の映像であり、フロントウィンドウ25の先に、前方を走行する自動走行の車両23が見えており、またバックミラー26には、右後方を走行する自動走行の車両22が見えている。
なお、図2および図3の例では、車両が3台の場合について説明したが、車両は3台に限らず、多数であってよい。また、複数の異なるクライアント11でそれぞれ運転操作を行う操作対象の車両が複数存在していてもよい。
[クライアント11の構成]
次に、本実施例に係るシミュレーションシステム10に含まれるクライアント11の機能的構成について説明する。図4は、実施例1に係るクライアントの機能的構成を示すブロック図である。図4に示すように、クライアント11は、出力部30と、操作入力部31と、通信I/F(インタフェース)部32と、記憶部33と、制御部34とを有する。
出力部30は、仮想世界に関する各種の情報を出力する出力デバイスである。かかる出力部30の一態様としては、ディスプレイ、スピーカ、振動装置などである。出力部30は、制御部34から入力する各種信号に基づいて、利用者が仮想世界を体験するための映像や音響、振動などを出力する。例えば、利用者による操作対象のオブジェクトが車両である場合、出力部30は、車両の運転者席に着座した利用者が、シミュレートされた仮想世界内で車両を運転したときに体験する視界映像、走行音、振動を出力する。
操作入力部31は、ユーザから各種の操作入力を受け付ける入力デバイスである。かかる操作入力部31の一態様としては、ハンドルやレバー、アクセルペダル、ブレーキペダルなど車両の操作に用いる操作デバイスを備えたコントローラなどである。操作入力部31の他の一態様としては、ボタン、キーボード、マウス、タッチパネルなどである。操作入力部31は、利用者からの操作入力を受け付け、受け付けた操作内容を示す操作情報を制御部34に出力する。ここで、例えば、利用者による操作対象のオブジェクトが車両である場合、操作入力部31が受け付ける利用者の操作入力は、車両を運転するためのハンドルや、アクセルペダル、ブレーキペダルの操作などである。ハンドルやペダルのかわりに、マウスなどで操作を入力してもよい。
通信I/F部32は、他の装置、例えばサーバ12との間で通信制御を行うインタフェースである。通信I/F部32は、ネットワーク13を介してサーバ12と各種情報を送受信する。例えば、通信I/F部32は、構築した仮想世界を示す各種の画面の画像情報や音声情報、振動情報などクライアント11で仮想世界を体験するために用いる各種情報を受信する。また、通信I/F部32は、仮想世界内を走行する車両に対する操作内容を示す操作情報をサーバ12へ送信する。かかる通信I/F部32の一態様としては、LANカードなどのネットワークインタフェースカードを採用できる。
記憶部33は、フラッシュメモリなどの半導体メモリ素子、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部33は、上記の種類の記憶装置に限定されるものではなく、RAM(Random Access Memory)、ROM(Read Only Memory)であってもよい。
記憶部33は、制御部34で実行され、クライアント11を制御するOS(Operating System)や、映像や音声、振動の出力を制御する各種プログラムを記憶する。さらに、記憶部33は、制御部34で実行されるプログラムで使用する各種データを記憶する。かかるデータの一例として、記憶部33は、現在時刻40と、出力用データ41とを記憶する。
現在時刻40は、現在の正確な時刻を示すデータである。本実施例では、サーバ12と全てのクライアント11とで同期して同じ時刻を保持する。例えば、サーバ12とクライアント11が、時刻を保持する同じ時刻同期サーバにNTP(Network Time Protocol)を用いてアクセスして同じ時刻を保持するものとする。この現在時刻40は、図示しない時刻制御部により更新される。この時刻制御部の一例としては、OSやRTC(Real Time Clock)回路が挙げられる。一例として、現在時刻40は、後述の出力制御部53によって参照される。
出力用データ41は、サーバ12から随時送信された仮想世界内の車両のシミュレーション結果を示すデータである。この出力用データ41は、シミュレーション対象時刻と、当該シミュレーション対象時刻において出力する映像、走行音、振動など仮想世界を体験するために出力する各種情報が含まれる。一例として、出力用データ41は、後述の受信部52によって格納される。他の一例として、出力用データ41は、後述の出力制御部53によって参照される。
制御部34は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部34には、各種の集積回路や電子回路を採用できる。例えば、集積回路としては、ASIC(Application Specific Integrated Circuit)が挙げられる。また、電子回路としては、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などが挙げられる。制御部34は、図4に示すように、操作検出部50と、送信部51と、受信部52と、出力制御部53とを有する。
操作検出部50は、操作入力部31に対する各種の操作を検出する処理部である。例えば、操作検出部50は、操作入力部31から入力する操作情報に基づき、仮想世界内を走行する車両に対する操作内容を所定の周期で検出し、操作された操作時刻および検出した操作内容を含んだ操作情報を生成する。
送信部51は、操作情報を送信する処理部である。例えば、送信部51は、操作検出部50により生成された操作情報を通信I/F部32経由でサーバ12へ送信する。
受信部52は、シミュレーション結果を示すシミュレーション情報を受信する処理部である。例えば、受信部52は、通信I/F部32を介してサーバ12からシミュレーション情報を受信する。受信部52は、受信したシミュレーション情報を出力用データ41として記憶部33に格納する。
出力制御部53は、出力部30への各種情報の出力を制御する処理部である。例えば、出力制御部53は、記憶部33に記憶された現在時刻40を参照し、出力用データ41から現在時刻40に対応するシミュレーション対象時刻のシミュレーション情報を読み出す。そして、出力制御部53は、読み出したシミュレーション情報に基づき、映像、走行音、振動などの出力を指示する各種信号を出力部30へ出力する。これにより、出力部30は、制御部34から入力する各種信号に基づいて、利用者が仮想世界を体験するための映像や音響、振動などを出力する。
[サーバ12の構成]
次に、本実施例に係るシミュレーションシステム10に含まれるサーバ12の機能的構成について説明する。図5は、実施例1に係るサーバの機能的構成を示すブロック図である。図5に示すように、サーバ12は、通信I/F部60と、記憶部61と、制御部62とを有する。
通信I/F部60は、他の装置、例えばクライアント11との間で通信制御を行うインタフェースである。通信I/F部60は、ネットワーク13を介してクライアント11と各種情報を送受信する。例えば、通信I/F部60は、構築した仮想世界を示す各種の画面の画像情報や音声情報、振動情報などクライアント11で仮想世界を体験するために用いる各種情報をクライアント11へ送信する。また、通信I/F部60は、クライアント11から仮想世界内を走行する車両に対する操作内容を示す操作情報を受信する。かかる通信I/F部60の一態様としては、LANカードなどのネットワークインタフェースカードを採用できる。
記憶部61は、フラッシュメモリなどの半導体メモリ素子、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部61は、上記の種類の記憶装置に限定されるものではなく、RAM、ROMであってもよい。
記憶部61は、制御部62で実行され、サーバ12を制御するOSや後述するシミュレーションを行うプログラムなど各種プログラムを記憶する。さらに、記憶部61は、制御部62で実行されるプログラムで使用する各種データを記憶する。かかるデータの一例として、記憶部61は、現在時刻70と、予測遅延時間71と、シミュレーション対象時刻72と、オブジェクトデータ73と、環境データ74と、シミュレーション結果データ75とを記憶する。
現在時刻70は、現在の正確な時刻を示すデータである。本実施例では、上述したように、サーバ12と全てのクライアント11とで同期して同じ時刻を保持する。この現在時刻70は、図示しない時刻制御部により更新される。この時刻制御部の一例としては、OSやRTC回路が挙げられる。一例として、現在時刻70は、後述の予測部80、シミュレーション部81、送信部84によって参照される。
予測遅延時間71は、ネットワーク13を介してサーバ12とクライアント11が通信を行う際に想定される遅延時間を示すデータである。この予測遅延時間71は、例えば、過去一定時間における、サーバ12とクライアント11の通信遅延時間の最大値または平均値に既定の調整値を加えた値などとして求めてもよい。予測遅延時間71は、サーバ12が複数のクライアント11と接続している場合、例えば、遅延が最大のものを採用する。一例として、予測遅延時間71は、後述の予測部80、シミュレーション部81、送信部84によって参照される。
シミュレーション対象時刻72は、次にオブジェクトの状態の計算を行う場合の対象時刻を示すデータである。一例として、シミュレーション対象時刻72は、後述の予測部80、シミュレーション部81によって参照、更新される。
ここで、一般に、シミュレーションの計算は、シミュレーション対象時刻72を一定の間隔で進めながら、あるシミュレーション対象時刻72についての仮想世界内のオブジェクト状態を計算する。例えば、シミュレーション対象時刻72を1ステップあたり0.02秒ずつ進め、あるシミュレーション対象時刻72における仮想世界内のオブジェクト状態を計算する。これを、実際の現在時刻の進み方に合わせて繰り返すことにより、仮想世界内のオブジェクトの連続的な変化をリアルタイムでシミュレートすることができる。本実施例では、現在時刻70よりも予測遅延時間71以上先の時刻をシミュレーション対象時刻72とし、実際の現在時刻の進み方に合わせてシミュレーション対象時刻72を所定時間ずつ進めながら、仮想世界内のオブジェクト状態を計算する。
オブジェクトデータ73は、シミュレーションを行うオブジェクトに関する各種情報を示すデータである。例えば、オブジェクトデータ73には、車両の挙動を計算するためのモデルや各種のパラメータが含まれる。一例として、オブジェクトデータ73は、後述のシミュレーション部81、再シミュレーション部87によって参照される。
環境データ74は、シミュレーションの対象とする仮想世界に関する各種情報を示すデータである。例えば、環境データ74には、道路の形状、車線、信号の位置などの道路空間を構築するための各種のデータが含まれる。一例として、環境データ74は、後述のシミュレーション部81、再シミュレーション部87によって参照される。
シミュレーション結果データ75は、各時刻のシミュレーションされた計算結果が記憶されたデータである。一例として、シミュレーション結果データ75は、後述の登録部82によって格納される。他の一例として、シミュレーション結果データ75は、後述のシミュレーション部81、送信部84、再シミュレーション部87によって参照される。他の一例として、シミュレーション結果データ75は、後述の更新部88によって更新される。他の一例として、シミュレーション結果データ75は、後述の削除部83によりデータが削除される。
図6は、実施例1に係るシミュレーション結果データの構成例を示す図である。図6に示すように、シミュレーション結果データ75は、「シミュレーション時刻」の項目を有する。また、シミュレーション結果データ75は、仮想世界内の各オブジェクトの状態を記憶する領域を有する。本実施例では、オブジェクトとして車両21〜23の状態を記憶する領域を有する。車両21〜23の状態を記憶する領域は、操作対象車両である場合、「操作入力」、「位置座標」、「その他状態変数」の各項目に分かれており、自動走行車両である場合、「位置座標」、「その他状態変数」の各項目に分かれている。図6の例では、車両21の状態を記憶する領域が「操作入力」、「位置座標」、「その他状態変数」の各項目に分かれ、車両22、23の状態を記憶する領域が「位置座標」、「その他状態変数」の各項目に分かれている。
シミュレーション時刻の項目は、シミュレーションを行ったシミュレーション対象時刻を格納する領域である。操作入力は、予測された車両に対する操作、または実際に操作された車両に対する操作を格納する領域である。位置座標の項目は、車両の位置を示す座標を格納する領域である。その他状態変数の項目は、シミュレーションに用いた各種の状態変数を格納する領域である。
図6の例は、時刻T0において、車両21は、u1T0、・・・、unT0の操作があり、座標位置がpxT0、pyT0、pzT0であり、その他状態変数がs1T0、・・・、snT0であることを示す。また、時刻T0において、車両22は、座標位置がpbxT0、pbyT0、pbzT0であり、その他状態変数がsb1T0、・・・、sbnT0であることを示す。また、時刻T0において、車両23は、座標位置がpcxT0、pcyT0、pczT0であり、その他状態変数がsc1T0、・・・、sbnT0であることを示す。
図5に戻り、制御部62は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部62には、各種の集積回路や電子回路を採用できる。例えば、集積回路としては、ASICが挙げられる。また、電子回路としては、CPUやMPUなどが挙げられる。制御部62は、図5に示すように、予測部80と、シミュレーション部81と、登録部82と、削除部83と、送信部84と、受信部85と、再予測部86と、再シミュレーション部87と、更新部88とを有する。
このうち、予測部80は、オブジェクトに対する操作を予測する処理部である。一例として、予測部80は、クライアント11において車両に対する操作が入力されるよりも予測遅延時間71に記憶された遅延時間以上前に各時刻における車両に対する操作を予測する。例えば、予測部80は、現在時刻70よりも予測遅延時間71に記憶された遅延時間以上先としたシミュレーション対象時刻72におけるクライアント11での車両に対する操作を予測する。この操作の予測方法は、何れの方式を用いてもよい。例えば、予測部80は、それぞれクライアント11から受信した直前の操作が継続されるものとしてシミュレーション対象時刻72の操作を予測してもよい。また、予測部80は、それぞれクライアント11から受信した直前の所定時間の操作量の平均値をシミュレーション対象時刻72の操作と予測してもよい。また、予測部80は、ハンドルが操舵された場合やペダルの踏み込み量が変化した場合、ハンドルの回転速度や踏み込み量の変化を維持するものとしてシミュレーション対象時刻72の操作を予測してもよい。また、予測部80は、予測されたシミュレーション対象時刻72の操作が所定の許容範囲を超える場合、許容範囲内に補正してもよい。また、予測部80は、予測された操作に1以下の所定の係数を乗算してシミュレーション対象時刻72の操作としてもよい。
シミュレーション部81は、仮想世界上のオブジェクトの状態をシミュレーションする処理部である。一例として、シミュレーション部81は、予測部80により予測した操作に基づいて各時刻における仮想世界上のオブジェクトの状態をシミュレーションする。例えば、シミュレーション部81は、環境データ74に基づき、シミュレーション対象とする道路空間を構築する。また、シミュレーション部81は、現在時刻70よりも予測遅延時間71に記憶された遅延時間以上先の時刻をシミュレーション対象時刻72とする。そして、シミュレーション部81は、オブジェクトデータ73およびシミュレーション結果データ75に基づき、1ステップ前のシミュレーション対象時刻72の各車両に対して、それぞれ予測した操作が行われた場合の車両の位置など車両の挙動を計算する。シミュレーション部81は、シミュレーション対象時刻72での車両の挙動の計算が完了すると、シミュレーション対象時刻72を一定時間進め、次のシミュレーション対象時刻72で車両の挙動の計算を行う。
登録部82は、シミュレーション結果を記憶部61に登録する処理部である。例えば、登録部82は、予測部80により予測した各時刻の操作を示す操作情報、シミュレーション部81によるシミュレーション結果を示す情報、シミュレーションに用いた各種の状態変数などの情報をシミュレーション結果データ75に登録する。
図6は、シミュレーション対象時刻T3について、操作入力予測およびオブジェクト状態の計算を行った直後の例である。図6の例では、シミュレーション対象時刻T0からT3までの予測した操作の履歴およびオブジェクトの状態の履歴が保持されている。例えば、シミュレーション対象時刻T0における予測した操作の値、u1T0、・・・、unT0などが保持されている。予測した操作は、実際には主に数値として保持され、それぞれの値が、たとえばハンドルの操作量、ペダルの操作量などの、操作入力値に対応する。その他のシミュレーション対象時刻についても、予測した操作やオブジェクトの状態が、操作入力値や、オブジェクトの位置座標の値、オブジェクトの状態を表す状態変数の値などとして保持される。
シミュレーション結果データ75には、過去規定時間分、あるいは既定ステップ分、予測した操作を示す操作情報、オブジェクトの状態、シミュレーションに用いた各種の状態変数などの情報を履歴として保持する。
削除部83は、過去規定時間分、あるいは既定ステップ分以上経過したシミュレーション対象時刻のデータをシミュレーション結果データ75から削除する。例えば、削除部83は、現在時刻70から予測遅延時間71に記憶された遅延時間の2倍以上後となったシミュレーション対象時刻のデータをシミュレーション結果データ75から削除する。
送信部84は、クライアント11で仮想世界を体験するために用いる各種情報をクライアント11へ送信する処理部である。一例として、送信部84は、シミュレーション結果を示すシミュレーション情報を時刻順に通信I/F部60を介してクライアント11へ送信する。例えば、送信部84は、シミュレーション結果データ75からシミュレーション対象時刻が最も後の、すなわち、現在時刻70から予測遅延時間71に記憶された遅延時間分以上先の時刻の各車両の位置座標をクライアント11へ送信する。
受信部85は、オブジェクトに対する操作内容を示す操作情報を受信する処理部である。例えば、受信部85は、通信I/F部60を介してクライアント11から仮想世界内を走行する車両に対する操作内容を示す操作情報を受信する。この操作情報には、操作内容を示す情報と共に操作された操作時刻が含まれている。
再予測部86は、操作の再予測を行う処理部である。一例として、再予測部86は、受信した操作が、当該受信した操作が行われた時刻の予測した操作と所定以上異なる場合、操作の再予測を行う。例えば、再予測部86は、受信部85でいずれかのクライアント11での操作情報を受信した場合、操作情報により示される受信した操作が、シミュレーション結果データ75の当該受信した操作が行われた時刻の予測した操作と所定以上異なるか否か判定する。再予測部86は、判定の結果、受信した操作が予測した操作と所定以上異なる場合、受信した操作に基づいて、当該受信した操作が行われた時刻以降の操作を再予測する。この操作の再予測方法は、何れの方式を用いてもよい。例えば、再予測部86は、予測部80で用いた予測方法を同じ予測方法を用いて再予測を行う。再予測部86は、再予測した操作を再予測前の操作と比較し、差分が既定の閾値以上である場合は、シミュレーション対象時刻72を一定時間進め、次のシミュレーション対象時刻72で操作を再予測を行う。
再シミュレーション部87は、仮想世界上のオブジェクトの状態を再シミュレーションする処理部である。一例として、再シミュレーション部87は、再予測部86において再予測された操作が以前の操作と異なる場合、再予測した操作に基づいて受信した操作が行われた時刻以降のオブジェクトの状態を再シミュレーションする。例えば、再シミュレーション部87は、環境データ74に基づき、シミュレーション対象とする道路空間を構築する。また、再シミュレーション部87は、操作が行われた時刻をシミュレーション対象時刻72とする。そして、再シミュレーション部87は、オブジェクトデータ73およびシミュレーション結果データ75に基づき、1ステップ前のシミュレーション対象時刻72の各車両に対して、それぞれ再予測した操作が行われた場合の車両の挙動を計算する。再シミュレーション部87は、再シミュレーションした車両の挙動を再シミュレーション前の車両の挙動と比較し、差分が既定の閾値以上である場合は、シミュレーション対象時刻72を一定時間進め、次のシミュレーション対象時刻72で車両の挙動の計算を行う。
更新部88は、記憶部61に記憶されシミュレーション結果データ75を更新する処理部である。一例として、更新部88は、シミュレーション結果データ75の受信した操作が行われた時刻以降の予測した操作およびオブジェクトの状態を、再予測した操作および再シミュレーションしたオブジェクトの状態に更新する。例えば、更新部88は、再予測部86により再予測された操作が以前の操作と異なる場合、再予測した操作に更新する。また、更新部88は、再シミュレーション部87により再シミュレーションされた車両の挙動が以前の挙動と異なる場合、再シミュレーションした車両の挙動に更新する。
[タイムチャート]
次に、タイムチャートを用いてシミュレーションシステム10によるシミュレーションの流れを説明する。図7は、シミュレーションの流れを示すタイムチャートである。図7の例では、シミュレーション対象時刻、再計算時刻および現在時刻の流れを上下方向の線により示している。また、図7の例では、シミュレーション対象時刻および現在時刻の線の脇に括弧で対象とする時刻を示し、再計算時刻の線の脇に括弧で再計算するシミュレーション対象時刻の範囲を示している。
サーバ12は、クライアント11において仮想世界上の車両に対する操作が入力されるよりもネットワーク13の遅延時間以上前に各時刻における車両に対する操作を予測して各時刻における車両の挙動をシミュレーションする。そして、サーバ12は、シミュレーション結果を示すシミュレーション情報を時刻順にクライアント11へ送信する。例えば、図7の例では、サーバ12は、クライアント11の現在時刻がT1となる前にシミュレーション対象時刻T1での車両に対する操作を予測して車両の挙動をシミュレーションする。そして、サーバ12は、シミュレーション対象時刻T1のシミュレーション結果を示すシミュレーション情報をクライアント11へ送信する。サーバ12は、シミュレーション対象時刻T2、T3についても同様に、順次、操作を予測して車両の挙動をシミュレーションを行い、シミュレーション結果を示すシミュレーション情報をクライアント11へ送信する。
クライアント11は、現在時刻がシミュレーション対象時刻となると、シミュレーション対象時刻となったシミュレーション情報に基づいて映像・音響の生成および出力を行う。そして、クライアント11は、ユーザから受け付けた操作内容を示す操作情報をサーバ12へ送信する。図7の例では、クライアント11は、クライアント11の現在時刻がT1となるとシミュレーション対象時刻T1でのシミュレーション情報に基づいて映像・音響の生成および出力を行う。そして、クライアント11は、時刻T1でユーザから受け付けた操作内容を示す操作情報をサーバ12へ送信する。
サーバ12は、クライアント11から操作情報を受信すると、受信した操作情報の操作と、当該操作が行われた時刻の予測した操作とを比較する。サーバ12は、受信した操作情報の操作が予測した操作と所定以上異なる場合、受信した操作情報の操作に基づいて、当該受信した操作情報の操作が行われた時刻以降の操作を再予測する。そして、サーバ12は、再予測した操作に基づいて、受信した操作情報の操作が行われた時刻以降の車両の挙動を再シミュレーションする。図7の例では、サーバ12は、クライアント11から受信した時刻T1の操作情報の操作がシミュレーション対象時刻T1の予測した操作と所定以上異なる場合、シミュレーション対象時刻T1〜T3の操作を再予測する。そして、サーバ12は、再予測した操作に基づいてシミュレーション対象時刻T1〜T3について車両の挙動を再シミュレーションし、シミュレーション対象時刻T1〜T3のシミュレーション結果データ75を更新する。
そして、サーバ12は、シミュレーション対象時刻T4に進め、車両に対する操作を予測し、1ステップ前のシミュレーション対象時刻T3の各車両に対して、それぞれ予測した操作が行われた場合の車両の位置など車両の挙動を計算する。
図8は、実施例1に係るシミュレーション結果データの構成例を示す図である。図8の例では、クライアント11から受信した時刻T1の操作情報の操作がシミュレーション対象時刻T1の予測した操作と所定以上異なるため、時刻T1の操作が、実際の操作u1’T1、・・・、un’T1に更新されている。また、図8の例では、時刻T2〜T3についても、操作入力、位置座標、その他状態変数の項目が再計算の対象となり、前時刻の更新された値に基づいて操作およびオブジェクトの状態が再計算されて更新される。図8の例では、時刻T4については、更新されたT1〜T3の情報に基づいて操作の予測および車両の挙動のシミュレーションが行われている。なお、実際に再計算される部分は、前時刻での更新前後の差分が既定の閾値以上の部分および差分が既定の閾値以上の部分を参照して計算される部分のみであり、それ以外の部分は再計算されない。時刻T4における予測された操作および車両の挙動は、直前にクライアント11から受け取った実際の操作の情報に基づいて再計算された操作および車両の挙動に基づいて計算されるため、実際の操作が反映される前よりも現在の状態に近い状態となる。
次に、本実施例に係るシミュレーションシステム10により求まる車両の挙動の一例を説明する。図9は、実施例1に係るシミュレーションシステムにより求めた車両の移動経路の一例を示す図である。図9の例では、時刻T0まではハンドルが直進状態であり、時刻T1において、ハンドルを左に切る操作が行われたものとする。図9の例では、ハンドルを左に切る操作により時刻T0〜T8において車両22が通過すべき本来の位置をRT0、RT1・・・RT8により示している。また、図9の例では、ハンドルを左に切る操作により車両22が通過すべき本来の経路を一点鎖線により示している。また、図9の例では、時刻T0〜T8においてサーバ12からクライアント11に通知される車両22の位置をPT0、PT1・・・PT8により示している。また、図9の例では、時刻T1の操作情報により再計算されてサーバ12からクライアント11に通知される車両22の位置をP’T2、P’T3により示している。
サーバ12は、時刻T3まで、時刻T0の操作入力に基づく計算により、車両22がPT0からPT3の経路を通るように車両の挙動を計算する。ここでは、サーバ12は、時刻T4の車両の状態を計算する前に、クライアント11から時刻T1においてハンドルを切ったという操作情報を受け取ったものとする。この場合、サーバ12は、時刻T1の操作情報に基づいて、時刻T2およびT3における操作を再予測して車両の挙動を再シミュレーションする。これにより、時刻T2およびT3における車両22の位置は、P’T2およびP’T3に修正される。サーバ12は、P’T2およびP’T3の車両の位置に基づいて時刻T4のオブジェクト状態計算を行う。このため、時刻T4における車両22の位置は、本来の位置RT4に近いPT4となる。このPT4の位置を含んだ情報がクライアント11に送信され、当該情報に基づいてクライアント11で表示が行われるため、操作入力に対する高い追従性を実現できる。
ここで、比較のため、サーバ12が本実施例の制御を行わず、単にサーバ12が受信した操作情報に基づいて車両の挙動を計算する場合を説明する。図10は、サーバが受信した操作情報に基づいて車両の挙動を計算した場合の車両の移動経路の一例を示す図である。図10の例でも、時刻T0まではハンドルが直進状態であり、時刻T1において、ハンドルを左に切る操作が行われたものとする。図10の例では、ハンドルを左に切る操作により時刻T0〜T8において車両22が通過すべき本来の位置をRT0、RT1・・・RT8により示している。また、図10の例では、ハンドルを左に切る操作により車両22が通過すべき本来の経路を一点鎖線により示している。また、図10の例では、時刻T0〜T8においてサーバ12からクライアント11に通知される車両22の位置をQT0、QT1・・・QT8により示している。
ここでは、サーバ12は、時刻T4の車両の状態を計算する前に、クライアント11から時刻T1においてハンドルを切ったという操作情報を受け取ったものとする。サーバ12は、時刻T3までハンドルが直進状態であるものとして、車両22がQT0からQT3の経路を通るように車両の挙動を計算する。そして、サーバ12は、時刻T4となってハンドルを切ったという操作情報を受け取った時点から操作情報に基づいて車両の挙動を計算した場合、車両22がQT4からQT8の経路を通るように車両の挙動を計算する。このように、サーバ12とクライアント11との間のネットワーク13に遅延がある場合、サーバ12には、クライアント11からの操作情報が即座には伝わらない。このため、サーバ12が受信した操作情報に基づいて車両の挙動を計算すると運転操作に対する車両の応答性が低下する。
また、サーバ12とクライアント11との間のネットワーク13に遅延がある場合、サーバ12からクライアント11へ送信した情報も遅延するため、クライアント11での操作に対する車両の追従性が悪くなる。このように、クライアント11での操作に対する車両の追従性が悪い場合、車両の状態を参照して挙動計算を行う他の自動走行車両の計算にも遅延が生じ、正しい結果が得られなくなる場合がある。例えば、図2に示すように、道路上で操作対象の車両21の前方に低速で走行する自動走行の車両23が存在したとき、クライアント11の利用者は、追い越しのため右にハンドルを切る操作を行ったものとする。この場合、右後方から接近する自動走行の車両22は、車線変更しようとする操作対象の車両21の挙動を見て、衝突を避けるためにブレーキを踏んで減速するなどの行動を取るべきである。しかし、車両21の操作に対する追従性が悪いと、車両22の挙動の応答性も悪くなり、正しい結果が得られない場合がある。
これに対し、本実施例に係るサーバ12は、クライアント11での車両に対する操作を予測し、予測した操作に基づいて車両の挙動をシミュレーションする。そして、本実施例に係るサーバ12は、予測した操作を示す操作情報およびシミュレーションした結果を示すシミュレーション情報をシミュレーション結果データ75に登録する。そして、本実施例に係るサーバ12は、シミュレーション結果データ75からシミュレーション結果を示すシミュレーション情報を順次クライアント11へ送信する。また、本実施例に係るサーバ12は、クライアント装置からオブジェクトに対する操作を受信する。そして、本実施例に係るサーバ12は、受信した操作が予測した操作と所定以上異なる場合、受信した操作に基づいて操作を再予測し、再予測した操作に基づいてオブジェクトの状態を再シミュレーションし、シミュレーション結果データ75を更新する。これにより、クライアント11での車両の応答性の低下を抑えることができる。また、クライアント11での操作入力に対する最新のオブジェクト状態をより正しく計算できる。また、サーバ12でシミュレーションを行うため、クライアント11の構成を複雑にすることなくシミュレーションを行うことができる。
[処理の流れ]
次に、本実施例に係るサーバ12により仮想世界内の複数のオブジェクトの動きをシミュレーションするシミュレーション処理の流れを説明する。図11は、実施例1に係るシミュレーション処理の手順を示すフローチャートである。このシミュレーション処理は、例えば、クライアント11からシミュレーション開始を指示する指示情報が入力した場合に実行される。
図11に示すように、受信部85は、クライアント11から仮想世界内を走行する車両に対する操作内容を示す操作情報を受信したか否か判定する(S10)。操作情報を受信していない場合(S10否定)、後述するステップS12へ移行する。一方、操作情報を受信した場合(S10肯定)、受信部85は、受信した操作情報により示される受信した操作が、シミュレーション結果データ75の当該受信した操作が行われた時刻の予測した操作と所定以上異なるか否か判定する(S11)。
受信した操作が予測した操作と所定以上異ならない場合(S11否定)、予測部80は、現在時刻70よりも予測遅延時間71に記憶された遅延時間以上先としたシミュレーション対象時刻72におけるクライアント11での車両に対する操作を予測する(S12)。シミュレーション部81は、予測した操作に基づいて各時刻における仮想世界上の車両の挙動をシミュレーションする(S13)。登録部82は、予測した操作を示す操作情報、シミュレーションした結果の車両の位置、シミュレーションに用いた各種の状態変数などの情報をシミュレーション結果データ75に登録する(S14)。削除部83は、現在時刻70から予測遅延時間71に記憶された遅延時間の2倍以上後となったシミュレーション対象時刻のデータをシミュレーション結果データ75から削除する(S15)。送信部84は、シミュレーション結果を示すシミュレーション情報をクライアント11へ送信する(S16)。受信部85は、クライアント11からシミュレーション終了を指示する指示情報を受信したか否か判定する(S17)。シミュレーション終了を指示する指示情報を受信した場合(S17肯定)、処理を終了する。一方、シミュレーション終了を指示する指示情報を受信していない場合(S17否定)、ステップS10へ移行する。
一方、受信した操作が予測した操作と所定以上異なる場合(S11肯定)、再予測部86は、受信した操作に基づいて、当該受信した操作が行われた時刻以降の操作を再予測する(S18)。再シミュレーション部87は、再予測された操作が以前の操作と異なる場合、再予測した操作に基づいて受信した操作が行われた時刻以降のオブジェクトの状態を再シミュレーションする(S19)。更新部88は、シミュレーション結果データ75の受信した操作が行われた時刻以降の予測した操作およびオブジェクトの状態を、再予測した操作および再シミュレーションしたオブジェクトの状態に更新し(S20)、ステップS12へ移行する。
次に、本実施例に係るクライアント11によるシミュレーション結果の出力等を行う制御処理の流れを説明する。図12は、実施例1に係る制御処理の手順を示すフローチャートである。この制御処理は、例えば、操作入力部31からシミュレーション開始を指示する指示操作が入力された場合に実行される。
図12に示すように、操作検出部50は、操作入力部31から入力する操作情報に基づき、仮想世界内を走行する車両に対する操作内容を検出し、操作情報を生成する(S30)。送信部51は、生成された操作情報を通信I/F部32経由でサーバ12へ送信する(S31)。受信部52は、サーバ12からシミュレーション情報を受信したか否かを判定する(S32)。シミュレーション情報を受信していない場合(S32否定)、後述するステップS34へ移行する。一方、シミュレーション情報を受信した場合(S32肯定)、受信部52は、受信したシミュレーション情報を出力用データ41として記憶部33に格納する(S33)。出力制御部53は、出力用データ41から現在時刻40に対応するシミュレーション対象時刻のシミュレーション情報を読み出す(S34)。出力制御部53は、読み出したシミュレーション情報に基づき、映像、走行音、振動などの出力を指示する各種信号を出力部30へ出力する(S35)。操作検出部50は、操作入力部31からシミュレーション終了を指示する指示操作を検出したか否か判定する(S36)。シミュレーション終了を指示する指示操作を検出した場合(S36肯定)、処理を終了する。一方、シミュレーション終了を指示する指示操作を検出していない場合(S36否定)、ステップS30へ移行する。
[実施例1の効果]
本実施例に係るサーバ12は、ネットワーク13を介して接続されたクライアント11において仮想世界上のオブジェクトに対する操作が入力されるよりもネットワーク13で想定される遅延時間以上前に各時刻におけるオブジェクトに対する操作を予測する。サーバ12は、予測した操作に基づいて各時刻における仮想世界上のオブジェクトの状態をシミュレーションする。サーバ12は、各時刻の予測した操作を示す操作情報およびシミュレーションした結果を示すシミュレーション情報をシミュレーション結果データ75として記憶部61に登録する。サーバ12は、記憶部61に記憶されたシミュレーション結果を示すシミュレーション情報を時刻順にクライアント11へ送信する。サーバ12は、クライアント11からオブジェクトに対する操作を受信する。サーバ12は、受信した操作が、記憶部61に記憶された、当該受信した操作が行われた時刻の予測した操作と所定以上異なる場合、受信した操作に基づいて、記憶部61に記憶された、当該受信した操作が行われた時刻以降の操作を再予測する。サーバ12は、再予測した操作に基づいて前記受信した操作が行われた時刻以降のオブジェクトの状態を再シミュレーションする。サーバ12は、記憶部61に記憶された、当該受信した操作が行われた時刻以降の予測した操作およびオブジェクトの状態を、再予測した操作および再シミュレーションしたオブジェクトの状態に更新する。これにより、サーバ12によれば、クライアント11の構成を複雑にすることなくシミュレーションを行うことができる。このように、クライアント11の構成が複雑にならず、クライアント11の処理の負荷も低いため、例えば、スマートフォンやタブレット端末など、比較的処理能力の低い端末をクライアント端末とした場合でも、シミュレーションを実行することができる。また、サーバ12によれば、クライアント11での操作に対する応答性の低下を抑えることができる。また、サーバ12によれば、クライアント11での操作入力に対する最新のオブジェクト状態をより正しく計算できる。また、サーバ12によれば、サーバ12でシミュレーションを実行するため、複数のクライアント11により複数のオブジェクトが操作される場合でも、各クライアント11間での同一時刻における各オブジェクトの位置関係に食い違いが生じることを抑制できる。また、サーバ12によれば、仮想世界内のオブジェクト挙動をサーバ上で集中的に計算することにより、オブジェクト間の相互作用を計算モデルに基づいて誤差なく計算することができる。
次に、実施例2について説明する。実施例2に係るシミュレーションシステム10、クライアント11、サーバ12の構成は、上述の実施例1とほぼ同様であるため、異なる部分について説明する。
ここで、仮想世界内の複数のオブジェクトの動きをシミュレーションする場合、オブジェクトが他のオブジェクトの影響を受ける場合がある。例えば、道路を走行する複数の車両の挙動をシミュレーションする場合、車間距離が短くなると衝突しないように速度を低下させる。このように、仮想世界内のオブジェクトは、他のオブジェクトの影響を受ける場合がある。
そこで、サーバ12のシミュレーション部81は、予測部80により予測した操作に基づき、予め定めた影響を及ぼす条件を加えて各時刻における仮想世界上のオブジェクトの状態をシミュレーションする。例えば、シミュレーション部81は、同じ車線の前方に他の車両がいる場合、車間距離が所定の許容値以下となると車間距離が短くなるほど車両の速度を低下させる。
登録部82は、各オブジェクト毎に、シミュレーションで影響が及ぶオブジェクトをさらにシミュレーション結果データ75に登録する。例えば、登録部82は、各車両毎に、影響を受けた車両をシミュレーション結果データ75に登録する。
図13は、実施例2に係るシミュレーション結果データの構成例を示す図である。実施例2に係るシミュレーション結果データ75の構成は、図6に示した実施例1に係るシミュレーション結果データと略同一であるため、異なる部分について説明する。図13に示すように、シミュレーション結果データ75は、自動走行車とされた車両22、23について、「影響を受けたオブジェクト」の項目がさらに設けられている。影響を受けたオブジェクトの項目は、シミュレーションの際に影響を受けた車両を示す情報を格納する領域である。図13の例は、時刻T0において、車両22は、車両21の影響を受けたことを示す。また、時刻T0において、車両23は、影響を受けた車両がないことを示す。
再シミュレーション部87は、再予測された操作が以前の操作と異なる場合、再予測した操作に基づいて受信した操作が行われた時刻以降のオブジェクトの状態を再シミュレーションする。また、再シミュレーション部87は、再シミュレーションされたオブジェクトから影響が及ぶオブジェクトの状態を再シミュレーションする。例えば、再シミュレーション部87は、シミュレーション結果データ75において影響を受けたオブジェクトの項目に登録された車両が1ステップ前のシミュレーション対象時刻で再シミュレーションされた場合、車両の挙動を再シミュレーションする。
図14は、実施例2に係るシミュレーション結果データの構成例を示す図である。なお、図14は、図7に示した流れのシミュレーションが行われた場合の状態を示している。
図14の例では、クライアント11から受信した時刻T1の操作情報の操作がシミュレーション対象時刻T1の予測した操作と所定以上異なるため、時刻T1の操作が、実際の操作u1’T1、・・・、un’T1に更新されている。このため、車両21は、時刻T2〜T3について、車両の挙動が再シミュレーションされる。また、図14の例では、時刻T1〜T3について、車両22は車両21からの影響を受けており、車両23は車両21からの影響を受けていない。そして、図14の例では、車両22は、時刻T3の1ステップ前の時刻T2で車両21が再シミュレーションされている。このため、車両22は、時刻T3について、位置座標、その他状態変数の項目が再計算の対象となり、1ステップ前の更新された値に基づいて操作およびオブジェクトの状態が再計算されて更新される。一方、車両23は、位置座標、その他状態変数の項目が再計算の対象とならない。なお、実際に再計算される部分は、前時刻での更新前後の差分が既定の閾値以上の部分および差分が既定の閾値以上の部分を参照して計算される部分のみであり、それ以外の部分は再計算されない。
図15は、実施例2に係るシミュレーション処理の手順を示すフローチャートである。なお、図11に示す実施例1に係るシミュレーション処理と同一の処理部分については同一の符号を付して説明を省略し、異なる処理部分について説明する。
シミュレーション部81は、予測した操作に基づき、予め定めた影響を及ぼす条件を加えて各時刻における仮想世界上の車両の挙動をシミュレーションする(S13a)。登録部82は、予測した操作を示す操作情報、シミュレーションした結果の車両の位置、シミュレーションで影響を受けたオブジェクト、シミュレーションに用いた各種の状態変数などの情報をシミュレーション結果データ75に登録する(S14a)。再シミュレーション部87は、次のような再シミュレーションを行う(S19a)。すなわち、再シミュレーション部87は、再予測された操作が以前の操作と異なる場合、再予測した操作に基づいて受信した操作が行われた時刻以降のオブジェクトの状態を再シミュレーションする。また、再シミュレーション部87は、再シミュレーションされたオブジェクトから影響が及ぶオブジェクトの状態を再シミュレーションする。
[実施例2の効果]
本実施例に係るサーバ12は、各オブジェクト毎に、シミュレーションで影響が及ぶオブジェクトを記憶部61にさらに登録する。サーバ12は、操作が再予測されたオブジェクトの状態、および記憶部61に記憶された、当該操作が再予測されたオブジェクトの影響が及ぶオブジェクトの状態を再シミュレーションする。これにより、サーバ12によれば、再計算の対象となるデータが減少するため、再シミュレーションの処理負荷を軽減できる。
次に、実施例3について説明する。実施例3に係るシミュレーションシステム10、クライアント11、サーバ12の構成は、上述の実施例1とほぼ同様であるため、異なる部分について説明する。
サーバ12の送信部84は、シミュレーション結果を示すシミュレーション情報と共に予測した操作を示す操作情報を時刻順にクライアント11へ送信する。例えば、送信部84は、シミュレーション結果データ75からシミュレーション対象時刻が現在時刻70から予測遅延時間71に記憶された遅延時間分前の時刻の各車両の位置座標および当該時刻の予測した操作を示す操作情報をクライアント11へ送信する。
図16は、実施例3に係るクライアントの機能的構成を示すブロック図である。なお、クライアント11の構成は、図4に示す実施例1に係るクライアント11とほぼ同様であるため、異なる部分について説明する。図16に示すように、制御部34は、補正部54をさらに有する。
受信部52は、受信したシミュレーション情報および予測した操作を示す操作情報を出力用データ41として記憶部33に格納する。
補正部54は、記憶部33に記憶された現在時刻40を参照し、出力用データ41から現在時刻40に対応するシミュレーション対象時刻のシミュレーション情報および操作情報を読み出す。補正部54は、読み出した操作情報により示される予測した操作を、操作検出部50により検出される操作入力部31から入力する実際の操作と比較する。補正部54は、予測した操作が実際の操作と所定以上異なる場合、当該予測した操作と当該実際の操作の差に基づいて、読み出したシミュレーション情報を補正する。例えば、補正部54は、予測した操作と実際の操作のハンドルの操作量やアクセルの操作量、ブレーキの操作量が所定以上異なる場合、操作量の差に基づいて車両の位置を補正する。
出力制御部53は、補正部54により補正されたシミュレーション情報に基づき、映像、走行音、振動などの出力を指示する各種信号を出力部30へ出力する。これにより、出力部30は、制御部34から入力する各種信号に基づいて、利用者が仮想世界を体験するための映像や音響、振動などを出力する。
次に、本実施例に係るシミュレーションシステム10により求まる車両の挙動の一例を説明する。図17は、シミュレーションシステムにより求めた車両の移動経路の一例を示す図である。図17の例では、時刻T0まではハンドルが直進状態であり、時刻T1において、ハンドルを左に切る操作が行われたものとする。図17の例では、ハンドルを左に切る操作により時刻T0〜T8において車両22が通過すべき本来の位置をRT0、RT1・・・RT8により示している。また、図17の例では、ハンドルを左に切る操作により車両22が通過すべき本来の経路を一点鎖線により示している。また、図17の例では、時刻T0〜T8においてサーバ12からクライアント11に通知される車両22の位置をPT0、PT1・・・PT8により示している。また、図17の例では、クライアント11で補正された車両22の位置をWT2、WT3により示している。
サーバ12は、時刻T3まで、時刻T0の操作入力に基づく計算により、車両22がPT0からPT3の経路を通るように車両の挙動を計算する。このため、サーバ12からクライアント11に通知される時刻T2、T3の車両22の位置をPT1、PT2は、車両22が通過すべき本来の位置RT1、RT2からずれている。この時刻T1〜T3の間、サーバ12は、ハンドルが直進状態であると予測し、予測した操作の操作情報をクライアント11へ送信する。
一方、クライアント11は、受信した操作情報により示される予測した操作を操作入力部31から入力する実際の操作と比較する。そして、クライアント11は、予測した操作が実際の操作と所定以上異なる場合、当該予測した操作と当該実際の操作の差に基づいて、シミュレーション情報を補正する。これにより、時刻T2およびT3における車両22の位置は、WT2、WT3に修正される。すなわち、クライアント11において補正を行うことにより、時刻T2およびT3についても車両22の位置を、本来の位置RT1、RT2に近づけることができる。
図18は、実施例3に係る制御処理の手順を示すフローチャートである。なお、図12に示す実施例1に係るシミュレーション処理と同一の処理部分については同一の符号を付して説明を省略し、異なる処理部分について説明する。
図18に示すように、補正部54は、出力用データ41から現在時刻40に対応するシミュレーション対象時刻のシミュレーション情報を読み出す(S34b)。補正部54は、読み出した操作情報により示される予測した操作が実際の操作と所定以上異なるか否か判定する(S35b)。予測した操作が実際の操作と所定以上異なる場合(S35b肯定)、補正部54は、予測した操作と当該実際の操作の差に基づいて、読み出したシミュレーション情報を補正する(S36b)。一方、予測した操作が実際の操作と所定以上異ならない場合(S35b否定)、後述するステップS37bへ移行する。出力制御部53は、シミュレーション情報に基づき、映像、走行音、振動などの出力を指示する各種信号を出力部30へ出力する(S37b)。操作検出部50は、操作入力部31からシミュレーション終了を指示する指示操作を検出したか否か判定する(S38b)。シミュレーション終了を指示する指示操作を検出した場合(S38b肯定)、処理を終了する。一方、シミュレーション終了を指示する指示操作を検出していない場合(S38b否定)、ステップS30へ移行する。
[実施例3の効果]
本実施例に係るサーバ12は、シミュレーション情報と共に予測した操作の操作情報をさらにクライアント11へ送信する。本実施例に係るクライアント11は、送信された前記シミュレーション情報および操作情報を受信する。クライアント11は、受信した操作情報により示される予測した操作がオブジェクトに対する実際の操作と所定以上異なる場合、当該予測した操作と当該実際の操作の差に基づいて、受信したシミュレーション情報を補正する。クライアント11は、補正したシミュレーション情報に基づいて仮想世界を表示する。これにより、クライアント11によれば、操作に対する高い表示レスポンスを確保できる。
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
例えば、上記の実施例では、仮想世界を道路空間とし、オブジェクトを車両とした場合について説明したが、開示の装置はこれに限定されない。仮想世界およびオブジェクトはどのようなものであってもよい。例えば、オブジェクトは他の種類の乗り物やロボット、あるいは人や動物などのキャラクターであってもよい。
また、上記の実施例2では、シミュレーションで影響が及ぶオブジェクトとして、各車両毎に、影響を受けた車両を記憶する場合について説明したが、開示の装置はこれに限定されない。例えば、各車両毎に、影響を与えた車両を記憶してもよい。
[分散および統合]
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、サーバ12の予測部80、シミュレーション部81、登録部82、削除部83、送信部84、受信部85、再予測部86、再シミュレーション部87、更新部88の各処理部が適宜統合されてもよい。また、クライアント11の操作検出部50、送信部51、受信部52、出力制御部53、補正部54の各処理部が適宜統合されてもよい。また、サーバ12およびクライアント11の各処理部の処理が適宜複数の処理部の処理に分離されてもよい。また、サーバ12およびクライアント11の各処理部を別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上記のサーバ12の機能を実現するようにしてもよい。
10 シミュレーションシステム
11 クライアント
12 サーバ
13 ネットワーク
21 車両
61 記憶部
62 制御部
72 シミュレーション対象時刻
75 シミュレーション結果データ
80 予測部
81 シミュレーション部
82 登録部
84 送信部
85 受信部
86 再予測部
87 再シミュレーション部
88 更新部

Claims (5)

  1. コンピュータが、
    ネットワークを介して接続されたクライアント装置において仮想世界が表示され、当該仮想世界上のオブジェクトに対する操作が入力されるよりも前記ネットワークで想定される所定の遅延時間以上前に各時刻における前記オブジェクトに対する操作を予測し、
    予測した操作に基づいて各時刻における前記仮想世界上のオブジェクトの状態をシミュレーションし、
    各時刻の予測した操作を示す操作情報およびシミュレーションした結果を示すシミュレーション情報を記憶部に登録し、
    前記記憶部に記憶されたシミュレーション結果を示すシミュレーション情報を時刻順に前記クライアント装置へ送信し、
    前記クライアント装置からオブジェクトに対する操作を受信し、
    受信した操作が、前記記憶部に記憶された、当該受信した操作が行われた時刻の予測した操作と所定以上異なる場合、受信した操作に基づいて、前記記憶部に記憶された、当該受信した操作が行われた時刻以降の操作を再予測し、
    再予測した操作に基づいて前記受信した操作が行われた時刻以降のオブジェクトの状態を再シミュレーションし、
    前記記憶部に記憶された、当該受信した操作が行われた時刻以降の予測した操作およびオブジェクトの状態を、再予測した操作および再シミュレーションしたオブジェクトの状態に更新する
    各処理を実行することを特徴とするシミュレーション方法。
  2. 前記記憶部に登録する処理は、各オブジェクト毎に、シミュレーションで影響が及ぶオブジェクトをさらに登録し、
    前記再シミュレーションする処理は、操作が再予測されたオブジェクトの状態、および前記記憶部に記憶された、当該操作が再予測されたオブジェクトの影響が及ぶオブジェクトの状態を再シミュレーションすることを特徴とする請求項1に記載のシミュレーション方法。
  3. 前記クライアント装置へ送信する処理は、前記シミュレーション情報と共に前記操作情報をさらに送信し、
    クライアント装置が、
    送信された前記シミュレーション情報および操作情報を受信し、
    受信した操作情報により示される予測した操作がオブジェクトに対する実際の操作と所定以上異なる場合、当該予測した操作と当該実際の操作の差に基づいて、受信した前記シミュレーション情報を補正し、
    補正した前記シミュレーション情報に基づいて仮想世界を表示する
    各処理をさらに実行することを特徴とする請求項1または2に記載のシミュレーション方法。
  4. ネットワークを介して接続されたクライアント装置において仮想世界が表示され、当該仮想世界上のオブジェクトに対する操作が入力されるよりも前記ネットワークで想定される所定の遅延時間以上前に各時刻における前記オブジェクトに対する操作を予測する予測部と、
    前記予測部により予測した操作に基づいて各時刻における前記仮想世界上のオブジェクトの状態をシミュレーションするシミュレーション部と、
    各時刻の予測した操作を示す操作情報およびシミュレーションした結果を示すシミュレーション情報を記憶する記憶部と、
    前記記憶部に記憶されたシミュレーション結果を示すシミュレーション情報を時刻順に前記クライアント装置へ送信する送信部と、
    前記クライアント装置からオブジェクトに対する操作を受信する受信部と、
    前記受信部により受信した操作が、前記記憶部に記憶された、当該受信した操作が行われた時刻の予測した操作と所定以上異なる場合、受信した操作に基づいて、前記記憶部に記憶された、当該受信した操作が行われた時刻以降の操作を再予測する再予測部と、
    前記再予測部により再予測した操作に基づいて当該受信した操作が行われた時刻以降のオブジェクトの状態を再シミュレーションする再シミュレーション部と、
    前記記憶部に記憶された、当該受信した操作が行われた時刻以降の予測した操作およびオブジェクトの状態を、前記再予測部により再予測した操作および前記再シミュレーション部により再シミュレーションしたオブジェクトの状態に更新する更新部と、
    を有することを特徴とするシミュレーション装置。
  5. コンピュータに、
    ネットワークを介して接続されたクライアント装置において仮想世界が表示され、当該仮想世界上のオブジェクトに対する操作が入力されるよりも前記ネットワークで想定される所定の遅延時間以上前に各時刻における前記オブジェクトに対する操作を予測し、
    予測した操作に基づいて各時刻における前記仮想世界上のオブジェクトの状態をシミュレーションし、
    各時刻の予測した操作を示す操作情報およびシミュレーションした結果を示すシミュレーション情報を記憶部に登録し、
    前記記憶部に記憶されたシミュレーション結果を示すシミュレーション情報を時刻順に前記クライアント装置へ送信し、
    前記クライアント装置からオブジェクトに対する操作を受信し、
    受信した操作が、前記記憶部に記憶された、当該受信した操作が行われた時刻の予測した操作と所定以上異なる場合、受信した操作に基づいて、前記記憶部に記憶された、当該受信した操作が行われた時刻以降の操作を再予測し、
    再予測した操作に基づいて前記受信した操作が行われた時刻以降のオブジェクトの状態を再シミュレーションし、
    前記記憶部に記憶された、当該受信した操作が行われた時刻以降の予測した操作およびオブジェクトの状態を、再予測した操作および再シミュレーションしたオブジェクトの状態に更新する
    各処理を実行させることを特徴とするシミュレーションプログラム。
JP2012075190A 2012-03-28 2012-03-28 シミュレーション方法、シミュレーション装置およびシミュレーションプログラム Expired - Fee Related JP5821745B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012075190A JP5821745B2 (ja) 2012-03-28 2012-03-28 シミュレーション方法、シミュレーション装置およびシミュレーションプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012075190A JP5821745B2 (ja) 2012-03-28 2012-03-28 シミュレーション方法、シミュレーション装置およびシミュレーションプログラム

Publications (2)

Publication Number Publication Date
JP2013206188A JP2013206188A (ja) 2013-10-07
JP5821745B2 true JP5821745B2 (ja) 2015-11-24

Family

ID=49525189

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012075190A Expired - Fee Related JP5821745B2 (ja) 2012-03-28 2012-03-28 シミュレーション方法、シミュレーション装置およびシミュレーションプログラム

Country Status (1)

Country Link
JP (1) JP5821745B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10552573B2 (en) * 2016-03-18 2020-02-04 Toyota Jidosha Kabushiki Kaisha Vehicle simulation device for crowd-sourced vehicle simulation data
WO2021199128A1 (ja) * 2020-03-30 2021-10-07 株式会社ソニー・インタラクティブエンタテインメント 画像データ転送装置、画像生成方法およびコンピュータプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4776978B2 (ja) * 2005-05-18 2011-09-21 株式会社バンダイナムコゲームス プログラム、情報記憶媒体及びゲーム装置
JP3957725B2 (ja) * 2005-10-04 2007-08-15 任天堂株式会社 通信ゲームプログラムおよび通信ゲームシステム
JP2007215781A (ja) * 2006-02-16 2007-08-30 Sega Corp 通信ゲームシステム、ゲーム制御プログラムおよび記憶媒体
JP5460010B2 (ja) * 2008-09-30 2014-04-02 インターナショナル・ビジネス・マシーンズ・コーポレーション シミュレーション方法、システム及びプログラム
JP5652037B2 (ja) * 2010-07-30 2015-01-14 富士通株式会社 模擬映像生成装置、方法、プログラム

Also Published As

Publication number Publication date
JP2013206188A (ja) 2013-10-07

Similar Documents

Publication Publication Date Title
US9427664B2 (en) Highly interactive online multiplayer video games
US6628287B1 (en) Method and apparatus for consistent, responsive, and secure distributed simulation in a computer network environment
US11559898B2 (en) Teleoperation system, method, apparatus, and computer-readable medium
EP3173134B1 (en) Synchronization object determining method, apparatus, and system
JP2022553617A (ja) 途絶の間のアプリケーションへの自動ユーザ入力の提供
US9433863B2 (en) Video processing using concurrent outcome simulation threads
CN112789093A (zh) 在多玩家程序中引入较高输入等待时间
CN112206511A (zh) 游戏中的动作同步方法、装置、电子设备及存储介质
JP7007183B2 (ja) 交通流制御装置、走行シナリオのデータ構造
JP5821745B2 (ja) シミュレーション方法、シミュレーション装置およびシミュレーションプログラム
US8992330B1 (en) System and method for facilitating data model substitutions for pre-existing data objects
JP6452808B2 (ja) 方向予測を利用した低レイテンシーシミュレーション装置及び方法と、そのためのコンピュータプログラム
US8676997B2 (en) System and method for unitized maneuvers for multi-player games
CN110573223B (zh) 游戏装置、计算机可读取的存储介质以及游戏系统
CN106790453B (zh) 一种操作请求的执行方法及装置
JP5149426B2 (ja) 運転シミュレーション装置、サーバ装置、及びプログラム
US10402045B2 (en) Controlling an image displayed on a user interface of a computer device
JP6820781B2 (ja) システム、情報処理装置、情報処理方法及びプログラム
JP2019191821A (ja) モーション処理装置、モーション処理方法、およびプログラム
WO2024066723A1 (zh) 针对虚拟场景的位置更新方法、设备、介质和程序产品
WO2017029812A1 (en) Information processing apparatus, information processing method, and non-transitory computer-readable storage medium
JP6220096B1 (ja) 通信ゲームシステム及び通信ゲーム処理方法
WO2020067133A1 (ja) プログラム、処理装置及び処理方法
CN115131530A (zh) 虚拟引擎上的虚拟角色和虚拟空间的同步融合方法及装置
CN114522416A (zh) 一种虚拟角色的移动控制方法和装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150106

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150821

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150908

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150921

R150 Certificate of patent or registration of utility model

Ref document number: 5821745

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees