5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ネイティブWindows向け箱庭ドローンシミュレータのインストール手順を公開しました!

Last updated at Posted at 2024-06-25

本記事では、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())

目次

利用するソフトウェア

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 というフォルダを前提として解説を進めます。

image.png

Git Gui で、Clone Existing Repository をクリックします。

image.png

上記のように設定して、Clone をクリックします。

成功すると、下図のようにGit管理用の画面に変わります。

image.png

箱庭のインストール

Windows エクスプローラを開き、クローンしたフォルダを表示してください。

image.png

hakoniwa-unity-drone-model フォルダの下に、install.bat というバッチファイルがありますので、ダブルクリックすると黒い画面が出力されて、箱庭のインストールが実行されます。

成功すると、下図のように、Process completed successfullyと出力されますので、黒い画面を閉じてください。

image.png

Unityエディタのセットアップ

Unity Hubを起動してください。

image.png

Add をクリックし、E:/project/hakoniwa-unity-drone-model/plugin/plugin-srcs を選択してください。

image.png

そのまま選択したプロジェクトを開きましょう。この際、以下のようにバージョンが違う旨のダイアログが出力される場合は、利用されているUnityバージョンを選択して開いてください。自動でバーション変換が行われます。

image.png

以下のダイアログが出ますが、Continue してください。

image

次に、以下のダイアログが出ますので、Ignore してください。

image

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

image

起動直後の状態ですと、コンソール上にたくさんエラーが出ていますので、以下のリンク先を参照して、対応してください。

箱庭のセットアップ

プロジェクトビューのScenesを選択して、ApiDemoをダブルクリックしてください。成功するとこうなります。

image.png

Unityエディタのメニュー Window/Hakoniwa/Generate をクリックしてください。

成功すると、コンソール上にエラーログ出力がなく、下図のように json のログが出力されています。

スクリーンショット 2023-08-28 8 00 16

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アプリを実行して箱庭ドローンシミュレーションを実行する方法は以下の通りです。

事前準備

シミュレーション実行するために、事前に以下を実施ください。

  1. Windowsエクスプローラで、hakoniwa-px4-win/hakoniwa/bin/ を開きます。
  2. 別のWindowsエクスプローラで、hakoniwa/apps を開きます。
  3. 先述した手順でセットアップ完了したUnityエディタを開きます。

シミュレーション実行方法

hakoniwa/bin/run-api2.batをダブルクリックします。

成功すると、下図の黒画面が出力されます。

image.png

次に、Unityエディタのシミュレーション開始ボタンをクリックします。

成功すると、下図のようにゲームビューに切り替わりますので STARTボタンをクリックします。

image.png

最後に、hakoniwa/apps/run-sample.bat をダブルクリックすると、以下の黒画面が出力され、箱庭ドローンが動き出します。

image.png

シミュレーション停止方法

シミュレーションを終了するには、以下の手順で停止してください。

  1. Unityエディタのシミュレーション停止ボタンを押下します。
  2. hakoniwa/apps/run-sample.batの黒画面を閉じます。
  3. hakoniwa/bin/run-api2.batの黒画面を閉じます。

参考:Unity アプリケーションの作成手順

Unityエディタ上で ApiDemo シーンのUnityアプリケーションを作成するための手順です。

  1. Unity の Editor/Project Settings/Quality でアプリケーションの設定をする
  2. Unity の Editor/Project Settings/Player でアプリケーションの設定をする
  3. Unity アプリケーションをビルドする
  4. 箱庭の各種設定ファイルをコピーする

前提

事前に、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 になっています。

image

パソコンの性能が気になる方は、Very Low だけ残して、その他は削除することをお勧めします。

image

Unity の Editor/Project Settings/Player でアプリケーションの設定をする

Player の設定は、デフォルトですと、下図のようになっています。

image

以下の項目を変更しましょう。

  • Fullscreen Mode
    • Windowed に変更して、Width と Height をお好みの値にしてください。
      • ここでは、1024x640 にします。
  • Resizable Window
    • この項目をチェックすることで、Windowサイズを調整できるようになります。

image

Unity アプリケーションをビルドする

File/Build Settings を開き、Add Open Scenes でアプリケーション化したいシーンを選択します。

デフォルトですと、TB3Workが選択されていますので、削除して、ApiDemoを選択します。

その後、Build ボタンをクリックします。

下図のようにダイアログがポップアップされますので、ビルドした結果を格納するディレクトリを選択します。ディレクトリ名は、DroneAppWinとしてください。

成功すると、下図のようにアプリケーションの実行ファイル(model.exe)が生成されます。

image

箱庭の各種設定ファイルをコピーする

前提とする操作で Generate した各種設定ファイル(jsonファイル)一式を、ビルドした結果を格納しているディレクトリにコピー配置しましょう。

次に、plugin-srcs 配下にある ros_types ディレクトリを同様にコピー配置しましょう。

image

Unityアプリケーションを利用したシミュレーション実行手順

Unityアプリケーションでシミュレーション実行するために、事前に以下を実施ください。

  1. Windowsエクスプローラで、hakoniwa-px4-win/hakoniwa/bin/ を開きます。
  2. 別のWindowsエクスプローラで、hakoniwa-px4-win/hakoniwa/apps を開きます。
  3. 別のWindowsエクスプローラで、DroneAppWin を開きます。

シミュレーション実行方法

  1. hakoniwa/bin/run-api2.batをダブルクリックします。
  2. DroneAppWinmodel.exe をダブルクリックし、アプリケーションを起動させ、STARTボタンをクリックします。
  3. hakoniwa/apps/run-sample.bat をダブルクリックすると、以下の黒画面が出力され、箱庭ドローンが動き出します。

シミュレーション停止方法

シミュレーションを終了するには、以下の手順で停止してください。

  1. Unityアプリケーションを閉じます。
  2. hakoniwa/apps/run-sample.batの黒画面を閉じます。
  3. hakoniwa/bin/run-api2.batの黒画面を閉じます。
5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?