当前位置: 首页 > news >正文

端到端的导航技术NeuPAN论文讲解

端到端的导航技术NeuPAN 深度剖析

作者:Frank Fan(2025-06-01)
记录这篇论文的初衷: 最近在尝试实现一个类似的工作即端到端的机器人导航(要能够穿过窄通道的场景),朋友推荐了这篇论文,虽然它其实并非一个纯粹的端到端,但看作者的demo视频效果已经很不错了,就解读下吧。


目录

  1. 引言
  2. 问题定义
  3. 理论基础
  4. DUNE 网络
  5. NRMP 控制器
  6. 端到端调参
  7. 系统集成
  8. 代码结构
  9. 仿真与实车
  10. 调参指南
  11. 实验结果
  12. FAQ
  13. 总结
  14. 参考文献

1 引言:为什么要做无图导航

在传统移动机器人导航中,“建图-定位-规划”流水线非常成熟,但在密集动态环境(仓库、配送中心、拥挤人群 …)下有明显痛点:

  1. 即时性不足 — 地图维护耗时,延迟导致规划错位;
  2. 计算开销大 — 高分辨率地图 + 全局搜索,复杂度飙升;
  3. 鲁棒性差 — 环境小变化就需重建图,系统易卡死。

无图导航(Map-Free Navigation) 思路:直接依赖实时传感器(LiDAR / 点云),跳过显式建图

本文聚焦 NeuPAN (Neural Proximal Augmented Navigation)

  • 局部距离场 LDF 强化碰撞约束;
  • 把对偶迭代展开成轻量网络 DUNE
  • MPC 中嵌入 LDF 正则,形成 NRMP
  • 最终 30 Hz 实时运行。

2 问题定义

2.1 输入输出

  • 输入

    • 时刻 t t t
      • 机器人状态 s t = [ x t , y t , θ t ] ⁣ ⊤ \mathbf{s}_t=[x_t,y_t,\theta_t]^{\!\top} st=[xt,yt,θt]
      • 点云 P t = { p t i } i = 1 N , p t i ∈ R 3 \mathcal{P}_t=\{\mathbf{p}^i_t\}_{i=1}^N,\;\mathbf{p}^i_t\in\mathbb{R}^3 Pt={pti}i=1N,ptiR3
    • 目标位姿 s goal \mathbf{s}_{\text{goal}} sgoal
  • 输出

    • Horizon H H H 的控制序列
      U t = { u t 0 , … , u t H − 1 } , u t h = [ v t h ω t h ] U_t=\bigl\{\mathbf{u}^0_t,\dots,\mathbf{u}^{H-1}_t\bigr\},\quad \mathbf{u}^h_t=\begin{bmatrix}v^h_t\\\omega^h_t\end{bmatrix} Ut={ut0,,utH1},uth=[vthωth]

2.2 约束

  1. 运动学 (差速)
    x t + 1 = x t + v t cos ⁡ θ t Δ t , y t + 1 = y t + v t sin ⁡ θ t Δ t , θ t + 1 = θ t + ω t Δ t . \begin{aligned} x_{t+1}&=x_t+v_t\cos\theta_t\,\Delta t,\\ y_{t+1}&=y_t+v_t\sin\theta_t\,\Delta t,\\ \theta_{t+1}&=\theta_t+\omega_t\,\Delta t. \end{aligned} xt+1yt+1θt+1=xt+vtcosθtΔt,=yt+vtsinθtΔt,=θt+ωtΔt.

  2. 碰撞安全
    ∥ c ( s t ) − p t i ∥ 2 ≥ D safe , i = 1 … N . \bigl\|\mathbf{c}(\mathbf{s}_t)-\mathbf{p}^i_t\bigr\|_2\ge D_{\text{safe}},\quad i=1\dots N. c(st)pti 2Dsafe,i=1N.

  3. 软约束 — 平滑/能耗/跟踪;

  4. 实时性 — 整体延迟 ≤ 33 ms \le{}33\text{ ms} 33 ms (30 Hz)。


