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.
Una trayectoria visible no garantiza que exista un comando de velocidad factible desde la pose actual. Diagnostique la planificación y la ejecución por separado. Este flujo de trabajo está dirigido a ROS 2/Nav2 Jazzy y se verificó con la documentación; no es un informe de control de hardware.
Capturar un intervalo de parada
Recopilar la trayectoria global, los mapas de costos locales/globales, la huella, la función de transferencia (TF), la odometría, los comandos de velocidad, el resultado de la acción y los registros. Superponer los datos en momentos y fotogramas consistentes en RViz. No comparar los datos de inicio con una instantánea posterior como si fueran simultáneos. rosbag2 replay ayuda a mantener las entradas fijas.
Verificar la geometría física
Un robot de 0,60 m de ancho, centrado y alineado en un corredor de 0,80 m, tiene un espacio libre de 0,10 m a cada lado. Este cálculo estático excluye el error de localización, el grosor de la pared mapeada, la carga útil y el barrido de esquinas durante la rotación. El ancho requerido de un rectángulo cambia con la orientación.
Una huella describe un polígono; robot_radius proporciona una aproximación circular. Compare el contorno configurado con RViz, verificando los metros, el origen del enlace base y los sensores o cargas que sobresalgan. La Guía de ajuste de Nav2 cubre los campos de forma y costo. No reduzca el contorno por debajo del robot real solo para eliminar un tope.
El costo no es idéntico a una pared física
Las capas de obstáculos incorporan observaciones; la inflación distribuye el costo dependiente de la distancia alrededor de los obstáculos. inflation_radius establece su extensión, mientras que cost_scaling_factor controla la disminución exponencial. Con otras condiciones fijas, un factor de escala mayor produce una disminución más rápida. Consulte Parámetros de la capa de inflación.
No todas las bandas de alto costo son regiones absolutamente prohibidas, y inflation_radius por sí solo no garantiza una distancia mínima de seguridad para el cuerpo. Considera la detección de colisiones, la huella y el uso de costos de cada planificador/controlador. Si el mapa global permite el paso, pero el mapa local conserva obstáculos antiguos, investiga primero la limpieza, el rango de observación y las marcas de tiempo TF válidas.
Conectar una ruta a un movimiento factible
Una ruta especifica hacia dónde viajar. Un controlador debe generar un movimiento coherente con la velocidad y las restricciones actuales. Los grandes cambios de orientación en espacios reducidos, los giros en el sitio solicitados a un vehículo con un radio de giro mínimo o los límites de aceleración pueden hacer que los movimientos candidatos sean inviables.
La documentación del servidor del controlador describe la selección del controlador, el verificador de progreso y el verificador de objetivo. El progreso y la llegada son condiciones distintas. Registra los nombres de los complementos y los errores antes de inspeccionar las restricciones específicas de cada complemento.
Rastrear dónde desaparece el comando
| Observación | Siguiente verificación |
|---|---|
| El controlador no puede generar un comando válido | Mapa de costos local, TF, límites de movimiento y trayectorias candidatas |
| La salida del controlador es distinta de cero, pero la salida final es cero | Más suave, monitor de colisiones, entrada de parada y prioridad de comando |
| La salida final no es cero, pero las ruedas no se mueven | Tema/tipo, controlador, estado de habilitación y modo de control |
| El robot se mueve, pero informa rápidamente de un fallo | Odometría frente a movimiento real y condiciones de progreso |
No asuma que un tema llamado /cmd_vel es la etapa final. Las configuraciones tienen temas intermedios y pueden usar Twist o TwistStamped. Inspeccione el publicador, el suscriptor y el tipo reales con ros2 topic info <actual-topic> --verbose. Diagnostique la condición que provocó la parada en lugar de deshabilitar las funciones de parada.
Evaluar un cambio a la vez
Corrija el paso, la pose inicial, el objetivo, el mapa y el registro de entrada. Modifique un elemento y luego compare la holgura mínima, el número de paradas, los comandos y las razones de fallo, así como la llegada. El ejemplo aritmético de 0,10 m no permite establecer una holgura operativa segura; las dimensiones reales, los errores y las condiciones operativas requieren una evaluación independiente.
Si el arranque no es fiable, vuelva a la configuración mínima de Nav2 (/es/blog/posts/ros2-navigation-lab.html). Una configuración estable facilita la distinción entre fallos de mapeo y fallos del controlador.
Comentarios
Inicia sesión para continuar.
Todavía no hay datos.