三、建议你的最终系统架构

可以把整个硕士论文系统做成这样:


                   Goal
                    │
                    ↓
             Relative Goal
                    │
          ┌─────────┴─────────┐
          │                   │
      Local Depth       Fast-LIO局部地图
          │                   │
          └───────┬───────────┘
                  ↓
          Perception Encoder
                  ↓
           Spatial Memory
                SRU
                  │
                  ├──────── Robot State
                  │
                  ↓
       Traversability / Capability
              Estimator
                  ↓
        Navigation Policy
                  ↓
             [vx, wz]
                  ↓
        ┌─────────────────┐
        │     rl_2        │
        │ frozen low-level│
        └────────┬────────┘
                 ↓
                D1

这里最重要的是新增:

Traversability / Capability Estimator

它不是单纯判断:


有障碍 / 没障碍

而是判断:


可直接通过
需要减速通过
需要跨越/爬升
必须绕行
不可通行

这才是轮足机器人区别于普通移动机器人的论文价值。


四、你的创新点最好控制在 2 个,不要搞 5 个

硕士论文不需要把 Resilient + SRU + MulDP + Fast-LIO + Diffusion + VLA 全做一遍,那样最后每个都做不深。

我建议最终保留两个核心创新。

方向你具体做什么论文价值
创新1:可靠性感知的空间记忆导航SRU融合局部深度与Fast-LIO局部高程/路径信息,并考虑地图噪声或缺失解决实机地图不完美问题
创新2:运动能力感知的地形决策根据局部地形+D1状态判断绕行还是通过,并生成适合D1的速度命令从“避障”提升到“能力感知导航”

其中创新2应该作为主创新。

创新1作为增强鲁棒性的辅助创新。


五、为什么我不建议你把“SRU + A*路径”直接当创新

这一点很重要。

SRU 官方现在已经有一个 sru-path-aware-rl 项目:它已经把参考路径加入 SRU 导航,并测试了 optimal path、noisy/non-optimal path;项目结果甚至专门讨论了参考路径质量差或者完全缺失时退化到 SRU baseline 的情况。

所以:

❌ “Fast-LIO → A* → path → SRU”

本身很可能已经不够新。

但你可以进一步做:

地图/路径可靠性估计 + 地形能力感知 + SRU

比如:


Fast-LIO认为:
这里可以走

Depth认为:
这里似乎有一个坑

D1 locomotion能力模型认为:
这个坑可跨 / 不可跨

             ↓

policy自主决定:
相信地图?
相信当前深度?
绕?
跨?

这个问题就明显更有研究价值。


六、Resilient Navigation应该怎么融入你的论文

不建议把 Resilient 的整个网络再复现一遍。

它对你的价值主要是:

训练时主动破坏感知输入。

你可以把这个思想直接加入 SRU 的训练:


Depth dropout
Depth noise
LiDAR noise
Map corruption
Odometry drift
Observation delay

然后比较:


Vanilla SRU

vs

你的 Robust SRU

这就够了。

Resilient 给你的不是“再做一个模型”,而是一个重要训练思想:

不要让导航策略默认传感器永远正确。


七、MulDP应该怎么借鉴,而不是直接照搬

这里也很关键。

MulDP的数据规模并不小:论文构造 QPND,总导航距离约 31 km、6400条轨迹、约25万张深度图;其中还包括 scripted 和人工 teleoperation 数据。

所以如果你硕士阶段没有大量数据,直接完整复现:


SRU
↓
再换成大型Diffusion Policy

风险很高。

MulDP最值得你借的其实是两个思想:

多模态

Depth+Proprioception+Goal+HistoryDepth + Proprioception + Goal + History

而不是只用深度。

前瞻决策

不是永远输出:

ata_t

可以进一步研究:

[at,at+1,...,at+H][a_t,a_{t+1},...,a_{t+H}]

MulDP就是通过扩散模型预测 future command horizon,并以 5 Hz 滚动重规划,只执行第一个动作。

你硕士论文第一版甚至不一定要上 Diffusion。

可以先研究:

SRU + short-horizon velocity prediction

比如预测未来:

H=4/8H=4/8

个:

[vx,ωz][v_x,\omega_z]

如果效果明显,再升级 Diffusion。


八、实验必须这样设计,否则最后论文不好写

最终至少需要以下 Baseline:

方法目的
Reactive Policy / No Memory验证记忆是否必要
LSTM和普通时序记忆比较
Vanilla SRU你的核心baseline
SRU + Path与path-aware思想比较
你的方法Capability-aware / Reliability-aware SRU

地形不要只做“箱子避障”。

应该分成:


Level 1:普通障碍
箱子、柱子、窄通道

