箱庭とUnityですすめる
オレオレロボットの動かしかた
森崇(永和システムマネジメント)

1. 前回の続き
1. 箱庭ロボットの作り方

2. 箱庭ロボットの動かし方
1. 箱庭強化学習をもう一度
2. 組み立てたロボットを動かそう！
3. 箱庭のインテグ方法
1. 箱庭の内部アーキテクチャ
2. 箱庭のリポジトリ構成とビルド方法

3

現状の箱庭の全体像（Windows版）
前回(4/17)

今回はココ(5/8)

4

箱庭ロボットの動かし方• まずは、箱庭環境を準備頂く必要があります。
• そのうえで、今の箱庭体験頂こうと思います。

5

事前に準備頂きたいこと• 以下のQiita記事を参照していただき、インストール／動作確認を事前にお願いいたします• Windows＋Unity＋Pythonで箱庭ロボットを強化学習できるようにするための手順書• Mac＋Unity＋Pythonで箱庭ロボットを強化学習できるようにするための手順書• Ubuntuでも箱庭で機械学習するやつを動かそう

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

6

Unity MLAgents との違いはなに？
• 似ている点• UnityとPython使って、Unity上のゲームオブジェクトの機械学習が手軽にできる

7

Unity MLAgents との違いはなに？
• 箱庭のうれしさ• 箱庭のロボットを試せる！
• 箱庭のロボット環境も作れる！
• ホンモノでも試せる！

8

強化学習のアーキテクチャ• こんな感じ。

ここがめちゃくちゃ色々ある！
Q学習はその１つ。

9

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

10強化学習デモ環境の説明

11

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

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

学習済み状態：13

1. 前回の続き
1. 箱庭ロボットの作り方

2. 箱庭ロボットの動かし方
1. 箱庭強化学習をもう一度
2. 組み立てたロボットを動かそう！
3. 箱庭のインテグ方法
1. 箱庭の内部アーキテクチャ
2. 箱庭のリポジトリ構成とビルド方法

組み立てたロボットを動かそう！
①ロボットを組み立てる②ロボットを配置する④箱庭シミュレーションを実行する
Unity

コンフィグファイル(json)
コンフィグファイル(json)
コンフィグファイル(json)
Python③Pythonでロボット制御プログラムを作成する
ロボット制御データ

箱庭コンダクタ

15

操作方法

16

箱庭のコンフィグファイルを利用するひと
ロボット制御
データ

Unity
センサ1

0:センシングデータ1

センサ2

1:センシングデータ2

モータ2:モータ指示値

ロボット

ロボット
位置情報
LoginRobot.
json

PDU

custom.json

通信チャネル17
ロボット制御データ
通信チャネル

Python
箱庭コンダクタ

通信ポート

通信ポート/通信データ(PDU)

0

120

120

1

20

12

箱庭コア機能core_config.json

210

PDUデータコンフィグファイルの種類• LoginRobot.json（hakoniwa-ros2sim¥settings¥tb3）• ロボットの位置情報• custom.json（hakoniwa-ros2sim¥settings¥tb3）• ロボットのI/O方法• 各I/Oで使うデータと型• 補足：以下にも配置されます• hakoniwa-base¥workspace¥dev¥ai• core_config.json（hakoniwa-ros2sim¥ros2¥unity¥tb3）• 通信ポートの定義• 箱庭通信用のPDUデータ定義• ロボットとPDUデータの関係定義

18

1. 前回の続き
1. 箱庭ロボットの作り方

2. 箱庭ロボットの動かし方
1. 箱庭強化学習をもう一度
2. 組み立てたロボットを動かそう！
3. 箱庭のインテグ方法
1. 箱庭の内部アーキテクチャ
2. 箱庭のリポジトリ構成とビルド方法

箱庭のインテグ方法
箱庭内部アーキテクチャ
箱庭リポジトリ構成

箱庭ビルド
方法

箱庭インストール
方法

20

箱庭の内部アーキテクチャ(Windows)

21

箱庭の内部アーキテクチャ(Mac/Linux)

22箱庭リポジトリ構成
submodule

Unity
hakoniwa-ros2sim(unity-asset)

hakoniwa-core

依存
箱庭コンダクタPythonhakoniwa-conductor

hakoniwa-base(ai)hakoniwa-core-spec

hakoniwa-core-cpp-client

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

箱庭ビルド&インストール方法（Unity側）
hakoniwa-coreをクローン
2. DLLのビルド
1.

• Windowsの場合• Visual Studio をインストール• 以下をダブルクリック• https://github.com/toppers/hakoniwa-core/blob/main/impl/asset/server/csharp/HakoniwaCore/Hakoniwa.csproj• Visual Studioが起動• Visual Studioのメニューからビルド実行• dllファイルが、binのフォルダのとこにできます。
• hakoniwa-core¥impl¥asset¥server¥csharp¥HakoniwaCore¥bin¥Debug¥netstandard2.0• Linuxの場合• bash ./impl/asset/server/csharp/HakoniwaCore/build_by_docker.bash Rebuild3.

インストール• hakoniwa.dllを、hakoniwa-ros2simの以下のディレクトリにコピーします。

• hakoniwa-ros2sim¥ros2¥unity¥tb3¥Assets¥Plugin24

箱庭ビルド&インストール方法（Unity以外）• hakoniwa-core-cpp-client• bash build.bash• 共有ライブラリができます(libshakoc.so)。

• bash install.bash• /usr/local/lib/hakoniwaに libshakoc.soをコピーします。

• hakoniwa-conductor• cd main• bash build.bash• bash install.bash• /usr/local/bin/hakoniwaに箱庭コンダクタのバイナリをコピーします。

25

ラズパイ向けの手順と課題（まだ試してません・・・）• アーキテクチャ
ラズパイの範囲

パソコンの範囲

・Windows
・Ubuntu・Mac

26

ラズパイでのビルドおよびインストール方法
1. 事前に以下をインストール• git, gcc, make, build-essential, protobuf-compiler, …
• rust• Python3※参考：https://github.com/toppers/hakoniwa-base/blob/ai/docker/template/runtime/ai/Dockerfile
2. hakoniwa-base(aiブランチ) を recursive で clone

3. 以下をビルド & インストール
1. hakoniwa-core-cpp-client
2. hakoniwa-conductor【ラズパイ対応での心配ごと】• rustがインストール可能かどうか• rust用のgRPCライブラリをインストール可能かどうか• tonic27

パソコン側の設定• いつも通り、Unityのコンフィグファイルを生成します。
• core_config.jsonのパラメータを変更します。
• core_ipaddr• IPアドレスをラズパイのIPアドレスに設定します。

• asset_ipaddr• パソコンのイーサーネットのIPアドレスを設定します。

28

おまけ
• ChatGPTと箱庭をつなげてみました。

29