3.1K Views
April 10, 24
スライド概要
この資料では、箱庭の全体設計情報を整理しています。
- アーキテクチャ
- 箱庭アセット
- アーキテクチャ詳細
- ネットワーク構成とインフラストラクチャ
TOPPERS/箱庭WG活動でUnityやらAthrillやらmROSやら触ってます。 最近は仕事の関係でWeb系の技術に注力しつつ、箱庭への転用を模索しています。 2023年8月1日:合同会社箱庭ラボに移動しました
箱庭(Hakoniwa) Design 合同会社箱庭ラボ 森崇
はじめに • この資料では、箱庭の全体設計情報を整理しています。 • アーキテクチャ • 箱庭アセット • アーキテクチャ詳細 • ネットワーク構成とインフラストラクチャ 2
アーキテクチャ • 箱庭アーキテクチャの概要 • 箱庭アーキテクチャの説明 3
箱庭アーキテクチャの概要 4
箱庭アーキテクチャの説明 • 箱庭の中核をなす機能(箱庭コア機能)は、⾮常にシンプルで、以下の4 つに集約されます。 スケジューリング(Scheduling) • 同期・通信(Synchronization & Communication) • 時間管理(Time Management) • アセット管理(Asset Management) • • 箱庭コア機能の利⽤者は「箱庭アセット」であり、箱庭のAPIを呼び出して箱 庭の機能を呼び出しする構成です。 5
箱庭アセット(1/2) • 箱庭アセット定義 • 『箱庭のAPIを利⽤して作成された再利⽤可能なアプリケーション』 • 箱庭アセットの分類︓ • 被制御対象 • ロボット、ドローン、信号機、踏切、電⾞、⾞などなど • 制御プログラム • 被制御対象を制御するためのプログラムであり、様々な⾔語で開発されたプログラム (Python, C/C++, Rust, Ruby, Elixir,..) • シミュレータ • 被制御対象向けのシミュレータ(Unity, Unreal Engine, Gazebo, PyBullet など) • 制御プログラム向けのシミュレータ(マイコンシミュレータAthrillなど) 6
箱庭アセット(2/3) • シミュレーション⾃動化機能 • 箱庭のAPIには、シミュレーションを実⾏、停⽌、リセットする機能があります。 • これらの機能を利⽤する、以下のような⾃動化機能が実現できます。 • ロボットの強化学習(アクション→評価→再実⾏を繰り返す) • 物理シミュレーションを含めた全体結合テスト⾃動実⾏(CI/CD環境として) • ビジュアライズ機能 • 箱庭アセットとして、Unity等を利⽤すれば被制御対象であるロボット等を容易に可視 化できます。また、制御プログラムとの間の通信データは、箱庭の通信データ(PDU) を参照することで、データの流れを可視化できます。 • さらに、そのデータをROS2のデータとしても可視化できるようになります。 7
箱庭アセット(3/3) • さらなる応⽤機能 • 箱庭の上では、様々な制御プログラムを利⽤できますので、 • 箱庭アセットの可能性はとても広いと考えています。 • 特に、Pythonはその応⽤範囲は広く、AIとの連携が期待できます。 • 例えば、Python上でAIエージェントを作成して、 • 箱庭APIを使ってシミュレーション連携させるようなことも容易に実現できます。 8
アーキテクチャ詳細 • 箱庭アーキテクチャの詳細レベルのビューは下図のとおりです。 9
ネットワーク構成とインフラストラクチャ • ネットワークの基本構成 • インフラストラクチャの基本構成 • 構成パターン • 構成適⽤例 • Windows WSL2の構成例 10
ネットワークの基本構成 11
インフラストラクチャの基本構成 • ネットワークの基本構成図にある Computer は、以下の3パターンあります。 • Personal Computer • Docker Container • Embedded Device(Raspberry PI や mROS 2 サポート対応機器など) • また、OSのパターンとしては、以下があります。 • Windows • Windows/WSL2 • MacOS(Intel) • MacOS(AppleSilicon) • Ubuntu 12
構成パターン • 箱庭では、さまざまな構成でのシミュレーションを可能にします。 • ただ、物理シミュレータとしてUnityを利⽤する場合は、Unityと箱庭との構成可能なパターンに制約があります。 • 以下、構成可能なパターンと、Unityと箱庭との間の通信⽅式(制御向け通信とPDU通信)をマトリクスで⽰します。 OS Computer 制御向け通信 PDU通信⽅式 WSL2 PC/Docker gRPC UDP, MQTT (ネイティブ) PC Shared Memory Shared Memory MacOS Intel/ AppleSilicon PC Shared Memory Shared Memory Ubuntu ー PC Shared Memory Shared Memory Windows 13
Windows WSL2の構成例 https://github.com/toppers/hakoniwa-document/blob/main/architecture/examples/README-win.md 14
ネイティブ向けの構成例(Mac/Linux/Windows) Hakoniwa Conductor (Server) Robot Control Program Unity Robot Robot Robot Hakoniwa Conductor (Client) Conductor API Asset API Shared Memory/MMAP Hakoniwa Core Windows/MacOS/Ubuntu 22.04.1 LTS 15
エッジ向け通信構成 箱庭ブリッジ Hakoniwa Conductor (Server) Robot Control Program Unity Robot Robot Robot Hakoniwa Conductor (Client) Conductor API Asset API Shared Memory/MMAP Shared Memory Proxy ROS TOPIC ROS 2 RosProxy Zenoh Zenoh Zenoh 通信 Raspberry Pi Zenoh ROS 2 mROS 2 Raspberry Pi Embedded Device Hakoniwa Core Windows/MacOS/Ubuntu 22.04.1 LTS バーチャル側 Raspberry Pi エッジ側 16