仿真里 Robostral Navigate 能走完一段路,只说明在这套仿真配置下没有暴露问题,不能直接推出真机可迁移。更可靠的做法是把它当成一次风险筛查:先固定要观察的轨迹切片,再把偏航、急停、重规划这些事件从观感变成可记录条目,逐条归因到感知、定位、控制、任务四类,最后对照真机的传感器噪声、延迟、摩擦和定位漂移,列出红黄绿风险清单。归因不明、或只在理想条件下通过的任务片段,建议先不迁。
仿真通过不等于真机可迁移。可操作的路径是:按直线、转弯、窄通道、动态障碍、长程任务切片回放 Robostral Navigate 的轨迹,用日志把每次偏航、急停、重规划归因到感知/定位/控制/任务之一,再对照真机的传感器噪声、延迟、地面摩擦、动态障碍行为和定位漂移,判断哪些风险会被放大。归因不明或无法稳定复现的失败案例,建议先按红灯处理,不进入真机迁移。
选定要回放的仿真轨迹和任务切片
只看跑通的成功视频,容易把“没撞”当成“会走”。建议先定义观察样本:从任务库里按五类各选至少一条轨迹。直线看跟踪误差和速度稳定性;转弯看横向超调和减速时机;窄通道看贴边距离与是否蹭障;动态障碍看让行或绕行决策;长程任务看误差累积和任务状态机是否卡死。每段都要记录它依赖的场景配置,否则回放结果无法复现。
slice_id: nav_straight_01
场景类型: 直线
仿真场景文件: 你的场景文件路径
初始位姿: x, y, yaw # 填实际配置值
回放方式: 用当前仿真环境提供的回放入口加载该片段记录包
成功标准: 到达目标点 且 全程无碰撞 且 无非预期急停 且 状态机为完成态
观察重点: 速度曲线是否平滑、是否出现横向摆动
成功标准要写成可判定条件,而不是“看起来还行”。回放顺序建议从单一切片开始,确认该片段能稳定复现后,再叠加动态障碍或长程组合。场景配置文件、初始位姿、随机种子这类信息一并记下,否则同一片段前后两次结果对不上时无法判断是代码改动还是配置漂移。
在轨迹里标出偏航、急停、重规划点
轨迹图、速度曲线和速度/转向控制指令时间线,通常要放在同一时间轴上对齐看。偏航表现为航向角持续偏离参考路径;急停表现为速度指令被截断,或底层急停被触发;重规划表现为路径在某一帧被整体替换。把这三类点标出来后再做事件记录,比回看视频描述可靠。
slice_id: nav_turn_03
event_type: yaw_deviation # yaw_deviation / estop / replan
t_event: 12.4 # 相对片段起点的秒数
pose_before: x, y, yaw
cmd_before: 事件前若干帧的速度与转向指令
sensor_before: 事件前关键传感器读数或话题名
recovery_action: replan # 系统随后做了什么
记录时至少要保留事件发生时刻前后的输入,这样后面归因才有证据。按时间窗口截日志可以用下面的骨架,字段名和日志格式按你的实际输出替换:
grep -n -E 'yaw|replan|estop' nav_run.log | head -50
# 或按时间列过滤,例如用 awk 取某一段窗口内的行
awk -F, '$1 > 12.0 && $1 < 13.0' nav_run.log
事件标注完成后建议做一次交叉检查:同一个偏航点是否在多次回放中都出现。只出现一次的,先记为偶发,不要急着改参数。
把失败案例归到感知、定位、控制、任务四类
四类归因的差别在于,感知和定位偏“系统输入错了”,控制和任务偏“决策或执行错了”。建议按下面的字段去找证据,字段名按你实际日志格式替换。
- 感知:障碍物检测结果与置信度、传感器帧时间戳、点云或图像话题的丢帧计数。可查字段示例:obstacle_detected、detection_confidence、sensor_frame_id。
- 定位:定位状态、位姿协方差或匹配误差、重定位次数、与地图的匹配得分。可查字段示例:localization_status、pose_covariance、relocalize_count。
- 控制:速度与转向指令同底盘反馈的偏差、指令限幅触发、急停触发来源。可查字段示例:cmd_vel、tracking_error、estop_source。
- 任务:任务状态机当前状态、目标点到达判定、超时与重试计数。可查字段示例:task_state、goal_reached、retry_count。
如果一个案例在两个类别里都有可疑字段,通常是耦合问题。这类案例和无法归因的案例一起单列为“待复现”,写清触发条件、最小可复现场景、已拿到的日志范围。归因不明时直接改参数,往往只是把现象盖住。
评估仿真到真机的差距来源
仿真到真机的差距,多数集中在下面几处。它们不一定让任务直接失败,但常把仿真里的小偏差放大成急停或碰撞。
- 传感器噪声:仿真读数常接近理想,真机有噪声和离群点,可能让感知阈值失效。
- 延迟:计算与通信延迟在仿真里常被忽略或固定,真机是波动的,会直接影响闭环控制。
- 地面摩擦与打滑:仿真的接触与轮胎模型简化,真机在光滑地面或坡面上的制动距离会变。
- 动态障碍行为:仿真里的行人和车辆多按规则运动,真机行为不可预测。
- 定位漂移:仿真常用真值位姿,真机存在累积漂移,长程任务更明显。
其中延迟、地面摩擦、定位漂移和动态障碍行为,通常需要在真机上小范围验证——封闭或低风险场地、限速、有安全员和可用急停。传感器噪声可以先用仿真加噪做初步筛查,但结论仍需结合真机环境确认。
输出迁移前风险清单和回退策略
把切片结果、事件记录和归因汇总成一张风险清单,按红黄绿分级,并明确什么条件不满足就不迁移。
- 绿灯:仿真与真机关键配置对齐,切片全部通过,失败案例已归因且对应的处理动作可在仿真中复现。可在限速、小范围条件下进入真机验证。
- 黄灯:大部分切片通过,但个别案例只在理想条件下成立,或归因待确认。建议先补仿真复现,再决定是否做低速小范围验证。
- 红灯:出现碰撞、急停后无法自动恢复、重规划持续失败、定位丢失且无恢复路径。此时先回到仿真修问题和补数据。
必须复现的失败案例,是仿真里已出现过的碰撞、非预期急停、重规划失败和任务超时。它们应当在调整仿真参数后仍能复现,并配有稳定的恢复动作;如果只在某一组参数下偶发,就按未解决处理。
fallback:
on_localization_lost: stop_and_alert
on_replan_fail_count: 3
on_estop_no_recover: handover_to_manual
unverified_zone_speed_limit: 启用
require_safety_operator: true
回退条件建议写成硬触发:定位置信度低于阈值、急停后无法自动恢复、连续重规划超过设定次数、进入未建图或未验证区域。触发后切人工接管或停车告警,不做“再试一次”的自动重试。具体阈值和次数需要结合你的场地、速度与底盘特性,在真机小范围测试中确认。