「ArduPilotのSITL環境、Windowsで動かすのって正直しんどい……」
って思っていませんか。
- WSLを入れるだけで一苦労
- ビルドや依存関係で何度も詰まる
- 動かした後も「で、どうやって可視化するの?」と立ち止まる
本記事では、そんな悩みを抱えたエンジニア・企画担当の方に向けて、
国産のドローンシミュレータ「箱庭ドローンシミュレータ」 を活用して、“サクサク動いて拡張しやすい”ArduPilot SITLのセットアップ手順を紹介します。
想定読者
- ArduPilotをPoCやプロトタイピングで使いたい方
- 実機がなくても制御ロジックを検証したい開発者
- UnityやWeb連携も含めた「拡張しやすいSITL環境」を探している方
💡ちなみに:PX4でも同じこと、できます
「うちはPX4派なんだけど、箱庭で同じようなことできないの?」
──できます!
箱庭ドローンシミュレータは、オープンソースフライトコントローラの2大巨頭「PX4」「ArduPilot」の両方に対応しているのです。
PX4派の方は、以下の記事をご参照ください:
📖 WindowsでPX4 SITLを超簡単に動かす!箱庭シミュレータの使い方
この記事でできるようになること
- WSL2上でArduPilot SITLを手軽に試せる
- Unityでビジュアライズもできる
- Python APIとの接続で“次のステップ”にも進める
では、早速始めましょう。
💻 Windows環境
必要なものはこれだけです。
ツール | 用途 | 備考 |
---|---|---|
Windows 11 / WSL2 | ホスト環境 | WSL2は必須(WSL1不可) |
Ubuntu 24.04.2 LTS | ArduPilotのビルド/実行 | WSL2内で動かします |
UnityHub/Unity(6.1) | 可視化(任意) | 自機やセンサの3D表示が可能 |
Mission Planner | MAVLinkの通信確認 | QGCでも代替可能ですが相性◎ |
💡 UnityやMission Plannerは「あとからでも導入可」です。
まずは ArduPilot を動かすところまでサクッと進めるのがポイントです。
🛠 環境セットアップ
まずは、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
ディレクトリ作成して、そこで行うのがお勧めです。
✈️ ArduPilot本体(ビルドが必要)
ここみて!
クローンする場所は、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
ちなみに、デフォルトで動くドローンはこちらっす。
お疲れさまでした、さっそく動かしてみましょう
さー、やりましょう。
まずは、Mission Planner 起動だ!
お次は、Ardupilot SITL 起動だー。
hakoniwa-drone-core
に、Ardupilot SITL 起動スクリプトおいてありますから、以下のように起動してください。
bash tools/ardupilot/run.bash <ardupilot-path> <HOST_IP>
<ardupilot-path>
には、Ardupilotのパスを指定してください。
<HOST_IP>
には、ホストPCのIPアドレスを指定してください。(power shell 起動して ipconfig で確認できます)
例:
tmori@WinHako:~/project/hakoniwa-drone-core$ bash tools/ardupilot/run.bash ../ardupilot 192.168.2.156
成功すると、こんな感じで、Ardupilotの起動ログが出力されます。
SIM_VEHICLE: Start
SIM_VEHICLE: Killing tasks
SIM_VEHICLE: Starting up at SITL location
SIM_VEHICLE: WAF build
SIM_VEHICLE: Configure waf
SIM_VEHICLE: "/home/tmori/project/ardupilot/modules/waf/waf-light" "configure" "--board" "sitl"
:
ラスボス・箱庭ドローンシミュレータを起動だ!
以下を実行してください。
bash hakoniwa-drone-core/docker/run.bash
bash hakoniwa-drone-core/docker/tools/run-hako.bash ardupilot
成功すると、Ardupilot と Mission Planner が反応します。
Ardupilot のログはこんな感じです。
Detected vehicle 1:1 on link 0
link 1 OK
online system 1
STABILIZE> Mode STABILIZE
AP: Initialising ArduPilot
AP: ArduCopter V4.7.0-dev (5b317b46)
AP: 35ca8cc61f9c43a581467a70fdde2c6d
AP: Frame: QUAD/X
AP: ArduCopter V4.7.0-dev (5b317b46)
AP: 35ca8cc61f9c43a581467a70fdde2c6d
AP: Frame: QUAD/X
AP: RCInput: decoding UDP (Pulses)
AP: Calibrating barometer
AP: ArduCopter V4.7.0-dev (5b317b46)
AP: 35ca8cc61f9c43a581467a70fdde2c6d
AP: Frame: QUAD/X
Got COMMAND_ACK: REQUEST_MESSAGE: ACCEPTED
Got COMMAND_ACK: REQUEST_MESSAGE: ACCEPTED
Got COMMAND_ACK: REQUEST_AUTOPILOT_CAPABILITIES: FAILED
Got COMMAND_ACK: REQUEST_AUTOPILOT_CAPABILITIES: FAILED
AP: ArduCopter V4.7.0-dev (5b317b46)
AP: 35ca8cc61f9c43a581467a70fdde2c6d
AP: Frame: QUAD/X
Got COMMAND_ACK: DO_SEND_BANNER: ACCEPTED
AP: ArduCopter V4.7.0-dev (5b317b46)
AP: 35ca8cc61f9c43a581467a70fdde2c6d
AP: Frame: QUAD/X
Got COMMAND_ACK: DO_SEND_BANNER: ACCEPTED
AP: ArduCopter V4.7.0-dev (5b317b46)
AP: 35ca8cc61f9c43a581467a70fdde2c6d
AP: Frame: QUAD/X
Got COMMAND_ACK: DO_SEND_BANNER: ACCEPTED
AP: ArduCopter V4.7.0-dev (5b317b46)
AP: 35ca8cc61f9c43a581467a70fdde2c6d
AP: Frame: QUAD/X
Got COMMAND_ACK: DO_SEND_BANNER: ACCEPTED
paramftp: bad count 1349 should be 1339
FTP reply for mavlink component 190
AP: ArduCopter V4.7.0-dev (5b317b46)
AP: 35ca8cc61f9c43a581467a70fdde2c6d
AP: Frame: QUAD/X
AP: Barometer 1 calibration complete
AP: Barometer 2 calibration complete
Init Gyro**AP: ArduCopter V4.7.0-dev (5b317b46)
AP: 35ca8cc61f9c43a581467a70fdde2c6d
AP: Frame: QUAD/X
AP: ArduCopter V4.7.0-dev (5b317b46)
AP: 35ca8cc61f9c43a581467a70fdde2c6d
AP: Frame: QUAD/X
AP: ArduPilot Ready
AP: AHRS: DCM active
AP: ArduCopter V4.7.0-dev (5b317b46)
AP: 35ca8cc61f9c43a581467a70fdde2c6d
AP: Frame: QUAD/X
AP: RC7: SaveWaypoint LOW
Received 1349 parameters
Saved 1349 parameters to mav.parm
fence present
Flight battery 100 percent
Received 1349 parameters (ftp)
Saved 1349 parameters to mav.parm
AP: EKF3 IMU0 initialised
AP: EKF3 IMU1 initialised
AP: AHRS: EKF3 active
AP: EKF3 IMU0 tilt alignment complete
AP: EKF3 IMU1 tilt alignment complete
AP: EKF3 IMU0 MAG0 initial yaw alignment complete
AP: EKF3 IMU1 MAG0 initial yaw alignment complete
AP: GPS 1: probing for u-blox at 230400 baud
AP: GPS 1: detected u-blox
AP: EKF3 IMU0 origin set
AP: EKF3 IMU1 origin set
AP: Field Elevation Set: 121m
AP: PreArm: Gyros inconsistent
AP: PreArm: Main loop slow (222Hz < 300Hz)
AP: EKF3 IMU0 is using GPS
AP: EKF3 IMU1 is using GPS
Unity でドローンの雄姿を見たい人向け
Unityのプレイボタンをクリックして、ヒエラルキービューから、DJIAvatar2
をダブルクリックすると、その雄姿が見えます!
操作動画:
🚀 まとめと次の一歩
ここまでお疲れさまでした!
- ArduPilot SITLをWSL2上で動かし、
- Mission Plannerで状態を確認し、
- Unityで可視化する
という一連のステップを、国産のドローンシミュレータ「箱庭」を使って体験できたと思います。
これだけで終わりではありません。
Hakoniwa Drone Core は、Python API、Web連携、ROS2連携、AR拡張まで可能な拡張性の高いプラットフォームです。
「制御ロジックを試したい」「実機前のPoCを作りたい」「自社プロダクトに組み込みたい」
そういった次のステップに踏み出すための、第一歩になれば嬉しいです。