「PX4のSITL環境、Windowsで動かすのって正直しんどい……」
って思っていませんか。
- WSLを入れるだけで一苦労
- ビルドや依存関係で何度も詰まる
- 動かした後も「で、どうやって可視化するの?」と立ち止まる
本記事では、そんな悩みを抱えたエンジニア・企画担当の方に向けて、
国産のドローンシミュレータ「箱庭ドローンシミュレータ」 を活用して、“サクサク動いて拡張しやすい”PX4 SITLのセットアップ手順を紹介します。
想定読者
- PX4をPoCやプロトタイピングで使いたい方
- 実機がなくても制御ロジックを検証したい開発者
- UnityやWeb連携も含めた「拡張しやすいSITL環境」を探している方
💡ちなみに:ArduPilotでも同じこと、できます
「うちはArduPilot派なんだけど、箱庭で同じようなことできないの?」
──できます!
箱庭ドローンシミュレータは、オープンソースフライトコントローラの2大巨頭「PX4」「ArduPilot」の両方に対応しているのです。
ArduPilot派の方は、以下の記事をご参照ください:
📖 WindowsでArduPilot SITLを超簡単に動かす!箱庭シミュレータの使い方
この記事でできるようになること
- WSL2上でPX4 SITLを手軽に試せる
- Unityでビジュアライズもできる
- Python APIとの接続で“次のステップ”にも進める
では、早速始めましょう。
💻 Windows環境
必要なものはこれだけです。
ツール | 用途 | 備考 |
---|---|---|
Windows 11 / WSL2 | ホスト環境 | WSL2は必須(WSL1不可) |
Ubuntu 24.04.2 LTS | PX4のビルド/実行 | WSL2内で動かします |
UnityHub/Unity(6.1) | 可視化(任意) | 自機やセンサの3D表示が可能 |
QGC | MAVLinkの通信確認 | - |
💡 UnityやQGCは「あとからでも導入可」です。
まずは PX4 を動かすところまでサクッと進めるのがポイントです。
🛠 環境セットアップ
まずは、WSL2を起動です!
📦 箱庭ドローンシミュレータ本体
git clone --recursive https://github.com/toppers/hakoniwa-drone-core.git
クローンする場所は、WSL2/Ubuntuのホーム直下に project
ディレクトリ作成して、そこで行うのがお勧めです。
クローンおわったら、WSL に docker をインストールしよう!
箱庭Webサーバー
git clone --recursive https://github.com/toppers/hakoniwa-webserver.git
クローンする場所は、WSL2/Ubuntuのホーム直下に project
ディレクトリ作成して、そこで行うのがお勧めです。
✈️ PX4本体(ビルドが必要)
ここみて!
クローンする場所は、WSL2/Ubuntuのホーム直下に project
ディレクトリ作成して、そこで行うのがお勧めです。
🎮 Unityで可視化したい場合はこちら(任意)
git clone --recursive https://github.com/hakoniwalab/hakoniwa-unity-drone.git
クローンする場所は、Windowsのファイルシステム(例えば /mnt/c
)直下に project
ディレクトリ作成して、そこで行うのがお勧めです。
クローン終わったら、Unity Hubで下図のように Add
をクリックして、
hakoniwa-unity-drone/simulation を追加してください。
成功すると、下図のようになります。
そして、simulation
をクリックすると、Unityが起動します。(何回か再起動メッセージがでますが、めげずにがんばりましょう)
起動後、下図のように、プロジェクトビューから、Scenes/WebAvatar
をクリック!
ヒエラルキービューの HakoniwaWeb
を選択して、Inspectorビューの Server Uri
のIPアドレスを、WSL2のIPアドレスを指定します。
WSL2のIPアドレスは、Ubuntu 上で ifconfig
で eth0
のものを入力します。
例:
tmori@WinHako:~/qiita$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.31.9.252 netmask 255.255.240.0 broadcast 172.31.15.255
ちなみに、デフォルトで動くドローンはこちらっす。
お疲れさまでした、さっそく動かしてみましょう
さー、やりましょう。
まずは、QGC 起動だ!
お次は、PX4 SITL 起動だー。
hakoniwa-drone-core
に、PX4 SITL 起動スクリプトおいてありますから、以下のように起動してください。
bash hakoniwa-drone-core/tools/px4/run.bash
成功すると、こんな感じで、PX4の起動ログが出力されます。
tmori@WinHako:~/qiita$ bash hakoniwa-drone-core/tools/px4/run.bash
[0/1] launching px4 none_iris (SYS_AUTOSTART=10016)
______ __ __ ___
| ___ \ \ \ / / / |
| |_/ / \ V / / /| |
| __/ / \ / /_| |
| | / /^\ \ \___ |
\_| \/ \/ |_/
px4 starting.
INFO [px4] startup script: /bin/sh etc/init.d-posix/rcS 0
env SYS_AUTOSTART: 10016
INFO [param] selected parameter default file parameters.bson
INFO [param] importing from 'parameters.bson'
INFO [parameters] BSON document size 350 bytes, decoded 350 bytes (INT32:15, FLOAT:3)
INFO [param] selected parameter backup file parameters_backup.bson
INFO [dataman] data manager file './dataman' size is 1208528 bytes
INFO [init] PX4_SIM_HOSTNAME: 127.0.0.1
INFO [simulator_mavlink] using TCP on remote host 127.0.0.1 port 4560
WARN [simulator_mavlink] Please ensure port 4560 is not blocked by a firewall.
INFO [simulator_mavlink] Resolved host '127.0.0.1' to address: 127.0.0.1
INFO [simulator_mavlink] Waiting for simulator to accept connection on TCP port 4560
ラスボス・箱庭ドローンシミュレータを起動だ!
以下を実行してください。
bash hakoniwa-drone-core/docker/run.bash
bash hakoniwa-drone-core/docker/tools/run-hako.bash px4
成功すると、PX4 と QGC が反応します。
PX4 のログはこんな感じです。
INFO [simulator_mavlink] Simulator connected on TCP port 4560.
ERROR [simulator_mavlink] poll timeout 0, 111
ERROR [simulator_mavlink] poll timeout 0, 111
INFO [lockstep_scheduler] setting initial absolute time to 1748046466970062 us
INFO [commander] LED: open /dev/led0 failed (22)
WARN [health_and_arming_checks] Preflight Fail: ekf2 missing data
WARN [health_and_arming_checks] Preflight Fail: system power unavailable
INFO [uxrce_dds_client] init UDP agent IP:127.0.0.1, port:8888
INFO [mavlink] mode: Normal, data rate: 4000000 B/s on udp port 18570 remote port 14550
INFO [mavlink] mode: Onboard, data rate: 4000000 B/s on udp port 14580 remote port 14540
INFO [mavlink] mode: Onboard, data rate: 4000 B/s on udp port 14280 remote port 14030
INFO [mavlink] mode: Gimbal, data rate: 400000 B/s on udp port 13030 remote port 13280
INFO [logger] logger started (mode=all)
INFO [mavlink] partner IP: 172.31.0.1
INFO [logger] Start file log (type: full)
INFO [logger] [logger] ./log/2025-05-24/00_27_47.ulg
INFO [logger] Opened full log file: ./log/2025-05-24/00_27_47.ulg
INFO [mavlink] MAVLink only on localhost (set param MAV_{i}_BROADCAST = 1 to enable network)
INFO [mavlink] MAVLink only on localhost (set param MAV_{i}_BROADCAST = 1 to enable network)
INFO [px4] Startup script returned successfully
pxh> INFO [tone_alarm] home set
ERROR [mavlink] vehicle_command_ack lost, generation 3 -> 24
ERROR [mavlink] vehicle_command_ack lost, generation 3 -> 24
ERROR [mavlink] vehicle_command_ack lost, generation 3 -> 24
ERROR [mavlink] vehicle_command_ack lost, generation 3 -> 24
INFO [commander] Ready for takeoff!
Unity でドローンの雄姿を見たい人向け
Unityのプレイボタンをクリックして、ヒエラルキービューから、DJIAvatar2
をダブルクリックすると、その雄姿が見えます!
操作動画:
🚀 まとめと次の一歩
ここまでお疲れさまでした!
- PX4 SITLをWSL2上で動かし、
- QGC で状態を確認し、
- Unityで可視化する
という一連のステップを、国産のドローンシミュレータ「箱庭」を使って体験できたと思います。
これだけで終わりではありません。
Hakoniwa Drone Core は、Python API、Web連携、ROS2連携、AR拡張まで可能な拡張性の高いプラットフォームです。
「制御ロジックを試したい」「実機前のPoCを作りたい」「自社プロダクトに組み込みたい」
そういった次のステップに踏み出すための、第一歩になれば嬉しいです。