PyULog: Herramienta para el Análisis de Logs de Vuelo de Drones y Procesamiento de Datos
PyULog es una biblioteca de Python especializada en parsear archivos ULog generados por sistemas de control de vuelo PX4 en vehículos aéreos no tripulados (UAVs). Facilita la extracción y análisis de datos de vuelo para evaluaciones de rendimiento, diagnósticos de fallos y análisis avanzado.
Características Clave
- Extracción exhaustiva de datos: soporta todos los tipos en archivos ULog, incluyendo parámetros, mensajes y datos de sensores.
- Exportación a múltiples formatos: conversión directa a CSV, KML, ROSbag y otros formatos comunes.
- Integración con bases de datos: soporte incorporado para SQLite, permitiendo almacenar y consultar grandes volúmenes de registros.
- Interfaz entuitiva: API bien diseñada y herramientas de línea de comandos para simplificar el uso.
Configuración del Entorno
Para comenzar, clona el repositorio y procede con la instalación:
git clone https://ejemplo.com/pyulog
cd pyulog
pip install -e .
Alternativamente, puedes usar la instaalción estándar ejecutando python setup.py install.
Funcionalidades Esenciales
Inspección de Archivos de Log
Utiliza el comando ulog_info para obtener un resumen del archivo ULog, como tiempo de grabación, duración y tipos de datos presentes:
ulog_info datos_vuelo.ulg
Extracción de Parámetros
Los parámetros de vuelo se pueden exportar para análisis detallado de configuraciones y calibraciones:
ulog_params datos_vuelo.ulg -d ','
Visualización de Trayectorias
Genera archivos KML para visualizar la ruta de vuelo en herramientas como Google Earth:
ulog2kml datos_vuelo.ulg -o trayectoria_vuelo.kml
Exportación de Datos a CSV
Convierte datos de sensores y otros registros a formato CSV para su procesamiento en software de análisis:
ulog2csv datos_vuelo.ulg -o ./resultados/
Escenarios Avanzados
Procesamiento por Lotes
Para analizar múltiples archivos de log de manera automatizada, se puede emplear un script Python:
from pyulog import ULog
import os
carpeta_logs = "registros_vuelo"
for nombre_archivo in os.listdir(carpeta_logs):
if nombre_archivo.endswith(".ulg"):
ruta_completa = os.path.join(carpeta_logs, nombre_archivo)
registro = ULog(ruta_completa)
# Realizar operaciones con los datos...
Filtrado Selectivo de Datos
Para reducir el volumen de datos, es posible extraer solo temas específicos como datos combinados de sensores o posición GPS:
ulog2csv datos_vuelo.ulg -m "sensor_combined,vehicle_gps_position"
Solución de Problemas Comunes
- Mantén copias de seguridad de los archivos ULog originales antes de cualquier procesamiento.
- Define flujos de trabajo estandarizados para garantizar consistencia en los análisis.
- Utiliza los ejemplos incluidos en el directorio de pruebas para familiarizarte con la herramienta.
Profundización Técnica
Para comprender el funcionamiento interno, revisa módulos como core.py para el parseo de datos y db.py para la gestión de bases de datos. Adicionalmante, los casos de prueba en test/ ilustran diversos escenarios de manejo de datos.