Este repositorio provee las herramientas necesarias para la detección de fuentes de metano utilizando tecnología TDLAS (Tunable Diode Laser Absorption Spectroscopy). El sistema está orientado a aplicaciones en espacios exteriores, empleando robótica móvil, sensórica avanzada y algoritmos de percepción y control.
Este proyecto surge como solución para la localización y seguimiento de fuentes de emisión de metano en exteriores, mediante la integración de sensores TDLAS, robótica móvil (Hunter), brazo robótico, cámara PTU y sistemas de percepción avanzados. Los algoritmos desarrollados permiten la navegación autónoma, adquisición de datos, procesamiento y visualización de resultados.
Demostracion.de.funcionamiento.mp4
El repositorio está organizado en dos módulos principales, HUNTER y TRACKING, cada uno con sus correspondientes espacios de trabajo y funcionalidades específicas:
Está organizado en 3 espacios de trabajo diferentes: Methane_ws, arm_interbotix_ws y hunter_ws. En el ordenador de HUNTER hay un README que explica en profuncidad la utilidad de cada uno de estos tres espacios de trabajo.
-
Methane_ws
Paquetes para el movimiento autónomo del robot y el adaptador MQTT, que es el que adapta los mensajes que llegan por los topics de ROS2 a las colecciones de MQTT y viceversa. -
arm_interbotix_ws
Control del brazo robótico Interbotix y la PTU (Pan-Tilt Unit) utilizada para la orientación de los sensores. -
hunter_ws
Incluye las transformaciones de sistemas de referencia de cada elemento del Hunter, el paquete de descripción del robot y el paquete de lanzamiento principal.
Comandos de lanzamiento:
- Exterior (incluye PTU):
ros2 launch hunter_launch_files hunter_methane_launch.py
- Interior (sin PTU):
ros2 launch hunter_launch_files hunter_complete_launch.py
Nota: Todos los dispositivos requieren especificar el puerto de comunicaciones. Se han configurado reglas UDEV para una gestión automática y robusta. Si algún hardware presenta problemas de conexión, revise las reglas UDEV correspondientes.
Incluye los códigos y herramientas para el seguimiento y cálculo de la posición de las fuentes de metano. Se organiza en tres espacios de trabajo:
-
Methane
Drivers para los equipos (láser TDLAS, puntero láser, DeluoGPS). El paquetelanzamiento
contiene los archivos de lanzamiento principales. El primero de ellos permite lanzar la parte de tracking:ros2 launch launch_files tracking_launch.py
El segundo es el encargado de lanzar todos los sensores que se utilizan:
ros2 launch launch_files sensors_launch.py
Nota: Para cada uno de los dispostivos utilizados se han hecho las respectivas reglas UDEV que permiten que todo funcione de manera adecuada, por lo que al igual que en la parte del Hunter, si algo falla, será necesario entrar en los archivos de configuración de lanzamiento de los diferentes dispositivos que forman la estación de tracking.
-
graficas
Nodo para la representación gráfica del error en el tracking y visualización de los resultados. Permite analizar el desempeño detectando píxeles de error y generando métricas. -
percepcion
Implementa el algoritmo principal de tracking en el nodomov_PTU
. Incluye también:detector_aruco
: Para detección del color verde.medir_retraso
: Para estudiar el retraso existente entre el inicio de una orden de funcionamiento y la respuesta del sistema.simulacion_movimiento
: Simula el comportamiento de la PTU sin tener que estar ésta en movimiento
El nodo mov_PTU
posee un archivo de parámetros para configurar:
-
Ganancias PID
-
Valores de ajuste para la distancia focal según el encoder de zoom (
a5, a4, a3, a2, a1, a0
) -
Parámetros de calibración para apuntar el láser a la posición objetivo (
m_x, n_x, m_y, n_y
)Nota: Esos parámetros están obtenidos de manera empírica, por lo que para obtener mejores resultados, es necesario obtener de nuevo estos parámetros con la mayor precisión posible. El método utilizado hasta ahora consiste en el reconocimiento de la posición que ocupa el punto verde (proveniente del sensor TDLAS) dentro de la imagen, de manera que ese es el píxel de la imagen con respecoto a la cual se debe de calcular el error.
Módulo de percepción visual encargado de detectar en imagen el punto/marker procedente del sensor TDLAS y publicar su posición en píxeles para el resto del sistema. Está organizado en un único workspace, desde el cúal se puede acceder a todo el algoritmo de detección.
Documentación completa: este módulo incluye su propio README con todos los detalles de instalación, dependencias, parámetros y flujo interno.
Consúltalo enDETECTION/README.md
(imprescindible para instalar el SDK de cámara y librerías asociadas).
Resumen de lo que hay:
- Workspace ROS 2 con el paquete
marker_detector
. - Nodo ejecutable
marker_detector
(nodoautofocus_node
), que:- Abre una cámara Allied Vision vía Vimba X SDK (
vmbpy
). - Controla la óptica/zoom mediante HID.
- Detecta el marcador luminoso y calcula su centro en la imagen.
- Publica la posición en el topic
/Info_Posicion
comostd_msgs/String
con JSON:
{"height": H, "width": W, "pos_x": X, "pos_y": Y}
. - Muestra ventanas de visualización y permite control por teclado (flechas para zoom,
ESC
para salir).
- Abre una cámara Allied Vision vía Vimba X SDK (
Puesta en marcha mínima (consulta el README del módulo para requisitos previos y SDK):
# Dentro del workspace de DETECTION
colcon build
source install/setup.bash
ros2 run marker_detector marker_detector
Notas importantes:
- La instalación del Vimba X SDK y librerías de cámara es obligatoria.
Sigue las instrucciones del README del módulo. Descarga oficial:
Vimba X SDK de Allied Vision. - No se repiten aquí parámetros/constantes ni pasos de instalación específicos; todo está detallado en
DETECTION/README.md
.
Módulo que proporciona una interfaz de operación unificada para iniciar/detener el proceso, supervisar estados (PTU, Hunter, TDLAS), visualizar posiciones en mapa y coordinar el bridge ROS↔MQTT y la reproducción/guardado de sesiones.
Documentación completa: este módulo incluye su propio README con todos los detalles de instalación, dependencias, parámetros y flujo interno.
Consúltalo enCONTROL AND MANAGEMENT APPLICATION/README.md
.
- Paquete ROS 2 (Python):
methane_scan
.- Nodo principal:
methane_scan_node
(GUI + lógica ROS). - Bridge Python:
mqtt_ros_bridge_node
(ROS↔MQTT). - Estructura interna (alto nivel):
controllers/
(PTU, Robot, TDLAS, core).views/
(páginas, componentes y web: mapa embebido con Google Maps).resources/
(iconos/SVG, estilos*.qss
).launch/
(launch.py
,parameters.yaml
,mqtt_parameters.yaml
).
- Nodo principal:
- Paquete ROS 2 (C++):
mqtt_bridge
(ament_cmake).- Nodo
mqtt_bridge_node
con sulaunch/
ymqtt_basic_robot.yaml
(broker y subtemas).
- Nodo
- Datos de pruebas:
experiments/
(rosbag2*.db3
+metadata.yaml
).
Los tópicos y parámetros se definen en los YAML de
launch/
; revisa el README completo para el listado y las recomendaciones de despliegue.
- Arranque de la UI (
methane_scan_node
). - Inicialización del mapa y componentes de estado (PTU/Hunter/TDLAS).
- Autolanzado de bridges ROS↔MQTT con los parámetros cargados.
- Interacción del operador: iniciar/detener proceso, reproducción/guardado de sesiones, supervisión de estados y posiciones.
# Desde el workspace de la UI
colcon build
source install/setup.bash
ros2 launch methane_scan launch.py
Si necesitas ejecutar nodos por separado o configurar el broker MQTT, consulta el README completo del módulo.
-
Instalación de dependencias:
Consulte los README específicos en cada espacio de trabajo para instrucciones detalladas de instalación y configuración. -
Configuración de hardware:
Asegúrese de tener conectados todos los dispositivos (Hunter, brazo robótico, PTU, sensores TDLAS, GPS, etc.) y que las reglas UDEV estén correctamente aplicadas. -
Lanzamiento de sistemas:
Siga los comandos indicados en las secciones HUNTER y TRACKING según el entorno de trabajo (interior/exterior). -
Visualización y análisis:
Utilice el espacio de trabajograficas
para analizar resultados y errores de tracking.
-
Hardware
- Robot Hunter
- Brazo robótico Interbotix
- PTU (Pan-Tilt Unit)
- Sensor TDLAS
- GPS Deluo
-
Software
- ROS2 (Foxy/Humble)
- Python, C++, MATLAB
- MQTT Broker
-
Configuraciones
- Reglas UDEV para dispositivos USB y serie
- Parámetros PID y calibraciones en archivos de configuración
- Para dudas, sugerencias o soporte técnico puede abrir un Issue en este repositorio.
- Contacto directo: MAPIRlab
- Documentación adicional y tutoriales disponibles en los README de cada espacio de trabajo.
Proyecto desarrollado por MAPIRlab - Universidad de Málaga
Utilities for detecting methane sources using TDLAS technology.