本記事では、Unityエディタを利用したネイティブWindows版の箱庭ドローンシミュレータのインストールおよびシミュレーション実行手順を説明します。
ちなみに、箱庭ドローンシミュレータって何?っていう方、Pythonプログラムで箱庭ドローンをこんな風に操作できるシミュレーション環境です。
Pythonプログラム:
# connect to the HakoSim simulator
client = hakosim.MultirotorClient(sys.argv[1])
client.confirmConnection()
client.enableApiControl(True)
client.armDisarm(True)
lidarData = client.getLidarData()
if (len(lidarData.point_cloud) < 3):
print("\tNo points received from Lidar data")
else:
print(f"len: {len(lidarData.point_cloud)}")
points = parse_lidarData(lidarData)
print("\tReading: time_stamp: %d number_of_points: %d" % (lidarData.time_stamp, len(points)))
print("\t\tlidar position: %s" % (pprint.pformat(lidarData.pose.position)))
print("\t\tlidar orientation: %s" % (pprint.pformat(lidarData.pose.orientation)))
#lidar_z = lidarData.pose.position.z_val
condition = numpy.logical_and(points <= 2, points > 0)
filtered_points = points[numpy.any(condition, axis=1)]
print(filtered_points)
client.takeoff(3)
baggage_pos = { "x": 0, "y": 3 }
transfer_pos = { "x": 0, "y": -1, "z": 0.7 }
transport(client, baggage_pos, transfer_pos)
debug_pos(client)
client.simSetCameraOrientation("0",15)
baggage_pos = { "x": 0, "y": 4 }
transfer_pos = { "x": 0, "y": -1, "z": 1.2 }
transport(client, baggage_pos, transfer_pos)
debug_pos(client)
client.moveToPosition(-2, -1, 3, 5)
debug_pos(client)
time.sleep(3)
client.moveToPosition(-2, -1, 0.3, 5)
debug_pos(client)
time.sleep(3)
lidarData = client.getLidarData()
if (len(lidarData.point_cloud) < 3):
print("\tNo points received from Lidar data")
else:
print(f"len: {len(lidarData.point_cloud)}")
points = parse_lidarData(lidarData)
print("\tReading: time_stamp: %d number_of_points: %d" % (lidarData.time_stamp, len(points)))
print("\t\tlidar position: %s" % (pprint.pformat(lidarData.pose.position)))
print("\t\tlidar orientation: %s" % (pprint.pformat(lidarData.pose.orientation)))
#lidar_z = lidarData.pose.position.z_val
condition = numpy.logical_and(points <= 2, points > 0)
filtered_points = points[numpy.any(condition, axis=1)]
print(filtered_points)
png_image = client.simGetImage("0", hakosim.ImageType.Scene)
if png_image:
with open("scene.png", "wb") as f:
f.write(png_image)
client.simSetCameraOrientation("0",-90)
client.land()
debug_pos(client)
return 0
if __name__ == "__main__":
sys.exit(main())
目次
- 利用するソフトウェア
- ネイティブWindows版の箱庭ドローンシミュレータのインストール
- Unity エディタのセットアップ手順
- Pythonアプリとの連携方法
- 参考:Unity アプリケーションの作成手順
利用するソフトウェア
- Git for Windows
- Unity Hub
- Unity
- RAM Disk
- Python
Git for Windows
のインストールおよび利用方法については、公式サイトを参照ください。
Git for WIndows
以外のインストール方法は、箱庭ドローンシミュレータ_事前インストール編_windows版を参照ください。
ネイティブWindows版の箱庭ドローンシミュレータのインストール
箱庭ドローンシミュレータ_操作編の以下を実施して、hakoniwa-px4-win
をインストールしてください。
- 箱庭ドローンシミュレータの導⼊
- 箱庭ドローンシミュレータ⽤のコンフィグパスの設定
Unity エディタのセットアップ手順
Git クローン
Git ツールを利用して、https://github.com/toppers/hakoniwa-unity-drone-model.git
をクローンしてください。
ここで、クローンするフォルダは、Eドライブの project というフォルダを前提として解説を進めます。
Git Gui で、Clone Existing Repository
をクリックします。
- Source Location: https://github.com/toppers/hakoniwa-unity-drone-model.git
- Target Directory: E:/project/hakoniwa-unity-drone-model
上記のように設定して、Clone
をクリックします。
成功すると、下図のようにGit管理用の画面に変わります。
箱庭のインストール
Windows エクスプローラを開き、クローンしたフォルダを表示してください。
hakoniwa-unity-drone-model
フォルダの下に、install.bat
というバッチファイルがありますので、ダブルクリックすると黒い画面が出力されて、箱庭のインストールが実行されます。
成功すると、下図のように、Process completed successfully
と出力されますので、黒い画面を閉じてください。
Unityエディタのセットアップ
Unity Hubを起動してください。
Add
をクリックし、E:/project/hakoniwa-unity-drone-model/plugin/plugin-srcs
を選択してください。
そのまま選択したプロジェクトを開きましょう。この際、以下のようにバージョンが違う旨のダイアログが出力される場合は、利用されているUnityバージョンを選択して開いてください。自動でバーション変換が行われます。
以下のダイアログが出ますが、Continue
してください。
次に、以下のダイアログが出ますので、Ignore
してください。
成功するとこうなります。
起動直後の状態ですと、コンソール上にたくさんエラーが出ていますので、以下のリンク先を参照して、対応してください。
箱庭のセットアップ
プロジェクトビューのScenes
を選択して、ApiDemo
をダブルクリックしてください。成功するとこうなります。
Unityエディタのメニュー Window/Hakoniwa/Generate
をクリックしてください。
成功すると、コンソール上にエラーログ出力がなく、下図のように json のログが出力されています。
Pythonアプリとの連携方法
Pythonアプリで箱庭ドローンを操作するためには、先述した hakoniwa-px4-win
のインストールが必要です。
hakoniwa-px4-win
のフォルダ内には以下の重要なファイルがあります。
- hakoniwa/apps/sample.py
- 箱庭ドローンを制御するためのPythonプログラムです。お好みのPythonエディタを使用して、ご自分のプログラムを作成できます。
- hakoniwa/apps/run-sample.bat
- sample.pyを起動するバッチファイルです。sample.pyを実行するには、このバッチファイルをダブルクリックします。
- hakoniwa/bin/run-api2.bat
- 箱庭ドローンシミュレータを起動するバッチファイルです。
Pythonアプリを実行して箱庭ドローンシミュレーションを実行する方法は以下の通りです。
事前準備
シミュレーション実行するために、事前に以下を実施ください。
- Windowsエクスプローラで、
hakoniwa-px4-win/hakoniwa/bin/
を開きます。 - 別のWindowsエクスプローラで、
hakoniwa/apps
を開きます。 - 先述した手順でセットアップ完了したUnityエディタを開きます。
シミュレーション実行方法
hakoniwa/bin/run-api2.bat
をダブルクリックします。
成功すると、下図の黒画面が出力されます。
次に、Unityエディタのシミュレーション開始ボタンをクリックします。
成功すると、下図のようにゲームビューに切り替わりますので START
ボタンをクリックします。
最後に、hakoniwa/apps/run-sample.bat
をダブルクリックすると、以下の黒画面が出力され、箱庭ドローンが動き出します。
シミュレーション停止方法
シミュレーションを終了するには、以下の手順で停止してください。
- Unityエディタのシミュレーション停止ボタンを押下します。
-
hakoniwa/apps/run-sample.bat
の黒画面を閉じます。 -
hakoniwa/bin/run-api2.bat
の黒画面を閉じます。
参考:Unity アプリケーションの作成手順
Unityエディタ上で ApiDemo
シーンのUnityアプリケーションを作成するための手順です。
- Unity の Editor/Project Settings/Quality でアプリケーションの設定をする
- Unity の Editor/Project Settings/Player でアプリケーションの設定をする
- Unity アプリケーションをビルドする
- 箱庭の各種設定ファイルをコピーする
前提
事前に、Unityエディタの箱庭シーンから、箱庭のコンフィグファイルを Generate
してください。
Generateすると、plugin-srcs
直下に、以下のファイルが出力されます。
HakoniwaSimTime.json
LoginRobot.json
RosTopics.json
core_config.json
custom.json
hakoniwa_path.json
inside_assets.json
pdu_channel_connector.json
pdu_configs.json
pdu_readers.json
pdu_writers.json
reader_connector.json
rpc_methods.json
shm_methods.json
writer_connector.json
Unity の Editor/Project Settings/Quality でアプリケーションの設定をする
Quality の設定は、デフォルトですと、Ultra
になっています。
パソコンの性能が気になる方は、Very Low
だけ残して、その他は削除することをお勧めします。
Unity の Editor/Project Settings/Player でアプリケーションの設定をする
Player の設定は、デフォルトですと、下図のようになっています。
以下の項目を変更しましょう。
- Fullscreen Mode
- Windowed に変更して、Width と Height をお好みの値にしてください。
- ここでは、1024x640 にします。
- Windowed に変更して、Width と Height をお好みの値にしてください。
- Resizable Window
- この項目をチェックすることで、Windowサイズを調整できるようになります。
Unity アプリケーションをビルドする
File/Build Settings を開き、Add Open Scenes でアプリケーション化したいシーンを選択します。
デフォルトですと、TB3Workが選択されていますので、削除して、ApiDemoを選択します。
その後、Build ボタンをクリックします。
下図のようにダイアログがポップアップされますので、ビルドした結果を格納するディレクトリを選択します。ディレクトリ名は、DroneAppWinとしてください。
成功すると、下図のようにアプリケーションの実行ファイル(model.exe)が生成されます。
箱庭の各種設定ファイルをコピーする
前提とする操作で Generate
した各種設定ファイル(jsonファイル)一式を、ビルドした結果を格納しているディレクトリにコピー配置しましょう。
次に、plugin-srcs
配下にある ros_types
ディレクトリを同様にコピー配置しましょう。
Unityアプリケーションを利用したシミュレーション実行手順
Unityアプリケーションでシミュレーション実行するために、事前に以下を実施ください。
- Windowsエクスプローラで、
hakoniwa-px4-win/hakoniwa/bin/
を開きます。 - 別のWindowsエクスプローラで、
hakoniwa-px4-win/hakoniwa/apps
を開きます。 - 別のWindowsエクスプローラで、
DroneAppWin
を開きます。
シミュレーション実行方法
-
hakoniwa/bin/run-api2.bat
をダブルクリックします。 -
DroneAppWin
のmodel.exe
をダブルクリックし、アプリケーションを起動させ、START
ボタンをクリックします。 -
hakoniwa/apps/run-sample.bat
をダブルクリックすると、以下の黒画面が出力され、箱庭ドローンが動き出します。
シミュレーション停止方法
シミュレーションを終了するには、以下の手順で停止してください。
- Unityアプリケーションを閉じます。
-
hakoniwa/apps/run-sample.bat
の黒画面を閉じます。 -
hakoniwa/bin/run-api2.bat
の黒画面を閉じます。