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.
Explore footprint geometry in your browser
Change the rectangular body dimensions, corridor width, heading and lateral offset in the panel above. The diagram and signed gaps describe an exact rectangle between two infinite parallel walls. No ROS or local Python is required. The diagnostic workflow below remains separate from this geometry exercise.
The rectangle centre is the supplied reference point. World x runs along the corridor, world y points across it, and positive heading rotates counterclockwise from +x. Length L lies along body x; width B lies along body y. Walls lie at y=±W/2 and the centre at (0,e). For heading θ, the transverse span is S=L|sin θ|+B|cos θ|. The upper-wall gap is W/2−e−S/2, the lower-wall gap is W/2+e−S/2, and the minimum is W/2−|e|−S/2. Positive means separation; zero means contact; negative means overlap with a wall half-plane. These are signed transverse gaps, not general polygon-distance or costmap outputs. The numerical contact label uses a tolerance of 10⁻¹² m, not an operating margin.
The default 0.60 m width in a 0.80 m corridor gives 0.10 m on each side at zero heading and offset. Try a 30° heading, a 0.10 m offset, a 90° heading, or a wider corridor. Changing heading can move a corner into a wall even when the aligned width fits. A/B uses equal x/y scales and a common extent across both results; the table lists all four transformed corners in metres.
The dashed circle has radius R=√(L²+B²)/2. It bounds all orientations during a full rotation about the fixed rectangle centre. The minimum gap over that full rotation is W/2−|e|−R, calculated analytically rather than from sampled angles. This is not the gap for a particular requested turn, a planned swept path or a kinematically feasible manoeuvre. A 90° pose can fit while intermediate orientations overlap. The rectangle dimensions describe the entire assumed outline; there is no additional footprint padding.
All inputs are synthetic teaching choices. There are no map cells, obstacle observations, inflation costs, localization uncertainty, payload model, TF, planner, controller, velocity commands or actual Nav2 execution. A positive geometric gap does not establish passage feasibility or operating safety. The full-turn circle is an explanatory envelope, not a proposed robot_radius configuration. Nav2's tuning guide distinguishes robot footprint choices from inflation potential fields; the inflation parameters describe costs that this exercise does not compute. References reviewed 2026-09-20.
For supplied map/pose/goal checks, use the separate navigation Lab. Continue below to inspect why a real navigation stack may stop.
Un chemin visible ne garantit pas l'existence d'une commande de vitesse réalisable à partir de la pose actuelle. Diagnostiquez la planification et l'exécution séparément. Ce flux de travail cible ROS 2/Nav2 Jazzy et a été validé par rapport à la documentation ; il ne s'agit pas d'un rapport de pilotage matériel.
Capture d'un intervalle d'arrêt
Collectez le chemin global, les cartes de coûts locales/globales, l'empreinte au sol, la TF, l'odométrie, les commandes de vitesse, le résultat de l'action et les journaux. Superposez les données à des instants et des images cohérents dans RViz. Ne comparez pas les données de démarrage avec un instantané ultérieur comme si elles étaient simultanées. La fonction rosbag2 replay permet de maintenir les entrées fixes.
Vérification de la géométrie physique
Un robot de 0,60 m de large, centré et aligné dans un couloir de 0,80 m, dispose d'un dégagement de 0,10 m de chaque côté. Ce calcul statique exclut les erreurs de localisation, l'épaisseur de paroi cartographiée, la charge utile et le balayage des coins lors de la rotation. La largeur requise d'un rectangle varie selon son orientation.
Une empreinte décrit un polygone ; le rayon du robot (robot_radius) fournit une approximation circulaire. Comparez le contour configuré avec RViz, en vérifiant les mètres, l'origine de la liaison de base et les capteurs ou charges saillants. Le guide de réglage Nav2 traite des champs de forme et de coût. Ne réduisez pas le contour en dessous des dimensions réelles du robot simplement pour supprimer une butée.
Le coût n'est pas identique à un mur physique
Les couches d'obstacles intègrent des observations ; l'inflation répartit le coût dépendant de la distance autour des obstacles. Le rayon d'inflation (inflation_radius) définit son étendue, tandis que le facteur d'échelle du coût (cost_scaling_factor) contrôle la décroissance exponentielle. Toutes choses égales par ailleurs, un facteur d'échelle plus élevé produit une décroissance plus rapide. Voir Paramètres de la couche d'inflation.
Toutes les zones à coût élevé ne constituent pas une zone absolument interdite, et le rayon d'inflation (inflation_radius) seul ne garantit pas un dégagement minimal pour le corps. Tenez compte de la vérification des collisions, de l'empreinte au sol et du coût de chaque planificateur/contrôleur. Si la carte globale autorise le passage mais que la carte locale conserve d'anciens obstacles, vérifiez d'abord le dégagement, la portée d'observation et la validité des horodatages TF.
Associer un chemin à un mouvement réalisable
Un chemin spécifie la direction à suivre. Un contrôleur doit générer un mouvement cohérent avec la vitesse actuelle et les contraintes. Des changements d'orientation importants dans des espaces restreints, des virages sur place demandés à un véhicule avec un rayon de braquage minimal ou des limites d'accélération peuvent rendre les mouvements candidats irréalisables.
La documentation du serveur de contrôleurs décrit la sélection du contrôleur, du vérificateur de progression et du vérificateur d'objectif. La progression et l'arrivée sont des conditions distinctes. Notez les noms des plugins et les erreurs avant d'examiner les contraintes spécifiques à chaque plugin.
Tracer où la commande disparaît
| Observation | Prochaine vérification |
|---|---|
| Le contrôleur ne peut pas produire de commande valide | Carte des coûts locale, TF, limites de mouvement et trajectoires candidates |
| La sortie du contrôleur est différente de zéro, mais la sortie finale est nulle | Fluidité accrue, surveillance des collisions, priorité des entrées et des commandes d'arrêt |
| Sortie finale non nulle, mais les roues ne bougent pas | Sujet/type, pilote, état d'activation et mode de contrôle |
| Le robot se déplace, mais signale rapidement une panne | Odométrie par rapport au mouvement réel et aux conditions de progression |
Ne présumez pas qu'un sujet nommé /cmd_vel représente l'étape finale. Les configurations comportent des sujets intermédiaires et peuvent utiliser Twist ou TwistStamped. Examinez l'éditeur, l'abonné et le type réels avec ros2 topic info <actual-topic> --verbose. Diagnostiquez la condition qui a déclenché un arrêt au lieu de désactiver les fonctions d'arrêt.
Évaluer une modification à la fois
Corrigez le passage, la pose initiale, l'objectif, la carte et le journal des entrées. Modifiez un élément, puis comparez le dégagement minimal, le nombre d'arrêts, les commandes et les raisons des pannes, ainsi que l'arrivée. L'exemple arithmétique de 0,10 m ne permet pas d'établir un dégagement de fonctionnement sûr ; les dimensions réelles, les erreurs et les conditions de fonctionnement nécessitent une évaluation distincte.
Si le démarrage est instable, revenez à la configuration minimale Nav2. Une configuration stable permet de mieux distinguer les erreurs de mappage des erreurs de pilote.
Commentaires
Veuillez vous connecter.
Aucune entrée pour le moment.