ARTICLE · Autonomous Systems

两篇论文中的球面锥点云表示:Flying on Point Clouds 与 AERO-MPPI

对 Flying on Point Clouds 与 AERO-MPPI 的文献解读:多帧点云对齐、球面锥离散、未知空间编码和多分辨率锚点。

本文是对他人公开工作的文献解读,不是本人原创方法,也不是本人的项目成果。文中的“论文报告”与“由参数推得”会严格区分。

3D LiDAR 每帧产生的是数量变化、顺序不固定的点集合,而学习策略和批量轨迹优化通常更适合固定形状的数据。以 Livox Mid-360 的公开规格估算,10 Hz、每秒 200,000 点意味着平均每帧约 20,000 点;累积 5–10 帧后是约 100,000–200,000 个原始点。球面锥表示的核心压缩是:按观察方向分 bin,每个方向只保留与任务相关的近障碍信息,从而避免把全部原始点直接送入策略或每条 rollout。

这个动机可以概括为三个工程难点:

  1. 输入维度与形状:原始点云是无序的 $(x,y,z)$ 集合,点数随帧变化,不能直接当作普通固定维度向量;
  2. 在线计算预算:控制与规划需要持续更新,不能让每条策略推理或每条采样轨迹反复遍历全部历史原始点;
  3. 扫描稀疏性:Mid-360 使用非重复扫描模式,单帧覆盖并不等于累积后的观察密度,多帧融合因此有实际意义。

这里不再把“控制频率一定是 50–100 Hz”写成通用前提;两篇论文各自报告的策略、规划和飞控执行频率应分别阅读。

这不是传统占据栅格。占据栅格在三维位置上离散自由/占据/未知状态;球面锥在机器人中心的角方向上离散距离。前者保留更多位置拓扑,后者用更紧凑的方向—距离结构换取计算效率。

1. 文献版本与作者

工作作者(论文顺序)版本与发表信息
Flying on Point Clouds with Reinforcement LearningGuangtong Xu, Tianyue Wu, Zihan Wang, Qianhao Wang, Fei GaoarXiv:2503.00496v1;正式书目信息为 IROS 2025,不是 IEEE RA-L
AERO-MPPI: Anchor-Guided Ensemble Trajectory Optimization for Agile Mapless Drone NavigationXin Chen, Rui Huang, Longbin Tang, Lin ZhaoarXiv:2509.17340v2,2026-03-21;论文标注 ICRA 2026

两篇工作都把局部点云按角度方向压缩,但下游任务不同:Flying 把固定维度表示输入强化学习策略;AERO-MPPI 用多分辨率分区生成锚点并计算 MPPI 碰撞代价。AERO-MPPI 的论文没有引用 Flying,因此本文只做并列比较,不把前者描述成后者的“基础”或“上一代”。

来源:Flying arXivFlying IROS DOIAERO-MPPI arXiv v2

2. 共同前提:历史点云要对齐到当前机体系

Livox Mid-360 的官方规格给出 10 Hz 扫描频率、每秒 200,000 点,以及水平方向 $360^\circ$、垂直方向 $-7^\circ$ 至 $52^\circ$ 的视场。多帧累积可以增加观察密度,但无人机在帧间发生了平移和旋转,不能直接拼接原始点。

原始点首先位于 LiDAR 坐标系。若 LiDAR 到机体的外参为 $(R^B_L,t^B_L)$,则第 $i$ 帧中的点先变为

$$ p^{B_i}=R^B_Lp^{L_i}+t^B_L. $$

设机体在世界系中的位姿为 $(R^W_{B_i},t^W_{B_i})$,把该点对齐到当前时刻 $t$ 的机体系:

$$ p^{B_t}=(R^W_{B_t})^\top \left(R^W_{B_i}p^{B_i}+t^W_{B_i}-t^W_{B_t}\right). $$

等价的齐次变换写法是

$$ T^{B_t}_{B_i}=(T^W_{B_t})^{-1}T^W_{B_i}. $$

这个公式只说明帧间刚体对齐。实际精度还取决于 LiDAR—机体外参、时间同步、扫描内运动畸变处理和状态估计误差;“用了位姿变换”并不自动保证历史点完全重合。

直观地说,第 $i$ 帧记录的是“无人机当时在位置 A、朝某个方向时看到的点”,当前第 $t$ 帧需要的是“站在现在的位置 B 和朝向看,那些点在哪里”。计算过程就是先把历史点从 $B_i$ 变换到世界系,再从世界系变换回当前的 $B_t$。对齐后的累积点云可写成

