Unityでドローンを飛ばす。
それだけなら誰でもできる。(たぶん)
でも──
- 衝突すると挙動が変わり、
- 荷物をマグネットで掴み、
- ジンバル付きカメラで前方を覗き、
- 3D LiDARで周囲をスキャンし、
- バッテリーはちゃんと“減って”いき、
- プロペラは物理制御に連動して回転、
- ゲームパッドからの操作も、20ms周期で反映される。
- さらに、Pythonから遠隔操作もできる。
そんな 「地味にリアルな世界」 を、
Unityの中でコツコツ作ってきたのが『箱庭ドローン』です。
このシリーズ『箱庭ドローン Atlas』では、
国産ドローンシミュレータ「箱庭ドローン」で搭載している、
Unityベースの機能群を1つずつ丁寧に紹介していきます。
まずは第1回、全体像から!
🧠 技術的な仕組みに興味がある方は、別記事
👉 箱庭ドローンのアーキテクチャ解説はこちら
✅ 実装されている機能一覧
機能 | 概要 |
---|---|
衝突検出と物理モデル連携 | Unityの当たり判定→シミュレータ内部物理モデルと同期 |
マグネット荷物運搬デバイス | ゲームパッド操作でON/OFF、オブジェクト吸着 |
ジンバル付き前方カメラ | ドローンの“目”として操作可能、角度変化に対応 |
LiDARデバイス | AirSim風Raycastスキャン、点群生成可能 |
バッテリー | 出力に応じて電力消費、残量と性能が連動 |
プロペラアニメーション | 回転速度に応じてUnity上でアニメーション再生 |
ゲームパッド連携 | PS4/PS5コントローラで操作、20ms制御周期 |
Python API連携 | 外部からのスクリプト制御が可能(遠隔運用や自律制御に応用) |
🎬 デモ①:風のシミュレーションと荷物運搬
こちらは、Python APIで荷物運搬している様子です。
前方50cmに、2m/secの横風が吹いています。ドローンはそれに自動で抗って制御。
この「風にあらがいながら、けなげに荷物を届けようとする」感じが、
とってもけなげで、イケてますよね。
🎮 デモ②:ゲームパッドで自由に操作している様子
こちらは、PS4コントローラを使って、手動でドローンを飛行させている例です。
注目ポイント:
- ドローンが左右に傾いていても、右上のカメラ映像はブレない(ジンバル制御)
- バッテリー残量はリアルタイムで減少
- 前方の3D LiDARは障害物を赤くハイライト
- Unity物理ではなく、箱庭エンジン側が衝突を検出し、制御的に反発
つまり、「見た目はUnity」だけど、挙動は箱庭ドローンエンジンで統合制御されており、
PDU(Protocol Data Unit)という統一通信でやり取りされているのがミソです。
次回は、これらの中からひとつをピックアップして、
実装の仕組み・設計思想・拡張方法を紹介していきます!
お楽しみに!