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

Comparer la régulation à l'anticipation adaptative seule

Exécutez Courbe serrée · régulée et enregistrez le résultat comme A. Exécutez ensuite Anticipation adaptative seule. La trajectoire, la pose initiale, le véhicule et la vitesse désirée restent identiques tandis que la régulation par courbure et le ralentissement à l'approche sont désactivés. Lisez la vitesse réelle et le temps de passage au point terminal aux côtés de l'erreur transversale : une exécution plus lente ne doit pas être classée par l'erreur seule.

L'anticipation et la régulation de vitesse ont des groupes de contrôle distincts. Anticipation fixe + régulation ne désactive que l'adaptation. Aucune régulation de courbure et Aucun ralentissement à l'approche isolent chaque règle de vitesse. Un plancher de régulation plus élevé démontre comment un plancher peut relever un candidat réduit. Les préréglages restaurent toutes les conditions, vérifiez donc les différences de paramètres A/B.

L'anticipation sélectionne la direction ; la régulation sélectionne la vitesse

Avec l'adaptation activée, Ld=clamp(vT,Lmin,Lmax), en utilisant la vitesse actuelle v du modèle. Désactivée, Ld est fixe. La géométrie de cible PP/APP est réutilisée : κ=2yb/(xb²+yb²) pour une cible (xb,yb) dans le référentiel du véhicule ; direction δ=atan(Lκ). S'il n'existe pas d'intersection de cercle, avancez Ld le long de la trajectoire projetée et bornez au point terminal, en utilisant toujours la distance réelle à la cible. Des cibles derrière ou coïncidentes avant l'achèvement terminent l'exécution avec une raison.

La vitesse est calculée dans cet ordre :

  1. La régulation de courbure multiplie la vitesse désirée par min(1,R/Rmin), où R=1/|κ|. Une courbure nulle laisse la vitesse désirée inchangée.
  2. Relever ce candidat au plancher de vitesse de régulation. Ce plancher peut affaiblir la réduction ; ce n'est pas une borne de sécurité.
  3. Une fois que la longueur de trajectoire restante est strictement inférieure à la distance d'approche, mettre à l'échelle par la distance euclidienne au point terminal/D. Appliquer le plancher d'approche, mais ne jamais relever la vitesse au-dessus de sa valeur avant approche.
  4. Borner à [0, vitesse désirée]. Le servo commun a=2(demande−vitesse réelle) et les bornes d'accélération du modèle déterminent la vitesse réelle.

Pour désiré=4 m/s, κ=0,25 /m et Rmin=8 m, le candidat de courbure est 2 m/s. Un plancher de régulation de 0,25 m/s le laisse inchangé. Avec une longueur restante=1,5 m, une distance au point terminal=1,5 m et D=3 m, l'approche donne 1 m/s au-dessus d'un plancher d'approche de 0,1 m/s. À une longueur restante exactement de 3 m, la mise à l'échelle d'approche n'a pas commencé.

Examiner les étapes de vitesse pendant la lecture

Lisez, mettez en pause, avancez pas à pas ou parcourez. L'affichage au temps sélectionné sépare désiré → candidat de courbure → plancher → demande finale de la vitesse réelle. Sur le graphique de vitesse, le pointillé gris est désiré, le vert est la demande régulée et le bleu/orange est réel ; A est en tirets et B en trait plein. La trajectoire, la pose du véhicule, le cercle d'anticipation et la cible accompagnent les graphiques d'erreur, de direction et d'anticipation. Le tableau numérique et le JSON sont générés à partir des données de simulation.

Les trois métriques de durée active additionnent l'intervalle dt indépendamment et peuvent se chevaucher. Le temps où le candidat de courbure est sous le désiré inclut les périodes où le plancher outrepasse ce candidat ; ce n'est pas la durée du ralentissement réel du véhicule.

Version de référence et différences de modèle

Les règles de vitesse scalaires suivent le commit épinglé Nav2 Jazzy f4108e5b1c2bce804a1aa0c7be6673a8eb4a1501. Leur arithmétique/ordre est vérifié par rapport à la référence C++, mais ceci n'est pas un résultat d'exécution Nav2. Duskcoil utilise un modèle d'essieu arrière partagé et une projection de trajectoire la plus proche globale : la longueur restante est la longueur de la trajectoire moins la longueur d'arc projetée. Nav2 reçoit une trajectoire locale transformée/élaguée, donc ses entrées peuvent différer. La régulation utilise la courbure de poursuite demandée avant les limites de l'actionneur.

Le modèle commun utilise des intervalles 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 et 0,8 rad/s de changement de direction. Le mouvement est intégré sur chaque arc à courbure maintenue. La vitesse réelle n'atteint pas instantanément la demande. Il n'y a pas d'inertie, de glissement de pneu, de modèle d'obstacle/carte de coût, de prédiction de collision, de marche arrière, de rotation vers le cap ou d'anticipation de courbure séparée. Ceci n'est pas une évaluation de performance matérielle ou de sécurité.

L'achèvement est un passage échantillonné du point terminal : la longueur d'arc restante et la distance au point terminal sont toutes deux ≤0,25 m, le cap à moins de 0,15 rad de la tangente finale. Cela ne garantit pas l'arrêt ; une vitesse de plancher d'approche positive ne signifie pas le stationnement. Une distance de trajectoire supérieure à 10 m termine l'exécution comme hors trajectoire ; 30 s est la limite de temps. Le temps de passage incomplet est « — ». Le CTE et le RMS de cap utilisent une intégration trapézoïdale des échantillons au carré sur le temps écoulé. Évitez de classer les exécutions partielles ou de durées différentes par l'erreur seule.

Les noms de paramètres dépendent de la version

Signification dans le navigateur Jazzy Rolling, vérifié le 2026-09-21
Vitesse désirée desired_linear_vel max_linear_vel
Anticipation mise à l'échelle de la vitesse use_velocity_scaled_lookahead_dist identique
Temps d'anticipation lookahead_time identique
Régulation de courbure use_regulated_linear_velocity_scaling identique
Seuil de rayon de virage regulated_linear_scaling_min_radius identique
Plancher de régulation regulated_linear_scaling_min_speed identique
Distance / plancher d'approche approach_velocity_scaling_dist / min_approach_linear_velocity identique

Le commutateur marche/arrêt d'approche est une ablation pédagogique, non un paramètre ROS de Jazzy. Les fonctionnalités de fenêtre dynamique de Rolling ne sont pas implémentées ici. Les valeurs par défaut du laboratoire sont des valeurs pédagogiques, non une configuration Nav2 recommandée.

Exemples générés à partir du même code

Les résultats Python natifs ci-dessous utilisent la courbe par défaut de rayon 5 m, une vitesse initiale et désirée de 4 m/s, un décalage latéral de 1 m et un empattement de 2,5 m.

Réglage Statut Écoulé [s] CTE RMS [m]
regulated completed 4,10 0,37348
adaptive only completed 1,80 0,52087
no approach completed 3,00 0,43649

Références et laboratoires liés

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

Related reading

Explore 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