$$ \mathcal P_t=\bigcup_{i=t-k+1}^{t}T^{B_t}_{B_i}\mathcal P_i. $$

姿态变化已经包含在 $R^W_{B_i}$ 与 $R^W_{B_t}$ 中,因此无需在这个公式之外再手工加一次“俯仰补偿”。不过,这不代表地面分割、重力对齐或传感器去畸变在所有下游任务中都不需要;是否需要取决于后续表示的坐标约定。

FAST-LIO2 论文报告了最高 100 Hz 的里程计与建图表现,并展示了最高 $1000^\circ/\mathrm{s}$ 旋转下的鲁棒性。这是论文在特定平台和实验中的报告能力,不应改写成所有设备都能达到的保证。

来源:Livox Mid-360 规格FAST-LIO2

3. Flying:面向强化学习的固定维度表示

3.1 论文明确写出的流程

论文在实机部署中先过滤离机器人较远的点,再以 0.05 m 分辨率均匀下采样。随后:

  1. 取 $k$ 帧、以 10 Hz 采样的历史点云;
  2. 用局部状态估计把历史点变换到当前机体系;
  3. 以机器人为中心,按相等角度划分 $n$ 个分区;
  4. 非空分区记录最近点距离,并把超过 10 m 的值截断为 10;
  5. 空分区使用历史 $k$ 帧视场计算出的未知区域距离编码。

这里的 0.05 m 均匀下采样是减小点数的预处理,不等于三维占据栅格。前者在每个小体素中选取或汇总代表点,随后仍把结果作为点集使用;后者把空间单元的自由、占据或未知状态作为地图本身。不能进一步断言体素平均“几乎不影响最近距离”或必然“收敛配准误差”;这些效果取决于具体实现和场景。

论文实现采用 $n=3200$、角分辨率 $4.5^\circ$。对分区 $s$,可以把正文规则整理为

$$ \operatorname{value}(s)= \begin{cases} \min\left(10,\min_{p\in s}\lVert p\rVert\right), & s\neq\varnothing,\\ 20-d_{\mathrm{unknown}}(s), & s=\varnothing, \end{cases} $$

其中 $0

论文没有给出每类空分区对应固定数值的表格,因此不能进一步断言某个方向一定得到 17 或 20。$d_{\mathrm{unknown}}$ 的具体值来自历史视场几何。

仅用于理解编码的算术例子是:若某个空分区经真实视场几何计算得到 $d_{\mathrm{unknown}}=3$ m,则其编码为 $20-3=17$;若得到 9 m,则编码为 11。它们不是论文对“某个具体方向”的测量结果,也不能把“完全在视场外”一律手工写成 20。

用三种不冒充测量值的直观情形说明:

示例情形假设的 $d_{\mathrm{unknown}}$编码值只可作何种理解
历史视场沿该方向延伸约 10 m接近 10接近 10该方向的已知范围较深
历史视场沿该方向只延伸 3 m3173 m 之后仍未知
方向几乎未被历史视场覆盖接近 0接近 20未知程度高

表中的数值是公式演示,不是给某个固定仰角硬编码的规则。这个数值区间让策略能够从输入上区分已观测距离和未知方向;策略最终是否会主动避开未知区域,还取决于训练分布、奖励和策略学习结果。

3.2 哪些是推断,不是原文

若把完整球面按方位角与仰角都以 $4.5^\circ$ 等分,则会得到

$$ \frac{360^\circ}{4.5^\circ}\times \frac{180^\circ}{4.5^\circ} =80\times40=3200. $$

这与论文的 $n=3200$ 一致,所以“80×40 的全球面网格”是合理的几何解释;但论文正文只明确写了等角度、3200 个分区和 $4.5^\circ$,没有逐字给出 80×40 的索引布局。实现时仍需以代码或补充材料为准。

同样,0.05 m 均匀下采样是论文明确写出的实机预处理,却不能据此宣称“不会丢失小障碍物”或“会自动消除配准误差”。下采样方式、代表点选择和障碍物尺寸都会影响信息损失。

3.3 历史帧数、网络与训练边界

论文在实验中设置 $k=5$;这是论文实验参数,不是该表示的固定定义。策略以 50 Hz 输出期望推力和机体系角速度。

