分散シミュレーションを実現する箱庭時間同期の仕組み!


箱庭コア機能のアーキテクチャは、様々なシミュレータを箱庭アセットとして統合し、分散シミュレーションを実現できる設計です。

ここで、分散シミュレーションを実現する上で非常に重要な技術として、「シミュレーション時間同期」という機能があります。

今回は、箱庭のシミュレーション時間同期の仕組みについて説明したいと思います。

シミュレーション時間同期の必要性

シミュレーション時間同期の仕組みを説明する前に、まずは、シミュレーション時間同期の必要性について考察したいと思います。

下図のように、複数のシミュレータを互いに何らかの通信(UDP/TCPなど)で接続してシミュレーションを並行して実行する場合を想像してみましょう。

各シミュレータは、それぞれ自分の時間を持っています。そして、全シミュレータを同時に実行したとします。

このとき、各シミュレータの時間は完全に一致するでしょうか?

実はこれらを完全に一致させることは難しいのです。

なぜなら、実行開始タイミングは微妙にズレますし、各シミュレータは汎用OS上で動作しますからOSのスケジューリングによって、シミュレーション時間は少しずつずれる可能性があるのです。

箱庭が目指す時間同期方式

時間同期方式として、一番単純なやり方は、最小のシミュレーション時間ステップ(例えば1msec単位)で各シミュレータを順番に実行する方式です。

ただ、この方式の課題はオーバーヘッドが高い点で、シミュレータの数が増えるに従ってシミュレーションに必要な時間が増えていきます。

そこで、箱庭WGメンバと箱庭の時間同期方式の方向性を検討を進めた結果、以下を目指そう!ということになりました。

  • IoTシステムのようにシミュレーション対象数が増えた場合でも、実時間内でシミュレーションが成立できるような仕組みを検討したい
  • 最新のIT/クラウド技術を利用した負荷分散・シミュレーション制御方式を確立したい

箱庭WGで検討した時間同期方式

結論から言いますと、箱庭WGで検討した時間同期方式は下図のものです。

まず、各シミュレータは、箱庭コア機能(マエストロ)が指揮している「箱庭時間」というものを見ています。

そして、各シミュレータは、その箱庭時間を見ながら自分の時間を調整して時間同期します(ハーモニー)。

具体的には、以下のように時間を調整します。

  • 箱庭時間よりも早い場合
    • 自分のシミュレーション時間を止める
  • 箱庭時間より遅い場合
    • 自分のシミュレーション時間をできるだけ早く進める

これらの時間調整は完全に独立して並行実行されますから、シミュレータの数が増えてもスケール・高速化が期待できます。

ただし、この方式のデメリットは、シミュレータ間の時間のズレはどうしても発生してまう可能性がある点です。

そのため、箱庭では、以下を仕組みとして取り入れています。

  • シミュレーションのズレ許容範囲をパラメータ調整できるようにする
  • 各シミュレータ時間を可視化できるようにする

その意図は以下の通りです。

まず、箱庭では時間のズレが出ないことを保証することできませんが、シミュレーション実行完了後に、想定される時間精度で実行できたかどうかを評価することができます。

そして、時間のズレ具合が可視化されれば、どこが性能ネックになるかの評価ができますので、シミュレーション環境として改善すべきポイント(マシンスペックなのかネットワーク性能なのか等)を分析・改良することができるようになるはずです。

この時間同期方式が成し遂げたもの

この方式を検討していたのは、箱庭WG結成当時で2019年頃でした。

箱庭WGでは、独自にETロボコン向けのシミュレータを作成しており、このシミュレーション時間同期の仕組みを利用することで

マイコンシミュレータAthrill上で動作する10msec周期のタスクが、UnityとUDP通信しながらも、ほぼリアル時間で動作

させることに成功していたのです。

そんな矢先(2020 年春)、新型コロナウイルスによる非常事態宣言が発令されるという事態が発生しました。

混迷極まる中、ET ロボコン競技会開催が危ぶまれる中、我々箱庭WGのこの時間同期方式がET ロボコンのバーチャル大会を実現する上で欠かせない技術として脚光を浴びることになったのです。

その当時、ETロボコン実行委員の方から質問されたのは真っ先に、「どのようなシミュレーション時間方式を採用しているか?」でした。

単にUDP通信でシミュレーション実行しているだけだと、再現性がないためです。

また、シミュレーション時間同期を厳密にやりすぎると、シミュレーションが非常に遅く実用性がないこともあります。

そんな質問の嵐の中で、我々の技術が認められ、現実にリアル時間で動作するデモを紹介したらめちゃくちゃ歓声があがりました!(こういうのいいですね)

そして、我々箱庭WGの全面協力とET ロボコン実行委員の方々の多大なるご尽力により、バーチャル大会が無事開催されるに至ったのです!(すごい!)

また、これまで実機を前提としたロボット教育演習も様々な教育機関で実施困難となる中、箱庭WGが作成したシミュレータを利用することでオンライン教育演習が可能となる事例が多々あったのではないかと推測しています(少なくとも自分の記憶では3件ちかくはあったような)。

これからも、箱庭WGでは、つねに自分たちの限界の一歩先を見据えて新しいチャレンジを続けていきます!


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

PAGE TOP