TOPPERS箱庭の新たな展開：プラットフォーム化への一歩
森崇(永和システムマネジメント)

アジェンダ
1. 箱庭の軌跡
2. プラットフォーム化への一歩
3. 新アーキテクチャの成果

2

箱庭の軌跡

V850

組込み系エンジニア

ロボットAI系エンジニア
RH850

Athrill

ARMv7-AUDP

MMAPROS

ロボット制御系エンジニア

3

箱庭コア機能の役割• スケジューリング
• 同期・通信• 時間管理• アセット管理4C++版箱庭コア機能の狙い
・箱庭コア機能を凝集化・汎用性・拡張性を高める
・将来への布石

箱庭コア
(C++)

箱庭コマンド群(テスト自動化向け)

箱庭アセットAPI群(多言語向け)箱庭ライブラリ(ゲームエンジン向け)

Gazebo

箱庭デーモン(遠隔操作向け)5

TOPPERS活用アイデア・アプリケーション開発コンテスト• 2ECU構成で、C++版箱庭コア機能によってスケジューリングされた• RH850版 AthrillがTOPPERS/AUTOSARスタックを実行し、• ECU間のCAN通信データをROS2トピックで観測できる6

箱庭の分散シミュレーション構成
箱庭アセット・クラスタ
マシン１

マシン２
密結合（時間精度が近い）

疎結合（時間精度が違う）
マシン３

組込み機器1
箱庭アセット・クラスタ[凡例]
箱庭アセット・クラスタ
シミュレーション時間精度が近いアセットの集合
・箱庭コンダクタ(サーバー)
箱庭アセット・クラスタ内に１個存在し、箱庭時間を管理する
・箱庭コンダクタ(クライアント)
箱庭アセット・クラスタ内に0個以上配置できる
物理的にサーバー側と分離する必要がある場合に利用する
・箱庭プロキシ
接続するクラスタ数が２以上になった場合、箱庭コンダクタ間の時間同期とPDUデータ通信を実現する
・箱庭アセット
箱庭シミュレーションの最小単位

7分散シミュレーションを実現する箱庭コンダクタとは箱庭上にいるアセット間のシミュレーション調停するマシン２（クライアント側）
マシン２• gRPCベースのRPCクライアントです
マシン２

マシン１（サーバー側）• gRPCベースのRPCサーバーです• 箱庭アセットの登録• 箱庭アセットをサーバー側に接続する• シミュレーション実行・停止・リセット• PDUデータのI/O

箱庭アセット
箱庭アセット
箱庭アセット

箱庭コンダクタ（サーバー）

箱庭コンダクタ（クライアント）

箱庭アセット
箱庭アセット
箱庭アセット

箱庭API
共有メモリ(PDUデータ等)
箱庭コア機能8

分散シミュレーションの構成例（１／３）• １クラスタ／１マシン構成

9分散シミュレーションの構成例（２／３）• １クラスタ／２マシン構成

10分散シミュレーションの構成例（３／３）• １クラスタ／１組み込み機器構成

11

箱庭がmROS2を採用する理由①軽量であること②汎用OS上でも動作可能であること(mROS2-POSIXの存在)★Macで動かしたい！
③組込み機器との連携をROS2ベースでやれる

12

アジェンダ
1. 箱庭の軌跡
2. プラットフォーム化への一歩
3. 新アーキテクチャの成果

13プラットフォーム化への一歩
宣言：今の箱庭をプラットフォーム化します！
課題・動機

今年度の取り組み

・リポジトリが散らばっており、利用可能なものがよくわからない・箱庭環境を構築するためのノウハウが非公開な状態

・箱庭リポジトリの整理・箱庭のインテグレーションプロセスの自動化

・箱庭のロボットを作ることができる人を増やしたい

・箱庭のロボットを作成するための環境の構築
・箱庭のロボットをUnityアセットストアで公開

・そもそも、箱庭が目指す姿に近づいている？

・箱庭の技術的な方向性を検討する
・特に、LLM/生成系AIが箱庭コンセプト実現にどう寄与するか？を検討したい→箱庭は人間のインスピレーションを加速するP/Fであるべき

14

現時点の箱庭リポジトリ構成
Unitysubmodule(箱庭ロボット毎のリポジトリ)

hakoniwa-unity-simassetplugin

箱庭コンダクタPythonhakoniwa-conductor

hakoniwa-basehakoniwa-core-spec

hakoniwa-core-cpp-client

hakoniwa-core-cpp
箱庭コア機能15

箱庭のインテグレーションプロセスの自動化• 箱庭モジュール組み合わせの自由度を上げる• OSに応じた組み合わせの自動選定／インストールの仕組み

16

箱庭ロボットの開発環境と箱庭アセットの一般公開
箱庭はロボットの開発／統合に必要な道具を用意します

アセットストア
ロボット開発ロボット統合TOPPERS/箱庭 Unityプラグイン

17エンジニアのインスピレーションを加速するP/Fとして• エンジニア間のコミュニケーションを円滑化するための仕組みとしてのAI Buddy• AI Buddyが開発者とペアで開発するスタイル• AI Buddyは、エンジニアと一緒に開発を進める• AI Buddyは、箱庭上で実行したロギング情報にアクセスして問題解決を一緒に手伝ってくれる• AI Buddyは、職種を越えて、他のエンジニア向けに翻訳してくれる
Web系
エンジニア

組込み系
エンジニア

AI
Buddy

システム
仕様/設計

データサイエン
ティスト

AI
Buddy

環境ログ

AI
Buddy

制御ログ

箱庭 AI Conductor

クラウド
エンジニア

AI
Buddy

操作ログ

18

箱庭プラットフォームの方向性

シミュレーション実行状
況・結果・操作ロギング／可視化の仕組み

エンジニア間のコミュニケーションを円滑化する仕組み

コラボレーション

箱庭ロボット・アセットを開発する仕組み

アセット

分散シミュレーション環
境として箱庭環境を構築する仕組み

箱庭で作成したロボッ
トを公開／利用する仕組み

クラウドベースのコンピューティングリソースを活用する仕組み

19

アジェンダ
1. 箱庭の軌跡
2. プラットフォーム化への一歩
3. 新アーキテクチャの成果

20

箱庭強化学習• UnityとPython使って、ロボットの強化学習を手軽にためせます！

21

箱庭強化学習のアーキテクチャ

Pythonプログラム※Qテーブルを使った学習をさせていますが、※他の学習アルゴリズムでも対応可能

https://qiita.com/kanetugu2018/items/ee9b2bf0596a35e42b03

22

箱庭強化学習で使用するロボット

23

強化学習デモ環境の説明

24

Qテーブル設計(ロボット視点）
前進状態

右旋回

Power=50 Power=20

左旋回Power=50

Power=20

Power=50

Power=20

黒??

??

??

??

??

??

黒に近い??

??

??

??

??

??

白に近い??

??

??

??

??

??

白??

??

??

??

??

??

https://github.com/toppers/hakoniwa-base/blob/ai/workspace/dev/ai/qtable_model.csv

25強化学習デモ
未学習状態：

学習済み状態：26

ChatGPT連携• ChatGPTにロボットの動作ルール（仕様）をプロンプトとして与え• センシング情報を入力としてモーター指示値を生成させる

https://qiita.com/kanetugu2018/items/8bcaa2e4ceb464262c19

27

ドローン
• 箱庭でドローンを作成してGitHub公開しました• https://github.com/toppers/hakoniwa-unity-drone-model
https://qiita.com/kanetugu2018/items/cac
bc0b3632e070fb77728

29