Level 2:记忆环境
U型障碍、死胡同、遮挡

Level 3:复杂地形
坡面、小台阶、浅坑、沟槽

Level 4:决策冲突
同一目标:
既可以绕
也可以通过

Level 4 是最重要的。

因为这是你证明:

“我的机器人不是简单学会越障,而是真的会根据成本做选择。”

的关键实验。


九、评价指标建议直接借鉴现代导航论文

MulDP本身使用:

  • SR:Success Rate
  • SPL:Success weighted by Path Length
  • TR:Traversal Rate
  • TTR:Time to Reach

你可以再增加:

指标证明什么
Success Rate能否到目标
SPL路径是否高效
Collision Rate是否安全
Dead-end Recovery Rate空间记忆能力
Traversal Success Rate越障能力
Time to Goal是否真的比绕行快
Command Smoothness高层速度是否稳定
Sim-to-real Success泛化能力

然后专门设计:

绕行成本vs通过成本\text{绕行成本} \quad vs \quad \text{通过成本}

这样就可以回答:

“什么时候应该绕,什么时候应该跨?”


十、你接下来真正应该按照这个顺序做

  1. 先冻结 rl_2。 不要同时改底层 locomotion 和高层 navigation,否则实验无法判断到底是谁起作用。
  2. 把原版 SRU 在 D1 仿真上完全跑通。 输入先只用 Goal + Depth + State,输出 [vx,wz],暂时不要创新。
  3. 设计 SRU baseline 实验。 做普通障碍、U型死胡同、长距离目标,记录 SR、SPL、碰撞率。
  4. 完成第一次 sim-to-real。 哪怕只在平地 + 箱子障碍完成 Goal Navigation,也非常重要。这证明整套链路是成立的。
  5. 建立 D1 的 traversability benchmark。 明确 D1 能通过多高台阶、多宽沟、多大坡度。这个不是导航训练结果,而是机器人自身“能力边界”。
  6. 把能力边界加入高层导航。 训练策略识别:可通过 / 不可通过 / 绕行更优。
  7. 加入 Fast-LIO 局部高程或参考路径信息,但对地图做 corruption。 不要默认地图100%可靠。
  8. 做消融实验。 SRU、SRU+Depth、SRU+Map、SRU+Capability、Full Model逐个比较。
  9. 再决定是否需要 Future Velocity Horizon / Diffusion。 如果单步策略已经能完成论文,就不要为了“看起来先进”强加 diffusion;如果跨沟确实需要提前加速,再加入短时域预测作为第二阶段创新。
  10. 最后实机验证。 至少做普通避障、死胡同恢复、绕/跨二选一、地图有误差四类实机实验。

十一、最终硕士论文可以长这样

第一章 绪论

足式/轮足导航背景、Map-based → Learning-based → Memory-aware → Terrain-aware。

第二章 相关工作

传统导航、Resilient Navigation、SRU、MulDP、轮足机器人导航。

第三章 D1轮足机器人分层自主导航系统

传感器、定位、rl_2、SRU、高低层接口。

第四章 空间记忆增强导航方法

SRU baseline、D1适配、状态/目标/感知编码。

第五章 能力感知的复杂地形自主导航方法

这应该是你的核心创新章:

Terrain+Memory+Robot Capability→Avoid/TraverseTerrain + Memory + Robot\ Capability \rightarrow Avoid/Traverse

第六章 仿真与实机实验

Baseline、消融、鲁棒性、sim-to-real。

第七章 总结与展望


你现在最应该做的不是继续看更多论文

现在论文已经够用了。

你的下一步应该进入:

SRU原版→D1仿真→D1实机\boxed{ \text{SRU原版} \rightarrow \text{D1仿真} \rightarrow \text{D1实机} }

先获得一个 “Vanilla SRU on D1” baseline。

然后你的硕士论文创新才从这里开始:

SRU+不可靠地图/局部地形+D1运动能力→Capability-aware Navigation\boxed{ \text{SRU} + \text{不可靠地图/局部地形} + \text{D1运动能力} \rightarrow \text{Capability-aware Navigation} }

这条路线比“直接把 MulDP 搬过来”更适合硕士阶段,也更容易形成明确的问题—方法—消融—实机验证闭环。轮足机器人本身也非常适合做“mobility-aware navigation”:已有 Science Robotics 工作已经证明,轮足平台采用自适应 locomotion、mobility-aware local navigation 与分层 RL 是一条成熟且有价值的系统路线。

如果从你现在的进度继续,近期唯一优先级就是把 SRU 的官方 B2W 环境替换成你的 D1,并确定 observation、action、低层接口三件事;创新模块先不要加。等这个 baseline 跑起来,再做可通行性模块。

