SRU变体
三、建议你的最终系统架构
可以把整个硕士论文系统做成这样:
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{通过成本}
这样就可以回答:
“什么时候应该绕,什么时候应该跨?”
十、你接下来真正应该按照这个顺序做
- 先冻结
rl_2。 不要同时改底层 locomotion 和高层 navigation,否则实验无法判断到底是谁起作用。 - 把原版 SRU 在 D1 仿真上完全跑通。 输入先只用 Goal + Depth + State,输出
[vx,wz],暂时不要创新。 - 设计 SRU baseline 实验。 做普通障碍、U型死胡同、长距离目标,记录 SR、SPL、碰撞率。
- 完成第一次 sim-to-real。 哪怕只在平地 + 箱子障碍完成 Goal Navigation,也非常重要。这证明整套链路是成立的。
- 建立 D1 的 traversability benchmark。 明确 D1 能通过多高台阶、多宽沟、多大坡度。这个不是导航训练结果,而是机器人自身“能力边界”。
- 把能力边界加入高层导航。 训练策略识别:可通过 / 不可通过 / 绕行更优。
- 加入 Fast-LIO 局部高程或参考路径信息,但对地图做 corruption。 不要默认地图100%可靠。
- 做消融实验。 SRU、SRU+Depth、SRU+Map、SRU+Capability、Full Model逐个比较。
- 再决定是否需要 Future Velocity Horizon / Diffusion。 如果单步策略已经能完成论文,就不要为了“看起来先进”强加 diffusion;如果跨沟确实需要提前加速,再加入短时域预测作为第二阶段创新。
- 最后实机验证。 至少做普通避障、死胡同恢复、绕/跨二选一、地图有误差四类实机实验。
十一、最终硕士论文可以长这样
第一章 绪论
足式/轮足导航背景、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 秒后才真正上楼;主要耗时发生在楼梯前,而不是爬楼动作本身。
关键原因有四个:
- 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 中采用策略均值推理,不再随机采样动作。
- 当前 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 秒延迟。
- 奖励没有要求“尽快到达”
当前主要奖励是:
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; - 策略自然倾向于“小速度、慢慢对准、确保不摔”。
所以它是在优化成功率,而不是最短到达时间。
- 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 完全一致的楼梯评估配置,再考虑增加轻微时间惩罚和未对齐楼梯入口训练。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐




所有评论(0)