Contents — find the section you need
Change parameters and verify
Open the panel, then press Run to load Python. You can stop execution and reset parameters. Results are computed on this device. No Python installation is required.
Local execution steps below are optional for reproducing the source results; they are not required for the browser experiment.
The experiment controls are in English.
单独比较速度调节与自适应前视距离
运行“急弯 · 已调节”并将结果保存为 A。然后运行“仅自适应前视距离”。路径、初始位姿、车辆和期望速度保持不变,而曲率和接近减速被禁用。请将实际速度和终点经过时间与横向跟踪误差一并查看:耗时更长的运行不应仅凭误差来排名。
前视距离和速度调节拥有各自独立的控制组。“固定前视距离 + 调节”仅禁用自适应功能。“无曲率调节”和“无接近减速”分别单独隔离出各自的速度规则。“更高的调节下限”演示了下限如何提升一个被降低的候选速度值。预设会恢复所有条件,因此请检查 A/B 之间的参数差异。
前视距离决定转向;调节决定速度
启用自适应时,Ld=clamp(vT,Lmin,Lmax),使用当前模型速度 v。禁用时,Ld 为固定值。PP/APP 的目标点几何被复用:对于车辆坐标系中的目标点 (xb,yb),κ=2yb/(xb²+yb²);转向角 δ=atan(Lκ)。如果不存在圆交点,则沿投影路径推进 Ld 并钳制到终点,且始终使用实际目标距离。在完成前位于车辆后方或与车辆重合的目标点会以给定原因终止本次运行。
速度按以下顺序计算:
- 曲率调节将期望速度乘以 min(1,R/Rmin),其中 R=1/|κ|。曲率为零时期望速度保持不变。
- 将该候选值提升到调节速度下限。此下限可以削弱这一降低效果;它不是安全边界。
- 一旦剩余路径长度严格小于接近距离 D,就按欧几里得终点距离/D 进行缩放。应用接近速度下限,但绝不会将速度提升到超过其接近阶段前的数值。
- 钳制到 [0, 期望速度] 范围内。共用的伺服公式 a=2(request−actual speed) 以及被控对象的加速度限制决定实际速度。
以期望速度=4 m/s、κ=0.25 /m 和 Rmin=8 m 为例,曲率候选值为 2 m/s。0.25 m/s 的调节下限不会改变该值。当剩余长度=1.5 m、终点距离=1.5 m、D=3 m 时,接近阶段给出 1 m/s,高于 0.1 m/s 的接近速度下限。当剩余长度恰好为 3 m 时,接近缩放尚未开始。
在回放中检查速度各阶段
播放、暂停、单步或拖动。所选时刻的显示会分开呈现“期望速度 → 曲率候选值 → 下限 → 最终请求值”与实际速度。在速度图上,灰色虚线为期望速度,绿色为调节后的请求值,蓝色/橙色为实际速度;A 为虚线,B 为实线。路径、车辆位姿、前视圆和目标点与误差图、转向图和前视距离图一同显示。数值表格和 JSON 均由仿真数据生成。
三项活跃时长指标各自独立累加区间 dt,可能相互重叠。“曲率候选值低于期望速度的时间”包括下限覆盖了该候选值的时段;它并不是车辆实际减速的时长。
参考版本与模型差异
标量速度规则遵循固定的 Nav2 Jazzy 提交 f4108e5b1c2bce804a1aa0c7be6673a8eb4a1501。其运算/顺序已与 C++ 参考实现进行核对,但这并非 Nav2 的执行结果。Duskcoil 使用共用的后轴模型和全局最近路径投影:剩余长度为路径长度减去投影弧长。Nav2 接收的是经过变换/裁剪的局部路径,因此其输入可能不同。调节使用的是执行器限制之前的请求追踪曲率。
共用模型使用 0.05 s 的时间间隔,最长 30 s。限制为速度 8 m/s、加速度 ±2 m/s²、转向角 ±0.6 rad 和转向变化率 0.8 rad/s。运动在每段保持曲率的弧上进行积分。实际速度不会瞬时达到请求值。未建模惯性、轮胎打滑、障碍物/代价地图模型、碰撞预测、倒车、原地转向或独立的曲率前视。这不是硬件性能或安全性评估。
完成判定为基于采样的终点经过:剩余弧长和终点距离均 ≤0.25 m,航向与最终切线方向的偏差在 0.15 rad 以内。这并不保证停车;正的接近速度下限并不意味着泊车。超过 10 m 的路径距离会以“偏离路径”终止运行;30 s 为时间上限。未完成的经过时间显示为“—”。CTE 和航向误差的 RMS 使用对平方样本在经过时间上的梯形积分。请避免仅凭误差对未完成运行或不同耗时的运行进行排名。
参数名称因版本而异
| 浏览器中的含义 | Jazzy | Rolling(核对于 2026-09-21) |
|---|---|---|
| 期望速度 | desired_linear_vel | max_linear_vel |
| 速度缩放前视距离 | use_velocity_scaled_lookahead_dist | 相同 |
| 前视时间 | lookahead_time | 相同 |
| 曲率调节 | use_regulated_linear_velocity_scaling | 相同 |
| 转弯半径阈值 | regulated_linear_scaling_min_radius | 相同 |
| 调节下限 | regulated_linear_scaling_min_speed | 相同 |
| 接近距离/下限 | approach_velocity_scaling_dist / min_approach_linear_velocity | 相同 |
接近阶段的开关是一项教学性的消融实验,并非 Jazzy 的 ROS 参数。Rolling 的动态窗口功能在此未实现。实验室默认值是教学性数值,并非推荐的 Nav2 配置。
由相同代码生成的示例
以下原生 Python 结果使用默认的半径 5 m 曲线、初始与期望速度 4 m/s、横向偏移 1 m 和轴距 2.5 m。
| 设置 | 状态 | 耗时 [s] | CTE RMS [m] |
|---|---|---|---|
| regulated | completed | 4.10 | 0.37348 |
| adaptive only | completed | 1.80 | 0.52087 |
| no approach | completed | 3.00 | 0.43649 |
参考文献与相关实验室
浏览器端执行无需在本地安装 Python。源代码下载为可选项。源代码与模型说明。
评论
请先登录。
暂无数据。