阶段1存在的问题

这不是“观测噪声导致的慢”,而是策略在当前奖励和测试配置下学成了保守导航。视频中机器人约在 22~50 秒缓慢接近并调整楼梯入口,约 50 秒后才真正上楼;主要耗时发生在楼梯前,而不是爬楼动作本身。

关键原因有四个:

  1. Stage1 并非真正“完全无噪声”

Stage1 只关闭了:

  • 高层观测 corruption
  • BEV 高度噪声和丢帧
  • 外力与推扰

见 [navigation_env_cfg.py (line 353)](/home/d/bishe/sru-path-aware-rl/sru-navigation-sim/isaaclab_nav_task/navigation/config/d1/navigation_env_cfg.py:353)。

但仍保留了:

  • 动作尺度随机化:vx 0.8~1.2
  • 低通系数随机化:alpha 0.4~0.9
  • 观测延迟:最多 2 个高层周期
  • 低层 NP3O 观测噪声
  • 摩擦随机化
  • PPO/MDPO 训练时的动作探索噪声

保存的训练配置也确认:

enable_low_pass_filter: true
randomize_action_scale: enabled
randomize_low_pass_filter_alpha: 0.4 ~ 0.9
delay_cfg:
  enabled: true
  max_delay_*: 2

训练日志中的 Mean action noise std 也不是零。只是在 play.py 中采用策略均值推理,不再随机采样动作。

  1. 当前 SRU 高层实际是 5 Hz,不是 50 Hz

当前配置为:

PLANNING_FREQ = 5.0
sim.dt = 0.005
decimation = 40

见 [navigation_env_cfg.py (line 48)](/home/d/bishe/sru-path-aware-rl/sru-navigation-sim/isaaclab_nav_task/navigation/navigation_env_cfg.py:48)。

所以实际频率是:

SRU 高层导航:5 Hz,每 0.2 秒输出一次
冻结 NP3O 低层:50 Hz,每 0.02 秒输出一次
物理仿真:200 Hz

这和之前要求的“SRU 按 50 Hz”并没有对齐。5 Hz 会使方向修正更离散,但它本身不会单独造成 20 秒延迟。

  1. 奖励没有要求“尽快到达”

当前主要奖励是:

progress_along_path.weight = 2.0
velocity_along_global_path.weight = 1.0
action_rate_l1.weight = -0.1

但没有每步时间惩罚或按到达时间缩放的成功奖励。

对于固定长度路径:

Σ 路径进度 ≈ 总路径长度
Σ 速度 × dt ≈ 总路径长度

因此机器人 8 秒到达和 30 秒到达,累计路径收益可能非常接近。与此同时:

  • 跌倒/非法接触风险很高;
  • 动作变化会被惩罚;
  • 超时项被标记为 time_out=True,不会得到普通终止的 -50;
  • 策略自然倾向于“小速度、慢慢对准、确保不摔”。

所以它是在优化成功率,而不是最短到达时间。

  1. Stage1 训练与楼梯 Play 的出生朝向不一致

Stage1 的强制上楼任务设置了:

ground_to_platform_probability = 1.0
align_ground_to_platform_spawn = True

也就是训练时,楼下出生的机器人会被自动朝向参考路径。

但是 Isaac-Nav-MDPO-D1-Play-Stairs-v0 继承的是普通 Play 配置,只保留楼梯地形,并没有继承 Stage1 的强制上楼和朝向对齐设置。因此视频测试时机器人需要自己寻找入口并修正朝向,而它对此类状态训练覆盖不足,只能保守地一点点调整。

可以用下面的命令进一步确认慢在哪里:

cd /home/d/bishe/IsaacLab
conda activate sru-isaac51

./isaaclab.sh -p source/isaaclab_nav_task/scripts/play.py \
  --task Isaac-Nav-MDPO-D1-Play-Stairs-v0 \
  --num_envs 1 \
  --checkpoint logs/rsl_rl/d1_navigation_mdpo_mixed_stage1/2026-09-16_15-01-41_mixed_clean_from_stairs_8500/model_20499.pt \
  --debug_commands

判断方法:

  • high_level 本身很小:高层策略学得太保守;
  • high_level 较大、low_level_cmd 很小:低通或动作随机尺度造成;
  • low_level_cmd 较大、measured_body_vel 很小:冻结低层运控在楼梯前响应不足。

结论:当前慢速主要是“没有时间优化目标 + 训练时楼梯出生已对齐 + 5 Hz 高层和动作平滑”共同造成的,不是简单的观测噪声问题。下一步应先建立与 Stage1 完全一致的楼梯评估配置,再考虑增加轻微时间惩罚和未对齐楼梯入口训练。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