3 理论基础:碰撞约束 → 局部距离场

3.1 从距离约束到 SOCP

对单点距离:
g i ( s ) = ∥ [ x , y ] ⁣ ⊤ − p i ∥ 2 − D safe ≥ 0. g_i(\mathbf{s})=\|\,[x,y]^{\!\top}-\mathbf{p}^i\|_2-D_{\text{safe}}\ge0. gi(s)=[x,y]pi2Dsafe0.
引入二阶锥,可写成凸 SOCP。

3.2 对偶形式

N N N 个约束写成拉格朗日对偶,得到对偶变量 { μ i , λ i } \{\mu_i,\boldsymbol\lambda_i\} {μi,λi}
可行当且仅当对偶最优值 ≥ 0 \ge0 0 μ i \mu_i μi 越大表示点 i i i 越危险。

3.3 局部距离场 (LDF)

定义
L ( p i ; s ) = ( μ i ∗ , λ i ∗ ) \mathcal{L}(\mathbf{p}^i;\mathbf{s})=\bigl(\mu_i^*,\boldsymbol{\lambda}_i^*\bigr) L(pi;s)=(μi,λi)

并用 PIBCD 迭代并行求解。迭代少量步即够准确。


4 DUNE 网络:把对偶迭代展开成 6 层 MLP

“梯度上升 + 投影” ➜ 线性层 + ReLU/Clamp

  • 输入特征 [ Δ x , Δ y , n x , n y , D safe ] \bigl[\Delta x,\Delta y,n_x,n_y,D_{\text{safe}}\bigr] [Δx,Δy,nx,ny,Dsafe]

  • 单层计算

    mu_next = ReLU( fc_mu([mu_prev, feat]) )
    lam_hat  = fc_lam([lam_prev, feat])
    lam_next = projection(lam_hat, mu_next)
  • 6 层 + hidden dim 32 → 20 k 点推理 ≈ 1 ms(GPU)。

5 NRMP:把 LDF 嵌进 MPC

在 MPC 基础代价 J base J_{\text{base}} Jbase上,加 LDF 正则项

J LDF = α ∑ h = 0 H − 1 ∑ i = 1 N μ i [ ( c h − p i ) ⁣ ⋅ ⁣ n i − D safe ] . J_{\text{LDF}}=\alpha\sum_{h=0}^{H-1}\sum_{i=1}^N \mu_i\bigl[\bigl(\mathbf{c}_h-\mathbf{p}^i\bigr)\!\cdot\!\mathbf{n}^i-D_{\text{safe}}\bigr]. JLDF=αh=0H1i=1Nμi[(chpi)niDsafe].

再加近端项
b k 2 ∣ s h − s ˉ h ∣ 2 \frac{b_k}{2}|s_h - \bar{s}_h|^2 2bkshsˉh2
以保证收敛。整个问题降为 凸 QP,OSQP 求解耗时 1–3 ms。


6 端到端可学习 (Meta-Learning)

可训练参数包括: DUNE 权重 \textbf{DUNE 权重} DUNE 权重以及
α , b k , Q , R \alpha,\quad b_k,\quad Q,\quad R α,bk,Q,R

外环损失为:
碰撞次数 + 到达时间 + 能耗 \text{碰撞次数} + \text{到达时间} + \text{能耗} 碰撞次数+到达时间+能耗

使用 CVXPYLayers \textbf{CVXPYLayers} CVXPYLayers 有限差分 \textbf{有限差分} 有限差分 方法获取梯度。

7 系统集成

点云下采样与法向估计(Open3D)

DUNE(GPU) → \rightarrow μ , λ \mu, \lambda μ,λ

NRMP(CPU 上使用 OSQP)

以 30 Hz 的频率,通过 ROS 节点发布 /cmd_vel

8 代码结构

neupan/├─ launch/├─ src/│   ├─ neupan_node.py        # 主循环│   ├─ dune_inference.py     # DUNE│   ├─ nrmp_solver.py        # MPC(QP)│   └─ preprocess.py├─ models/dune.py└─ scripts/train_dune.py

