---
title: Hakoniwa-design
tags:  #hakoniwa  
author: [森崇](https://www.docswell.com/user/kanetugu2015)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/L73RKDZDJ5.jpg?width=480
description: この資料では、箱庭の全体設計情報を整理しています。 - アーキテクチャ - 箱庭アセット - アーキテクチャ詳細 - ネットワーク構成とインフラストラクチャ
published: April 10, 24
canonical: https://www.docswell.com/s/kanetugu2015/538X4Y-hakoniwa-design
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/L73RKDZDJ5.jpg)

箱庭(Hakoniwa)
Design
合同会社箱庭ラボ
森崇


# Page. 2

![Page Image](https://bcdn.docswell.com/page/87DY3PR27G.jpg)

はじめに
• この資料では、箱庭の全体設計情報を整理しています。
• アーキテクチャ
• 箱庭アセット
• アーキテクチャ詳細
• ネットワーク構成とインフラストラクチャ
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/VJP64NWLE8.jpg)

アーキテクチャ
• 箱庭アーキテクチャの概要
• 箱庭アーキテクチャの説明
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/2EV3XK867Q.jpg)

箱庭アーキテクチャの概要
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/57G3VQ52JL.jpg)

箱庭アーキテクチャの説明
• 箱庭の中核をなす機能（箱庭コア機能）は、⾮常にシンプルで、以下の４
つに集約されます。
スケジューリング(Scheduling)
• 同期・通信(Synchronization &amp; Communication)
• 時間管理(Time Management)
• アセット管理(Asset Management)
•
• 箱庭コア機能の利⽤者は「箱庭アセット」であり、箱庭のAPIを呼び出して箱
庭の機能を呼び出しする構成です。
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/4EQ56KZ9JP.jpg)

箱庭アセット（1/2）
• 箱庭アセット定義
• 『箱庭のAPIを利⽤して作成された再利⽤可能なアプリケーション』
• 箱庭アセットの分類︓
• 被制御対象
• ロボット、ドローン、信号機、踏切、電⾞、⾞などなど
• 制御プログラム
• 被制御対象を制御するためのプログラムであり、様々な⾔語で開発されたプログラム
（Python, C/C++, Rust, Ruby, Elixir,..）
• シミュレータ
• 被制御対象向けのシミュレータ（Unity, Unreal Engine, Gazebo, PyBullet など）
• 制御プログラム向けのシミュレータ（マイコンシミュレータAthrillなど）
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/KJ494PDR71.jpg)

箱庭アセット(2/3)
• シミュレーション⾃動化機能
• 箱庭のAPIには、シミュレーションを実⾏、停⽌、リセットする機能があります。
• これらの機能を利⽤する、以下のような⾃動化機能が実現できます。
• ロボットの強化学習（アクション→評価→再実⾏を繰り返す）
• 物理シミュレーションを含めた全体結合テスト⾃動実⾏（CI/CD環境として）
• ビジュアライズ機能
• 箱庭アセットとして、Unity等を利⽤すれば被制御対象であるロボット等を容易に可視
化できます。また、制御プログラムとの間の通信データは、箱庭の通信データ（PDU）
を参照することで、データの流れを可視化できます。
• さらに、そのデータをROS2のデータとしても可視化できるようになります。
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/LE1K49ZVJG.jpg)

箱庭アセット(3/3)
• さらなる応⽤機能
• 箱庭の上では、様々な制御プログラムを利⽤できますので、
• 箱庭アセットの可能性はとても広いと考えています。
• 特に、Pythonはその応⽤範囲は広く、AIとの連携が期待できます。
• 例えば、Python上でAIエージェントを作成して、
• 箱庭APIを使ってシミュレーション連携させるようなことも容易に実現できます。
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/GEWDXQ93J2.jpg)

アーキテクチャ詳細
• 箱庭アーキテクチャの詳細レベルのビューは下図のとおりです。
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/47ZG6W9GE3.jpg)

ネットワーク構成とインフラストラクチャ
• ネットワークの基本構成
• インフラストラクチャの基本構成
• 構成パターン
• 構成適⽤例
• Windows WSL2の構成例
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/YJ6Y2GKQ7V.jpg)

ネットワークの基本構成
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/GJ5G2VP2J4.jpg)

インフラストラクチャの基本構成
• ネットワークの基本構成図にある Computer は、以下の３パターンあります。
• Personal Computer
• Docker Container
• Embedded Device（Raspberry PI や mROS 2 サポート対応機器など）
• また、OSのパターンとしては、以下があります。
• Windows
• Windows/WSL2
• MacOS(Intel)
• MacOS(AppleSilicon)
• Ubuntu
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/LE3RKD3175.jpg)

構成パターン
• 箱庭では、さまざまな構成でのシミュレーションを可能にします。
• ただ、物理シミュレータとして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


# Page. 14

![Page Image](https://bcdn.docswell.com/page/8EDY3P4KEG.jpg)

Windows WSL2の構成例
https://github.com/toppers/hakoniwa-document/blob/main/architecture/examples/README-win.md
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/V7P64NM3J8.jpg)

ネイティブ向けの構成例(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


# Page. 16

![Page Image](https://bcdn.docswell.com/page/2JV3XK9NEQ.jpg)

エッジ向け通信構成
箱庭ブリッジ
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


