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

端到端的导航技术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 跑实时的秘诀,也是它能做端到端训练的根本原因。

http://www.xdnf.cn/news/10599.html

相关文章:

  • 从0开始学习R语言--Day15--非参数检验
  • Pytorch知识点2
  • DAY43打卡
  • 嵌入式Linux 期末复习指南(上)
  • 基于 StarRocks + Iceberg,TRM Labs 构建 PB 级数据分析平台实践
  • Qt概述:基础组件的使用
  • 【JAVA后端入门基础001】Tomcat 是什么?通俗易懂讲清楚!
  • 【PCB设计】STM32开发板——产品设计流程及元件选型
  • STM32 笔记 _《GPIO配置从低层走向高层》
  • 4.大语言模型预备数学知识
  • 数据库系统概论(十一)SQL 集合查询 超详细讲解(附带例题表格对比带你一步步掌握)
  • 花卉目标检测数据集介绍(共 12 类,10490 张图像)
  • LeetCode 热题 100 394. 字符串解码
  • 前缀和题目:一维数组的动态和
  • Unity中的MonoSingleton<T>与Singleton<T>
  • Golang——5、函数详解、time包及日期函数
  • 如何使用DAXStudio将PowerBI与Excel连接
  • python,Dataframe基于所有包含某个关键字的列等于某个值过滤
  • PostgreSQL的扩展 insert_username
  • 高等数学笔记 第八章——向量代数与空间解析几何2
  • Mysql备份
  • 助力活力生活的饮食营养指南
  • Python----目标检测(训练YOLOV8网络)
  • 【Java Web】6.登入认证
  • 使用 MCP 将代理连接到 Elasticsearch 并对索引进行查询
  • 电脑为什么换个ip就上不了网了
  • Java Netty 中处理粘包和半包问题的解决方案 | TCP消息完整性校验(XOR )
  • JavaScript性能优化:实战技巧提升10倍速度
  • 【性能调优系列】深入解析火焰图:从基础阅读到性能优化实战
  • 【python深度学习】Day43 复习日