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.
Background and reading guide
Background A running Nav2 setup, RViz, TF and velocity-command basics.
Hands-on · Follow the worked examples and checks under the stated conditions.
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.
A visible path does not guarantee that a feasible velocity command exists from the current pose. Diagnose planning and execution separately. This workflow targets ROS 2/Nav2 Jazzy and was checked against documentation; it is not a hardware driving report.
Capture one stopped interval
Collect the global path, local/global costmaps, footprint, TF, odometry, velocity commands, action result and logs. Overlay data at consistent times and frames in RViz. Do not compare startup data with a later snapshot as if they were simultaneous. rosbag2 replay helps hold inputs fixed.
Check physical geometry
A 0.60 m wide robot centered and aligned in a 0.80 m corridor has 0.10 m clearance on each side. This static calculation excludes localization error, mapped wall thickness, payload and corner sweep during rotation. A rectangle's required width changes with orientation.
A footprint describes a polygon; robot_radius provides a circular approximation. Compare the configured outline with RViz, checking metres, the base_link origin and protruding sensors or loads. The Nav2 tuning guide covers shape and cost fields. Do not shrink the outline below the real robot just to remove a stop.
Cost is not identical to a physical wall
Obstacle layers incorporate observations; inflation spreads distance-dependent cost around obstacles. inflation_radius sets its extent, while cost_scaling_factor controls exponential decay. With other conditions fixed, a larger scaling factor produces faster decay. See Inflation Layer parameters.
Not every high-cost band is an absolute forbidden region, and inflation_radius alone is not a guaranteed minimum body clearance. Account for collision checking, footprint and each planner/controller's cost use. If the global map permits passage but the local map retains old obstacles, investigate clearing, observation range and valid TF timestamps first.
Connect a path to feasible motion
A path specifies where to travel. A controller must generate motion consistent with current velocity and constraints. Large orientation changes in tight spaces, in-place turns requested of a vehicle with a minimum turning radius, or acceleration limits can make candidate motions infeasible.
The Controller Server documentation describes controller, progress-checker and goal-checker selection. Progress and arrival are distinct conditions. Record plugin names and errors before inspecting plugin-specific constraints.
Trace where the command disappears
| Observation | Next check |
|---|---|
| Controller cannot produce a valid command | Local costmap, TF, motion limits and candidate trajectories |
| Controller output is nonzero but final output is zero | Smoother, collision monitor, stop input and command priority |
| Final output is nonzero but wheels do not move | Topic/type, driver, enable state and control mode |
| Robot moves but quickly reports failure | Odometry versus actual movement and progress conditions |
Do not assume a topic named /cmd_vel is the final stage. Configurations have intermediate topics and may use Twist or TwistStamped. Inspect actual publisher, subscriber and type with ros2 topic info <actual-topic> --verbose. Diagnose the condition that triggered a stop instead of disabling stop functions.
Evaluate one change at a time
Fix passage, initial pose, goal, map and input log. Change one item, then compare minimum clearance, stop count, commands and failure reasons as well as arrival. The 0.10 m arithmetic example cannot establish safe operating clearance; real dimensions, errors and operating conditions need separate assessment.
If startup itself is unreliable, return to the minimal Nav2 setup. A stable configuration makes it easier to distinguish mapping failures from driver failures.
Comments
Please log in to post a comment
No comments yet.