论文一处称 3200 维外感知输入被编码成 128 维隐状态,同时又列出三层编码器的输出维度为 128、64、64。两种表述在字面上存在歧义,因此不能在没有代码的情况下断言最终编码器输出究竟是 128 还是 64 维。

训练部分给出的 PPO mini-batch 为 70,000。占据地图对比中,论文报告同一块 24 GB GPU 上:

  • 0.2 m 三维占据图使用 2D CNN 时,最大 mini-batch 约为 $1.5\times10^4$;
  • 使用 3D CNN 时,约为 $5\times10^3$;
  • 所提表示可超过 $1\times10^5$。

这些数字是该论文实现和硬件上的显存规模比较,不是所有网络的通用上限。论文图中的 3.0 m/s 是某项训练/评测设置的速度约束,也不是方法固有的速度上限。

论文的训练曲线支持一个定性结论:在作者相同 PPO 试验框架中,直接使用三维占据图的朴素基线难以从零学出有效策略,而所提紧凑表示能够训练。不能把根据曲线目测得到的固定步数和回报阈值当作精确数据;若要引用,应从作者原始数据或图的明确坐标读取并标注误差。

来源:Flying 论文 HTML

4. AERO-MPPI:高、粗两层球面分区

AERO-MPPI 的公开流程可以概括为:

最近 10 帧点云(约 200,000 点)
        ↓ 对齐到当前机体系,并限制在 10 m 范围
3° 高分辨率网格:120 × 60 = 7200 个单元
        ├─ 每个单元保留最近点 → 过滤点集 P_f → rollout 碰撞距离
        └─ 6 × 6 pooling
18° 粗网格:20 × 10 = 200 个单元
             ↓ 围绕目标方向选 5 × 3 个方向
15 个 refined anchors → 15 条五阶引导轨迹
15 个并行 MPPI → 每个 K 条 rollout → 二阶段代价选最优控制

这个流程图只描述论文模块关系。“约 200,000 点”是 10 帧累计规模,不表示碰撞计算仍对每条 rollout 遍历全部原始点;高分辨率分区会为过滤集合每个单元保留最近点。

4.1 高分辨率分区

AERO-MPPI 累积最近 10 帧、约 200,000 个点,用状态估计变换到当前机体系,并把处理范围限制为 $r_{\max}=10$ m。论文把球面视场按 $3^\circ$ 离散为 $120\times60=7200$ 个球面锥。

对高分辨率单元 $(i,j)$,论文式 (5) 为

$$ r_{i,j}:=\min_{p_c\in\mathcal P_t\cap C_{i,j}}\lVert p_c\rVert, $$

对应的单位方向向量是论文式 (6):

$$ d_{i,j}= \begin{bmatrix} \cos\beta_j\cos\alpha_i\\ \cos\beta_j\sin\alpha_i\\ \sin\beta_j \end{bmatrix}. $$

论文没有报告 Flying 实机流程中的 0.05 m 体素下采样步骤。因此准确说法是“AERO-MPPI 未报告同样的 0.05 m 预处理”,而不是笼统断言它对原始点完全不做筛选。

4.2 视场与空单元的证据边界

$120\times3^\circ=360^\circ$,$60\times3^\circ=180^\circ$,因此论文给出的网格尺寸与分辨率在角度跨度上对应完整球面。这个算术结论不能与 Mid-360 单帧仅 $59^\circ$ 的垂直视场混为一谈:网格覆盖某个方向,不代表该方向已有实测点。

论文没有明确给出仰角索引的起始角,也没有说明 $\mathcal P_t\cap C_{i,j}=\varnothing$ 时 $r_{i,j}$ 如何初始化。不能据此猜测它“只覆盖约 100° 的有效视场”,也不能擅自补一个空单元默认距离。

4.3 粗分区与锚点公式

论文用 $6\times6$ pooling 把 $3^\circ$ 单元聚合成 $18^\circ$ 单元,得到 $20\times10=200$ 个粗单元。对每个粗单元 $\Omega_{I,J}$,论文式 (7) 选择最大安全距离:

$$ (i^\star,j^\star)= \arg\max_{(i,j)\in\Omega_{I,J}}r_{i,j}, $$$$ v_{I,J}=r_{i^\star,j^\star}d_{i^\star,j^\star}. $$

$v_{I,J}$ 是带距离尺度的安全点向量;论文随后把对应的单位方向记为 $d_{I,J}:=d_{i^\star,j^\star}$。

