toppers / hakoniwa-unity-simasset-plugin

A plugin for Unity to easily integrate assets into hakoniwa simulation environment.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

hakoniwa-unity-simasset-plugin

A plugin for Unity to easily integrate assets into hakoniwa simulation environment.

本パッケージでできること

  • 箱庭ロボット開発キットで、ロボットを組み立てできます
  • 本環境だけで、作成したロボットの動作確認ができます
  • 動作確認済みのロボットを Python で強化学習できます

前提条件

  • OS
    • Windows/WSL2
      • net-tools がインストールされていること
      • unzip がインストールされていること
  • Unity Hub
    • Unity Hub 3.4.1以降
  • Unity
    • Unity 2021.3.7f1以降
  • hakoniwa-baseのインストール

事前準備

hakoniwa-baseをクローンします。

git clone -b ai --recursive https://github.com/toppers/hakoniwa-base.git

次に、以下のファイルを編集します。

hakoniwa-base/workspace/runtime/asset_def.txt

ファイルの内容を以下のように変更してください。

dev/ai/sample_robo.py:mqtt

変更差分:

-dev/ai/ai_qtable.py
+dev/ai/sample_robo.py:mqtt

インストール手順

本リポジトリを hakoniwa-base と同じディレクトリ階層でクローンします。

git clone https://github.com/toppers/hakoniwa-unity-simasset-plugin.git

成功するとこうなります。

$ ls
hakoniwa-base
hakoniwa-unity-simasset-plugin

次に、必要な dll をインストールします。

cd hakoniwa-unity-simasset-plugin
bash install.bash

Unity Hub から、hakoniwa-unity-simasset-plugin/plugin-srcs を開き、Unityを起動してください。

なお、Unity起動時にNewtonsoft.Jsonがないというエラーが出る場合があります。 この場合は、以下の記事を参考にして、UnityのパッケージマネージャからNewtonsoft.Jsonをインストールしてください。

https://qiita.com/sakano/items/6fa16af5ceab2617fc0f

Unity起動したら、Hakoniwa シーンをダブルクリックしてください。

image

成功すると、こうなります。

image

まずは、ロボットの場所を確認しましょう。 ヒエラルキービューのRobot/SampleRoboをダブルクリックすると、ロボットがこのように見えます。

image

この状態で、Window/Hakoniwa/Generateをクリックすると、箱庭のコンフィグ情報が自動生成されます。

image

動作確認方法

SampleRoboをお好きな場所に移動させてください。

次に、hakoniwa-baseで以下のコマンドを実行します。

 bash docker/run.bash runtime

ログ:

ASSET_DEF=asset_def.txt
INFO: ACTIVATING MOSQUITTO
[38052.770022]~DLT~    9~INFO     ~FIFO /tmp/dlt cannot be opened. Retrying later...
INFO: ACTIVATING HAKO-MASTER
OPEN RECIEVER UDP PORT=172.25.195.216:54001
OPEN SENDER UDP PORT=172.25.195.216:54002
mqtt_url=mqtt://172.25.195.216:1883
PUBLISHER Connecting to the MQTT server...
PUBLISHER CONNECTED to the MQTT server...
delta_msec = 20
max_delay_msec = 100
INFO: shmget() key=255 size=80768
Server Start: 172.25.195.216:50051
INFO: ACTIVATING :dev/ai/sample_robo.py
START TB3 TEST
LOADED: SampleRobo
INFO: SampleRobo create_lchannel: logical_id=3 real_id=0 size=48
subscribe:channel_id=0
subscribe:typename=Bool
subscribe:pdu_size=4
subscribe:channel_id=1
subscribe:typename=CompressedImage
subscribe:pdu_size=1229064
subscribe:channel_id=2
subscribe:typename=LaserScan
subscribe:pdu_size=3044
WAIT START:

その後、Unityのシミュレーションを開始します。

image

この状態で、STARTボタンを押下して、Seneタブをみると、下図のようにロボットが動き出しているのが見えます。

image

シミュレーションを終わる時は、Unityのシミュレーションを停止し、hakoniwa-baseの実行コマンドを CTRL+Cで停止してください。

TODO

  • Unityアセットパッケージ対応
  • SHM対応
  • Ubuntu対応
  • Mac対応
  • TB3モデル対応
  • EV3モデル対応

About

A plugin for Unity to easily integrate assets into hakoniwa simulation environment.


Languages

Language:C# 98.0%Language:Python 1.1%Language:Shell 0.5%Language:Smarty 0.2%Language:Batchfile 0.1%