階層型 VLM 計画: ドローンに「建物 3 の東側に着陸」などの指示を理解させます
1. 質問: 「ダイレクトエンドツーエンド」はなぜドローンでは機能しないのですか?
ドローンに次のコマンドを与えたと想像してください。「建物 2 を回って、建物 3 の東側の広場に着陸してください」。
この文は人間にとって単純ですが、3 つのレベルの意味が含まれています。
- セマンティック レイヤー: ビルディング 2 とビルディング 3 の位置を検索します。
- 空間推論: 現在の場所から開始して、建物 2 を迂回し、建物 3 の東側に到達します。
- 物理的実行: スムーズな 3D 軌道を生成し、リアルタイム トラッキングのためにモーターを制御します。
純粋なエンドツーエンド VLA (Vision-Language-Action) を使用してカメラ画像からモーター制御信号を直接出力する場合、次の 2 つの基本的な問題に直面することになります。
- 出力周波数の不一致: VLA の言語モデルの推論には一度に数百ミリ秒かかりますが、ドローン制御には 100Hz 以上のリアルタイム信号が必要です
- 制御不能なセキュリティ: エンドツーエンドのブラック ボックス モデルでは、生成された軌道が物理的制約を満たすことを保証できません。建物にぶつかった場合はどうすればよいですか?
したがって、階層型 VLM 計画 は、産業界と学術界で一般的な選択肢となっています。
2. 階層化アーキテクチャの概要
用户指令: "绕过2号楼,在3号楼东侧降落"
┌─────────────────────────────────────────────┐
│ Layer 1: 语义理解层 (VLM/LLM) │
│ 输入: 文本指令 + 地图/图像 │
│ 输出: "先向北飞,绕过2号楼,再向东飞..." │
│ (子目标序列) │
│ 模型: GPT-4V / LLaVA / Gemini 2.0 Flash │
└─────────────────────────────────────────────┘
↓ 子目标
┌─────────────────────────────────────────────┐
│ Layer 2: 轨迹规划层 (MPC / RRT* / ESDF) │
│ 输入: 当前状态 + 子目标 │
│ 输出: 空间路径点序列 (x,y,z,t) │
│ 特点: 有理论安全性保证(可源性、碰撞检测) │
└─────────────────────────────────────────────┘
↓ 路径点
┌─────────────────────────────────────────────┐
│ Layer 3: 控制执行层 (PID / 非线性MPC) │
│ 输入: 期望轨迹 + 当前状态 │
│ 输出: 电机转速 / PWM 信号 │
│ 频率: 100-400Hz (实时) │
└─────────────────────────────────────────────┘
この階層化の利点: 各レイヤーは分離されており、フルリンクのエンドツーエンド トレーニングを必要とせず、そのレイヤーに最適な方法を使用して独立してトレーニング/最適化できます。
3. 各層の詳細説明
3.1 レイヤ 1: 意味理解レイヤ - VLM に指示を理解させます
これは、階層化アーキテクチャの中で最も「賢い」層であり、大規模なモデルが最も役立つ場所です。
中心的な使命:
- 自然言語命令を解析して重要なランドマークと制約を抽出します (「建物 2」、「東側」、「バイパス」)
- 2D/3D 地図情報を視覚的観察と一致させます
- 出力セマンティックサブゴールシーケンス(サブゴールリスト)
主要なテクノロジー: 視覚的なグラウンディング
言語の抽象的な参照 (「建物 3 の東側」) を地図/画像内の具体的な場所にマッピングします。
# 伪代码示例
def parse_instruction(instruction: str, map_image: Image, ego_view: Image):
# Step 1: 用 VLM 理解指令中的地标
landmarks = vlm.extract_landmarks(
instruction, # "绕过2号楼,在3号楼东侧降落"
map_image # 鸟瞰地图
)
# → ["building_2 (polygon: [[x1,y1],...])",
# "landing_zone: east_side_of_building_3"]
# Step 2: 将地标转换为坐标
goal_pose = convert_to_waypoints(landmarks, ego_view)
# Step 3: 生成子目标序列
subgoals = plan_subgoal_sequence(
current_pose, goal_pose,
constraints=[avoid(building_2), approach(building_3, side=east)]
)
# → ["fly_north_50m", "turn_east", "descend_20m", "hover_at_landing_zone"]
return subgoals
モデルの選択:|モデル |利点 |デメリット |該当するシナリオ | |------|------|------|----------| | GPT-4V / GPT-4o |強力な推論能力、強力なマルチモダリティ |インターネット接続が必要、遅延が長い |クラウド、遅延の影響を受けない | |ジェミニ 2.0 フラッシュ |無料、高速、ローカル展開をサポート |中国語の説明書の一般的な理解 |ローカルエッジ展開 | | LLaVA 7B |ローカルに展開可能なオープンソース |複雑な命令を理解するのが苦手 |エッジドローン | | Qwen2-VL |中国人に優しい、オープンソース |エッジ展開は定量化する必要がある |国内シナリオ |
最近の進捗状況 (2024 ~ 2025 年):
- LLaVA-Plan — LLaVA に基づいて、タスクの分解に特化したプランニング ヘッドを追加します
- GPT-4o ライブ音声 — エンドツーエンドの音声コマンドの理解、ASR 不要、中断なし
3.2 レイヤ 2: 軌道計画レイヤ - セマンティクスから空間パスまで
この層は、セマンティック層のサブゴールを受け取り、幾何学的パスを出力します。
古典的な方法 (非学習スタイル):
# RRT* 全局路径规划
path = rrt_star(
start=current_pose,
goal=subgoal,
obstacles=building_2_obstacle, # 来自语义层的输出
max_iterations=1000,
connection_radius=5.0
)
# ESDF 局部避障(实时)
esdf_map = build_esdf_from_lidar(ego_view)
safe_direction = esdf_map.gradient_at(current_position)
# MPC 轨迹优化
trajectory = mpc.optimize(
horizon=20,
dynamics=uav_dynamics,
obstacles=esdf_map,
cost=[trajectory_smoothness, progress_to_goal, control_effort]
)
学習方法(強化学習):
# 策略网络:输入当前状态+目标 → 输出控制动作
policy = PPO(
obs_dim=state_dim, # 位置、速度、姿态、附近障碍物
act_dim=action_dim, # 速度指令 (vx, vy, vz)
)
# 在仿真中训练,通过 Domain Randomization 提升泛化性
# DR参数:风速、延迟、传感器噪声、空气质量
env.set_domain_randomization(
wind=(0, 5), # m/s
comm_latency=(0, 100), # ms
sensor_noise=(0, 0.05) # 归一化噪声
)
**このレイヤーを純粋な RL に置き換えてみてはいかがでしょうか? **
純粋な RL 軌道には理論的な安全性の保証がないため、RL は「実行可能に見えても実際には壁にぶつかる」パスを見つける可能性があります。 ESDF + MPC の組み合わせにより、到達可能性が保証されます。MPC が解決策を見つけることができる限り、障害物に衝突することはありません。
3.3 レイヤ 3: 制御実行レイヤ - リアルタイムの安定した追跡
この層は最も成熟しており、従来の制御理論で完全に十分です。
# 非线性 MPC 控制
class UAVController:
def __init__(self):
self.mpc = NMPC(
horizon=10, # 预测 10 步 (~1秒)
dt=0.1, # 控制周期 10Hz
Q=diag([1,1,1]), # 位置误差权重
R=diag([0.1,0.1]) # 控制量权重
)
def control(self, state, ref_trajectory):
# ref_trajectory 来自 Layer 2
u = self.mpc.solve(state, ref_trajectory)
return self.motor_mixer.mix(u) # 转换为电机转速
def safety_check(self, state):
# 实时安全兜底:如果状态危险,强制悬停
if state.altitude < 2.0 and state.speed < 0.5:
return "LANDING"
return "FLY"
4. 主な研究活動
4.1 階層的計画のための構成基盤モデル
Ajay et al.、arXiv:2309.08587 (2023)
この記事は非常に重要な基礎作業であり、「結合基本モデル」の概念を提案します。- 中心的なアイデア: 複数の専用の基本モデルを組み合わせて使用し、各レイヤーが 1 つのことを実行し、組み合わせを使用して複雑なタスクを完了します。
- アーキテクチャ: ビジュアル エンコーダー + 言語モデル + アクション デコーダー、階層的カスケード
- 実験: ロボットアームで検証され、階層化が純粋なエンドツーエンドよりも一般化できることが証明されました。
UAV にとって魅力的な理由: 階層計画により、UAV シナリオに合わせてシステム全体を再トレーニングすることなく、各レイヤーが事前トレーニングされたモデルを個別に再利用できるようになります。
4.2 LangStrands — 自然言語制御ロボット
LangStrands (2024) — 自然言語を使用してロボットを制御し、産業シナリオで偵察/操作タスクを実行します。
・「まずAエリアの設備を確認し、異常があればB拠点に報告する」といった複雑な指示にも対応
- 命令をタスク グラフに解析し、条件付き分岐とループをサポートします
- マルチロボットのコラボレーションをサポートし、各ロボットは異なるサブタスクを受け取ります
UAV からの参照: LangStrands のミッション マップ分析のアイデアは、「最初に 5 つの目標点を偵察し、その後基地に戻る」などの複雑なタスクなど、UAV に直接転送できます。
4.3 具現化された思考の木 — 世界モデル支援計画
Xu et al.、arXiv:2512.08188 (2025)
- ワールド モデルを使用して、アクション実行後の物理的な結果 (環境状態の変化) を予測します。
- Tree of Thoughtsを使用して、実行前に最適なサブゴールシーケンスを検索します
- 純粋な VLM 計画よりも物理に基づいた計画で、「正しく見えるが物理的に不可能」なパスを回避します
UAV にとっての価値: UAV が空中を飛行しているとき、World Model は突風の影響やバッテリー劣化後のホバリング能力を予測し、より安全な軌道を事前に計画できます。
4.4 OpenVLA — オープンソースのロボット VLA
OpenVLA (2024) — カリフォルニア大学バークレー校がリリースしたオープンソース VLA モデル:
- 7Bパラメータ、97種類のロボット動作をサポート
- 220,000 の実際のロボット データでトレーニング
- コンシューマー向け GPU (RTX 3090) で実行可能
- UAV の可能性: 現在、OpenVLA は主にロボット アームをターゲットとしていますが、VLA のアーキテクチャ (ビジュアル コーディング + LLM + アクション ヘッド) は UAV シナリオに完全に移行できます。### 4.5 エンボディド アリーナ — エンボディド インテリジェンスの統合評価プラットフォーム
Ni et al.、arXiv:2509.15273 (2025)
- 250 を超える具体化されたインテリジェンス タスクと統一された評価基準をカバー
- 屋内ナビゲーション、操作、航空飛行、その他の種類のタスクを含む
- UAV レイヤ化のパフォーマンス ベンチマーク (各レイヤの精度、遅延、成功率) を提供します。
重要: 統合された評価プラットフォームを使用すると、階層化アーキテクチャの各層を独立して評価でき、証拠に基づいて最適化できます。
5. Sim2Real: 訓練された戦略を実際のドローンに転送する方法
階層型アーキテクチャの主な利点: 各層を独立して Sim2Real にすることができるため、フルリンクのエンドツーエンド移行の必要がなくなります。
5.1 Sim2Real 各層の難易度分析
| レベル | トレーニング環境 | 移行の難しさ | 主要な課題 |
|---|---|---|---|
| レイヤ 1 (VLM) | 任意の画像/地図 | 低い | VLM は事前トレーニングされており、強力な一般化を備えています。 |
| レイヤ 2 (RL) | AirSim / フライトメア | 中 | 空力パラメータの不一致 |
| レイヤ 3 (MPC) | リアルドローンパラメータ調整 | 低い | モーターパラメータを校正するだけです |
5.2 レイヤ 2 の Sim2Real 戦略
ドメインのランダム化 (DR):
# 仿真训练时随机化关键物理参数
class SimEnv:
def reset(self):
self.wind = random.uniform(-3, 3) # m/s 阵风
self.motor_lag = random.uniform(0.8, 1.2) # 电机响应系数
self.battery_level = random.uniform(0.7, 1.0) # 电池状态
self.gps_noise = random.uniform(0, 0.5) # GPS 噪声 (m)
**Real2Sim キャリブレーション (実機キャリブレーション): **
# 在真实无人机上跑系统辨识
def calibrate_dynamics(real_uav):
# 激励信号:阶跃输入
for amplitude in [0.1, 0.3, 0.5]:
response = real_uav.step_input(thrust=amplitude)
# 拟合真实电机响应曲线
motor_model.fit(step_responses)
# 将标定参数写回仿真
sim_env.set_dynamics(motor_model.params)
5.3 実践例: MADER の Sim2Real
MADER (空中群に対するマルチエージェント DEep 強化学習) は、近年 UAV Sim2Real によって行われた最高の作品の 1 つです。
- AirSim で MADDPG を使用して、複数のマシンの調整された障害物回避戦略をトレーニングします
- 重要なトリック: トレーニング中にセンサー遅延 (20 ~ 50 ミリ秒) を追加して、戦略が遅延下でも機能することを学習できるようにします。
- 結果: 本物の Tello ドローンへのサンプル移行はゼロ、障害物回避成功率 > 85%
6. エンジニアリングの実装: 階層型 VLM ドローンをゼロから構築する### 6.1 推奨されるテクノロジースタック
硬件: 软件:
- Pixhawk 飞控 (或 Crazyflie) - PX4 / ArduPilot 固件
- Jetson Orin NX (边缘计算) - ROS 2 Humble
- Livox 激光雷达 / RealSense - 深度相机 + IMU
软件分层:
┌──────────────────────────────────┐
│ VLM (Layer 1): LLaVA 7B/Qwen2-VL │
│ 推理引擎: llm.cpp / vLLM │
│ 推理硬件: Jetson Orin NX (INT8) │
└──────────────────────────────────┘
┌──────────────────────────────────┐
│ 规划器 (Layer 2): │
│ - 全局: RRT* (OMPL) │
│ - 局部: OSQP / Crocoddyl (MPC) │
└──────────────────────────────────┘
┌──────────────────────────────────┐
│ 控制器 (Layer 3): PX4 SITL / │
│ Ardupilot guided mode │
└──────────────────────────────────┘
6.2 ROS 2 メッセージ インターフェイス
# Layer 1 → Layer 2 消息
class SubgoalMsg(Message):
position: Point # 目标点
constraints: List[Constraint] # 避障约束
priority: int # 优先级
timeout: float # 超时时间
# Layer 2 → Layer 3 消息
class TrajectoryMsg(Message):
waypoints: List[PoseStamped] # 路径点序列
velocities: List[float] # 期望速度
start_time: Time # 计划开始时间
6.3 遅延バジェット (リアルタイム保証)
总延迟预算: < 500ms (可接受)
├─ 图像采集: 30ms (30fps)
├─ VLM 推理: 200-400ms (LLaVA 7B @ INT8)
├─ 轨迹规划: 50ms (RRT* + MPC)
└─ 控制器跟踪: 实时 (100Hz)
VLM 推論が遅すぎる場合は、次のことができます。
- ストリーミング推論を使用すると、計画層は中間結果を事前に取得できます。 2.軽量モデル(LLaVA 3B / Qwen2-VL 2B)を使用 3.よく使用する命令の計画結果をキャッシュ(マップ固定時有効)
7. 現在の課題と今後の方向性
7.1 主要な課題
- VLM 推論レイテンシ: LLaVA 7B はエッジ GPU で約 200 ~ 400 ミリ秒を推論し、セキュリティ対応の要件を超えています
- コマンドのあいまいさ: 「安全な場所に着陸する」というあいまいなコマンドは、VLM が処理するのが困難です。
- 多層エラーの蓄積: レイヤ 1 のセマンティック エラー → レイヤ 2 のパス偏差 → レイヤ 3 の制御ジッタ
- 動的障害物: レイヤー 2 の ESDF マップ更新頻度は、高速の障害物 (飛んでいる鳥など) に追いつくことができません。
7.2 今後の方向性
- マルチモーダル コマンドの融合: 音声 + ジェスチャー + 注視点の共同理解、単一モダリティが失敗した場合のバックアップ
- 生涯学習: 飛行中にオンラインでレイヤー 2 戦略を更新し、未知の環境に適応します
- マルチドローン協調 VLM: それぞれが独立して動作するのではなく、1 つの VLM が複数のドローンを調整します。
- 世界モデル予測: 生成モデルを使用して、次の 5 秒間の航空交通の流れを予測し、事前に回避します
8. まとめ
階層型 VLM 計画は、現在 UAV インテリジェンスにとって最も実現可能なルートです。
- レイヤー 1 (VLM) は、セマンティックの理解と、クラウドまたはエッジの大規模モデルの呼び出しを担当します。
- レイヤー 2 (プランナー) はセマンティクスからジオメトリへの変換を担当し、RL + MPC と組み合わせることができます
- レイヤー 3 (コントローラー) はリアルタイム追跡を担当しており、従来の制御理論で十分です。
このアーキテクチャの主な利点: **すべてのリスクを負担するためにブラック ボックスのエンドツーエンド モデルを使用するのではなく、大きなモデルに得意なこと (理解) を行わせ、古典的な手法に得意なこと (セキュリティ計画) を行わせます。それぞれが独自の役割を果たします。
*参考文献(本文中の引用順)*1. Ajay et al.、「階層計画のための構成基盤モデル」、arXiv:2309.08587、2023 2. Padalkar 他、「OpenVLA: オープンソースのビジョン-言語-アクション モデル」、2024 年 3. Liu 他、「サイバー空間と物理世界の整合: 身体化 AI に関する包括的な調査」、arXiv:2407.06886、2024 4. Xu et al.、「身体化された思考のツリー: 身体化された世界モデルを使用した意図的な操作計画」、arXiv:2512.08188、2025 5. Ni et al.、「Embodied Arena: A Comprehensive Evaluation Platform for Embodied AI」、arXiv:2509.15273、2025 6. Mu et al.、「Embodied AI-Enhanced IoMT Edge Computing: UAV Trajectory Optimization」、arXiv:2512.20902、2025 7. Zhou et al.、「OmniShow: Unifying Multimodal Conditions for Human-Object Interaction」、arXiv:2604.11804、2026
※著者:神楽タルト | 2026-04-15*