IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ トヨタ自動車株式会社の特許一覧

特開2022-187779マルチエージェントシミュレーションシステム及びマルチエージェントシミュレーション方法
<>
  • 特開-マルチエージェントシミュレーションシステム及びマルチエージェントシミュレーション方法 図1
  • 特開-マルチエージェントシミュレーションシステム及びマルチエージェントシミュレーション方法 図2
  • 特開-マルチエージェントシミュレーションシステム及びマルチエージェントシミュレーション方法 図3
  • 特開-マルチエージェントシミュレーションシステム及びマルチエージェントシミュレーション方法 図4
  • 特開-マルチエージェントシミュレーションシステム及びマルチエージェントシミュレーション方法 図5
  • 特開-マルチエージェントシミュレーションシステム及びマルチエージェントシミュレーション方法 図6
  • 特開-マルチエージェントシミュレーションシステム及びマルチエージェントシミュレーション方法 図7
  • 特開-マルチエージェントシミュレーションシステム及びマルチエージェントシミュレーション方法 図8
  • 特開-マルチエージェントシミュレーションシステム及びマルチエージェントシミュレーション方法 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022187779
(43)【公開日】2022-12-20
(54)【発明の名称】マルチエージェントシミュレーションシステム及びマルチエージェントシミュレーション方法
(51)【国際特許分類】
   G06F 9/48 20060101AFI20221213BHJP
   G06F 9/54 20060101ALI20221213BHJP
   G16Z 99/00 20190101ALI20221213BHJP