直观上,max pooling 保留了每个粗方向块中“最远的近障碍距离”所对应的细方向,用来探测不同绕行走廊;若改成 average,安全细方向和近障碍细方向会混合。不过“max 一定不会遗漏狭窄通道”仍是过强表述,因为通道是否可通过还受机体尺寸、点云缺失和跟踪误差影响。

look-ahead 距离为 $\ell=5$ m,精炼后的锚点必须使用单位方向。论文式 (8) 是

$$ p^{\mathrm{ref}}_{I,J}=p_0+\ell d_{I,J}, $$

这里不能再把带距离尺度的 $v_{I,J}$ 乘以 $\ell$;否则距离会重复进入计算,量纲和锚点位置都会错误。

每个锚点对应一条五阶多项式引导轨迹:

$$ f_\mu(t)=\sum_{i=0}^{5}a_{i,\mu}t^i,\qquad \mu\in\{x,y,z\}. $$

五阶多项式在每个轴上有六个系数;当起点和终点的位置、速度、加速度这六个边界条件都给定且约束独立时,可以求出唯一系数。这里解释的是常见边界条件计数,不意味着任意六个约束都一定可解,也不替代论文实际的轨迹构造式。

论文设置 $M=M_hM_v=5\times3=15$ 个锚点,搜索角范围为 $90^\circ\times54^\circ$。每个 MPPI 在表 I 中使用 $K=128$ 条 rollout、预测步数 $N=25$,所以名义并行采样量为 $15\times128=1920$ 条 rollout。

4.4 碰撞距离不是“查轨迹点所在锥的半径”

高分辨率分区还构造过滤点集 $\mathcal P_f$:每个高分辨率单元只保留最近的一个 LiDAR 点。对 rollout 位置 $p_t$,论文式 (15) 使用

$$ d_t=\min_{p_{\mathrm{obs}}\in\mathcal P_f} \lVert p_t-p_{\mathrm{obs}}\rVert. $$

也就是说,碰撞距离是轨迹点到整个过滤点集最近点的欧氏距离,不是仅查询轨迹点所在单元的 $r_{i,j}$。表 I 给出的阈值为 $d_{\mathrm{obs}}^{\min}=0.4$ m 与 $d_{\mathrm{obs}}^{\max}=1.0$ m。

论文式 (15) 的完整分段代价为

$$ J_{\mathrm{col},t}= \begin{cases} C, & d_t并在预测时域求和 $J_{\mathrm{col}}=\sum_{t=0}^{N-1}J_{\mathrm{col},t}$。表 I 给出 $C=10^6$、$a=5.0$;这些是论文实验参数,不是跨平台安全保证。

4.5 Warp 与频率必须按实验场景区分

AERO-MPPI 的全部模块使用 NVIDIA Warp kernel。论文选择 Warp,是因为它提供接近 CUDA 的效率、Python API、PyTorch 集成和显式 kernel 控制;Warp 与底层 CUDA 能力及 PyTorch 生态并不是简单的互斥关系。

流程可以概括为“点云分区、距离计算、pooling、MPPI rollout 与 RK4 动力学传播都在 GPU 上并行”;但“Warp 既不是 CUDA 也不是 PyTorch”是一种错误的二选一说法。Warp 是上层并行计算框架,其 kernel 会面向 CPU/GPU 后端执行,并可与 PyTorch 张量互操作。参考:NVIDIA Warp 文档PyTorch interoperability

论文中有三组不同语境的频率或吞吐量:

语境论文报告
方法部分使用 PX4 EKF 的最新位姿,以 50 Hz 重规划
实机 Jetson Orin NX 16 GBAERO-MPPI 以 10 Hz 重规划;PX4 以 50 Hz 执行命令
RTX 4080 SUPER 桌面基准在 $N=25$、$K=256$ 条件下达到 500 Hz,显存低于 600 MB

桌面 500 Hz 基准使用的 $K=256$ 与表 I 的名义 $K=128$ 不同,不能把 500 Hz 直接当作机载规划频率。实机段落给出的 10 Hz 才是该硬件实验中明确报告的规划频率。

4.6 论文参数表

为避免把不同实验语境混在一起,下面只列出 AERO-MPPI 表 I 和方法段能直接核对的参数:

