ROS Robotics
Cuándo usar
Usa esta habilidad cuando la solicitud del usuario involucre alguno de los siguientes temas:
catkin_ws,colcon_ws,src/CMakeLists.txt,package.xml,setup.py- Creación, migración, compilación, prueba y depuración de paquetes ROS 1 / ROS 2
launch/launch.py, parámetros YAML,URDF/Xacro, RViz, TFtopic/service/action/msg/srv/QoS- Chasis, IMU, LiDAR, cámara, localización, SLAM, Navigation2,
ros2_control - Simulación Gazebo / Ignition, simulación de sensores,
ros_gz_bridge - Desarrollo ROS con Docker,
docker-composepara orquestación multinodo - Nodos de ciclo de vida (
Lifecycle),rclcpp_components, comunicación intra-proceso - Grabación y reproducción con
rosbag2,mcap, diagnóstico offline - Mapeo SLAM (Cartographer, SLAM Toolbox, ORB-SLAM)
- Configuración DDS / QoS,
ROS_DOMAIN_ID, selección de RMW, redes multiequipo - Definición y generación de interfaces personalizadas
msg/srv/action - Sistemas multirobot, aislamiento con namespaces, comunicación entre equipos
- Planificación de movimiento MoveIt 2, SRDF, plugins de cinemática
- CI/CD para ROS 2 (GitHub Actions, colcon test, ament_lint)
- Visualización y análisis offline con Foxglove Studio / PlotJuggler
- Desarrollo cooperativo con MCU / RTOS / UART / CAN /
micro-ROS
Qué hacer primero
1. Identificar el workspace
python scripts/detect_ros_workspace.py <workspace-path>
2. Realizar una verificación de consistencia
python scripts/check_ros_workspace_consistency.py <workspace-path>
3. Cargar la documentación mínima necesaria según el problema
- ROS 1:
references/ros1-catkin.md - ROS 2:
references/ros2-colcon.md - Híbrido / Migración:
references/interop-and-migration.md - Modelo / TF:
references/robot-description-and-tf.md - Navegación:
references/navigation2.md - Control:
references/ros2-control.md - Embebido:
references/micro-ros-and-embedded.md - Simulación:
references/gazebo-simulation.md - Ciclo de vida / Componentes:
references/lifecycle-and-components.md - DDS / QoS / Redes:
references/dds-qos-networking.md - Grabación, reproducción y diagnóstico:
references/rosbag-diagnostics.md - SLAM / Mapeo:
references/slam-mapping.md - Docker:
references/docker-ros.md - Interfaces personalizadas:
references/custom-interfaces.md - Multirobot:
references/multi-robot.md - MoveIt 2:
references/moveit2.md - CI/CD:
references/ros2-cicd.md - Visualización:
references/foxglove-visualization.md - Resolución de problemas:
references/debug-playbooks.md - Revisión:
references/review-checklist.md
Principios que deben cumplirse
- Primero identifica el sistema de compilación, luego modifica el código
- Primero corrige la consistencia de
package.xml/CMakeLists.txt, luego piensa en refactorizar - Primero revisa TF, sellos de tiempo, frames, unidades, luego culpa al algoritmo
- Primero evidencia, luego modificación: la salida de compilación, topics, TF, parámetros y logs deben ser verificables
- ROS 1 → ROS 2 primero puentea o estratifica, no derribes todo de una vez
- MCU /
micro-ROS: primero determina si realmente es necesario ingresar al grafo de ROS
Manejo de tareas comunes
Agregar o reparar un paquete
- Primero determina el tipo de paquete:
catkin,ament_cmake,ament_python - Primero declara las dependencias, luego agrega la lógica de compilación, luego las reglas de instalación
- Para interfaces personalizadas
msg/srv/action, verifica primero el orden de generación y los ciclos de dependencia (consultareferences/custom-interfaces.md)
Fallo de compilación
- Primero ejecuta
rosdep - Luego verifica
package.xmly los scripts de compilación - Luego comprueba que el entorno esté sourceado correctamente
- Finalmente verifica dependencias del sistema, ABI y compatibilidad de la distribución
El robot no se comporta correctamente aunque todo funcione
- Primero revisa launch, namespace, remap, parámetros
- Luego revisa el nombre del topic, frecuencia, sellos de tiempo, unidades,
frame_id - Luego revisa si TF tiene una sola raíz, y si estática/dinámica está bien diferenciada
- Solo al final duda del algoritmo en sí
Nav2 / ros2_control
- Para Navigation2, prioriza la cadena
/cmd_vel, la calidad de la localización, la frecuencia de control y las unidades del chasis - Para
ros2_control, prioriza el tipo de interfaz de hardware, el YAML del controlador, el ciclo de lectura/escritura y el estado activo
MCU / micro-ROS
- Primero determina si el nodo puente del lado Linux es suficiente
- Si el MCU debe entrar en el grafo de ROS 2, entonces considera
micro-ROS - Revisa estrictamente el orden de bytes, checksum, timeout, reconexión, fuente de tiempo y protección por desconexión
Anti-patrones
- Mezclar
catkinyamenten el mismo paquete - Modificar solo
CMakeLists.txtsin actualizarpackage.xml - Ignorar TF, sellos de tiempo, unidades y definición de ejes
- Meter driver, protocolo, filtrado, control y diagnóstico todo en un solo nodo enorme
- Al migrar de ROS 1 a ROS 2, solo hacer sustituciones de API sin realizar una verificación sistémica
Requisitos de salida
Al usar esta habilidad para procesar una tarea, la salida debe incluir prioritariamente:
- El workspace actual y el tipo de paquete identificado
- Las suposiciones y datos clave
- Los puntos de modificación y su razón
- Los comandos mínimos de compilación / prueba / ejecución
- Los puntos de riesgo y puntos de verificación de regresión