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.

Open experiment panel in a new tab

Download reproduction source

Compare la regulación con el lookahead adaptativo solo

Ejecute Curva cerrada · regulada y guarde el resultado como A. Luego ejecute Solo lookahead adaptativo. La trayectoria, la pose inicial, el vehículo y la velocidad deseada permanecen iguales mientras la curvatura y la desaceleración de acercamiento están desactivadas. Lea la velocidad real y el tiempo de paso del punto final junto con el error transversal: una ejecución más lenta no debe clasificarse solo por el error.

El lookahead y la regulación de velocidad tienen grupos de control separados. Lookahead fijo + regulación desactiva solo la adaptación. Sin regulación de curvatura y Sin desaceleración de acercamiento aíslan cada regla de velocidad. Piso de regulación más alto demuestra cómo un piso puede elevar un candidato reducido. Los ajustes predefinidos restauran todas las condiciones, así que revise las diferencias de parámetros A/B.

El lookahead selecciona la dirección; la regulación selecciona la velocidad

Con la adaptación activada, Ld=clamp(vT,Lmin,Lmax), usando la velocidad actual v del modelo. Con ella desactivada, Ld es fijo. Se reutiliza la geometría de objetivo de PP/APP: κ=2yb/(xb²+yb²) para el objetivo (xb,yb) en el marco del vehículo; dirección δ=atan(Lκ). Si no existe intersección de círculo, avance Ld a lo largo de la trayectoria proyectada y recorte al punto final, usando siempre la distancia real al objetivo. Los objetivos detrás o coincidentes antes de completarse terminan la ejecución con una razón.

La velocidad se calcula en este orden:

  1. La regulación por curvatura multiplica la velocidad deseada por min(1,R/Rmin), donde R=1/|κ|. Curvatura cero deja la velocidad deseada sin cambios.
  2. Eleve ese candidato al piso de velocidad de regulación. Este piso puede debilitar la reducción; no es un límite de seguridad.
  3. Una vez que la longitud restante de la trayectoria está estrictamente por debajo de la distancia de acercamiento D, escale por la distancia euclidiana al punto final/D. Aplique el piso de acercamiento, pero nunca eleve la velocidad por encima de su valor previo al acercamiento.
  4. Recorte a [0, velocidad deseada]. El servo común a=2(solicitud−velocidad real) y los límites de aceleración de la planta determinan la velocidad real.

Para deseada=4 m/s, κ=0,25 /m y Rmin=8 m, el candidato de curvatura es 2 m/s. Un piso de regulación de 0,25 m/s lo deja sin cambios. Con longitud restante=1,5 m, distancia al punto final=1,5 m y D=3 m, el acercamiento da 1 m/s por encima de un piso de acercamiento de 0,1 m/s. Con la longitud restante exactamente en 3 m, el escalado de acercamiento aún no ha comenzado.

Inspeccione las etapas de velocidad durante la reproducción

Reproduzca, pause, avance paso a paso o desplácese. La visualización del tiempo seleccionado separa deseada → candidato de curvatura → piso → solicitud final de la velocidad real. En el gráfico de velocidad, el punteado gris es la deseada, el verde es la solicitud regulada y el azul/naranja es la real; A es discontinuo y B es sólido. La trayectoria, la pose del vehículo, el círculo de lookahead y el objetivo acompañan a los gráficos de error, dirección y lookahead. La tabla numérica y el JSON se generan a partir de los datos de la simulación.

Las tres métricas de duración activa suman el dt del intervalo de forma independiente y pueden superponerse. El tiempo en que el candidato de curvatura está por debajo de la deseada incluye periodos en los que el piso anula ese candidato; no es la duración de la desaceleración real del vehículo.

Versión de referencia y diferencias del modelo

Las reglas escalares de velocidad siguen el commit fijado f4108e5b1c2bce804a1aa0c7be6673a8eb4a1501 de Nav2 Jazzy. Su aritmética/orden se verifica contra la referencia en C++, pero esto no es un resultado de ejecución de Nav2. Duskcoil usa un modelo de eje trasero compartido y proyección global sobre la trayectoria más cercana: la longitud restante es la longitud de la trayectoria menos la longitud de arco proyectada. Nav2 recibe una trayectoria local transformada/recortada, por lo que sus entradas pueden diferir. La regulación usa la curvatura de persecución solicitada antes de los límites del actuador.

El modelo común usa intervalos de 0,05 s durante como máximo 30 s. Los límites son 8 m/s de velocidad, ±2 m/s² de aceleración, ±0,6 rad de dirección y 0,8 rad/s de cambio de dirección. El movimiento se integra en cada arco de curvatura retenida. La velocidad real no alcanza instantáneamente la solicitud. No hay inercia, deslizamiento de neumáticos, modelo de obstáculos/mapa de costos, predicción de colisión, marcha atrás, rotación hacia el rumbo ni lookahead de curvatura separado. Esto no es una evaluación de desempeño de hardware ni de seguridad.

La finalización es el paso muestreado por el punto final: la longitud de arco restante y la distancia al punto final ambas ≤0,25 m, con el rumbo dentro de 0,15 rad de la tangente final. No garantiza la detención; una velocidad positiva del piso de acercamiento no significa estacionar. Una distancia de trayectoria superior a 10 m termina la ejecución como fuera de trayectoria; 30 s es el límite de tiempo. El tiempo de paso incompleto es “—”. El RMS de CTE y de rumbo usa integración trapezoidal de las muestras al cuadrado sobre el tiempo transcurrido. Evite clasificar ejecuciones parciales o de duración distinta solo por el error.

Los nombres de parámetros dependen de la versión

Significado en el navegador Jazzy Rolling, verificado el 2026-09-21
Velocidad deseada desired_linear_vel max_linear_vel
Lookahead escalado por velocidad use_velocity_scaled_lookahead_dist igual
Tiempo de lookahead lookahead_time igual
Regulación por curvatura use_regulated_linear_velocity_scaling igual
Umbral de radio de giro regulated_linear_scaling_min_radius igual
Piso de regulación regulated_linear_scaling_min_speed igual
Distancia/piso de acercamiento approach_velocity_scaling_dist / min_approach_linear_velocity igual

El interruptor de acercamiento activado/desactivado es una ablación didáctica, no un parámetro ROS de Jazzy. Las funciones de ventana dinámica de Rolling no están implementadas aquí. Los valores predeterminados del Lab son valores didácticos, no una configuración recomendada de Nav2.

Ejemplos generados a partir del mismo código

Los resultados nativos de Python a continuación usan la curva predeterminada de radio 5 m, velocidad inicial y deseada de 4 m/s, desplazamiento lateral de 1 m y distancia entre ejes de 2,5 m.

Ajuste Estado Transcurrido [s] RMS de CTE [m]
regulated completed 4.10 0.37348
adaptive only completed 1.80 0.52087
no approach completed 3.00 0.43649

Referencias y Labs relacionados

La ejecución en el navegador no requiere instalación local de Python. La descarga del código fuente es opcional. Código fuente y notas del modelo.

Related reading

Explore another aspect of this fieldLab de MPC: volver a resolver una secuencia de curvatura dentro del horizonte y los límites de direcciónExplore another aspect of this fieldLab de comparación de seguimiento de trayectoria: ejecute PP, APP, RPP, Stanley y MPC en las mismas condiciones