You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MOGI-ROS es un framework educativo desarrollado para el curso de robótica de la Universidad BME (Budapest University of Technology and Economics). Proporciona una base sólida para aprender ROS2 con simulación en Gazebo.
graph TB
A[ROS2 Core] --> B[Nodes]
A --> C[Topics]
A --> D[Services]
A --> E[Actions]
A --> F[Parameters]
B --> G[Publisher/Subscriber]
B --> H[Service Client/Server]
B --> I[Action Client/Server]
C --> J[Message Types]
D --> K[Service Types]
E --> L[Action Types]
F --> M[Parameter Server]
style A fill:#ff9999
style B fill:#99ccff
style C fill:#99ff99
style D fill:#ffcc99
style E fill:#cc99ff
graph TD
A[MOGI-ROS] --> B[bme_gazebo_basics]
A --> C[bme_ros2_navigation]
A --> D[bme_ros2_control]
A --> E[bme_ros2_perception]
B --> B1[launch/]
B --> B2[urdf/]
B --> B3[meshes/]
B --> B4[worlds/]
B --> B5[rviz/]
B1 --> B1a[spawn_robot.launch.py]
B1 --> B1b[world.launch.py]
B1 --> B1c[check_urdf.launch.py]
B2 --> B2a[mogi_bot.urdf]
B2 --> B2b[mogi_bot.gazebo]
B2 --> B2c[materials.xacro]
B3 --> B3a[mogi_bot.STL]
B3 --> B3b[wheel.STL]
B4 --> B4a[world.sdf]
B4 --> B4b[empty.sdf]
B5 --> B5a[rviz.rviz]
B5 --> B5b[urdf.rviz]
Loading
Estructura de Directorios
Directorio
Contenido
Propósito
launch/
Archivos de lanzamiento
Configuración de nodos
urdf/
Descripción del robot
Modelo físico y visual
meshes/
Modelos 3D
Geometría del robot
worlds/
Entornos de simulación
Escenarios de Gazebo
rviz/
Configuraciones RViz
Visualización
config/
Parámetros
Configuración de nodos
scripts/
Código Python
Lógica de control
Archivos Clave
Archivo
Tipo
Descripción
package.xml
Metadatos
Información del paquete
CMakeLists.txt
Build
Configuración de compilación
spawn_robot.launch.py
Launch
Lanzamiento principal
mogi_bot.urdf
URDF
Descripción del robot
world.sdf
SDF
Mundo de simulación
🎮 Ejecución y Simulación
Lanzamiento Básico
# Navegar al espacio de trabajocd~/ros2_ws
# Configurar entornosource install/setup.bash
# Lanzar simulación básica
ros2 launch bme_gazebo_basics spawn_robot.launch.py
Opciones de Lanzamiento
Parámetro
Valor por Defecto
Descripción
rviz
true
Abrir RViz
world
world.sdf
Archivo de mundo
model
mogi_bot.urdf
Modelo del robot
Ejemplos de Lanzamiento
# Lanzar sin RViz
ros2 launch bme_gazebo_basics spawn_robot.launch.py rviz:=false
# Lanzar con mundo vacío
ros2 launch bme_gazebo_basics spawn_robot.launch.py world:=empty.sdf
# Lanzar con modelo específico
ros2 launch bme_gazebo_basics spawn_robot.launch.py model:=mogi_bot_mecanum.urdf
Nodos que se Ejecutan
graph LR
A[spawn_robot.launch.py] --> B[Gazebo World]
A --> C[Robot State Publisher]
A --> D[ROS-GZ Bridge]
A --> E[Spawn Robot]
A --> F[RViz]
A --> G[Trajectory Server]
B --> H[Simulation Environment]
C --> I[TF Tree]
D --> J[Message Bridge]
E --> K[Robot Model]
F --> L[Visualization]
G --> M[Trajectory Control]
style A fill:#ff9999
style B fill:#99ccff
style C fill:#99ff99
style D fill:#ffcc99
Loading
🔍 Exploración de Componentes
Interacción de Nodos
graph TB
A[Gazebo Simulator] --> B[ROS-GZ Bridge]
B --> C[Robot State Publisher]
B --> D[Trajectory Server]
E[RViz] --> C
F[User Commands] --> D
C --> G[TF Tree]
D --> H[Robot Control]
B --> I[/cmd_vel]
B --> J[/odom]
B --> K[/joint_states]
B --> L[/tf]
style A fill:#ff9999
style B fill:#99ccff
style C fill:#99ff99
style D fill:#ffcc99
Loading
Tópicos Principales
Tópico
Tipo
Descripción
Publisher
Subscriber
/cmd_vel
geometry_msgs/Twist
Comandos de velocidad
Controlador
Gazebo
/odom
nav_msgs/Odometry
Odometría del robot
Gazebo
Navegación
/joint_states
sensor_msgs/JointState
Estados de articulaciones
Gazebo
RViz
/tf
tf2_msgs/TFMessage
Transformaciones
Robot State Publisher
RViz
/clock
rosgraph_msgs/Clock
Tiempo de simulación
Gazebo
Todos
Servicios Disponibles
Servicio
Tipo
Descripción
/spawn
gazebo_msgs/SpawnEntity
Crear entidades
/kill
gazebo_msgs/DeleteEntity
Eliminar entidades
/get_model_state
gazebo_msgs/GetModelState
Obtener estado
/set_model_state
gazebo_msgs/SetModelState
Establecer estado
Comandos de Exploración
# Listar nodos activos
ros2 node list
# Listar tópicos
ros2 topic list
# Monitorear mensajes
ros2 topic echo /cmd_vel
ros2 topic echo /odom
ros2 topic echo /joint_states
# Ver información de nodo
ros2 node info /robot_state_publisher
# Ver parámetros
ros2 param list /robot_state_publisher
# Gráfico de conexiones
rqt_graph
🛠️ Herramientas de Desarrollo
RViz - Visualización
# Lanzar RViz
rviz2
# Lanzar con configuración específica
ros2 run rviz2 rviz2 -d ~/ros2_ws/src/MOGI-ROS/bme_gazebo_basics/rviz/rviz.rviz
rqt - Herramientas GUI
Herramienta
Comando
Propósito
rqt_graph
rqt_graph
Gráfico de conexiones
rqt_tf_tree
ros2 run rqt_tf_tree rqt_tf_tree
Árbol de transformaciones
rqt_plot
rqt_plot
Gráficos de datos
rqt_reconfigure
rqt_reconfigure
Configuración dinámica
Gazebo - Simulación
# Lanzar Gazebo
gz sim
# Lanzar con mundo específico
gz sim ~/ros2_ws/src/MOGI-ROS/bme_gazebo_basics/worlds/world.sdf
# Lanzar con renderizado alternativo
gz sim --render-engine ogre
Comandos Útiles
# Verificar estado del robot
ros2 topic echo /odom
# Enviar comandos de movimiento
ros2 topic pub /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.5, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}"# Ver transformaciones
ros2 run tf2_tools view_frames
# Guardar mapa (si está disponible)
ros2 run nav2_map_server map_saver_cli -f ~/mapa_guardado
# Verificar instalación ROS2
ros2 --version
# Verificar instalación Gazebo
gz sim --version
# Verificar paquetes
ros2 pkg list | grep bme
# Verificar dependencias
rosdep check bme_gazebo_basics
# Ver logs de errores
ros2 run rqt_console rqt_console
Debugging
# Ejecutar con información detallada
ros2 launch bme_gazebo_basics spawn_robot.launch.py --debug
# Ver información de nodo
ros2 node info /robot_state_publisher
# Ver parámetros
ros2 param list /robot_state_publisher
# Ver servicios
ros2 service list