- OS
- Windows 10/11 WSL2 Ubuntu 22.04.1 LTS
- Unity Hub
- Unity Hub 3.5.2
- Unity
- Unity 2022.3.8f1
なお、Unityおよび Unity Hub はインストールされていることを前提として解説します。
Zumo ロボットの寸法は、以下の 3D モデル(Zumo.zip)を 10 倍しています。
https://github.com/ncesnagoya/hakoniwa-unity-zumo/releases
理由は、Unityの単位が、1ユニット=1メートルでありますが、本物のzumoは 10cm 程度と小さいためです。
経験上、Unityで扱うオブジェクトのサイズが小さいとシミュレーションが適切に行われないケースがあり、Unityの1ユニットの単位で揃えておく方が良いと判断。
- ラインフォロワーセンサー
- ジャイロセンサー
- 加速度センサー
- 磁気センサー
- モーター
- LED
センサー | 実機の幅(mm) | Unityの幅(m) | Unityのオフセット(m) |
---|---|---|---|
右端 | 0.00(0.00) | 0.0 | 0.330 |
1 | 3.49(0.1375) | 0.035 | 0.295 |
2 | 13.58(0.535) | 0.136 | 0.159 |
3 | 11.17(0.44) | 0.112 | 0.048 |
4 | 9.52(0.375) | 0.095 | -0.048 |
5 | 11.17(0.44) | 0.112 | -0.159 |
6 | 13.58(0.535) | 0.136 | -0.295 |
左端 | 3.49(0.1375) | 0.035 | -0.330 |
sum | 66(2.6) | 0.66 |
参考:https://www.pololu.com/docs/0J57/2.c
Unityは左手系ですが、PDU通信データは右手系で計算した値を設定しています。
指 | 座標 | 左手系(Unity) | ← | 右手系(ROS) | ← |
---|---|---|---|---|---|
指 | 座標 | 自分中心 | ロボット | 自分中心 | ロボット |
親指 | X | 後 | 右 | 右 | 前方 |
人差し指 | Y | 上 | 上 | 前 | 左 |
中指 | Z | 右 | 前方 | 上 | 上 |
- ZumoPduSensor
- line_sensors: ラインフォロワーセンサー(配列:6個)
- ZumoPduLineSensor
- brightness: 0-1000 の値(0: 黒、1000: 白)
- ZumoPduLineSensor
- imu: ジャイロセンサー/加速度センサー/磁気センサー
- ZumoPduImu
- acc: 加速度センサー
- gyro: ジャイロセンサ―
- mag: 磁気センサー
- 補足:
- 角度はオイラー角(度)
- 加速度の距離は実際の寸法に合わせています(単位:m)
- ZumoPduImu
- 補足:
- irs は定義のみで、未使用
- line_sensors: ラインフォロワーセンサー(配列:6個)
- ZumoPduActuator
- motors: モーター(配列:2個)
- ZumoPduMotor
- power: モーター回転指示値(値が大きいほど高い回転数が得られる。プラス値は正回転、マイナス値は逆回転)
- ZumoPduMotor
- led: LED
- ZumoPduLed
- green: 車体先頭の2個のLEDのON/OFF指示。
- ON: true
- OFF: false
- 補足:
- red, blue, yellow は定義のみで、未使用
- green: 車体先頭の2個のLEDのON/OFF指示。
- ZumoPduLed
- motors: モーター(配列:2個)
2つのリポジトリをクローンします。
git clone --recursive git@github.com:ncesnagoya/hakoniwa-zumosim.git
git clone --recursive git@github.com:ncesnagoya/hakoniwa-unity-zumo.git
Zumo.zip
をダウンロードし解凍して、Zumo
フォルダ以下を plugin/plugin-srcs/Assets/Model
にコピーします。
https://github.com/ncesnagoya/hakoniwa-unity-zumo/releases/download/v1.2.0/Zumo.zip
クローンが終わったら、以下のようにディレクトリ移動します。
cd hakoniwa-unity-zumo/
そして、必要なUnityモジュール類をインストールします。
bash install.bash
unzipがないというエラーが出た場合は場合はインストールをしてください
sudo apt-get install -y unzip
この状態で Unity Hub で当該プロジェクトを開きましょう。
対象フォルダ:hakoniwa-unity-zumo\plugin\plugin-srcs
途中、バージョンが異なる旨のメッセージが出ますが、Continue
してください。
もし、以下のダイアログが出た場合は、Ignore
してください。
成功するとこうなります。
次に、Newtonsoft.Json
が不足している場合は、以下で対応してください。
PackageManager左上の+ボタンから、「Add package from git URL...」で com.unity.nuget.newtonsoft-json
を追加します。
Unityエディタ起動後、プロジェクトビューの Scenes/Zumo/Work
をダブルクリックしてください。
なお、以下のダイアログが出ますので、TMP Importer
のImport TMP Essentials
をクリックして、クローズしましょう。
このまま、Window/Hakoniwa/GenerateDebug
をクリックしましょう。
コンフィグファイルの出力先は、Assets/Resources
配下です。
補足:Resources配下のファイルは、起動時にUnityエディタがキャッシュしているため、Generateした場合は、再起動してください。
シミュレーション開始ボタンを押下し、以下の画面が出力され、コンソールにエラーメッセージが出力されていなければ成功です。
Unityエディタ起動後、プロジェクトビューの Scenes/Zumo/Hakoniwa
をダブルクリックしてください。
このまま、Window/Hakoniwa/Generate
をクリックしましょう。
コンフィグファイルの出力先は、Assets/Resources
配下です。
補足:Resources配下のファイルは、起動時にUnityエディタがキャッシュしているため、Generateした場合は、再起動してください。
シミュレーションを開始する場合は、hakoniwa-zumosim
配下で、以下のコマンドを実行してください。
bash docker/run.bash
その後、シミュレーション開始ボタンを押下し、コンソールにエラーメッセージが出力されていなければ成功です。
シミュレーションを停止する場合は、Unityのシミュレーションを停止後に、hakoniwa-zumosim
の端末を CTRL+C
してください。