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

Suivre une trajectoire dans votre navigateur

Appuyez sur Exécuter dans le panneau du navigateur ci-dessus. Le gris est la trajectoire de référence ; le bleu est la trajectoire de l'essieu arrière. Le cercle montre l'anticipation, le point est la cible, et le segment est l'empattement. Lisez, mettez en pause, avancez pas à pas ou parcourez l'exécution pour examiner où la direction commence. Le tableau numérique et le JSON téléchargeable contiennent les résultats calculés.

APP : mettre la distance à l'échelle de la vitesse actuelle

APP dans ce laboratoire signifie une anticipation mise à l'échelle de la vitesse : Ld = clamp(v × T, Lmin, Lmax). Ici v est la vitesse actuelle, non la vitesse cible, et T est en secondes. Accélérer depuis l'arrêt révèle la transition depuis la borne minimale. Cela n'implémente pas la régulation de vitesse basée sur la courbure de RPP.

Le sélecteur de contrôleur bascule entre PP et APP. L'anticipation fixe n'affecte que PP ; le temps et les bornes n'affectent que APP. Enregistrez une exécution comme A et modifiez seulement le contrôleur pour conserver la trajectoire, l'état initial, la commande de vitesse et le véhicule. Les préréglages réinitialisent aussi les autres conditions, examinez donc les différences de paramètres affichées.

Géométrie de la cible

En partant de la projection la plus proche sur la trajectoire, choisissez la première intersection en longueur d'arc avant de la trajectoire avec le cercle de rayon Ld autour de l'essieu arrière. Pour une cible (xb, yb) dans le référentiel du véhicule, la courbure κ = 2 yb / (xb² + yb²), puis la direction δ = atan(L κ). La gauche est positive.

Lorsqu'il n'y a pas d'intersection, avancez Ld en longueur d'arc de la trajectoire depuis la projection et bornez au point terminal. L'affichage distingue les cibles de cercle, de récupération et de point terminal ; la courbure utilise toujours la distance réelle au carré à la cible. Une cible derrière le véhicule, ou coïncidente avec lui avant l'achèvement, termine l'exécution avec une raison. Ces règles de récupération et de point terminal sont des choix pédagogiques, non une reproduction de Nav2.

Modèle commun et comparaisons équitables

L'état est l'essieu arrière (x, y) [m], le lacet antihoraire [rad], et la vitesse avant v [m/s]. Les équations sont dx/dt=v cos(yaw), dy/dt=v sin(yaw), dyaw/dt=v tan(δ)/L. Le décalage latéral initial est positif à gauche du premier segment ; le décalage de cap est relatif à ce segment. Les trajectoires sont des polylignes ouvertes : droite, quarts de cercle de rayon 20 m et rayon 5 m, ou une courbe en S. L'espacement par défaut est de 0,1 m (en x pour la courbe en S).

Le pas de temps est de 0,05 s sur au plus 30 s. Les limites sont 8 m/s de vitesse, ±2 m/s² d'accélération, ±0,6 rad de direction, 0,8 rad/s de changement de direction. La direction initiale est nulle. Chaque intervalle applique une limite de vitesse de variation discrète de la direction puis maintient la direction fixe. Le mouvement à courbure constante est intégré exactement, y compris l'accélération jusqu'à la vitesse nulle/maximale et la vitesse constante ensuite. Les deux contrôleurs utilisent a=2(vtarget−v). Aucun frottement, inertie, glissement de pneu, obstacle ou délai de mesure n'est modélisé.

L'erreur transversale est le déplacement signé normal-gauche par rapport au segment le plus proche. L'erreur de cap est le lacet du véhicule moins la tangente projetée, enroulée sur [-π,π). Le RMS utilise une intégration temporelle trapézoïdale des échantillons au carré divisée par le temps écoulé. Le dépassement longitudinal du point terminal est exclu du CTE mais inclus dans la distance euclidienne à la trajectoire. Le RMS du taux de direction inclut la transition initiale depuis zéro et décrit des commandes discrètes.

L'achèvement signifie que la longueur d'arc restante projetée et la distance au point terminal sont toutes deux ≤0,25 m, avec un cap à moins de 0,15 rad du dernier segment. C'est un passage échantillonné du point terminal, non un arrêt ou un stationnement ; le passage entre échantillons peut être manqué. Une distance supérieure à 10 m termine une exécution comme hors trajectoire ; 30 s est la limite de temps. Le temps de passage incomplet est « — ». Les exécutions partielles et les temps écoulés différents ne doivent pas être classés par l'erreur seule. Des politiques de vitesse égales peuvent tout de même produire des temps d'achèvement différents. Ce modèle synthétique n'établit pas la sécurité matérielle ni la performance à haute vitesse.

Exemples synthétiques reproductibles

Ces valeurs ont été générées par Python natif à partir du même code. La courbe douce utilise une vitesse initiale et cible de 2 m/s, un décalage latéral initial de 1 m, un décalage de cap nul, et un empattement de 2,5 m.

Réglage Statut Écoulé [s] CTE RMS [m]
short controller_failed 1,80 0,72123
nominal completed 15,70 0,25996
long completed 15,50 0,37896

Références et laboratoire lié

Le téléchargement du code source est facultatif. L'exécution dans le navigateur ne nécessite aucune installation locale de Python. Source + notes de modèle.

Related reading

Lire sur le contrôle prédictif et les contraintesIntroduction à l'ingénierie du contrôle : Commande prédictive par modèle — Agir dans le respect des contraintesExplore another aspect of this fieldLaboratoire MPC — résoudre à nouveau une séquence de courbure dans l'horizon et les limites de directionExplore another aspect of this fieldLaboratoire de comparaison du suivi de trajectoire : exécuter PP, APP, RPP, Stanley et MPC dans les mêmes conditions