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.
Ein sichtbarer Pfad garantiert nicht, dass von der aktuellen Position aus ein möglicher Geschwindigkeitsbefehl existiert. Planung und Ausführung müssen separat diagnostiziert werden. Dieser Workflow ist für ROS 2/Nav2 Jazzy ausgelegt und wurde anhand der Dokumentation geprüft; es handelt sich nicht um einen Hardware-Treiberbericht.
Erfassung eines Stoppintervalls
Erfassen Sie den globalen Pfad, lokale/globale Kostenkarten, Footprint, TF, Odometrie, Geschwindigkeitsbefehle, Aktionsergebnis und Protokolle. Überlagern Sie die Daten in RViz zu konsistenten Zeitpunkten und Frames. Vergleichen Sie die Startdaten nicht mit einem späteren Snapshot, als wären sie gleichzeitig. rosbag2 replay hilft, die Eingaben zu fixieren.
Überprüfung der physikalischen Geometrie
Ein 0,60 m breiter Roboter, der zentriert und ausgerichtet in einem 0,80 m breiten Korridor positioniert ist, hat auf jeder Seite einen Freiraum von 0,10 m. Diese statische Berechnung berücksichtigt weder Lokalisierungsfehler noch die Wandstärke, die Nutzlast oder die Eckenbewegung während der Rotation. Die erforderliche Breite eines Rechtecks ändert sich mit der Ausrichtung.
Ein Footprint beschreibt ein Polygon; robot_radius liefert eine kreisförmige Annäherung. Vergleichen Sie die konfigurierte Kontur mit RViz und prüfen Sie dabei die Meterangaben, den Ursprung des base_link und hervorstehende Sensoren oder Lasten. Die Nav2-Optimierungsanleitung behandelt Form- und Kostenfelder. Verkleinern Sie die Kontur nicht unter die Größe des realen Roboters, nur um einen Anschlag zu entfernen.
Die Kosten entsprechen nicht einer physischen Wand
Hindernisebenen berücksichtigen Beobachtungen; die Inflation verteilt die entfernungsabhängigen Kosten um Hindernisse herum. inflation_radius legt die Ausdehnung fest, während cost_scaling_factor den exponentiellen Abfall steuert. Bei ansonsten festgelegten Bedingungen führt ein größerer Skalierungsfaktor zu einem schnelleren Abfall. Siehe Parameter der Inflationsebene.
Nicht jeder Bereich mit hohen Kosten ist ein absolut verbotener Bereich, und inflation_radius allein garantiert keinen minimalen Freiraum für den Körper. Berücksichtigen Sie Kollisionsprüfung, Footprint und die Kostennutzung jedes Planers/Controllers. Wenn die globale Karte die Durchfahrt erlaubt, die lokale Karte jedoch alte Hindernisse beibehält, prüfen Sie zunächst die Freiräumung, den Beobachtungsbereich und gültige TF-Zeitstempel.
Pfad mit möglicher Bewegung verbinden
Ein Pfad gibt die Fahrtrichtung an. Ein Controller muss eine Bewegung generieren, die mit der aktuellen Geschwindigkeit und den Randbedingungen übereinstimmt. Große Orientierungsänderungen auf engem Raum, angeforderte Drehungen auf der Stelle für ein Fahrzeug mit minimalem Wenderadius oder Beschleunigungsgrenzen können mögliche Bewegungen unmöglich machen.
Die Controller-Server-Dokumentation beschreibt die Auswahl von Controller, Fortschritts- und Zielprüfern. Fortschritt und Ankunft sind unterschiedliche Zustände. Notieren Sie Plugin-Namen und Fehler, bevor Sie pluginspezifische Randbedingungen prüfen.
Verfolgen, wo der Befehl verschwindet
| Beobachtung | Nächste Prüfung |
|---|---|
| Controller kann keinen gültigen Befehl erzeugen | Lokale Kostenkarte, TF, Bewegungsgrenzen und mögliche Trajektorien |
Controller-Ausgang ungleich Null, aber Endausgang Null | Glättung, Kollisionsüberwachung, Stopp-Eingabe und Befehlspriorität |
Endausgang ungleich Null, aber Räder bewegen sich nicht | Thema/Typ, Treiber, Aktivierungsstatus und Steuermodus |
Roboter bewegt sich, meldet aber schnell einen Fehler | Odometrie versus tatsächliche Bewegungs- und Fortschrittsbedingungen |
Gehen Sie nicht davon aus, dass ein Thema namens /cmd_vel die Endstufe ist. Konfigurationen enthalten Zwischenthemen und können Twist oder TwistStamped verwenden. Überprüfen Sie den tatsächlichen Publisher, Subscriber und Typ mit ros2 topic info <actual-topic> --verbose. Diagnostizieren Sie die Bedingung, die einen Stopp ausgelöst hat, anstatt Stoppfunktionen zu deaktivieren.
Jeweils eine Änderung auswerten
Passage, Ausgangsposition, Ziel, Karte und Eingabeprotokoll korrigieren. Ändern Sie jeweils ein Element und vergleichen Sie dann Mindestabstand, Stoppanzahl, Befehle und Fehlergründe sowie die Ankunft. Das arithmetische Beispiel mit 0,10 m kann keinen sicheren Betriebsabstand festlegen; reale Abmessungen, Fehler und Betriebsbedingungen erfordern eine separate Bewertung.
Falls der Startvorgang selbst unzuverlässig ist, kehren Sie zur minimalen Nav2-Konfiguration zurück. Eine stabile Konfiguration erleichtert die Unterscheidung zwischen Kartenfehlern und Treiberfehlern.
Kommentare
Bitte zuerst anmelden.
Noch keine Einträge.