触发

深入阅读 DiffPhysDrone 论文(arXiv 2407.10648)后发现,该系统已有目标速度输入机制,这为 VLA-DiffPhysDrone 融合提供了关键接口。

DiffPhysDrone 核心技术细节

网络架构

输入

  • 深度图(16×12,经过最大池化)
  • 目标速度 vsetv^{set}(方向由目标位置决定,幅度有上限)
  • 姿态估计
  • 速度估计(可选)

输出

  • 推力加速度 aa(3D 向量)
  • 速度估计

物理模型

使用简单质点模型,而非刚体模型:

vk+1=vk+ak+ak+12Δtv_{k+1} = v_k + \frac{a_k + a_{k+1}}{2} \Delta t

pk+1=pk+vk+12akΔt2p_{k+1} = p_k + v_k + \frac{1}{2} a_k \Delta t^2

控制延迟建模:η(t)=λeλ(tτ)\eta(t) = \lambda e^{-\lambda(t-\tau)}

训练目标函数

四个可微分损失项 [ref]

  1. 速度跟踪损失Lv=1Tk=1TSmooth L1(vksetvˉk2,0)\mathcal{L}_v = \frac{1}{T} \sum_{k=1}^{T} \text{Smooth L1}(\|v_k^{set} - \bar{v}_k\|_2, 0)
  2. 障碍物避免损失Lc=1Tk=1Tvkc[max(1(dkrq),0)2+β1ln(1+eβ2(dkrq))]\mathcal{L}_c = \frac{1}{T} \sum_{k=1}^{T} v_k^c [\max(1-(d_k-r_q), 0)^2 + \beta_1 \ln(1+e^{\beta_2(d_k-r_q)})]
  3. 加速度平滑损失La=1Tk=1Tak2\mathcal{L}_a = \frac{1}{T} \sum_{k=1}^{T} \|a_k\|^2
  4. Jerk 平滑损失Lj=1T1k=1T1akak+1Δt2\mathcal{L}_j = \frac{1}{T-1} \sum_{k=1}^{T-1} \|\frac{a_k - a_{k+1}}{\Delta t}\|^2

关键技术:时序梯度衰减

解决梯度爆炸问题:j=i+1kxjxj1eαΔt\prod_{j=i+1}^{k} \frac{\partial x_j}{\partial x_{j-1}} \cdot e^{-\alpha \Delta t}

VLA-DiffPhysDrone 融合架构

关键发现

DiffPhysDrone 已有目标速度输入接口!

原始设计中,目标速度 vsetv^{set} 的方向由"目标位置 - 当前位置"决定。理论上可以修改为直接接收外部速度命令。

融合方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
┌─────────────────────────────────────────────────────────────┐
│ 融合架构设计 │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 高层决策层(VLA) │ │
│ │ 输入: RGB图像 + 语言指令 │ │
│ │ 输出: 速度命令 (v_x, v_y, v_z) + 偏航角速度 ω │ │
│ │ 频率: 10Hz │ │
│ │ 功能: 语义理解 + 高层导航 │ │
│ └──────────────────────┬───────────────────────────────┘ │
│ ↓ v^set │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 底层控制层(DiffPhysDrone) │ │
│ │ 输入: 深度图 + v^set + 姿态估计 + 速度估计 │ │
│ │ 输出: 推力加速度 a │ │
│ │ 频率: 15Hz │ │
│ │ 功能: 敏捷飞行 + 速度跟踪 + 避障 │ │
│ └──────────────────────┬───────────────────────────────┘ │
│ ↓ a │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 飞行控制器(BetaFlight) │ │
│ │ 内环控制: 姿态控制 + 电机混控 │ │
│ │ 频率: 8kHz │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

与传统飞行控制器的关系

传统无人机:速度命令 → PX4/BetaFlight 内环 → 推力

DiffPhysDrone:速度命令 → 神经网络 → 推力

两者本质相同,但 DiffPhysDrone 的神经网络学习了:

  • 从深度图进行隐式状态估计
  • 动态障碍物预测
  • 敏捷机动策略

代码验证结果

main_cuda.py 第 94-103 行确认:

1
2
3
4
5
6
7
8
9
10
# 观测向量 state 的构成
state = [
torch.squeeze(target_v[:, None] @ R, 1), # 目标速度(本地坐标系)- 3维
env.R[:, 2], # 姿态(up向量)- 3维
env.margin[:, None] # 安全边距 - 1维
]
local_v = torch.squeeze(env.v[:, None] @ R, 1) # 当前速度(本地坐标系)
if not args.no_odom:
state.insert(0, local_v) # 有里程计时加入当前速度
state = torch.cat(state, -1)

网络输入输出

  • 有里程计:dim_obs = 10 = local_v(3) + target_v(3) + up(3) + margin(1)
  • 无里程计:dim_obs = 7 = target_v(3) + up(3) + margin(1)
  • 输出:dim_action = 6 = a_pred(3) + v_pred(3)

目标速度接口

1
2
3
target_v_norm = torch.norm(target_v_raw, 2, -1, keepdim=True)
target_v_unit = target_v_raw / target_v_norm
target_v = target_v_unit * torch.minimum(target_v_norm, env.max_speed)

关键验证target_v 可以直接由 VLA 的速度命令提供,无需修改网络架构!

已解决的问题

1. 目标速度接口 ✅ 已验证

原始 DiffPhysDrone 的目标速度由 env.p_target - env.p 计算,但代码结构允许直接传入外部速度命令:

1
2
3
4
5
# 原始
target_v_raw = env.p_target - env.p.detach()

# 可修改为 VLA 输出
target_v_raw = vla_output # 直接使用 VLA 的速度命令

2. 偏航角控制

VLA 输出 4-DoF:(vx,vy,vz,ω)(v_x, v_y, v_z, \omega)

DiffPhysDrone 的偏航角控制逻辑:

“We align the quadrotor’s yaw angle with the target direction”

需要将 VLA 的 ω\omega 与 DiffPhysDrone 的偏航角控制对接。

3. 联合训练策略

  • 独立训练:VLA 和 DiffPhysDrone 各自训练
  • 端到端微调:固定 DiffPhysDrone,微调 VLA
  • 联合训练:可微分物理仿真 + VLA 训练

4. 频率匹配

  • VLA: 10Hz
  • DiffPhysDrone: 15Hz
  • 飞行控制器: 8kHz

需要处理频率不匹配问题(零阶保持或插值)。

关键对比

维度 传统飞行控制器 DiffPhysDrone
输入 速度命令 深度图 + 速度命令
输出 电机 PWM 推力加速度
状态估计 显式 VIO 隐式学习
动态避障 需要预测模块 隐式学习
计算资源 低(MCU) 中($21 ARM)
最大速度 ~10 m/s 20 m/s

下一步

  1. 代码验证:查看 DiffPhysDrone 开源代码,确认目标速度接口是否可直接修改
  2. 仿真实验:在 Flightmare 中测试 VLA 速度命令 → DiffPhysDrone 跟踪
  3. 消融研究:对比"VLA → 传统控制器" vs "VLA → DiffPhysDrone"的性能差异

参考文献

  1. DiffPhysDrone: Learning Vision-based Agile Flight via Differentiable Physics [ref]
  2. 之前的探索:VLA与可微分物理的本质差异 [ref]

完成时间: 2026-03-05 21:30