参数论文值含义
高分辨率网格$120\times60$$3^\circ$ 球面角网格
粗网格$20\times10$$6\times6$ pooling 后为 $18^\circ$
累积点云10 帧,约 200,000 点对齐到当前机体系
处理半径 $r_{\max}$10 m点云处理范围
anchor 数 $M_h\times M_v$$5\times3=15$搜索角范围 $90^\circ\times54^\circ$
look-ahead $\ell$5.0 mrefined endpoint 距离
rollout 数 $K$128表 I 的每个 MPPI 参数
预测步数 $N$25表 I 参数
时间步 $\Delta t$50 ms预测时域离散步长
温度 $\lambda$0.1MPPI 权重温度
$d_{\mathrm{obs}}^{\min}$0.4 m碰撞代价内门限
$d_{\mathrm{obs}}^{\max}$1.0 m碰撞代价外门限

名义并行采样量 $15\times128=1920$ 条 rollout,是由表 I 配置推得。桌面 500 Hz 基准另用 $K=256$,不能用这张表反推该基准的总采样量或机载频率。

来源:AERO-MPPI 论文 HTML

5. 两种表示的可比与不可比之处

维度FlyingAERO-MPPI
下游用途强化学习策略输入锚点生成与 MPPI 碰撞代价
高分辨率表示$n=3200$,$4.5^\circ$$120\times60$,$3^\circ$
粗分辨率$20\times10$,$18^\circ$
历史点云$k$ 帧;实验取 $k=5$、10 Hz10 帧、约 200,000 点
空分区明确使用 $20-d_{\mathrm{unknown}}$论文未说明空单元初始化
实机点云预处理明确写出过滤远点和 0.05 m 均匀下采样未报告同样的 0.05 m 步骤;碰撞集合每单元保留最近点
输出接口策略以 50 Hz 输出推力和机体系角速度实机规划 10 Hz,PX4 执行 50 Hz

共同点是“按角方向保留近障碍信息”,但这不足以证明两者具有继承关系,也不能直接比较谁的总体性能更好:一个服务于学习策略,另一个服务于采样式轨迹优化,训练、代价、控制接口和实验环境都不同。

6. 角分辨率的几何含义

相隔 $\theta$ 的两条射线在半径 $r$ 处,端点间的弦长是

$$ c=2r\sin\left(\frac{\theta}{2}\right). $$

小角度下可用弧长 $r\theta$ 近似。于是:

  • $3^\circ$、$r=10$ m 时,$c\approx0.52$ m;
  • $18^\circ$、$r=5$ m 时,$c\approx1.56$ m。

这些数值只描述角网格在给定半径处的横向尺度,不能直接推出“可检测 0.52 m 缝隙”或“1.56 m 通道一定可通过”。实际安全性还取决于飞行器包络、障碍物相对 bin 边界的位置、点云密度、状态估计与外参误差、控制跟踪误差,以及规划器使用的安全裕度。

两篇论文也没有提供足以证明“改成 $1^\circ$ 没有收益”或“$6^\circ$ 一定缺少多样性”的消融。因此这些取舍只能作为待验证的工程假设,不能写成论文结论。

7. 复现时仍缺少什么

截至 2026-08-31 检查时,AERO-MPPI 的公开仓库主页只包含 README 和展示资源,尚不能用实现代码回答下列细节:

  • 7200 个单元的仰角起始索引;
  • 空高分辨率单元的初始化或回退规则;
  • 点云筛选、内存布局与 kernel 的具体实现;
  • 论文方法部分 50 Hz 与实机 10 Hz 之间的运行配置差异。

因此,本文可以复核论文公式与公开参数,但不能把尚未公开的实现细节写成确定事实。仓库:XinChen-stars/AERO_MPPI

参考文献

  1. Xin Chen, Rui Huang, Longbin Tang, Lin Zhao, “AERO-MPPI: Anchor-Guided Ensemble Trajectory Optimization for Agile Mapless Drone Navigation,” ICRA 2026, arXiv:2509.17340v2.
  2. Guangtong Xu, Tianyue Wu, Zihan Wang, Qianhao Wang, Fei Gao, “Flying on Point Clouds with Reinforcement Learning,” IROS 2025, DOI: 10.1109/IROS60139.2025.11246821, arXiv:2503.00496.
  3. Wei Xu, Yixi Cai, Dongjiao He, Jiarong Lin, Fu Zhang, “FAST-LIO2: Fast Direct LiDAR-Inertial Odometry,” IEEE Transactions on Robotics, 2022, arXiv:2107.06829.