本記事は、Mac のパソコン上で、箱庭ロボットの強化学習をできるようにするための手順書です。
ベースとなる考え方/アーキテクチャやインストールの流れは、こちらの記事に記載されています。
ただ、TOPPERS/箱庭は、クロスプラットフォーム対応しておりますので、ご使用の OS によって若干インストール手順が変わります。ですので、Mac の方向けの手順書をこちらで整理することにしました。
事前準備
事前にUnityおよび Blender のインストールをお願いします!
インストール手順
本環境を利用するための最初の一歩は、hakoniwa-base の AI ブランチをクローンすることです。
git clone -b ai --recursive https://github.com/toppers/hakoniwa-base.git
Python 実行環境のインストール
強化学習用の Python プログラムは、ホスト上で直接実行しますので、以下の手順で必要なツール類をインストールします。
インストールを実行するディレクトリは、hakoniwa-base
直下です。
cd hakoniwa-base
Intel系Mac版の場合は、以下のコマンドでインストール実行します。
bash native/template/runtime/ai/mac/install.bash intel
Arm系Mac版の場合は、以下のコマンドでインストール実行します。
bash native/template/runtime/ai/mac/install.bash arm
インストール途中でパスワード聞かれますが、/usr/local/lib/hakoniwa
と/usr/local/bin/hakoniwa
に各種ツール類を配置するためです。
Unity環境のセットアップ
次に、以下のリポジトリを hakoniwa-base
と同じディレクトリ階層でクローンします。
現在、hakoniwa-base 直下にいる場合は、以下のコマンドで1個上のディレクトリに移動してこうなっていればOKです。
$ cd ..
$ ls
hakoniwa-base
この状態で、以下のようにクローンします。
git clone -b unity-asset --recursive https://github.com/toppers/hakoniwa-ros2sim.git
クローン後、こうなっていればOKです。
$ ls
hakoniwa-base hakoniwa-ros2sim
hakoniwa-ros2sim
ディレクトリ直下で docker コンテナを起動します。
cd hakoniwa-ros2sim
bash docker/run.bash <port>
port には,ネットワークポート名(例:"en0")を引数に指定する必要がありまます。 ポート名は ifconfig コマンド等で確認できます.
次に、以下の手順で必要なUnityモデルなどをインストールします。
bash hako-install.bash cpp
Unity環境の起動
いよいよ、Unityを起動していきます。
まずは、Unity Hub を起動して、「開く」ボタンをクリックしてください。
hakoniwa-ros2sim をクローンしたディレクトリ内のhakoniwa-ros2sim\ros2\unity\tb3
を選択して、「開く」ボタンをクリックしてください(数分かかります...)。
- 補足
- この際、Unityバージョンが異なる旨のメッセージが出る場合があります。異なるバージョンであってもUnityがいい感じで変換してくれますので、問題ありません。
起動すると以下の画面が現れます。
次に、画面左下にある「プロジェクトビュー」の「Assets/Scenes/Transport」を選択し、画面下にある「Shm_Configurator」というシーンをダブルクリックします。
この状態で、以下のように「Generate」を実行してください。
その後、もう一度、以下のコマンドを実行してください。
bash hako-install.bash cpp
強化学習の実行手順
解説長かったですが、強化学習の実行手順をご説明しましょう。
強化学習プログラムを編集する
強化学習プログラムは、先ほどクローンした hakoniwa-base
の以下のファイルを直接編集します。
- workspace/dev/ai/ai_qtable.py
- workspace/dev/ai/hako_robomodel_ev3.py
なお、プログラム編集環境は、VSCode がお薦めです。
左側のビューでディレクトリ構成を一覧で見れますし、下側にWSL2のターミナルを開くこともできちゃいます!
箱庭環境を起動する
以下のコマンドで箱庭環境を起動します。
bash native/template/runtime/ai/mac/run.bash
起動成功すると、以下のログが出力されます。
INFO: ACTIVATING HAKONIWA-CONDUCTOR
INFO: ACTIVATING :dev/ai/ai_qtable.py
create_channel: id=0 size=196
Unityのシミュレーションを開始する
Unityエディタの画面左下にある「プロジェクトビュー」の「Assets/Scenes/Transport」を選択すると、画面下に「Simulation」というシーンがありますので、これをダブルクリックしましょう。
以下のようにコースが表示されていれば成功です。
この状態で、Unityエディタの再生ボタンをクリックしましょう。
成功すると、以下のようにロボットが現れます。
この状態で、「開始」ボタンをクリックです!
成功するとロボットが動き出します。
なお、強化学習中に、終了状態になった場合は、強制リセットがかかり、最初から学習をやり直しますので、学習状況が見えて楽しいですよ。
トラブルシューティング
現時点(2023/04/22)では、特にありません。