9 仿真与实车

  • ROS-Stage 差速机器人
  • Gazebo + Unitree 轮腿
  • LGSVL 自动驾驶
  • 实车 Jetson AGX — DUNE TorchScript + OSQP 多线程。

10 关键超参

类别名称建议备注
DUNEnum_layers6–8层数越多越准但慢
DUNEhidden_dim3216 会欠拟合
NRMPH10–201–2 s 预测窗
NRMP$\alpha$1–5越大越保守
NRMP$b_{\text{init}}!/b_{\max}$20 / 150控制收敛步幅

11 实验结果

场景方法成功率 %平均时长 sMPC 均耗 ms
Stage-corridorA*+PP8515.2
Stage-corridorNeuPAN10011.22.8
Gazebo-UnitreeORB-SLAM2+TEB9014.5
Gazebo-UnitreeNeuPAN9610.83.1

12 FAQ

  1. OSQP 超时 → 点云采样:
    M ≤ 1000 M \leq 1000 M1000
    放宽参数设置为 eps_rel = 1e-2

  2. DUNE 预测漂 → 增加数据量 / hidden_dim

  3. 轨迹抖动 → 减小 $\alpha$、增 $b_{\text{init}}$


13 总结

  • LDF = 对偶距离;DUNE 把求解写成 6 层网络;
  • NRMP = MPC + LDF 正则,QP 实时;
  • ROS 30 Hz 实测 OK。

14 参考文献

  1. Han Z. “NeuPAN: Dual-regularized End-to-End Navigation”, RA-L 2025.
  2. Lynch K. Modern Robotics, CUP 2017.
  3. CVXPY Tutorial — https://www.cvxpy.org/tutorial/
  4. OSQP Docs — https://osqp.org/docs/

代码仓库:https://github.com/yourname/neupan

一句话总结

“碰撞约束 ➜ SOCP 对偶 ➜ LDF ➜ MLP ➜ QP”

我们先把“撞没撞”这个硬约束 软化 成带权重的惩罚,再把“权重”丢给一个小网络实时估;最后让标准优化器带着这堆“权重”去求解控制。如此就把“几万条非线性约束”的大难题压缩成 “一次 1-3 ms 的小 QP”。这就是 NeuPAN 能 30 Hz 跑实时的秘诀,也是它能做端到端训练的根本原因。

相关文章:

  • 《AI Agent项目开发实战》DeepSeek R1模型蒸馏入门实战
  • 达梦数据库 Windows 系统安装教程
  • HTML 中 class 属性介绍、用法
  • 【学习笔记】On the Biology of a Large Language Model
  • ffmpeg 的视频格式转换 c# win10
  • 使用免费wordpress成品网站模板需要注意点什么
  • 【SpringBoot】| 接口架构风格—RESTful
  • opencv调用模型
  • 交换机、路由器配置
  • Oracle expdp过滤部分表数据
  • Python编程基础(三) | 操作列表
  • ESP32与STM32
  • 【MIMO稳定裕度】基于数据驱动的多输入多输出系统稳定裕度分析
  • ps曝光度调整
  • 408考研逐题详解:2009年第27题
  • 【笔记】Windows 下载并安装 ChromeDriver
  • SpringBoot(六)--- AOP、ThreadLocal
  • Hadoop学习笔记
  • 【算法设计与分析】实验——改写二分搜索算法,众数问题(算法分析:主要算法思路),有重复元素的排列问题,整数因子分解问题(算法实现:过程,分析,小结)
  • Java递归编程中的StackOverflowError问题分析与解决方案
  • 子公司网站备案/快速排名软件案例
  • 关于做摄影的网站/上海宝山网站制作
  • 嘉兴专业做网站的公司/网上教育培训机构哪家好
  • 动态海报网站/seo综合查询是什么意思
  • html5动态效果的网站是怎么做的/2345网址导航下载
  • 做自由行的网站好/设计网站官网