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.
Ejecute mientras observa la trayectoria prevista
Ejecute «Recta · desplazamiento de 1 m» y reprodúzcalo. Los guiones verdes de cada instante son la trayectoria prevista resuelta en ese momento. El MPC decide toda la secuencia de curvatura a lo largo del horizonte, pero solo aplica al vehículo el primer valor y vuelve a resolverlo todo en el siguiente ciclo (0,05 s después). La trayectoria prevista y la real difieren tanto porque el modelo de predicción es una aproximación como porque los ciclos posteriores actualizan el plan.
Guarde el resultado como A y luego ejecute «Horizonte corto (3 pasos)» o «Horizonte largo (30 × 0,2 s)». Con los mismos pesos, hasta dónde mira el controlador cambia cómo se acumula la dirección. La duración del horizonte en segundos es el número de pasos N multiplicado por el paso Δt.
Modelo de predicción y problema de optimización
Los estados son el error lateral e_y respecto a la trayectoria (positivo a la izquierda) y el error de rumbo e_ψ. La predicción usa un modelo lineal simplificado para el MPC.
u_k es la curvatura de trayectoria ordenada [1/m], κ_k es la curvatura de la trayectoria en la posición prevista, y v_k es la velocidad prevista con el mismo servo de velocidad que el vehículo. La dirección es δ=atan(L u), por lo que el límite de dirección |δ|≤δ_max es exactamente el límite de curvatura |u|≤tan(δ_max)/L. El costo
da un programa cuadrático con solo límites de curvatura. u_{-1} es la curvatura realmente aplicada en el ciclo anterior. r pondera la desviación respecto a la curvatura de la trayectoria y r_Δ pondera los cambios rápidos de curvatura. La predicción es un modelo lineal de ángulo pequeño, mientras que el vehículo es el modelo de bicicleta compartido no lineal. Esa diferencia forma parte de lo que muestra el experimento.
El solucionador, y qué ocurre cuando no converge
El programa cuadrático se resuelve con un método de Newton proyectado (Bertsekas 1982). Las variables fijadas en un límite se mantienen fijas, se calcula una dirección de Newton para el resto, y una búsqueda en línea sigue a la proyección sobre los límites. La resolución se considera convergida cuando el residuo del gradiente proyectado es como máximo 1e-6 [1/m]. La solución del ciclo anterior es el punto de partida, por lo que normalmente converge en pocas iteraciones.
Si se alcanza el límite de iteraciones sin converger, puede elegir uno de tres comportamientos. «Usar iterado factible» aplica el iterado, que respeta los límites, y registra el ciclo como no convergido. «Mantener el comando anterior» conserva la dirección anterior y registra el ciclo como retenido. «Detener» finaliza la ejecución como un fallo (controller_failed) y muestra el motivo. Compárelos con las tres configuraciones que usan un límite de una iteración. Como los límites son la única restricción, este problema nunca es inviable (siempre existe una solución). La inviabilidad por restricciones de estado estrictas queda fuera del alcance de este Lab.
Restricciones, pesos y velocidad
«8 m/s · pesos predeterminados» completa el recorrido, pero «8 m/s · peso de cambio pequeño (diverge)» se sale de la trayectoria. El vehículo limita la tasa de cambio de dirección a 0,8 rad/s, pero este problema de optimización no incluye ese límite como restricción. Con un peso de cambio r_Δ pequeño, el plan supone cambios de dirección rápidos que el vehículo no puede seguir, y la oscilación crece. Es un ejemplo de una restricción ausente del modelo que rompe el bucle cerrado. «Peso lateral alto» también muestra correcciones abruptas que chocan con el límite de tasa de cambio de dirección.
«Curva cerrada (no se puede seguir)» es una trayectoria de radio de 5 m que el vehículo no puede seguir. En las mismas condiciones, el Lab de Stanley también se sale de la trayectoria. Cambiar la ley de control no puede superar los límites que fijan el vehículo y sus restricciones.
Vehículo compartido y métricas de comparación
El vehículo es el mismo modelo cinemático de bicicleta de eje trasero, solo hacia adelante, compartido con PP, APP, RPP y Stanley: pasos de 0,05 s hasta 30 s, límite de velocidad de 8 m/s, aceleración ±2 m/s², tasa de cambio de dirección de 0,8 rad/s. La velocidad no la optimiza el MPC; proviene del mismo servo de velocidad a=2(velocidad deseada−velocidad real) que los demás Labs. El MPC de este Lab maneja solo la dirección.
El error lateral, el error de rumbo, el RMS y la prueba de punto final usan las definiciones compartidas con los demás Labs, sobre el eje trasero. Pasar el punto final no significa detenerse ni estacionar. No clasifique ejecuciones con tiempos transcurridos o estados de finalización distintos solo por el RMS.
Sobre el tiempo de cómputo
El tiempo del solucionador es tiempo de reloj de Python (Pyodide) en este navegador. Cambia según el dispositivo, el navegador y lo que más esté ejecutándose, y no dice nada sobre el tiempo de cómputo en un computador a bordo del vehículo ni sobre si se cumpliría un plazo de control. La evaluación del rendimiento requiere medir el tiempo de resolución en el peor de los casos en el hardware y la implementación objetivo (por ejemplo, un solucionador dedicado como OSQP).
Orden sugerido
- Reproduzca la ejecución nominal y compare la trayectoria prevista con la trayectoria real.
- Cambie el número de pasos del horizonte y el tamaño del paso, y compare la acumulación de dirección y el error lateral.
- Use las dos configuraciones de 8 m/s para ver cómo se relaciona el peso de cambio con el límite de tasa de cambio de dirección.
- Use las tres configuraciones de una iteración para comparar cómo se maneja cada ciclo no convergido.
Todo se ejecuta en su navegador, con reproducción, avance por fotogramas, comparación A/B, reinicio, compartir y descarga en JSON.
Comentarios
Inicia sesión para continuar.
Todavía no hay datos.