【FI】
G06F9/48 370
G06F9/54 Z
G16Z99/00
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2021095952
(22)【出願日】2021-06-08
(71)【出願人】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(74)【代理人】
【識別番号】110003199
【氏名又は名称】弁理士法人高田・高橋国際特許事務所
(72)【発明者】
【氏名】鳥越 貴智
(72)【発明者】
【氏名】吉岡 顕
(72)【発明者】
【氏名】桑原 昌広
(72)【発明者】
【氏名】木村 浩章
【テーマコード(参考)】
5L049
【Fターム(参考)】
5L049DD02
(57)【要約】
【課題】様々なサービスの提供と利用が行われる世界を複数のエージェントを用いてシミュレーションすることができるマルチエージェントシミュレーション(MAS)システムを提供する。
【解決手段】MASシステム100は、対象世界で利用される複数のサービスを提供するサービスシステム毎に設けられた複数のバックエンドサーバ400と、複数のエージェントのエージェント毎に設けられた複数のエージェントシミュレータ200とを備える。複数のエージェントシミュレータ200は、第1メッセージの交換によってエージェント同士を相互作用させながら各エージェントの状態をシミュレーションする。複数のバックエンドサーバ400と複数のエージェントシミュレータ200とは、第1メッセージと種類の異なる第2メッセージの交換によって、複数のサービスを同時にシミュレーションする。
【選択図】図1
【特許請求の範囲】
【請求項1】
相互作用する複数のエージェントを用いて対象世界をシミュレーションするマルチエージェントシミュレーションシステムにおいて
前記対象世界で利用される複数のサービスを提供するサービスシステム毎に設けられた複数のバックエンドサーバと、
前記複数のエージェントのエージェント毎に設けられ、第1メッセージの交換によってエージェント同士を相互作用させながら各エージェントの状態をシミュレーションする複数のエージェントシミュレータと、を備え、
前記複数のバックエンドサーバと前記複数のエージェントシミュレータとは、前記第1メッセージと種類の異なる第2メッセージの交換によって、前記複数のサービスを同時にシミュレーションするように構成され、
前記複数のエージェントは、
前記複数のサービスを利用する複数の第1エージェントと、
前記複数のサービスの提供に用いられる複数の第2エージェントと、を含み、
前記複数のエージェントシミュレータは、
前記複数の第1エージェントのそれぞれに設けられ、各第1エージェントの状態をシミュレーションする複数の第1エージェントシミュレータと、
前記複数の第2エージェントのそれぞれに設けられ、各第2エージェントの状態をシミュレーションする複数の第2エージェントシミュレータと、を含み、
前記第2メッセージは、
前記複数の第1エージェントシミュレータのそれぞれから送信される、前記複数の第1エージェントのそれぞれのサービス利用に関する情報を含むメッセージと、
前記複数のバックエンドサーバのそれぞれから送信される、前記複数の第1エージェントのそれぞれに対するサービス提供状態に関する情報を含むメッセージと、
前記複数の第2エージェントシミュレータのそれぞれから送信される、前記複数の第2エージェントのそれぞれの動作状態に関する情報を含むメッセージと、
前記複数のバックエンドサーバのそれぞれから送信される、前記複数の第2エージェントのそれぞれに対する動作指示に関する情報を含むメッセージと、を含む
ことを特徴とするマルチエージェントシミュレーションシステム。
【請求項2】
請求項1に記載のマルチエージェントシミュレーションシステムにおいて、
前記複数のエージェントシミュレータと通信し、前記複数のエージェントシミュレータ間の前記第1メッセージの送受信を制御するセンターコントローラを備え、
前記複数のエージェントシミュレータは、前記複数のエージェントシミュレータ間で前記センターコントローラを介して前記第1メッセージの交換を行い、前記複数のバックエンドサーバとは前記センターコントローラを介さず直接、前記第2メッセージの交換を行う
ことを特徴とするマルチエージェントシミュレーションシステム。
【請求項3】
請求項1又は2に記載のマルチエージェントシミュレーションシステムにおいて、
前記第1エージェントシミュレータは、前記第1エージェントの前記複数のサービスのクライアントとしての振る舞いをシミュレーションするクライアントシミュレータを備える
ことを特徴とするマルチエージェントシミュレーションシステム。
【請求項4】
請求項1乃至3のいずれか1項に記載のマルチエージェントシミュレーションシステムにおいて、
前記複数のバックエンドサーバは、前記複数のサービスを連携させるためのメッセージの交換を行う
ことを特徴とするマルチエージェントシミュレーションシステム。
【請求項5】
相互作用する複数のエージェントを用いて対象世界をシミュレーションするマルチエージェントシミュレーション方法であって、
前記複数のエージェントのエージェント毎に設けられた複数のエージェントシミュレータの間で第1メッセージの交換を行い、前記第1メッセージの交換によってエージェント同士を相互作用させながら各エージェントの状態をシミュレーションすることと、
前記対象世界で利用される複数のサービスのサービスシステム毎に設けられた複数のバックエンドサーバと前記複数のエージェントシミュレータとの間で前記第1メッセージと種類の異なる第2メッセージの交換を行い、前記第2メッセージの交換によって前記複数のサービスを同時にシミュレーションすることと、を含み、
前記複数のエージェントは、
前記複数のサービスを利用する複数の第1エージェントと、
前記複数のサービスの提供に用いられる複数の第2エージェントと、を含み、
前記複数のエージェントシミュレータは、
前記複数の第1エージェントのそれぞれに設けられ、各第1エージェントの状態をシミュレーションする複数の第1エージェントシミュレータと、
前記複数の第2エージェントのそれぞれに設けられ、各第2エージェントの状態をシミュレーションする複数の第2エージェントシミュレータと、を含み、
前記第2メッセージは、
前記複数の第1エージェントシミュレータのそれぞれから送信される、前記複数の第1エージェントのそれぞれのサービス利用に関する情報を含むメッセージと、
前記複数のバックエンドサーバのそれぞれから送信される、前記複数の第1エージェントのそれぞれに対するサービス提供状態に関する情報を含むメッセージと、
前記複数の第2エージェントシミュレータのそれぞれから送信される、前記複数の第2エージェントのそれぞれの動作状態に関する情報を含むメッセージと、
前記複数のバックエンドサーバのそれぞれから送信される、前記複数の第2エージェントのそれぞれに対する動作指示に関する情報を含むメッセージと、を含む
ことを特徴とするマルチエージェントシミュレーション方法。
【請求項6】
請求項5に記載のマルチエージェントシミュレーション方法において、
前記複数のエージェントシミュレータの間では、前記複数のエージェントシミュレータと通信するセンターコントローラを介して前記第1メッセージの交換を行わせ、
前記複数のエージェントシミュレータと前記複数のバックエンドサーバとは、前記センターコントローラを介さず直接、前記第2メッセージの交換を行わせる
ことを特徴とするマルチエージェントシミュレーション方法。
【請求項7】
請求項5又は6に記載のマルチエージェントシミュレーション方法において、
前記第1エージェントシミュレータに設けられたクライアントシミュレータに、前記第1エージェントの前記複数のサービスのクライアントとしての振る舞いをシミュレーションさせる
ことを特徴とするマルチエージェントシミュレーション方法。
【請求項8】
請求項5乃至7のいずれか1項に記載のマルチエージェントシミュレーション方法において、
前記複数のバックエンドサーバに、前記複数のサービスを連携させるためのメッセージの交換を行わせる
ことを特徴とするマルチエージェントシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、相互作用する複数のエージェントを用いて対象世界をシミュレーションするマルチエージェントシミュレーションシステム及びマルチエージェントシミュレーション方法に関する。
【背景技術】
【0002】
相互作用する複数のエージェントを用いて対象世界をシミュレーションするマルチエージェントシミュレーションが知られている。例えば、特許文献1には、マルチエージェントシミュレーションシステムである人流シミュレーションに関する発明が開示されている。この発明では、エージェントの行動を誘発する情報として、例えば施設の移動を提案する情報や、優先利用券に関する情報、サービス券、割引券、クーポン券に関する情報といった移動の動機付けを与える情報がエージェントに与えられる。
【0003】
なお、本開示の技術分野における出願時の技術レベルを示す文献としては、上記特許文献1の他にも下記の特許文献2及び特許文献3を例示することができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2019-021143号公報
【特許文献2】特開2019-212245号公報
【特許文献3】国際公開第2015/132893号
【発明の概要】
【発明が解決しようとする課題】
【0005】
現実の世界では、様々なサービスが提供され利用されている。しかし、様々なサービスの提供と利用が行われる世界をシミュレーションの対象世界とするマルチエージェントシミュレーションについては、さらなる検討の余地がある。
【0006】
本開示は、上述のような課題に鑑みてなされたものである。本開示は、様々なサービスの提供と利用が行われる世界を複数のエージェントを用いてシミュレーションすることができるマルチエージェントシミュレーションシステム及び方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
本開示は、相互作用する複数のエージェントを用いて対象世界をシミュレーションするマルチエージェントシミュレーションシステムを提供する。本開示のシステムは、対象世界で利用される複数のサービスを提供するサービスシステム毎に設けられた複数のバックエンドサーバと、複数のエージェントのエージェント毎に設けられた複数のエージェントシミュレータとを備える。複数のエージェントシミュレータは、第1メッセージの交換によってエージェント同士を相互作用させながら各エージェントの状態をシミュレーションするようにプログラムされている。また、複数のバックエンドサーバと複数のエージェントシミュレータとは、第1メッセージと種類の異なる第2メッセージの交換によって、複数のサービスを同時にシミュレーションするようにプログラムされている。
【0008】
複数のエージェントは、複数のサービスを利用する複数の第1エージェントと、複数のサービスの提供に用いられる複数の第2エージェントとを含む。また、複数のエージェントシミュレータは、複数の第1エージェントシミュレータと、複数の第2エージェントシミュレータとを含む。複数の第1エージェントシミュレータは、複数の第1エージェントのそれぞれに設けられ、各第1エージェントの状態をシミュレーションするようにプログラムされている。複数の第2エージェントシミュレータは、複数の第2エージェントのそれぞれに設けられ、各第2エージェントの状態をシミュレーションするようにプログラムされている。
【0009】
本開示のシステムにおいて、第2メッセージは、複数の第1エージェントシミュレータのそれぞれから送信される、複数の第1エージェントのそれぞれのサービス利用に関する情報を含むメッセージを含む。また、第2メッセージは、複数のバックエンドサーバのそれぞれから送信される、複数の第1エージェントのそれぞれに対するサービス提供状態に関する情報を含むメッセージを含む。また、第2メッセージは、複数の第2エージェントシミュレータのそれぞれから送信される、複数の第2エージェントのそれぞれの動作状態に関する情報を含むメッセージを含む。さらに、第2メッセージは、複数のバックエンドサーバのそれぞれから送信される、複数の第2エージェントのそれぞれに対する動作指示に関する情報を含むメッセージを含む。
【0010】
本開示のシステムは、複数のエージェントシミュレータと通信し、複数のエージェントシミュレータ間の第1メッセージの送受信を制御するセンターコントローラをさらに備えてもよい。この場合、複数のエージェントシミュレータは、複数のエージェントシミュレータ間でセンターコントローラを介して第1メッセージの交換を行い、複数のバックエンドサーバとはセンターコントローラを介さず直接、第2メッセージの交換を行ってもよい。また、本開示のシステムにおいて、第1エージェントシミュレータは、第1エージェントの複数のサービスのクライアントとしての振る舞いをシミュレーションするクライアントシミュレータを備えてもよい。さらに、本開示のシステムにおいて、複数のバックエンドサーバは、それぞれが提供するサービスを相互に連携させるためのメッセージの交換を行ってもよい。
【0011】
本開示は、相互作用する複数のエージェントを用いて対象世界をシミュレーションするマルチエージェントシミュレーション方法を提供する。本開示の方法は、対象世界で利用される複数のサービスを提供するサービスシステム毎に設けられた複数のバックエンドサーバと、複数のエージェントのエージェント毎に設けられた複数のエージェントシミュレータとを使用して実施される。本開示の方法は、複数のエージェントシミュレータの間で第1メッセージの交換を行い、第1メッセージの交換によってエージェント同士を相互作用させながら各エージェントの状態をシミュレーションすることを含む。また、本開示の方法は、複数のバックエンドサーバと複数のエージェントシミュレータとの間で第1メッセージと種類の異なる第2メッセージの交換を行い、第2メッセージの交換によって複数のサービスを同時にシミュレーションすることを含む。
【0012】
複数のエージェントは、複数のサービスを利用する複数の第1エージェントと、複数のサービスの提供に用いられる複数の第2エージェントとを含む。また、複数のエージェントシミュレータは、複数の第1エージェントのそれぞれに設けられた複数の第1エージェントシミュレータと、複数の第2エージェントのそれぞれに設けられた複数の第2エージェントシミュレータとを含む。本開示の方法は、複数の第1エージェントシミュレータに各第1エージェントの状態をシミュレーションさせ、複数の第2エージェントシミュレータに各第2エージェントの状態をシミュレーションさせることを含む。
【0013】
本開示の方法において、第2メッセージは、複数の第1エージェントシミュレータのそれぞれから送信される、複数の第1エージェントのそれぞれのサービス利用に関する情報を含むメッセージを含む。また、第2メッセージは、複数のバックエンドサーバのそれぞれから送信される、複数の第1エージェントのそれぞれに対するサービス提供状態に関する情報を含むメッセージを含む。また、第2メッセージは、複数の第2エージェントシミュレータのそれぞれから送信される、複数の第2エージェントのそれぞれの動作状態に関する情報を含むメッセージを含む。さらに、第2メッセージは、複数のバックエンドサーバのそれぞれから送信される、複数の第2エージェントのそれぞれに対する動作指示に関する情報を含むメッセージを含む。
【0014】
本開示の方法において、複数のエージェントシミュレータの間では、複数のエージェントシミュレータと通信するセンターコントローラを介して第1メッセージの交換を行わせてもよい。複数のエージェントシミュレータと複数のバックエンドサーバとは、センターコントローラを介さず直接、第2メッセージの交換を行わせてもよい。また、本開示の方法において、第1エージェントシミュレータに設けられたクライアントシミュレータに、第1エージェントの複数のサービスのクライアントとしての振る舞いをシミュレーションさせてもよい。さらに、本開示の方法において、複数のバックエンドサーバに、それぞれが提供するサービスを相互に連携させるためのメッセージの交換を行わせてもよい。
【発明の効果】
【0015】
本開示のマルチエージェントシミュレーションシステム及び方法では、シミュレーションの対象世界で利用されるサービスを提供するサービスシステムのバックエンドサーバがそのまま使用される。複数のバックエンドサーバは、複数のエージェントシミュレータと、複数のエージェントシミュレータ間で各エージェントの状態のシミュレーションに用いられる第1メッセージとは種類の異なる第2メッセージを交換する。本開示のマルチエージェントシミュレーションシステム及び方法によれば、複数のバックエンドサーバと複数のエージェントシミュレータとの間での第2メッセージの交換によって、対象世界で提供され利用されている複数のサービスを同時にシミュレーションすることができる。
【図面の簡単な説明】
【0016】
図1】本開示の実施形態に係るマルチエージェントシミュレーションシステムの概要を示す図である。
図2】本開示の実施形態に係るマルチエージェントシミュレーションシステムの概要を示す図である。
図3】本開示の実施形態に係るマルチエージェントシミュレーションシステムの構成を示すブロック図である。
図4】本開示の実施形態に係る歩行者エージェント用のエージェントシミュレータの構成と情報の流れを示すブロック図である。
図5】本開示の実施形態に係る自律移動体エージェント用のエージェントシミュレータの構成と情報の流れを示すブロック図である。
図6】本開示の実施形態に係るVR歩行者エージェント用のエージェントシミュレータの構成と情報の流れを示すブロック図である。
図7】本開示の実施形態に係る路側センサエージェント用のエージェントシミュレータの構成と情報の流れを示すブロック図である。
図8】本開示の実施形態に係るマルチエージェントシミュレーションシステムによるシミュレーション結果の集約と評価のための構成を示すブロック図である。
図9】本開示の実施形態に係るマルチエージェントシミュレーションシステムの物理構成の例を示す図である。
【発明を実施するための形態】
【0017】
以下、図面を参照して本開示の実施形態について説明する。ただし、以下に示す実施形態において各要素の個数、数量、量、範囲等の数に言及した場合、特に明示した場合や原理的に明らかにその数に特定される場合を除いて、その言及した数に、本開示に係る思想が限定されるものではない。また、以下に示す実施形態において説明する構造等は、特に明示した場合や明らかに原理的にそれに特定される場合を除いて、本開示に係る思想に必ずしも必須のものではない。
【0018】
1.マルチエージェントシミュレーションシステムの概要
図1及び図2を用いて、本開示の実施形態に係るマルチエージェントシミュレーションシステムの概要を説明する。以下、マルチエージェントシミュレーションシステムをMASシステムと省略して表記する。
【0019】
1-1.MASシステムの構成及び機能の概略
図1は、本実施形態のMASシステム100の概略構成を示す。MASシステム100は、複数のエージェントを4A,4B,4C,4Dを相互作用させることによって、シミュレーションの対象である世界(シミュレーション対象世界)2をシミュレーションする。本開示のMASシステムによるシミュレーション対象世界には限定はない。ただし、本実施形態のMASシステム100は、人が自律移動する移動体、例えば、ロボットや車両と共存し、自律移動する移動体を用いた様々なサービスの提供を受けることができる世界をシミュレーション対象世界2としている。シミュレーション対象世界2において提供されるサービスとしては、例えば、自律運転車両を用いたオンデマンドバスや定期運行型バスなどのモビリティサービスや、自律移動型のロボットを用いて荷物を配送する物流サービスを挙げることができる。
【0020】
シミュレーション対象世界2は、多数且つ多種類のエージェントによって構成されている。シミュレーション対象世界2を構成するエージェントには、移動物体を表すエージェントと、定置物体を表すエージェントとが含まれる。エージェントとして表される移動物体としては、歩行者、ロボット、低速モビリティ、車両、実在の人がVRシステムを用いて参加する歩行者、エレベータ等が例示される。エージェントとして表される定置物体としては、カメラを含むセンサや自動ドア等が例示される。
【0021】
ただし、図1においては、説明を分かりやすくするため、シミュレーション対象世界2には3つのエージェント4A,4B,4C,4Dのみが表されている。このうちエージェント4A,4Bは歩行者を表し、エージェント4Cは物流ロボットを表し、エージェント4Dは自動運転バスを表している。以下、エージェント4A,4Bを歩行者エージェント4A,4Bと呼び、エージェント4Cを物流ロボットエージェント4Cと呼び、エージェント4Dを自動運転バスエージェント4Dと呼ぶ場合がある。また、以下では、仮想の世界であるシミュレーション対象世界2を実世界と区別して仮想世界2と呼ぶ。
【0022】
MASシステム100は、複数のエージェントシミュレータ200を備える。エージェントシミュレータ200は、エージェント4A,4B,4C,4D毎に設けられている。以下、各エージェントシミュレータ200を区別する場合、歩行者エージェント4Aの状態をシミュレーションするエージェントシミュレータ200をエージェントシミュレータAと表記する。同様に、エージェント4B,4C,4Dの状態をシミュレーションするエージェントシミュレータ200をエージェントシミュレータB,C,Dと表記する。各エージェントシミュレータ200は対象とするエージェントの種類に応じた構成の違いを有している。エージェントの種類別のエージェントシミュレータ200の構成については追って詳述する。
【0023】
エージェントシミュレータ200は、メッセージの交換によってエージェント同士を相互作用させながら各エージェントの状態をシミュレーションする。エージェントシミュレータ200間で交換されるメッセージは、エージェントの仮想世界2内での位置・移動に関する情報(移動情報)を含む。移動情報は、エージェントの位置・移動に関する現状および将来計画に関する情報を含む。現状に関する情報とは、例えば、現在時刻における位置、方向、速度、加速度である。将来計画に関する情報とは、例えば、将来時刻における位置と、方向と、速度と、加速度のリストである。以下、エージェントシミュレータ200間で交換されるエージェントの位置・移動に関するメッセージを移動メッセージと称する。
【0024】
エージェントシミュレータ200は、シミュレーションの対象である対象エージェント(自エージェント)の状態を周囲エージェントの状態に基づいて演算する。周囲エージェントは、自エージェントの周囲に存在し、自エージェントと相互作用する相互作用エージェントである。そして、周囲エージェントの状態を表す情報が移動メッセージである。各エージェントシミュレータ200は、他のエージェントシミュレータ200と移動メッセージを交換しあうことで、周囲エージェントの状態を把握することができる。
【0025】
MASシステム100は、エージェントシミュレータ200と通信するセンターコントローラ300を備える。MASシステム100では、エージェントシミュレータ200間の移動メッセージの交換は、センターコントローラ300を介して行われる。エージェントシミュレータ200とセンターコントローラ300との間において実線で示される情報の流れは移動メッセージの流れを示している。
【0026】
図1に示す例では、エージェントシミュレータAから出力された移動メッセージはセンターコントローラ300が受信する。そして、センターコントローラ300は、エージェントシミュレータB,C,Dに対してエージェントシミュレータAの移動メッセージを送信する。同様に、エージェントシミュレータBの移動メッセージは、センターコントローラ300によってエージェントシミュレータA,C,Dに送信される。また、エージェントシミュレータCの移動メッセージは、センターコントローラ300によってエージェントシミュレータA,B,Dに送信され、エージェントシミュレータDの移動メッセージは、センターコントローラ300によってエージェントシミュレータA,B,Cに送信される。
【0027】
MASシステム100は、仮想世界2で提供されるサービスをシミュレーションすることができる。MASシステム100でシミュレーションされるサービスとしては、例えば、自律運転車両を用いたオンデマンドバスや定期運行型バスなどのモビリティサービスや、自律移動型のロボットを用いて荷物を配送する配送サービスを挙げることができる。また、MASシステム100でシミュレーションされるサービスは、典型的には、ユーザがユーザ端末においてサービスアプリを操作することによって利用可能となるサービスである。
【0028】
図1に示す例では、自動運転バスエージェント4Dを用いたオンデマンドバスサービスが歩行者エージェント4Aに対して提供されている。オンデマンドバスサービスでは、歩行者エージェント4Aがサービスアプリの操作により指定した乗車ポイントで自動運転バスエージェント4Dを停車させ、歩行者エージェント4Aを自動運転バスエージェント4Dに乗車させることが行われる。そして、歩行者エージェント4Aがサービスアプリの操作により指定した降車ポイント6で自動運転バスエージェント4Dを停車させ、自動運転バスエージェント4Dから歩行者エージェント4Aを降車させることが行われる。
【0029】
また、図1に示す例では、物流ロボットエージェント4Cを用いた配送サービスも歩行者エージェント4Aに対して提供されている。配送サービスでは、歩行者エージェント4Aが自動運転バスエージェント4Dから降車する降車ポイント6で予め物流ロボットエージェント4Cを待機させることが行われる。そして、自動運転バスエージェント4Dが降車ポイント6に到着したら歩行者エージェント4Aから物流ロボットエージェント4Cへ荷物を受けとり、受け取った荷物を物流ロボットエージェント4Cにより自宅まで配送することが行われる。
【0030】
なお、図1に示す例では、歩行者エージェント4Bはただの歩行者である。しかし、歩行者エージェント4Bが歩きながらユーザ端末を使ってピザを注文し、自分が今歩いている場所まで別の物流ロボットエージェントによりピザを配送してもらうという配送サービスが提供されてもよい。また、仮想世界2では、自律移動する移動体を用いたサービス以外にも、チケットの販売や車両の充電等の実世界と同様のサービスが提供されてもよい。
【0031】
仮想世界2におけるサービスの提供はサービスシステム用のバックエンドサーバ400によって行われる。MASシステム100は、サービスシステム毎にバックエンドサーバ400を備える。バックエンドサーバ400は、現実世界のサービスシステムにおいて実際に用いられるものと同じバックエンドサーバである。
【0032】
また、MASシステム100は異なるサービスシステム用の複数のバックエンドサーバ400を備えている。図1に示す例では、オンデマンドバスサービスを提供するためのバックエンドサーバ400と、配送サービスを提供するためのバックエンドサーバ400とが備えられる。これにより、仮想世界2において同時に複数種類のサービスをシミュレーションすることができる。以下、各バックエンドサーバ400を区別する場合、オンデマンドバスサービスを提供するサービスシステム用のバックエンドサーバ400をバックエンドサーバXと表記する。また、配送サービスを提供するサービスシステム用のバックエンドサーバ400をバックエンドサーバYと表記する。
【0033】
MASシステム100によるサービスのシミュレーションは、バックエンドサーバ400とエージェントシミュレータ200との間でのサービスメッセージの交換によって行われる。エージェントシミュレータ200とバックエンドサーバ400との間において点線で示される情報の流れはサービスメッセージの流れを示している。各バックエンドサーバ400は、サービスの提供に関係するエージェントシミュレータ200との間でサービスメッセージを交換する。図1に示す例では、バックエンドサーバXは、エージェントシミュレータA,Dとの間でサービスメッセージを交換し、バックエンドサーバYは、エージェントシミュレータA,Cとの間でサービスメッセージを交換する。
【0034】
交換されるサービスメッセージの内容は、エージェントシミュレータ200が担当するエージェントの種類によって異なる。エージェントシミュレータAが担当する歩行者エージェント4Aは、バックエンドサーバX,Yを用いる各サービスシステムから提供されるサービスを利用するエージェントである。バックエンドサーバX,Yは、サービス利用情報を含むサービスメッセージをエージェントシミュレータAから受信する。サービス利用情報とは、ユーザのサービスシステムの利用に関する現状および将来計画に関する情報であり、現在の利用状態とアプリ操作による入力情報を含む。また、バックエンドサーバX,Yは、サービス提供状態情報を含むサービスメッセージをエージェントシミュレータAに送信する。サービス提供状態情報とは、サービスシステムにおけるユーザの状態に関する情報であり、ユーザ端末のサービスアプリを通じて提供される情報である。
【0035】
エージェントシミュレータDが担当する自動運転バスエージェント4Dは、バックエンドサーバXを用いるサービスシステムによってサービスの提供に用いられるエージェントである。エージェントシミュレータCが担当する物流ロボットエージェント4Cは、バックエンドサーバYを用いるサービスシステムによってサービスの提供に用いられるエージェントである。バックエンドサーバX,Yは、動作状態情報を含むサービスメッセージをエージェントシミュレータC,Dから受信する。動作状態情報とは、物流ロボットや自動運転バスの現状および将来計画に関する情報である。現状に関する情報とは、例えば、搭載センサのステータス、測定データ、搭載アクチュエータのステータス、行動決定に関するステータスである。将来計画に関する情報とは、例えば、将来時刻と、アクチュエータのステータスと、行動決定に関するステータスのリストである。また、バックエンドサーバX,Yは、動作指示情報を含むサービスメッセージをエージェントシミュレータC,Dに送信する。動作指示情報は、物流ロボットや自動運転バスを用いてサービスを提供するための将来計画の全部或いは一部を含む情報である。例えば、物流ロボットや自動運転バスが移動すべき目標地点や経路は動作指示情報に含まれる。
【0036】
MASシステム100では、複数のバックエンドサーバ400間でそれぞれの取り決めのもとでサービスメッセージの交換を行う。このとき交換されるサービスメッセージには、例えば、それぞれのサービスにおけるユーザの利用状態やサービスの提供状況が含まれる。複数のバックエンドサーバ400間でサービスメッセージを交換することによって、仮想世界2において提供されるサービスを互いに連携させることができる。
【0037】
図1に示す例では、バックエンドサーバXとバックエンドサーバYとの間でサービスメッセージの交換が行われる。オンデマンドバスサービスと配送サービスとを連携させることで、例えば、歩行者エージェント4Aが自動運転バスエージェント4Dから降車する降車ポイント6で物流ロボットエージェント4Cを待機させておくことができる。また、渋滞などにより自動運転バスエージェント4Dが遅れる場合や、歩行者エージェント4Aが予定していた自動運転バスエージェント4Dに乗り遅れる場合がある。そのような場合には、バックエンドサーバX,Y間でサービスメッセージを交換することにより、物流ロボットエージェント4Cを降車ポイント6に向かわせる時間を歩行者エージェント4Aの予測到着時間に合わせることができる。
【0038】
1-2.MASシステムにおけるサービスメッセージの具体例
図2は、図1に示す仮想世界2において交換されるサービスメッセージの具体例を示す。図2において実線は移動メッセージの流れを示し、点線はサービスメッセージの流れを示している。
【0039】
図2に示すエージェントシミュレータ200は、エージェントシミュレータA,B,C,Dに加えてエージェントシミュレータE,Fを含む。エージェントシミュレータEが担当するエージェントは固定カメラである。エージェントシミュレータFが担当するエージェントは自動ドアである。仮想世界2に存在するエージェントには、固定カメラを含む路側センサや自動ドアのような定置物体が含まれる。
【0040】
以下、各サービスにおけるサービスメッセージの内容の具体例について説明する。
【0041】
オンデマンドバスサービスでは、エージェントシミュレータAとバックエンドサーバXとの間では、ユーザ端末のサービスアプリによるサービスの依頼と、それに対するバックエンドサーバXからの応答とが行われる。そして、エージェントシミュレータDとバックエンドサーバXとの間では、バックエンドサーバXからエージェントシミュレータDに乗客のID、乗車ポイント、降車ポイント、及び経路の指示が行われる。その後、バックエンドサーバXによる状態監視を含む自動運転バスエージェント4Dの管制が行われる。
【0042】
配送サービスでは、エージェントシミュレータAとバックエンドサーバYとの間では、ユーザ端末のサービスアプリによるサービスの依頼と、それに対するバックエンドサーバYからの応答とが行われる。そして、エージェントシミュレータCとバックエンドサーバYとの間では、バックエンドサーバYからエージェントシミュレータCに物流ロボットエージェント4Cに対する動作指示が送られる。その後、バックエンドサーバYによる状態監視を含む物流ロボットエージェント4Cの管制が行われる。また、バックエンドサーバYは、エージェントシミュレータFに対して物流ロボットエージェント4Cの通行のための自動ドアの開扉を指示する。さらに、バックエンドサーバYは、仮想世界2における物流ロボットエージェント4Cの位置情報の計算に必要な固定カメラの画像情報をエージェントシミュレータEから入手する。なお、エージェントシミュレータEには、画像情報を生成するために必要な周囲エージェントの位置情報がセンターコントローラ300から送られる。
【0043】
2.MASシステムの全体構成と情報の流れ
以下、MASシステム100の全体構成と情報の流れについて図3を用いて説明する。図3に示すように、MASシステム100は、複数のエージェントシミュレータ200と、1つのセンターコントローラ300と、複数のサービスシステム用のバックエンドサーバ400とを備えている。詳細については後述するが、これらは複数のコンピュータに分散して設けられる。つまり、MASシステム100は、複数のコンピュータによる並列分散処理を前提とするシステムである。
【0044】
センターコントローラ300は、その機能として、移動メッセージディスパッチャ310と、シミュレーションコンダクタ320とを備える。センターコントローラ300は、コンピュータにインストールされたアプリケーションソフトウェアである。移動メッセージディスパッチャ310とシミュレーションコンダクタ320とは、アプリケーションソフトウェアを構成するプログラムである。センターコントローラ300は、1又は複数のエージェントシミュレータ200とハードウェアであるコンピュータを共用することもできるが、好ましくは、1つのコンピュータを専用する。
【0045】
移動メッセージディスパッチャ310は、エージェントシミュレータ200間の移動メッセージの送受信を中継する。エージェントシミュレータ200と移動メッセージディスパッチャ310との間において実線で示される情報の流れは移動メッセージの流れを示している。センターコントローラ300が備える上述の移動メッセージの交換機能は、移動メッセージディスパッチャ310が担っている。移動メッセージディスパッチャ310は、MASシステム100を構成する全てのエージェントシミュレータ200との間で通信を行う。
【0046】
シミュレーションコンダクタ320は、エージェントシミュレータ200との間でのシミュレーション制御メッセージの交換によってエージェントシミュレータ200によるシミュレーションを制御する。エージェントシミュレータ200とシミュレーションコンダクタ320との間において破線で示される情報の流れはシミュレーション制御メッセージの流れである。シミュレーションコンダクタ320は、MASシステム100を構成する全てのエージェントシミュレータ200との間で通信を行い、シミュレーション制御メッセージを交換する。移動メッセージが移動メッセージディスパッチャ310を介して複数のエージェントシミュレータ200間で交換されるのと異なり、シミュレーション制御メッセージは、シミュレーションコンダクタ320と個々のエージェントシミュレータ200との間で個別に交換される。シミュレーション制御メッセージの交換により、例えば、シミュレーション速度、シミュレーションの停止、シミュレーションの休止、シミュレーションの再開、及びシミュレーションの時間粒度が制御される。シミュレーション速度は、MASシステム100全体として制御されるのに対し、シミュレーションの停止、シミュレーションの休止、シミュレーションの再開、及びシミュレーションの時間粒度は、エージェントシミュレータ200毎に制御される。
【0047】
バックエンドサーバ400は、現実世界のサービスシステムにおいて実際に用いられるものと同じバックエンドサーバである。MASシステム100は異なるサービスシステム用の複数のバックエンドサーバ400を備える。サービスのシミュレーションは、バックエンドサーバ400とエージェントシミュレータ200との間でのサービスメッセージの交換によって行われる。ただし、移動メッセージとは異なり、サービスメッセージの交換はセンターコントローラ300を介さずに直接行われる。エージェントシミュレータ200とバックエンドサーバ400との間、及びバックエンドサーバ400間において点線で示される情報の流れはサービスメッセージの流れを示している。
【0048】
MASシステム100では、複数のバックエンドサーバ400と複数のエージェントシミュレータ200との間でのサービスメッセージの交換によって、現実世界で提供され利用されている複数のサービスが同時にシミュレーションされる。さらに、サービスメッセージの交換はセンターコントローラ300を介さずに直接行われるので、各バックエンドサーバ400のそれぞれの処理能力はシミュレーションにそのまま反映される。これにより、複数のサービスシステムにより提供されるサービスを同時に高精度にシミュレーションすることができる。
【0049】
エージェントシミュレータ200は、担当するエージェントの種類に応じて複数の種類が存在する。例えば、歩行者エージェント用のエージェントシミュレータ201、自律ロボット/車両エージェント用のエージェントシミュレータ202、VR歩行者エージェント用のエージェントシミュレータ203、及び路側センサエージェント用のエージェントシミュレータ204が存在する。以下、エージェントシミュレータ200とは、これら複数種類のエージェントシミュレータ201,202,203,204の総称とする。
【0050】
エージェントシミュレータ200は、その機能として、送受信コントローラ210、3D物理エンジン220、サービスシステムクライアントシミュレータ230、及びシミュレータコア240を備える。エージェントシミュレータ200は、コンピュータにインストールされたアプリケーションソフトウェアである。送受信コントローラ210、3D物理エンジン220、サービスシステムクライアントシミュレータ230、及びシミュレータコア240は、アプリケーションソフトウェアを構成するプログラムである。これらの機能は、エージェントシミュレータ201,202,203,204の間で異なっている。ここでは、エージェントシミュレータ201,202,203,204間で概ね共通する機能について説明し、それぞれのエージェントシミュレータ201,202,203,204の機能の詳細については後述する。
【0051】
送受信コントローラ210は、エージェントシミュレータ200と他のプログラムとの間のインタフェースである。送受信コントローラ210は、移動メッセージディスパッチャ310からの移動メッセージの受信と、移動メッセージディスパッチャ310への移動メッセージの送信とを行う。ただし、エージェントシミュレータ204においては、移動メッセージの受信のみが行われる。送受信コントローラ210は、シミュレーションコンダクタ320からのシミュレーション制御メッセージの受信と、シミュレーションコンダクタ320へのシミュレーション制御メッセージの送信とを行う。また、送受信コントローラ210は、バックエンドサーバ400からのサービスメッセージの受信と、バックエンドサーバ400へのサービスメッセージの送信とを行う。ただし、エージェントシミュレータ204においては、サービスメッセージの送信のみが行われる。
【0052】
3D物理エンジン220は、他のエージェントシミュレータ200から受信した移動メッセージに基づいて3次元空間における周囲エージェントの現在の状態を推定する。図3を用いて説明した周囲エージェントの過去の状態に基づく現在の状態の推定は、3D物理エンジン220によって行われる。3D物理エンジン220は、周囲エージェントの現在の状態に基づいて自エージェントからの観測で得られる周辺情報を生成する。また、3D物理エンジン220は、後述するシミュレータコア240によるシミュレーション結果に基づいて3次元空間における自エージェントの状態を更新し、自エージェントの状態を表した移動メッセージを生成する。ただし、エージェントシミュレータ204においては、担当するエージェントは不動であるために自エージェントの状態の更新と移動メッセージの生成とは行われない。
【0053】
サービスシステムクライアントシミュレータ230は、バックエンドサーバ400に係るサービスシステムのクライアントとしての自エージェントの振る舞いをシミュレーションする。送受信コントローラ210で受信されたサービスメッセージは、サービスシステムクライアントシミュレータ230に入力される。そして、サービスシステムクライアントシミュレータ230で生成されたサービスメッセージが送受信コントローラ210から送信される。ただし、エージェントシミュレータ204においては、サービスメッセージの生成のみが行われる。
【0054】
シミュレータコア240は、次のタイムステップにおける自エージェントの状態をシミュレーションする。自エージェントの状態を算出するタイムステップの時間間隔が上述の時間粒度である。シミュレータコア240におけるシミュレーションの内容は、エージェントシミュレータ200の種類毎に異なる。なお、エージェントシミュレータ204は、担当するエージェントが不動であり自エージェントの状態のシミュレーションは不要であるため、シミュレータコア240を有していない。
【0055】
3.エージェントシミュレータの詳細な構成と情報の流れ
次に、MASシステム100を構成する各種類のエージェントシミュレータ201,202,203,204の詳細な構成と情報の流れについて図4乃至図7を用いて説明する。なお、図4乃至図7において、実線で示すブロック間の情報の流れは移動メッセージの流れを示している。また、点線で示すブロック間の情報の流れはサービスメッセージの流れを示している。そして、破線で示すブロック間の情報の流れはシミュレーション制御メッセージの流れを示している。
【0056】
3-1.歩行者エージェント用エージェントシミュレータ
図4は、歩行者エージェント用のエージェントシミュレータ201の構成と情報の流れを示すブロック図である。以下、歩行者エージェント用のエージェントシミュレータ201の全体構成と各部の詳細、及びエージェントシミュレータ201における情報の流れについて説明する。
【0057】
3-1-1.歩行者エージェント用エージェントシミュレータの全体構成
エージェントシミュレータ201は、その機能として、送受信コントローラ211、3D物理エンジン221、サービスシステムクライアントシミュレータ231、及びシミュレータコア241を備える。これらの機能は、概念として、それぞれ送受信コントローラ210、3D物理エンジン220、サービスシステムクライアントシミュレータ230、及びシミュレータコア240に含まれる。
【0058】
送受信コントローラ211は、各種メッセージを受信する機能として、移動メッセージ受信部211a、サービスメッセージ受信部211b、及びコントロールメッセージ受信部211cを備える。また、送受信コントローラ211は、各種メッセージを送信する機能として、移動メッセージ送信部211d、サービスメッセージ送信部211e、及びコントロールメッセージ送信部211fを備える。さらに、送受信コントローラ211は、剰余時間率算出部211gとシミュレーション動作制御部211hとを備える。送受信コントローラ211を構成する各部211a~211hは、それぞれがプログラム或いはプログラムの一部である。
【0059】
3D物理エンジン221は、その機能として、周囲エージェント状態更新部221a、視覚情報生成部221b、及び自エージェント状態更新部221cを備える。3D物理エンジン221を構成する各部221a,221b,221cは、それぞれがプログラム或いはプログラムの一部である。
【0060】
サービスシステムクライアントシミュレータ231は、その機能として、サービス提供状態情報処理部231aとサービス利用情報生成部231bとを備える。サービスシステムクライアントシミュレータ231を構成する各部231a,231bは、それぞれがプログラム或いはプログラムの一部である。
【0061】
シミュレータコア241は、その機能として、全体移動方針決定部241a、行動決定部241b、次タイムステップ状態算出部241d、サービス利用行動決定部241e、及び速度調整部241gを備える。シミュレータコア241を構成する各部241a,241b,241d,241f,241gは、それぞれがプログラム或いはプログラムの一部である。
【0062】
3-1-2.送受信コントローラの詳細
送受信コントローラ211において、移動メッセージ受信部211aは、移動メッセージディスパッチャ310から移動メッセージを受信する。移動メッセージ受信部211aは、受信した移動メッセージを3D物理エンジン221の周囲エージェント状態更新部221aに出力する。また、移動メッセージ受信部211aは、移動メッセージを受信した時刻を含む情報を剰余時間率算出部211gに出力する。
【0063】
サービスメッセージ受信部211bは、バックエンドサーバ400からサービスメッセージを受信する。サービスメッセージ受信部211bは、受信したサービスメッセージをサービスシステムクライアントシミュレータ231のサービス提供状態情報処理部231aに出力する。
【0064】
コントロールメッセージ受信部211cは、シミュレーションコンダクタ320からシミュレーション制御メッセージを受信する。コントロールメッセージ受信部211cは、受信したミュレーション制御メッセージをシミュレーション動作制御部211hに出力する。
【0065】
移動メッセージ送信部211dは、3D物理エンジン221の自エージェント状態更新部221cから自エージェントの現在の状態を含む移動メッセージを取得する。移動メッセージ送信部211dは、取得した移動メッセージを移動メッセージディスパッチャ310に送信する。また、移動メッセージ送信部211dは、移動メッセージの送信完了時刻を含む情報を剰余時間率算出部211gに送信する。
【0066】
サービスメッセージ送信部211eは、サービスシステムクライアントシミュレータ231のサービス利用情報生成部231bからサービス利用情報を含むサービスメッセージを取得する。サービスメッセージ送信部211eは、取得したサービスメッセージをバックエンドサーバ400に送信する。
【0067】
コントロールメッセージ送信部211fは、剰余時間率算出部211gからシミュレーションの速度状況に関する情報を含むシミュレーション制御メッセージを取得する。また、コントロールメッセージ送信部211fは、シミュレーション動作制御部211hからエージェントシミュレータ201の制御状態を含むシミュレーション制御メッセージを取得する。コントロールメッセージ送信部211fは、剰余時間率算出部211gとシミュレーション動作制御部211hとから取得したシミュレーション制御メッセージをシミュレーションコンダクタ320に送信する。
【0068】
剰余時間率算出部211gは、移動メッセージ受信部211aから移動メッセージの受信時刻を含む情報を取得する。また、剰余時間率算出部211gは、移動メッセージ送信部211dから移動メッセージの送信完了時刻を含む情報を取得する。さらに、剰余時間率算出部211gは、シミュレータコア241の次タイムステップ状態算出部241dから自エージェントの状態更新のための計算の開始時刻を取得する。
【0069】
ここで、今回タイムステップでの自エージェントの状態更新のための計算の開始時刻をTa(N)とする。次タイムステップでの自エージェントの状態更新のための計算の開始時刻をTa(N+1)とする。次タイムステップでの自エージェントの状態更新の計算に必要な他エージェントの移動メッセージのうち最後に受信した移動メッセージの受信時刻をTe_last(N)とする。次々タイムステップでの自エージェントの状態更新の計算に必要な他エージェントの移動メッセージのうち最初に受信した移動メッセージの受信時刻をTe_first(N+1)とする。また、今回タイムステップにおける移動メッセージの送信完了時刻をTd(N)とする。
【0070】
剰余時間率算出部211gは、以下の各式により剰余時間、剰余時間率、及び遅れ時間を計算する。
剰余時間=Ta(N+1)-Te_last(N)
剰余時間率=
(Ta(N+1)-Te_last(N))/(Ta(N+1)-Ta(N))
遅れ時間=Td(N)-Te_first(N+1)
【0071】
剰余時間率算出部211gは、剰余時間、剰余時間率、及び遅れ時間を含むシミュレーション制御メッセージをコントロールメッセージ送信部211fに出力する。剰余時間、剰余時間率、及び遅れ時間は、シミュレーションの速度状況に関する情報である。これらの情報を含むシミュレーション制御メッセージを受信したシミュレーションコンダクタ320は、エージェントシミュレータ201に対して指示すべき制御内容を決定する。エージェントシミュレータ201に対して指示すべき制御内容とは、例えば、シミュレーション速度、シミュレーションの停止、シミュレーションの休止、及びシミュレーションの再開である。シミュレーションコンダクタ320は、指示すべき制御内容を含むシミュレーション制御メッセージを作成し、エージェントシミュレータ201に送信する。
【0072】
シミュレーション動作制御部211hは、コントロールメッセージ受信部211cからシミュレーション制御メッセージを取得する。シミュレーション動作制御部211hは、シミュレーション制御メッセージに含まれる指示に従ってエージェントシミュレータ201のシミュレーション動作を制御する。例えば、シミュレーションの時間粒度の変更が指示された場合、シミュレーション動作制御部211hは、エージェントシミュレータ201によるシミュレーションの時間粒度を初期値から指示された時間粒度に変更する。時間粒度の初期値はエージェントシミュレータ201に設定値として記憶されている。また、時間粒度の上限値と下限値は、エージェントの種類ごとにシミュレーションコンダクタ320に記憶されている。
【0073】
シミュレーション制御メッセージによる指示内容がシミュレーション速度である場合、シミュレーション動作制御部211hは、3D物理エンジン221やシミュレータコア241の動作周波数を変化させてシミュレーション速度を加速或いは減速させる。例えば、シミュレータコア241に対しては、指示されたシミュレーション速度をシミュレータコア241の速度調整部241gに出力する。なお、シミュレーション速度は、実世界の時間の流れに対する仮想世界2の時間の流れの速度比を意味する。シミュレーションの停止が指示された場合、シミュレーション動作制御部211hは、エージェントシミュレータ201によるシミュレーションを停止させる。シミュレーションの休止が指示された場合にはシミュレーションを休止させ、再開が指示された場合にシミュレーションを再開させる。シミュレーション動作制御部211hは、エージェントシミュレータ201の現在の制御状態を含むシミュレーション制御メッセージをコントロールメッセージ送信部211fに出力する。
【0074】
3-1-3.3D物理エンジンの詳細
3D物理エンジン221において、周囲エージェント状態更新部221aは、移動メッセージ受信部211aから移動メッセージを取得する。移動メッセージ受信部211aから取得される移動メッセージは、移動メッセージディスパッチャ310を経由して他のエージェントシミュレータから送られた移動メッセージである。周囲エージェント状態更新部221aは、取得した移動メッセージに基づいて自エージェントの周囲に存在する周囲エージェントの現在の状態を推定する。
【0075】
周囲エージェントの現在の状態を過去の状態から推定する場合、周囲エージェント状態更新部221aは、ログに保存されている周囲エージェントの過去の状態を使用する。周囲エージェントの過去の状態を用いて現在の状態を推定する方法は図3を用いて説明した通りである。周囲エージェント状態更新部221aは、推定した周囲エージェントの現在の状態を視覚情報生成部221bに出力するとともに、ログを更新する。
【0076】
視覚情報生成部221bは、周囲エージェント状態更新部221aから周囲エージェントの現在の状態を取得する。視覚情報生成部221bは、周囲エージェントの現在の状態に基づいて自エージェントからの観測で得られる周辺情報を生成する。自エージェントは歩行者であるので、観測で得られる周辺情報とは、歩行者の目で捉えられる視覚情報を意味する。視覚情報生成部221bは、生成された視覚情報をシミュレータコア241の全体移動方針決定部241a、行動決定部241b、及びサービス利用行動決定部241eに出力する。
【0077】
自エージェント状態更新部221cは、シミュレータコア241の次タイムステップ状態算出部241dから、シミュレータコア241でシミュレーションされた次タイムステップにおける自エージェントの状態を取得する。自エージェント状態更新部221cは、シミュレータコア241によるシミュレーション結果に基づいて3次元空間における自エージェントの状態を更新する。自エージェント状態更新部221cは、更新された自エージェントの状態を含む移動メッセージを送受信コントローラ211の移動メッセージ送信部211dに出力する。移動メッセージに含まれる自エージェントの状態には、今回タイムステップにおける位置、方向、速度、加速度と、次タイムステップにおける位置、方向、速度、加速度とが含まれる。また、自エージェント状態更新部221cは、更新された自エージェントの状態に関する情報をサービスシステムクライアントシミュレータ231のサービス利用情報生成部231bに出力する。
【0078】
3-1-4.サービスシステムクライアントシミュレータの詳細
サービスシステムクライアントシミュレータ231において、サービス提供状態情報処理部231aは、サービスメッセージ受信部211bからサービスメッセージを取得する。サービスメッセージ受信部211bから取得されるサービスメッセージはサービス提供状態情報を含む。サービス提供状態情報処理部231aは、サービス提供状態情報を処理し、サービスシステムのユーザとしての自エージェントの状態に関する情報と、ユーザ端末のサービスアプリへの入力項目とを取得する。自エージェントのユーザとしての状態に関する情報はユーザ端末に提示される情報であり、入力項目は自エージェントがサービスを利用するために入力を依頼される情報である。サービス提供状態情報処理部231aは、自エージェントのユーザとしての状態に関する情報と、ユーザ端末のサービスアプリへの入力項目とをシミュレータコア241の全体移動方針決定部241a及びサービス利用行動決定部241eに出力する。
【0079】
サービス利用情報生成部231bは、シミュレータコア241のサービス利用行動決定部241eから自エージェントのサービス利用行動の決定結果を取得する。また、サービス利用情報生成部231bは、3D物理エンジン221の自エージェント状態更新部221cから3次元空間における自エージェントの状態を取得する。サービス利用情報生成部231bは、取得されたこれらの情報に基づいてサービス利用情報を生成するとともに、自エージェントのサービスの利用状態を更新する。サービス利用情報生成部231bは、サービス利用情報を含むサービスメッセージを送受信コントローラ211のサービスメッセージ送信部211eに出力する。
【0080】
3-1-5.シミュレータコアの詳細
シミュレータコア241において、全体移動方針決定部241aは、3D物理エンジン221の視覚情報生成部221bから視覚情報を取得する。また、全体移動方針決定部241aは、サービスシステムクライアントシミュレータ231のサービス提供状態情報処理部231aから自エージェントのユーザとしての状態に関する情報と、ユーザ端末のサービスアプリへの入力項目とを取得する。全体移動方針決定部241aは、取得されたこれらの情報に基づいて自エージェントの仮想世界2における全体的な移動方針を決定する。全体移動方針決定部241aは、決定された全体的な移動方針を行動決定部241bに出力する。
【0081】
行動決定部241bは、全体移動方針決定部241aから全体的な移動方針を取得するとともに、3D物理エンジン221の視覚情報生成部221bから視覚情報を取得する。行動決定部241bは、全体的な移動方針と視覚情報とを移動モデル241cに入力することによって自エージェントの行動を決定する。移動モデル241cは、一定の移動方針のもと歩行者の目に映る周辺の状況に応じて歩行者がどのように移動するのかをモデル化したシミュレーションモデルである。行動決定部241bは、決定した自エージェントの行動を次タイムステップ状態算出部241dに出力する。
【0082】
次タイムステップ状態算出部241dは、行動決定部241bで決定された自エージェントの行動を取得する。次タイムステップ状態算出部241dは、自エージェントの行動に基づいて次タイムステップにおける自エージェントの状態を算出する。算出される自エージェントの状態は、次タイムステップにおける自エージェントの位置、方向、速度、及び加速度を含む。次タイムステップ状態算出部241dは、算出された次タイムステップにおける自エージェントの状態を3D物理エンジン221の自エージェント状態更新部221cに出力する。また、次タイムステップ状態算出部241dは、自エージェントの状態更新のための計算の開始時刻を送受信コントローラ211の剰余時間率算出部211gに出力する。
【0083】
サービス利用行動決定部241eは、3D物理エンジン221の視覚情報生成部221bから視覚情報を取得する。また、サービス利用行動決定部241eは、サービスシステムクライアントシミュレータ231のサービス提供状態情報処理部231aから自エージェントのユーザとしての状態に関する情報と、ユーザ端末のサービスアプリへの入力項目とを取得する。サービス利用行動決定部241eは、取得したこれらの情報を行動モデル241fに入力することによって自エージェントのサービスシステムのユーザとしての行動(サービス利用行動)を決定する。行動モデル241fは、ユーザにサービスに関する情報が提示され、ユーザ端末のサービスアプリへの入力が依頼された場合に、ユーザの目に映る周辺の状況に応じてユーザがどのように移動するのかをモデル化したシミュレーションモデルである。サービス利用行動決定部241eは、決定したサービス利用行動をサービス利用情報生成部231bに出力する。
【0084】
速度調整部241gは、シミュレーション動作制御部211hからシミュレーション速度を取得する。シミュレーション動作制御部211hから取得されるシミュレーション速度は、シミュレーションコンダクタ320によって指示されたシミュレーション速度である。速度調整部241gは、シミュレーションコンダクタ320からの指示にしたがってシミュレータコア241による自エージェントのシミュレーション速度を加速或いは減速させる。
【0085】
3-2.自律ロボット/車両エージェント用エージェントシミュレータ
図5は、自律ロボット/車両エージェント用のエージェントシミュレータ202の構成と情報の流れを示すブロック図である。自律ロボット/車両エージェントとは、バックエンドサーバ400が関係するサービスシステムにおいてサービスの提供に用いられる自律ロボット又は自律車両のエージェントである。以下、自律ロボット/車両エージェント用のエージェントシミュレータ202の全体構成と各部の詳細、及びエージェントシミュレータ202における情報の流れについて説明する。
【0086】
3-2-1.自律ロボット/車両エージェント用エージェントシミュレータの全体構成
エージェントシミュレータ202は、その機能として、送受信コントローラ212、3D物理エンジン222、サービスシステムクライアントシミュレータ232、及びシミュレータコア242を備える。これらの機能は、概念として、それぞれ送受信コントローラ210、3D物理エンジン220、サービスシステムクライアントシミュレータ230、及びシミュレータコア240に含まれる。
【0087】
送受信コントローラ212は、各種メッセージを受信する機能として、移動メッセージ受信部212a、サービスメッセージ受信部212b、及びコントロールメッセージ受信部212cを備える。また、送受信コントローラ212は、各種メッセージを送信する機能として、移動メッセージ送信部212d、サービスメッセージ送信部212e、及びコントロールメッセージ送信部212fを備える。さらに、送受信コントローラ212は、剰余時間率算出部212gとシミュレーション動作制御部212hとを備える。送受信コントローラ211を構成する各部212a~212hは、それぞれがプログラム或いはプログラムの一部である。
【0088】
3D物理エンジン222は、その機能として、周囲エージェント状態更新部222a、センサ情報生成部222b、及び自エージェント状態更新部222cを備える。3D物理エンジン222を構成する各部222a,222b,222cは、それぞれがプログラム或いはプログラムの一部である。
【0089】
サービスシステムクライアントシミュレータ232は、その機能として、経路計画用情報受信部232aと動作状態情報生成部232bとを備える。サービスシステムクライアントシミュレータ232を構成する各部232a,232bは、それぞれがプログラム或いはプログラムの一部である。
【0090】
シミュレータコア242は、その機能として、全体的経路計画部242a、局所的経路計画部242b、アクチュエータ操作量決定部242c、及び次タイムステップ状態算出部242dを備える。シミュレータコア242を構成する各部242a,242b,242c,242dは、それぞれがプログラム或いはプログラムの一部である。
【0091】
3-2-2.送受信コントローラの詳細
送受信コントローラ212において、移動メッセージ受信部212aは、移動メッセージディスパッチャ310から移動メッセージを受信する。移動メッセージ受信部212aは、受信した移動メッセージを3D物理エンジン222の周囲エージェント状態更新部222aに出力する。また、移動メッセージ受信部212aは、移動メッセージを受信した時刻を含む情報を剰余時間率算出部212gに出力する。
【0092】
サービスメッセージ受信部212bは、バックエンドサーバ400からサービスメッセージを受信する。サービスメッセージ受信部212bは、受信したサービスメッセージをサービスシステムクライアントシミュレータ232の経路計画用情報受信部232aに出力する。
【0093】
コントロールメッセージ受信部212cは、シミュレーションコンダクタ320からシミュレーション制御メッセージを受信する。コントロールメッセージ受信部212cは、受信したミュレーション制御メッセージをシミュレーション動作制御部212hに出力する。
【0094】
移動メッセージ送信部212dは、3D物理エンジン222の自エージェント状態更新部222cから自エージェントの現在の状態を含む移動メッセージを取得する。移動メッセージ送信部212dは、取得した移動メッセージを移動メッセージディスパッチャ310に送信する。また、移動メッセージ送信部212dは、移動メッセージの送信完了時刻を含む情報を剰余時間率算出部212gに送信する。
【0095】
サービスメッセージ送信部212eは、サービスシステムクライアントシミュレータ232の動作状態情報生成部232bから動作状態情報を含むサービスメッセージを取得する。サービスメッセージ送信部212eは、取得したサービスメッセージをバックエンドサーバ400に送信する。
【0096】
コントロールメッセージ送信部212fは、剰余時間率算出部212gからシミュレーションの速度状況に関する情報を含むシミュレーション制御メッセージを取得する。また、コントロールメッセージ送信部212fは、シミュレーション動作制御部212hからエージェントシミュレータ202の制御状態を含むシミュレーション制御メッセージを取得する。コントロールメッセージ送信部212fは、剰余時間率算出部212gとシミュレーション動作制御部212hとから取得したシミュレーション制御メッセージをシミュレーションコンダクタ320に送信する。
【0097】
剰余時間率算出部212gは、移動メッセージ受信部212aから移動メッセージの受信時刻を含む情報を取得する。また、剰余時間率算出部212gは、移動メッセージ送信部212dから移動メッセージの送信完了時刻を含む情報を取得する。さらに、剰余時間率算出部212gは、シミュレータコア242の次タイムステップ状態算出部242dから自エージェントの状態更新のための計算の開始時刻を取得する。
【0098】
剰余時間率算出部212gは、取得した情報に基づき上述の各式により剰余時間、剰余時間率、及び遅れ時間を計算する。剰余時間率算出部212gは、剰余時間、剰余時間率、及び遅れ時間を含むシミュレーション制御メッセージをコントロールメッセージ送信部212fに出力する。これらの情報を含むシミュレーション制御メッセージを受信したシミュレーションコンダクタ320は、エージェントシミュレータ202に対して指示すべき制御内容を含むシミュレーション制御メッセージを作成し、エージェントシミュレータ202に送信する。
【0099】
シミュレーション動作制御部212hは、コントロールメッセージ受信部212cからシミュレーション制御メッセージを取得する。シミュレーション動作制御部212hは、シミュレーション制御メッセージに含まれる指示に従ってエージェントシミュレータ202のシミュレーション動作を制御する。例えば、シミュレーションの時間粒度の変更が指示された場合、シミュレーション動作制御部212hは、エージェントシミュレータ202によるシミュレーションの時間粒度を初期値から指示された時間粒度に変更する。時間粒度の初期値はエージェントシミュレータ202に設定値として記憶されている。また、時間粒度の上限値と下限値は、エージェントの種類ごとにシミュレーションコンダクタ320に記憶されている。
【0100】
シミュレーション制御メッセージによる指示内容がシミュレーション速度である場合、シミュレーション動作制御部212hは、3D物理エンジン222やシミュレータコア242の動作周波数を指示されたシミュレーション速度に従って変化させ、エージェントシミュレータ202の演算速度を加速或いは減速する。シミュレーションの停止が指示された場合、シミュレーション動作制御部212hは、エージェントシミュレータ202によるシミュレーションを停止させる。シミュレーションの休止が指示された場合にはシミュレーションを休止させ、再開が指示された場合にシミュレーションを再開させる。シミュレーション動作制御部212hは、エージェントシミュレータ202の現在の制御状態を含むシミュレーション制御メッセージをコントロールメッセージ送信部212fに出力する。
【0101】
3-2-3.3D物理エンジンの詳細
3D物理エンジン222において、周囲エージェント状態更新部222aは、移動メッセージ受信部212aから移動メッセージを取得する。移動メッセージ受信部212aから取得される移動メッセージは、移動メッセージディスパッチャ310を経由して他のエージェントシミュレータから送られた移動メッセージである。周囲エージェント状態更新部222aは、取得した移動メッセージに基づいて自エージェントの周囲に存在する周囲エージェントの現在の状態を推定する。
【0102】
周囲エージェントの現在の状態を過去の状態から推定する場合、周囲エージェント状態更新部222aは、ログに保存されている周囲エージェントの過去の状態を使用する。周囲エージェントの過去の状態を用いて現在の状態を推定する方法は図3を用いて説明した通りである。周囲エージェント状態更新部222aは、推定した周囲エージェントの現在の状態をセンサ情報生成部222bに出力するとともに、ログを更新する。
【0103】
センサ情報生成部222bは、周囲エージェント状態更新部222aから周囲エージェントの現在の状態を取得する。センサ情報生成部222bは、周囲エージェントの現在の状態に基づいて自エージェントからの観測で得られる周辺情報を生成する。自エージェントは自律ロボット或いは自律車両であるので、観測で得られる周辺情報とは、自律ロボット或いは自律車両のセンサで捉えられるセンサ情報を意味する。センサ情報生成部222bは、生成されたセンサ情報をシミュレータコア242の全体的経路計画部242a、及びサービスシステムクライアントシミュレータ232の動作状態情報生成部232bに出力する。
【0104】
自エージェント状態更新部222cは、シミュレータコア242の次タイムステップ状態算出部242dから、シミュレータコア242で演算された次タイムステップにおける自エージェントの状態を取得する。自エージェント状態更新部222cは、シミュレータコア242による演算結果に基づいて3次元空間における自エージェントの状態を更新する。自エージェント状態更新部222cは、更新された自エージェントの状態を含む移動メッセージを送受信コントローラ212の移動メッセージ送信部212dに出力する。移動メッセージに含まれる自エージェントの状態には、今回タイムステップにおける位置、方向、速度、加速度と、次タイムステップにおける位置、方向、速度、加速度とが含まれる。また、自エージェント状態更新部222cは、更新された自エージェントの状態に関する情報をサービスシステムクライアントシミュレータ232の動作状態情報生成部232bに出力する。
【0105】
3-2-4.サービスシステムクライアントシミュレータの詳細
サービスシステムクライアントシミュレータ232において、経路計画用情報受信部232aは、サービスメッセージ受信部211bからサービスメッセージを取得する。サービスメッセージ受信部212bから取得されるサービスメッセージは、サービスシステムが自律ロボット/車両を用いてサービスを提供するための動作指示情報と他のサービスシステムに関する情報とを含む。経路計画用情報受信部232aは、動作指示情報と他サービスシステム情報とをシミュレータコア242の全体的経路計画部242aに出力する。
【0106】
動作状態情報生成部232bは、シミュレータコア242のアクチュエータ操作量決定部242cから自エージェントの次タイムステップにおけるアクチュエータ操作量を取得する。また、動作状態情報生成部232bは、3D物理エンジン222のセンサ情報生成部222bからセンサ情報を取得するとともに、自エージェント状態更新部222cから3次元空間における自エージェントの状態を取得する。動作状態情報生成部232bは、取得されたこれらの情報に基づいてサービスの提供に係る自エージェントの動作状態を表す動作状態情報を生成する。動作状態情報生成部232bは、動作状態情報を含むサービスメッセージを送受信コントローラ212のサービスメッセージ送信部212eに出力する。
【0107】
3-2-5.シミュレータコアの詳細
シミュレータコア242において、全体的経路計画部242aは、3D物理エンジン222のセンサ情報生成部222bからセンサ情報を取得する。また、全体的経路計画部242aは、サービスシステムクライアントシミュレータ232の経路計画用情報受信部232aから動作指示情報と他サービスシステム情報とを取得する。全体的経路計画部242aは、取得されたこれらの情報に基づいて仮想世界2における自エージェントの全体的な経路を計画する。全体的な経路とは、自エージェントの現在位置から目標地点までの経路を意味する。センサ情報生成部222bと経路計画用情報受信部232aとから取得される情報は毎回変化するので、全体的経路計画部242aは、タイムステップ毎に全体的経路計画を立て直す。全体的経路計画部242aは、決定された全体的経路計画を局所的経路計画部242bに出力する。
【0108】
局所的経路計画部242bは、全体的経路計画部242aから全体的経路計画を取得する。局所的経路計画部242bは、全体的経路計画に基づいて局所的な経路計画を立てる。局所的な経路とは、例えば、現時点から所定タイムステップ後までの経路、或いは、現在位置から所定距離までの経路を意味する。局所的経路計画は、例えば、自エージェントが辿るべき位置の集合と、各位置における速度或いは加速度とで表される。局所的経路計画部242bは、決定された局所的経路計画をアクチュエータ操作量決定部242cに出力する。
【0109】
アクチュエータ操作量決定部242cは、局所的経路計画部242bから局所的経路計画を取得する。アクチュエータ操作量決定部242cは、局所的経路計画に基づいて次タイムステップにおける自エージェントのアクチュエータ操作量を決定する。ここでいうアクチュエータとは、自エージェントの方向、速度、及び加速度を制御するアクチュエータである。自エージェントが車輪で走行する自律ロボット或いは自律車両である場合、例えば、制動装置、駆動装置、操舵装置などのアクチュエータが操作対象となる。アクチュエータ操作量決定部242cは、決定したアクチュエータ操作量を次タイムステップ状態算出部242d、及びサービスシステムクライアントシミュレータ232の動作状態情報生成部232bに出力する。
【0110】
次タイムステップ状態算出部242dは、アクチュエータ操作量決定部242cで決定されたアクチュエータ操作量を取得する。次タイムステップ状態算出部242dは、アクチュエータ操作量に基づいて次タイムステップにおける自エージェントの状態を算出する。算出される自エージェントの状態は、次タイムステップにおける自エージェントの位置、方向、速度、及び加速度を含む。次タイムステップ状態算出部242dは、算出された次タイムステップにおける自エージェントの状態を3D物理エンジン222の自エージェント状態更新部222cに出力する。また、次タイムステップ状態算出部242dは、自エージェントの状態更新のための計算の開始時刻を送受信コントローラ212の剰余時間率算出部212gに出力する。
【0111】
3-3.VR歩行者エージェント用エージェントシミュレータ
図6は、VR歩行者エージェント用のエージェントシミュレータ203の構成と情報の流れを示すブロック図である。VR歩行者エージェントとは、実在の人がVR(Virtual Reality)システムを用いてシミュレーションの対象である仮想世界2に参加するための歩行者エージェントである。以下、VR歩行者エージェント用のエージェントシミュレータ203の全体構成と各部の詳細、及びエージェントシミュレータ203における情報の流れについて説明する。
【0112】
3-3-1.VR歩行者エージェント用エージェントシミュレータの全体構成
エージェントシミュレータ203は、その機能として、送受信コントローラ213、3D物理エンジン223、サービスシステムクライアントシミュレータ233、及びシミュレータコア243を備える。これらの機能は、概念として、それぞれ送受信コントローラ210、3D物理エンジン220、サービスシステムクライアントシミュレータ230、及びシミュレータコア240に含まれる。
【0113】
送受信コントローラ213は、各種メッセージを受信する機能として、移動メッセージ受信部213a、サービスメッセージ受信部213b、及びコントロールメッセージ受信部213cを備える。また、送受信コントローラ213は、各種メッセージを送信する機能として、移動メッセージ送信部213d、サービスメッセージ送信部213e、及びコントロールメッセージ送信部213fを備える。さらに、送受信コントローラ213は、シミュレーション動作制御部213hを備える。送受信コントローラ213を構成する各部213a~213f,213hは、それぞれがプログラム或いはプログラムの一部である。
【0114】
3D物理エンジン223は、その機能として、周囲エージェント状態更新部223a、視覚情報生成部223b、及び自エージェント状態更新部223cを備える。3D物理エンジン223を構成する各部223a,223b,223cは、それぞれがプログラム或いはプログラムの一部である。
【0115】
サービスシステムクライアントシミュレータ233は、その機能として、サービス提供状態情報処理部233aとサービス利用情報生成部233bとを備える。サービスシステムクライアントシミュレータ231を構成する各部233a,233bは、それぞれがプログラム或いはプログラムの一部である。
【0116】
シミュレータコア243は、その機能として、認知判断用情報提示部243a、移動操作受付部243b、次タイムステップ状態算出部243c、及びアプリ操作受付部243dを備える。シミュレータコア243を構成する各部243a,243b,243c,243dは、それぞれがプログラム或いはプログラムの一部である。
【0117】
3-3-2.送受信コントローラの詳細
送受信コントローラ213において、移動メッセージ受信部213aは、移動メッセージディスパッチャ310から移動メッセージを受信する。移動メッセージ受信部213aは、受信した移動メッセージを3D物理エンジン223の周囲エージェント状態更新部223aに出力する。
【0118】
サービスメッセージ受信部213bは、バックエンドサーバ400からサービスメッセージを受信する。サービスメッセージ受信部213bは、受信したサービスメッセージをサービスシステムクライアントシミュレータ233のサービス提供状態情報処理部233aに出力する。
【0119】
コントロールメッセージ受信部213cは、シミュレーションコンダクタ320からシミュレーション制御メッセージを受信する。コントロールメッセージ受信部213cは、受信したミュレーション制御メッセージをシミュレーション動作制御部213hに出力する。
【0120】
移動メッセージ送信部213dは、3D物理エンジン223の自エージェント状態更新部223cから自エージェントの現在の状態を含む移動メッセージを取得する。移動メッセージ送信部213dは、取得した移動メッセージを移動メッセージディスパッチャ310に送信する。
【0121】
サービスメッセージ送信部213eは、サービスシステムクライアントシミュレータ233のサービス利用情報生成部233bからサービス利用情報を含むサービスメッセージを取得する。サービスメッセージ送信部213eは、取得したサービスメッセージをバックエンドサーバ400に送信する。
【0122】
コントロールメッセージ送信部213fは、シミュレーション動作制御部213hからエージェントシミュレータ203の制御状態を含むシミュレーション制御メッセージを取得する。コントロールメッセージ送信部213fは、シミュレーション動作制御部213hから取得したシミュレーション制御メッセージをシミュレーションコンダクタ320に送信する。
【0123】
シミュレーション動作制御部213hは、コントロールメッセージ受信部213cからシミュレーション制御メッセージを取得する。シミュレーション動作制御部213hは、シミュレーション制御メッセージに含まれる指示に従ってエージェントシミュレータ203のシミュレーション動作を制御する。VR歩行者エージェントの仮想世界2への参加条件が満たされない場合、シミュレーションコンダクタ320からエージェントシミュレータ203に対してシミュレーションの停止が指示される。
【0124】
前述のエージェントシミュレータ201,202及び後述するエージェントシミュレータ204は、必要に応じてシミュレーション速度を変更することができる。しかし、シミュレーション速度が変更された場合、VR歩行者エージェントを介して仮想世界2に参加している実在の参加者は、実世界とは異なる時間の流れに対して強い違和感を覚える虞がある。ゆえに、MASシステム100では、シミュレーションが実時間で行われていることを参加条件として、仮想世界2へのVR歩行者エージェントの参加が許容される。実世界の時間の流れよりもシミュレーション速度が加速或いは減速される場合、シミュレーションコンダクタ320は、エージェントシミュレータ203によるシミュレーションを停止させる。シミュレーション動作制御部213hは、エージェントシミュレータ203の現在の制御状態を含むシミュレーション制御メッセージをコントロールメッセージ送信部213fに出力する。
【0125】
3-3-3.3D物理エンジンの詳細
3D物理エンジン223において、周囲エージェント状態更新部223aは、移動メッセージ受信部213aから移動メッセージを取得する。移動メッセージ受信部213aから取得される移動メッセージは、移動メッセージディスパッチャ310を経由して他のエージェントシミュレータから送られた移動メッセージである。周囲エージェント状態更新部223aは、取得した移動メッセージに基づいて自エージェントの周囲に存在する周囲エージェントの現在の状態を推定する。
【0126】
周囲エージェントの現在の状態を過去の状態から推定する場合、周囲エージェント状態更新部223aは、ログに保存されている周囲エージェントの過去の状態を使用する。周囲エージェントの過去の状態を用いて現在の状態を推定する方法は図3を用いて説明した通りである。周囲エージェント状態更新部223aは、推定した周囲エージェントの現在の状態を視覚情報生成部223bに出力するとともに、ログを更新する。
【0127】
視覚情報生成部223bは、周囲エージェント状態更新部223aから周囲エージェントの現在の状態を取得する。視覚情報生成部223bは、周囲エージェントの現在の状態に基づいて自エージェントからの観測で得られる周辺情報を生成する。自エージェントは歩行者であるので、観測で得られる周辺情報とは、歩行者の目で捉えられる視覚情報を意味する。視覚情報生成部223bは、生成された視覚情報をシミュレータコア243の認知判断用情報提示部243a、及び移動操作受付部243bに出力する。
【0128】
自エージェント状態更新部223cは、シミュレータコア243の次タイムステップ状態算出部243cから、シミュレータコア243で演算された次タイムステップにおける自エージェントの状態を取得する。自エージェント状態更新部223cは、シミュレータコア243による演算結果に基づいて3次元空間における自エージェントの状態を更新する。自エージェント状態更新部223cは、更新された自エージェントの状態を含む移動メッセージを送受信コントローラ213の移動メッセージ送信部213dに出力する。移動メッセージに含まれる自エージェントの状態には、今回タイムステップにおける位置、方向、速度、加速度と、次タイムステップにおける位置、方向、速度、加速度とが含まれる。また、自エージェント状態更新部223cは、更新された自エージェントの状態に関する情報をサービスシステムクライアントシミュレータ233のサービス利用情報生成部233bに出力する。
【0129】
3-3-4.サービスシステムクライアントシミュレータの詳細
サービスシステムクライアントシミュレータ233において、サービス提供状態情報処理部233aは、サービスメッセージ受信部213bからサービスメッセージを取得する。サービスメッセージ受信部213bから取得されるサービスメッセージはサービス提供状態情報を含む。サービス提供状態情報処理部233aは、サービス提供状態情報を処理し、サービスシステムのユーザとしての自エージェントの状態に関する情報と、ユーザ端末のサービスアプリへの入力項目とを取得する。自エージェントのユーザとしての状態に関する情報はユーザ端末に提示される情報であり、入力項目は自エージェントがサービスを利用するために入力を依頼される情報である。サービス提供状態情報処理部233aは、自エージェントのユーザとしての状態に関する情報と、ユーザ端末のサービスアプリへの入力項目とをシミュレータコア243の認知判断用情報提示部243a及びアプリ操作受付部243dに出力する。
【0130】
サービス利用情報生成部233bは、シミュレータコア243のアプリ操作受付部243dから、VR歩行者エージェントを介して仮想世界2に参加している実在の参加者によるVR上でのサービスアプリの操作を取得する。また、サービス利用情報生成部233bは、3D物理エンジン223の自エージェント状態更新部223cから3次元空間における自エージェントの状態を取得する。サービス利用情報生成部233bは、取得されたこれらの情報に基づいてサービス利用情報を生成するとともに、自エージェントのサービスの利用状態を更新する。サービス利用情報生成部233bは、サービス利用情報を含むサービスメッセージを送受信コントローラ213のサービスメッセージ送信部213eに出力する。
【0131】
3-3-5.シミュレータコアの詳細
シミュレータコア243において、認知判断用情報提示部243aは、3D物理エンジン223の視覚情報生成部223bから視覚情報を取得する。また、認知判断用情報提示部243aは、サービスシステムクライアントシミュレータ231のサービス提供状態情報処理部233aから自エージェントのユーザとしての状態に関する情報と、ユーザ端末のサービスアプリへの入力項目とを取得する。取得されたこれらの情報は、VR歩行者エージェントを介して仮想世界2に参加している実在の参加者にとっての認知判断用の情報である。認知判断用情報提示部243aは、認知判断用の情報を実在参加者に対してVRシステムを通じて提示する。
【0132】
移動操作受付部243bは、3D物理エンジン223の視覚情報生成部223bから視覚情報を取得する。そして、移動操作受付部243bは、VRシステムを通じて視覚情報を実在参加者に提示しながら、実在参加者によるVR上での移動操作を受け付ける。移動操作受付部243bは、受け付けた実在参加者によるVR上での移動操作を次タイムステップ状態算出部243dに出力する。
【0133】
次タイムステップ状態算出部243dは、移動操作受付部243bから実在参加者によるVR上での移動操作を取得する。次タイムステップ状態算出部243dは、実在参加者によるVR上での移動操作に基づいて次タイムステップにおける自エージェントの状態を算出する。算出される自エージェントの状態は、次タイムステップにおける自エージェントの位置、方向、速度、及び加速度を含む。次タイムステップ状態算出部243dは、算出された次タイムステップにおける自エージェントの状態を3D物理エンジン223の自エージェント状態更新部223cに出力する。
【0134】
アプリ操作受付部243dは、3D物理エンジン223の視覚情報生成部223bから視覚情報を取得する。また、アプリ操作受付部243dは、サービスシステムクライアントシミュレータ233のサービス提供状態情報処理部233aから自エージェントのユーザとしての状態に関する情報と、ユーザ端末のサービスアプリへの入力項目とを取得する。アプリ操作受付部243dは、取得したこれらの情報を実在参加者に対してVRシステムを通じて提示しながら、実在参加者によるVR上でのサービスアプリの操作を受け付ける。アプリ操作受付部243dは、受け付けた実在参加者によるVR上でのサービスアプリの操作をサービスシステムクライアントシミュレータ233のサービス利用情報生成部233bに出力する。
【0135】
3-4.路側センサエージェント用エージェントシミュレータ
図7は、路側センサエージェント用のエージェントシミュレータ204の構成と情報の流れを示すブロック図である。路側センサエージェントとは、自律ロボット/車両エージェントの仮想世界2における位置情報の取得に用いられる路側センサのエージェントである。路側センサエージェントにより取得される自律ロボット/車両エージェントの位置情報は、バックエンドサーバ400が関係するサービスシステムにおいて使用される。以下、路側センサエージェント用のエージェントシミュレータ204の全体構成と各部の詳細、及びエージェントシミュレータ204における情報の流れについて説明する。
【0136】
3-4-1.路側センサエージェント用エージェントシミュレータの全体構成
エージェントシミュレータ204は、その機能として、送受信コントローラ214、3D物理エンジン224、及びサービスシステムクライアントシミュレータ234を備える。これらの機能は、概念として、それぞれ送受信コントローラ210、3D物理エンジン220、及びシミュレータコア240に含まれる。エージェントシミュレータ204は、他のエージェントシミュレータとは異なりシミュレータコアは備えない。
【0137】
送受信コントローラ214は、各種メッセージを受信する機能として、移動メッセージ受信部214a、及びコントロールメッセージ受信部214bを備える。また、送受信コントローラ212は、各種メッセージを送信する機能として、サービスメッセージ送信部214e、及びコントロールメッセージ送信部214fを備える。さらに、送受信コントローラ212は、剰余時間率算出部214gとシミュレーション動作制御部214hとを備える。送受信コントローラ214を構成する各部212a,214c,214e,214f,214g,214hは、それぞれがプログラム或いはプログラムの一部である。
【0138】
3D物理エンジン224は、その機能として、周囲エージェント状態更新部224a、及びセンサ情報生成部224bを備える。3D物理エンジン224を構成する各部224a,224bは、それぞれがプログラム或いはプログラムの一部である。
【0139】
サービスシステムクライアントシミュレータ234は、その機能として、サービスメッセージ生成部234aを備える。サービスシステムクライアントシミュレータ234を構成するサービスメッセージ生成部234aは、プログラム或いはプログラムの一部である。
【0140】
3-4-2.送受信コントローラの詳細
送受信コントローラ214において、移動メッセージ受信部214aは、移動メッセージディスパッチャ310から移動メッセージを受信する。移動メッセージ受信部214aは、受信した移動メッセージを3D物理エンジン224の周囲エージェント状態更新部224aに出力する。また、移動メッセージ受信部214aは、移動メッセージを受信した時刻を含む情報を剰余時間率算出部214gに出力する。
【0141】
コントロールメッセージ受信部214cは、シミュレーションコンダクタ320からシミュレーション制御メッセージを受信する。コントロールメッセージ受信部214cは、受信したミュレーション制御メッセージをシミュレーション動作制御部214hに出力する。
【0142】
サービスメッセージ送信部214eは、サービスシステムクライアントシミュレータ234のサービスメッセージ生成部234aからセンサ情報を含むサービスメッセージを取得する。サービスメッセージ送信部214eは、取得したサービスメッセージをバックエンドサーバ400に送信する。
【0143】
コントロールメッセージ送信部214fは、剰余時間率算出部214gからシミュレーションの速度状況に関する情報を含むシミュレーション制御メッセージを取得する。また、コントロールメッセージ送信部214fは、シミュレーション動作制御部214hからエージェントシミュレータ202の制御状態を含むシミュレーション制御メッセージを取得する。コントロールメッセージ送信部214fは、剰余時間率算出部214gとシミュレーション動作制御部214hとから取得したシミュレーション制御メッセージをシミュレーションコンダクタ320に送信する。
【0144】
剰余時間率算出部214gは、移動メッセージ受信部214aから移動メッセージの受信時刻を含む情報を取得する。また、剰余時間率算出部214gは、サービスメッセージ送信部214eからサービスメッセージの送信完了時刻を含む情報を取得する。剰余時間率算出部214gは、取得した情報に基づき上述の各式により剰余時間、剰余時間率、及び遅れ時間を計算する。ただし、剰余時間と剰余時間率の計算において、Ta(N+1)及びTa(N)にはエージェントシミュレータ202の動作周波数から計算される計算値が用いられる。また、Td(N)には今回タイムステップにおける移動メッセージの送信完了時刻に代えて、サービスメッセージの送信完了時刻が用いられる。
【0145】
剰余時間率算出部214gは、剰余時間、剰余時間率、及び遅れ時間を含むシミュレーション制御メッセージをコントロールメッセージ送信部214fに出力する。これらの情報を含むシミュレーション制御メッセージを受信したシミュレーションコンダクタ320は、エージェントシミュレータ204に対して指示すべき制御内容を含むシミュレーション制御メッセージを作成し、エージェントシミュレータ204に送信する。
【0146】
シミュレーション動作制御部214hは、コントロールメッセージ受信部214cからシミュレーション制御メッセージを取得する。シミュレーション動作制御部214hは、シミュレーション制御メッセージに含まれる指示に従ってエージェントシミュレータ202のシミュレーション動作を制御する。例えば、シミュレーションの時間粒度の変更が指示された場合、シミュレーション動作制御部214hは、エージェントシミュレータ202によるシミュレーションの時間粒度を初期値から指示された時間粒度に変更する。時間粒度の初期値はエージェントシミュレータ204に設定値として記憶されている。また、時間粒度の上限値と下限値は、エージェントの種類ごとにシミュレーションコンダクタ320に記憶されている。
【0147】
シミュレーション制御メッセージによる指示内容がシミュレーション速度である場合、シミュレーション動作制御部214hは、3D物理エンジン224の動作周波数を指示されたシミュレーション速度に従って変化させ、エージェントシミュレータ204の演算速度を加速或いは減速する。シミュレーションの停止が指示された場合、シミュレーション動作制御部214hは、エージェントシミュレータ204によるシミュレーションを停止させる。シミュレーションの休止が指示された場合にはシミュレーションを休止させ、再開が指示された場合にシミュレーションを再開させる。シミュレーション動作制御部214hは、エージェントシミュレータ204の現在の制御状態を含むシミュレーション制御メッセージをコントロールメッセージ送信部214fに出力する。
【0148】
3-4-3.3D物理エンジンの詳細
3D物理エンジン224において、周囲エージェント状態更新部224aは、移動メッセージ受信部214aから移動メッセージを取得する。移動メッセージ受信部214aから取得される移動メッセージは、移動メッセージディスパッチャ310を経由して他のエージェントシミュレータから送られた移動メッセージである。周囲エージェント状態更新部224aは、取得した移動メッセージに基づいて自エージェントの周囲に存在する周囲エージェントの現在の状態を推定する。
【0149】
周囲エージェントの現在の状態を過去の状態から推定する場合、周囲エージェント状態更新部224aは、ログに保存されている周囲エージェントの過去の状態を使用する。周囲エージェントの過去の状態を用いて現在の状態を推定する方法は図3を用いて説明した通りである。周囲エージェント状態更新部224aは、推定した周囲エージェントの現在の状態をセンサ情報生成部224bに出力するとともに、ログを更新する。
【0150】
センサ情報生成部224bは、周囲エージェント状態更新部224aから周囲エージェントの現在の状態を取得する。センサ情報生成部224bは、周囲エージェントの現在の状態に基づいて自エージェントからの観測で得られる周辺情報を生成する。自エージェントはカメラのような定置型の路側センサであるので、観測で得られる周辺情報とは、路側センサで捉えられるセンサ情報を意味する。センサ情報生成部224bは、生成されたセンサ情報をサービスシステムクライアントシミュレータ234のサービスメッセージ生成部234aに出力する。
【0151】
3-4-4.サービスシステムクライアントシミュレータの詳細
サービスシステムクライアントシミュレータ234において、サービスメッセージ生成部234aは、3D物理エンジン224のセンサ情報生成部224bからセンサ情報を取得する。サービスメッセージ生成部234aは、取得されたセンサ情報を含むサービスメッセージを送受信コントローラ214のサービスメッセージ送信部214eに出力する。
【0152】
4.MASシステムによるシミュレーション結果の集約と評価
MASシステム100によりシミュレーションを行うことによって、シミュレーションの対象世界についての様々なデータが得られる。図8は、MASシステム100によるシミュレーション結果を集約し評価するための構成を示す。
【0153】
MASシステム100は、シミュレーションで得られるデータのログを記憶するデータロガーを各所に備える。エージェントシミュレータ200には、データロガー250,260,270,280が設けられている。データロガー250は、送受信コントローラ210内のデータログ(コントローラログ)を記憶する。データロガー260は、3D物理エンジン220内のデータログ(3D物理エンジンログ)を記憶する。データロガー270は、サービスシステムクライアントシミュレータ230内のデータログ(サービスシミュレーションログ)を記憶する。データロガー280は、シミュレータコア240内のデータログ(シミュレーションコアログ)を記憶する。
【0154】
センターコントローラ300には、データロガー330,340が設けられている。データロガー330は、移動メッセージディスパッチャ310内のデータログ(移動メッセージディスパッチャログ)を記憶する。データロガー340は、シミュレーションコンダクタ320内のデータログ(コンダクタログ)を記憶する。
【0155】
バックエンドサーバ400には、データロガー410が設けられている。データロガー410は、バックエンドサーバ400内のデータログ(サービスシステムログ)を記憶する。
【0156】
また、MASシステム100は、サービスシステムログ集約部500、エージェント移動ログ集約部510、シミュレーションコアログ集約部520、アセット情報データベース530、時空間データベース540、及びビューワ550を備える。これらは、シミュレーション結果評価用のコンピュータにインストールされている。
【0157】
サービスシステムログ集約部500には、データロガー270,410からデータログが集められる。サービスシステムログ集約部500に集められたこれらのデータログは、サービスシステムに関するデータログである。このデータログから、サービスが正しく提供されたか評価することができる。また、物流ロボットのようなサービス用リソースの稼働率を含むサービス提供上の着目点について評価することもできる。
【0158】
エージェント移動ログ集約部510には、データロガー250,260,330,340からデータログが集められる。エージェント移動ログ集約部510に集められたこれらのデータログは、エージェントの移動に関するデータログである。このデータログから、エージェントの正常動作を確認することができる。また、エージェントの重なりのような問題の有無も確認することができる。シミュレーションの途中でエラーが発生した場合には、データログからシミュレーション内容が有効と想定される時間範囲を出力することができる。
【0159】
シミュレーションコアログ集約部520には、データロガー280とエージェント移動ログ集約部510とからデータログが集められる。シミュレーションコアログ集約部520に集められたこれらのデータログは、シミュレーションの着目点に関するデータログである。このデータログから、歩行者についてのシミュレーションであれば人の密度、ロビットのシミュレーションであれば内部の判断結果などの着目点について評価することができる。
【0160】
アセット情報データベース530には、BIM/CIMデータ或いはBIM/CIMデータから変換された建造物などの固定物の3次元情報と、各エージェントの3次元情報とが格納されている。
【0161】
時空間データベース540には、シミュレーション用の仮想データが格納されている。サービスシステムログ集約部500、エージェント移動ログ集約部510、及びシミュレーションコアログ集約部520で集約された各データログに基づく評価結果は、時空間データベース540の仮想データに反映される。
【0162】
ビューワ550は、アセット情報データベース530に格納されている固定物やエージェントの3次元情報と、時空間データベース540に格納されている仮想データとを用いて仮想世界2をモニタに表示する。
【0163】
5.MASシステムの物理構成
MASシステム100の物理構成について説明する。図9は、MASシステム100の物理構成の一例を示す図である。MASシステム100は、例えば、同一のサブネット30上に配置された複数のコンピュータ10で構成することができる。さらに、サブネット30と別のサブネット32とをゲートウェイ40によって接続することにより、サブネット32上に配置された複数のコンピュータ10までMASシステム100を拡大することができる。
【0164】
図9に示す例では、ソフトウェアであるセンターコントローラ300は1つのコンピュータ10にインストールされている。ただし、センターコントローラ300の機能を複数のコンピュータ10に分散させてもよい。
【0165】
また、MASシステム100は、複数のバックエンドサーバ400を備えている。図9に示す例では、それぞれのバックエンドサーバ400が別々のコンピュータ10にインストールされている。ただし、バックエンドサーバ400の機能を複数のコンピュータ10に分散させてもよい。また、1つのサーバを複数サーバに分割する仮想化技術によって、1つのコンピュータ10に複数のバックエンドサーバ400をインストールしてもよい。
【0166】
図9に示す例では、1つのコンピュータ10に複数のエージェントシミュレータ200がインストールされている。1つのコンピュータ10の上で複数のエージェントシミュレータ200を独立して動作させる手法としては仮想化技術を用いることができる。仮想化技術としては仮想マシンでもよいしコンテナ仮想化でもよい。1つのコンピュータ10に同一種類の複数のエージェントシミュレータ200をインストールしてもよいし、種類の異なる複数のエージェントシミュレータ200をインストールしてもよい。なお、1つのコンピュータ10に1つのエージェントシミュレータ200のみがインストールされていてもよい。
【0167】
以上のように、MASシステム100は、単一のコンピュータによる処理ではなく、複数のコンピュータ10を用いた並列分散処理を採用する。これにより、コンピュータの処理能力によって仮想世界2に搭乗させるエージェントの数が制限されることや、コンピュータの処理能力によって仮想世界2で提供されるサービスの数が制限されることを防ぐことができる。つまり、MASシステム100によれば、並列分散処理による大規模なシミュレーションが可能である。
【0168】
6.その他
仮想世界2を外から観察するための観察用エージェントを設けても良い。観察用エージェントは、例えば、街角カメラのような定置物体でもよく、カメラを備えたドローンのような移動物体であってもよい。
【符号の説明】
【0169】
2 仮想世界(シミュレーション対象世界)
4A,4B,4C,4D エージェント
10 コンピュータ
30,32 サブネット
40 ゲートウェイ
100 マルチエージェントシミュレーションシステム
200 エージェントシミュレータ
201 歩行者エージェント用エージェントシミュレータ
202 自律ロボット/車両エージェント用エージェントシミュレータ
203 VR歩行者エージェント用エージェントシミュレータ
204 路側センサエージェント用エージェントシミュレータ
210 送受信コントローラ
220 3D物理エンジン
230 サービスシステムクライアントシミュレータ
240 シミュレータコア
300 センターコントローラ
310 移動メッセージディスパッチャ
320 シミュレーションコンダクタ
400 サービスシステム用バックエンドサーバ
図1
図2
図3
図4
図5
図6
図7
図8
図9