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.
Siga una trayectoria en su navegador
Presione Run en el panel del navegador de arriba. El gris es la trayectoria de referencia; el azul es la trayectoria del eje trasero. El círculo muestra el lookahead, el punto es el objetivo y el segmento es la distancia entre ejes. Reproduzca, pause, avance paso a paso o desplácese por la ejecución para inspeccionar dónde comienza la dirección. La tabla numérica y el JSON descargable contienen los resultados calculados.
APP: escalar la distancia con la velocidad actual
APP en este Lab significa lookahead escalado por velocidad: Ld = clamp(v × T, Lmin, Lmax). Aquí v es la velocidad actual, no la velocidad objetivo, y T está en segundos. Acelerar desde el reposo revela la transición desde el límite mínimo. Esto no implementa la regulación de velocidad basada en curvatura de RPP.
El selector de controlador cambia entre PP y APP. El lookahead fijo afecta solo a PP; el tiempo y los límites afectan solo a APP. Guarde una ejecución como A y cambie solo el controlador para conservar la trayectoria, el estado inicial, el comando de velocidad y el vehículo. Los ajustes predefinidos también reinician las demás condiciones, por lo que conviene revisar las diferencias de parámetros mostradas.
Geometría del objetivo
Partiendo de la proyección más cercana sobre la trayectoria, elija la primera intersección hacia adelante en longitud de arco de la trayectoria con el círculo de radio Ld alrededor del eje trasero. Para el objetivo (xb, yb) en el marco del vehículo, la curvatura κ = 2 yb / (xb² + yb²), y luego la dirección δ = atan(L κ). La izquierda es positiva.
Cuando no hay intersección, avance Ld en longitud de arco de la trayectoria desde la proyección y recorte al punto final. La visualización distingue los objetivos de círculo, recuperación y punto final; la curvatura siempre usa la distancia al cuadrado real del objetivo. Un objetivo detrás del vehículo, o coincidente con él antes de completarse, termina la ejecución con una razón. Estas reglas de recuperación y punto final son decisiones didácticas, no una reproducción de Nav2.
Modelo común y comparaciones justas
El estado es el eje trasero (x, y) [m], el rumbo antihorario [rad] y la velocidad hacia adelante v [m/s]. Las ecuaciones son dx/dt=v cos(yaw), dy/dt=v sin(yaw), dyaw/dt=v tan(δ)/L. El desplazamiento lateral inicial es positivo a la izquierda del primer segmento; el desplazamiento de rumbo es relativo a ese segmento. Las trayectorias son polilíneas abiertas: recta, cuartos de círculo de radio 20 m y radio 5 m, o una curva en S. El espaciamiento predeterminado es de 0,1 m (en x para la curva en S).
El paso de tiempo es 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, 0,8 rad/s de cambio de dirección. La dirección inicial es cero. Cada intervalo aplica un límite discreto de tasa de cambio de dirección y luego mantiene la dirección fija. El movimiento de curvatura constante se integra exactamente, incluida la aceleración hasta velocidad cero/máxima y velocidad constante después. Ambos controladores usan a=2(vobjetivo−v). No se modela fricción, inercia, deslizamiento de neumáticos, obstáculos ni retardo de medición.
El error transversal es el desplazamiento normal izquierdo con signo respecto al segmento más cercano. El error de rumbo es el rumbo del vehículo menos la tangente proyectada, envuelto a [-π,π). El RMS usa integración trapezoidal en el tiempo de las muestras al cuadrado dividida por el tiempo transcurrido. El sobreimpulso longitudinal en el punto final se excluye del CTE pero se incluye en la distancia euclidiana de la trayectoria. El RMS de la tasa de dirección incluye la transición inicial desde cero y describe comandos discretos.
La finalización significa que la longitud de arco restante proyectada y la distancia al punto final son ambas ≤0,25 m, con el rumbo dentro de 0,15 rad del último segmento. Es el paso muestreado por el punto final, no una detención o estacionamiento; el paso entre muestras puede pasarse por alto. Una distancia 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 “—”. Las ejecuciones parciales y los tiempos transcurridos distintos no deben clasificarse solo por el error. Políticas de velocidad iguales aún pueden producir tiempos de finalización distintos. Este modelo sintético no establece la seguridad del hardware ni el desempeño a alta velocidad.
Ejemplos sintéticos reproducibles
Estos valores fueron generados por Python nativo a partir del mismo código. La curva suave usa velocidad inicial y objetivo de 2 m/s, desplazamiento lateral inicial de 1 m, desplazamiento de rumbo cero y distancia entre ejes de 2,5 m.
| Ajuste | Estado | Transcurrido [s] | RMS de CTE [m] |
|---|---|---|---|
| short | controller_failed | 1.80 | 0.72123 |
| nominal | completed | 15.70 | 0.25996 |
| long | completed | 15.50 | 0.37896 |
Referencias y Lab relacionado
- Coulter, Implementation of the Pure Pursuit Path Tracking Algorithm (1992): referencia de persecución geométrica.
- Documentación de RPP de Nav2 Iron: referencia para la convención de APP escalado por velocidad; este Lab no es una implementación completa de Nav2.
- Lab de PP
- MPC
La descarga del código fuente es opcional. La ejecución en el navegador no requiere instalación local de Python. Código fuente + notas del modelo.
Comentarios
Inicia sesión para continuar.
Todavía no hay datos.