bbdoctor
Diagnóstico de drones por el log: Betaflight, INAV, ArduPilot, PX4
RUENESPTUA

Cómo leer un registro Blackbox: de las líneas onduladas al diagnóstico

Abres un registro en Blackbox Explorer y aparecen treinta trazas. Explorer muestra todo lo que grabó el controlador de vuelo; las conclusiones las sacas tú. A continuación encontrarás una lectura manual en siete pasos y, después, un registro real con cada hallazgo de bbdoctor, sus cifras y cómo comprobarlo a simple vista, además de cuándo la automatización debe decir «no lo sé».

Herramientas para leer un registro

HerramientaQué hace por tiQué queda de tu parte
Blackbox Viewer (Blackbox Explorer)Línea de tiempo de todos los campos, sincronización de vídeo, analizador de espectro (PSD, mapas de calor de gas y RPM, comparación de espectros mediante importación CSV), exportación CSV. Desde 2026.6 es una pestaña de Betaflight App; blackbox.betaflight.com, la versión independiente, está congelada.Encontrar los momentos, juzgar qué es normal y elegir el parámetro.
INAV Blackbox ExplorerLo mismo para registros de INAV.Lo mismo; INAV no registra las RPM de cada motor.
PIDtoolboxEspectrogramas del gas, respuesta a escalón, comparación de varios registros.La interpretación y el parámetro.
PID-Analyzer (Plasmatree)Script de Python: respuesta a escalón mediante deconvolución, ruido en función del gas.La interpretación; no indica si el sobreimpulso viene de FF o de P/D.
blackbox_decodeConvierte el registro a CSV.Todo lo demás, con tus propios scripts.
Mission Planner, UAV Log Viewer (ArduPilot)Gráficas de mensajes .bin: RATE, PIDR/PIDP, VIBE, BAT, RCOU; FFT en la herramienta web Filter Review.Las conclusiones y los límites de VIBE.
PX4 Flight ReviewGráficas en línea de archivos .ulg: seguimiento de velocidad angular, salidas de motor, espectrogramas.Las conclusiones y los parámetros.
bbdoctorHallazgos del tipo «qué falla → qué hacer», con cifras, intervalos del 90 % y comandos para Betaflight, EmuFlight, INAV, Rotorflight, ArduPilot y PX4.No ofrece vista fotograma a fotograma ni vídeo (para eso está Explorer). Decidir si aplicas las recomendaciones.

No compiten entre sí: Explorer sirve para estudiar un segundo del vuelo; la automatización te dice qué segundo mirar y qué cambiar.

Cómo leer un registro a mano en 7 pasos

Los nombres de los campos son los que aparecen en el registro. El índice 0 corresponde a roll, 1 a pitch y 2 a yaw. En Explorer, View → Analyser (o la tecla A) abre el analizador de espectro; después haz clic en una traza de la leyenda.

  1. Línea de tiempo y modos. Un archivo puede contener varios vuelos, uno por cada armado. Comprueba flightModeFlags: la respuesta PID parece mucho peor en ANGLE y HORIZON que en ACRO. rcCommand[3] muestra estacionarios, cortes de gas y aceleraciones a fondo. No confíes en espectros que atraviesan interrupciones del registro.
  2. Giroscopio frente a consigna en los giros bruscos. Compara gyroADC[0] y setpoint[0]. Si el giroscopio pasa el objetivo, hay sobreimpulso. Si oscila después de soltar la palanca, hay poca amortiguación o rebote. Si se queda atrás entre 20 y 30 ms, la respuesta es lenta. Añade axisP[0], axisD[0] y axisF[0] para ver qué término impulsa el cuadricóptero.
  3. Motores. Mira motor[0..3]. Llegar al 100 % al acelerar a fondo o brevemente durante un giro rápido está bien; quedarse ahí durante maniobras a medio gas significa que no hay margen. Un motor que permanece al ralentí después de cortar gas suele causar turbulencia de hélice. Si una pareja se mantiene por encima de la otra durante todo el estacionario, puede ser el centro de gravedad.
  4. Espectro antes y después de los filtros. Compara gyroUnfilt con gyroADC. Por encima de unos 80 Hz suele ser ruido, no movimiento de vuelo. Lo que sobrevive a los filtros llega a los PID y calienta los motores.
  5. Frecuencia según el gas. Una línea diagonal que se desplaza a la derecha al aumentar el gas corresponde a motores y hélices. Una banda vertical que aparece con cualquier aceleración corresponde al chasis, la pila electrónica o una antena (fig. 1).
  6. Término I durante el estacionario. axisI[0] y axisI[1] deberían fluctuar alrededor de cero. Si uno mantiene un valor durante todo el vuelo, está compensando un desequilibrio: centro de gravedad, motor inclinado o desgastado.
  7. Voltaje e intensidad. Consulta vbatLatest y amperageLatest: caída de voltaje por celda durante los picos de corriente y voltaje al final. La variación de voltaje dividida por la variación de corriente da una estimación aproximada de la resistencia interna.
Mapas de calor del ruido bruto del giroscopio frente al gas: a la izquierda, una línea diagonal de los motores; a la derecha, bandas verticales de resonancia del chasis
Ruido bruto del giroscopio según el gas. A: roll, Betaflight 4.2.5, 4S, registro a 2 kHz. La diagonal corresponde a los motores: 242 Hz al 20–25 % de gas, 398 Hz al 50–55 % y unos 600 Hz al máximo. B: pitch, Betaflight 4.5.1, 6S, registro a 1013 Hz, así que la escala termina en 506 Hz. Las bandas cerca de 186 y 225 Hz permanecen fijas entre el 15 y el 80 % de gas: son del chasis o la pila, no de los motores. bbdoctor las detecta (186 Hz en pitch y 198 Hz en roll) sin aplicar un notch: al registrar a 1013 Hz, 186 Hz podría corresponder en realidad a 827 o 1199 Hz. Las filas vacías indican aceleraciones que el cuadricóptero apenas usó.

Los pasos 4 y 5 requieren una frecuencia de registro suficientemente alta: todo lo que supere la mitad de la frecuencia de registro se pliega y aparece como picos falsos. Configuración: guía de configuración de Blackbox.

Un registro real, de principio a fin

El registro público que hay detrás del informe de ejemplo: Betaflight 4.5.2, SpeedyBee F405 Mini, 4S y un modelo de 3,5 pulgadas, a juzgar por el nombre del aparato VX3.5. 110 s de registro, 107 en vuelo, todo en ACRO. Giroscopio a 8 kHz, PID a 4 kHz y registro a 1 kHz, con giroscopio bruto y eRPM. De los 20 puntos del informe, estos son los principales y el origen de cada cifra.

Motores traseros con un 50 % más de carga: el centro de gravedad

Consigna media: motores traseros M1 y M3 al 28,7 %; delanteros al 19,2 %. Más del 12 % es una señal de alerta; más del 30 %, crítico. Confirmación: la mediana del término I de pitch es 45, lejos de cero, así que el controlador añade empuje trasero durante todo el vuelo. Lo habitual es que la batería o la cámara estén demasiado atrás; también puede deberse a mucho vuelo rápido hacia delante, y en un estacionario tranquilo apenas habría diferencia. No es un problema de PID: mueve la batería hasta que el cuadricóptero quede nivelado al sostenerlo con los dedos por debajo del centro del chasis.

Roll: 36 % de sobreimpulso, causado por feedforward

Respuesta a escalón de roll: 36 % de sobreimpulso (intervalo del 90 %: 29–44 %), calculado a partir de 165 ventanas de un segundo utilizables (solapadas) entre 372 con movimiento de palanca; la mitad de la velocidad angular solicitada se alcanza en 8 ms. El límite inferior supera el 15 %, así que se señala el hallazgo. Pero la recomendación no es «baja P» ni «sube D». En movimientos rápidos de palanca, feedforward hace el 60 % del trabajo (FF frente a P), y el giroscopio se adelanta en promedio 3 ms a la consigna: FF está arrastrando el cuadricóptero. Así que solo se cambia FF: f_roll 120 → 102, un 15 % menos que el valor del encabezado; P y D quedan igual. Si solo queda sobreimpulso en giros rápidos, el siguiente ajuste sería feedforward_boost 15 → 8. En pitch ocurre lo mismo: 28 % (23–37 %), FF 56 %, f_pitch 125 → 106.

set f_roll = 102
set f_pitch = 106
set simplified_pids_mode = OFF
save

Por qué se cambia simplified_pids_mode: los PID de este registro no coinciden con los controles deslizantes y Configurator los sobrescribiría al guardar de nuevo.

La entrada de roll más brusca del registro de muestra: consigna y giroscopio arriba; términos P, D y feedforward abajo, con grandes picos de FF
Entrada de roll más brusca del registro de muestra, 0,8 s. A: la palanca se mueve a los 200 ms. A 100 deg/s, el giroscopio va 10 ms por detrás de la consigna; a 200 deg/s, se adelanta 13 ms. Pico de 267 deg/s, objetivo de 245. Al soltar, el giroscopio cae 66 deg/s por debajo de la consigna (496 ms). B: FF alcanza picos de +446 y −467 al mover la palanca; P se mantiene por debajo de 95 y D dentro de ±88 (unidades PID registradas).

A simple vista no verás un 36 %: aquí el pico solo supera el objetivo en 22 deg/s (9 %). La respuesta a escalón es la reacción a un escalón instantáneo ideal, obtenida por deconvolución a partir de 165 ventanas; una entrada real de palanca es una rampa de unos 100 ms. La rampa muestra lo mismo de otra manera: el giroscopio se adelanta a la consigna y los picos de FF casi quintuplican P. Más información en ajuste de PID a partir de Blackbox.

Ruido bruto de 4,1 deg/s: mecánica, no filtros

Ruido bruto del giroscopio por encima de 80 Hz: roll 4,1, pitch 2,4 y yaw 2,5 deg/s; apenas supera el umbral de alerta de 4 deg/s. Con filtros: 0,53 deg/s con un retardo de unos 1,4 ms; el informe considera que los filtros están bien. Déjalos como están y revisa las hélices, los rodamientos y el montaje de la pila. La vibración de 1× por motor es uniforme (M1 1,1; M2 0,5; M3 1,8; M4 1,9 deg/s), y la diferencia de RPM con la misma consigna es de un máximo del 1,9 %. Si buscas un motor defectuoso cuando la diferencia es grande, consulta la guía de vibración de motores.

Motores hasta 610 Hz, registro a 1 kHz

eRPM muestra motores hasta 610 Hz, pero un registro a 1000 Hz solo llega a 500 Hz; por encima, las frecuencias se pliegan, así que 610 Hz aparece como 390 Hz. El análisis por motor lo corrige (usa la fase de rotación de eRPM), pero el espectro y las frecuencias de resonancia quedan ambiguos. Solución:

set blackbox_sample_rate = 1/2
save

Variación de FF causada por la radio: 2,1 % del rango del motor

Mientras mueves las palancas, FF por encima de 40 Hz (un impulso en cada paso de radio) representa el 2,1 % del rango del motor en roll y el 1,7 % en pitch, con 34 y 28 impulsos por segundo por encima del 5 %. El FF útil por debajo de 12 Hz es del 1,5 y el 1,2 %. Con las palancas quietas baja al 0,40 %, así que el origen son los pasos de las palancas. Enlace a 494 Hz, suavizado de palancas a 185 Hz. FF genera el 89 % del ruido de salida PID de alta frecuencia y D, el 10 %; no bajes D ni los filtros del término D por esto, porque solo añadirías retardo. Primero reduce FF y suavízalo en el siguiente vuelo:

set feedforward_averaging = 2_POINT
set feedforward_smooth_factor = 65
save

El aumento de D apenas entra en acción

Configuración: d_min_roll = 30, d_roll = 45 y aumento de hasta ×1.50. bbdoctor mide el multiplicador real a partir del término D registrado (pendiente de axisD frente a la derivada del giroscopio entre 8 y 40 Hz, en bloques de 0,25 s, con TPA eliminado). En las maniobras más bruscas, D solo llega a ×1.06 en roll y ×1.04 en pitch. Vuelas con d_min, así que cambia la amortiguación mediante el D base (la columna Derivative), no D Max. En 2025.12 los nombres siguen la interfaz: d_roll base y d_max_roll como límite; consulta la guía de ajuste de PID.

Turbulencia de hélice de 1,1 deg/s: dentro de lo normal

Un corte es una caída de más del 25 % del recorrido del gas en 0,15 s, partiendo de más del 35 %. Hay 46; dos pasan directamente a un giro y bbdoctor los descarta porque el movimiento de palanca produce el mismo rango de 15–80 Hz. En los 44 cortes limpios, la diferencia entre giroscopio y consigna entre 15 y 80 Hz, de 0,08 a 0,6 s después del corte, es de 1,1 deg/s RMS, principalmente a unos 20 Hz; hasta 4 es normal. No hay nada que corregir; si sigue molestándote, consulta la guía de turbulencia de hélice.

Batería: 3,23 V por celda a 72 A

Empezó a 3,84 V por celda, sin estar completamente cargada. El mínimo sostenido (más de 0,5 s) es 3,23 V, el pico de corriente 72 A y al final quedan 3,66 V; consumió unos 248 mAh. La resistencia interna es de aproximadamente 7 mΩ por celda, incluidos los cables, según 182 cambios bruscos de corriente. La batería está al límite: advertencia.

El resto

Cómo comprobar cada hallazgo en Explorer

HallazgoQué graficarQué deberías ver
Centro de gravedadmotor[0..3], axisI[1]En estacionario, M1 y M3 (traseros en la distribución de Betaflight) por encima de M2 y M4; axisI[1] cerca de 45.
Sobreimpulso por FFsetpoint[0], gyroADC[0], axisF[0], axisP[0]El giroscopio supera la consigna mientras sigue subiendo; axisF alcanza varios múltiplos de axisP. Si FF es bajo y hay oscilación al parar, revisa P/D.
Ruido brutogyroUnfilt[0], gyroADC[0] en el analizadorEl espectro bruto es claramente más alto entre 100 y 500 Hz; tras el filtrado, el nivel de fondo queda casi plano.
Motores más rápidos que el registroeRPM[0..3]Hz del motor = campo × 100 / (polos_del_motor / 2) / 60. Con 14 polos, 610 Hz se muestra como 2562.
Variación de FFaxisF[0], setpoint[0]Un pico breve de axisF en cada paso de consigna; casi nada cuando la palanca está quieta.
Turbulencia de hélicercCommand[3], gyroADC[0..1]Una oscilación de unos 20 Hz entre 0,1 y 0,6 s después del corte; con 1 deg/s apenas se aprecia.
Caída de voltajevbatLatest, amperageLatestUn mínimo de unos 12,9 V en picos de hasta 72 A.

Por qué algunos hallazgos indican «datos insuficientes»

Con pocos datos, un analizador debe guardar silencio para no recomendar disparates con demasiada seguridad. Estos son los mínimos de bbdoctor:

ComprobaciónMínimoPor debajo del mínimo
Registro completo10 s en vueloTodo se reduce a información; no hay comandos.
Respuesta a escalón por eje10 ventanas utilizables, al menos una cuarta parte del total«Datos insuficientes para la respuesta a escalón»
Sobreimpulso crítico, comprobaciones PID detalladas50 ventanas por ejeComo máximo, advertencia; algunas comprobaciones no se muestran.
Rebote después de giros6 paradas bruscas por ejeNo se comprueba.
Caídas durante aceleraciones a fondo6 aceleraciones sin movimiento de palancaNo se comprueba.
Turbulencia de hélice3 cortes limpios; 5 para emitir una advertenciaSin estimación; solo información si hay 3–4.

Ejemplo: un registro de Betaflight 4.2.5 (2 kHz, 4S, 215 s en vuelo) tiene 15 cortes, pero 12 pasan directamente a un giro o un roll. Al promediarlos, la «turbulencia de hélice» es de 18,4 deg/s: crítico (umbral de 10). Cada corte va de 1,4 a 58,6 deg/s; los valores altos corresponden a los giros. Los tres cortes limpios dan 1,8 deg/s, dentro de lo normal. Una herramienta que incluyera esas maniobras te recomendaría subir D y el ralentí en un cuadricóptero sin turbulencia de hélice.

Segunda protección: «sesgo del método ya restado». La deconvolución muestra un poco de sobreimpulso incluso con una respuesta perfecta, sobre todo si no se registra la consigna y hay que reconstruirla a partir de las palancas. bbdoctor repite el cálculo con una consigna desplazada por el mismo retardo y resta ese valor. En un registro de Betaflight 4.5.1 sin consigna (801 Hz, 6S), el sobreimpulso bruto de pitch es del 29 %; 9 puntos porcentuales corresponden al sesgo, por lo que se informa de un 20 %. En yaw, todo el 9,6 % bruto era sesgo: no había sobreimpulso.

Cómo saber si puedes confiar en las cifras

Flujo de trabajo: un cambio por vuelo

  1. Graba de 1 a 2 minutos en ACRO: estacionario, giros suaves, 5 o 6 cortes, de 6 a 8 giros y tantos rolls como puedas con retorno brusco al centro, y de 6 a 8 aceleraciones a fondo con las palancas quietas.
  2. Sube el registro al analizador Blackbox en línea. Empieza por los puntos críticos y la mecánica; ajustar los PID con un chasis desequilibrado y hélices astilladas no sirve.
  3. Haz un cambio por vuelo. En este caso: batería, después FF y luego suavizado de FF. Puedes cambiar blackbox_sample_rate junto con cualquier paso, porque no afecta al vuelo. Quita las hélices si configuras el equipo con la batería conectada.
  4. Usa las mismas hélices, una batería similar con un nivel de carga parecido y el mismo estilo de vuelo.
  5. Usa «Comparar análisis» debajo del historial. Si los intervalos del 90 % se solapan antes y después, significa «sin cambios»; se marcan los vuelos con estilos distintos (gas medio con una diferencia de al menos el 10 % del recorrido, o uno tres veces más largo).

Limitaciones

A continuación, según el problema: ruido y filtros, turbulencia de hélice, PID a partir de la respuesta a escalón.

Preguntas frecuentes

¿Qué puedo usar en lugar de Blackbox Explorer?

El visor de registros de Betaflight ahora está en Betaflight App (app.betaflight.com), en la pestaña Blackbox Viewer, desde la versión 2026.6; Explorer como aplicación independiente ya no recibe nuevas funciones. INAV tiene su propio INAV Blackbox Explorer. Para ver hallazgos con cifras y comandos CLI, sube el registro a bbdoctor.

¿Qué archivos de registro lee bbdoctor?

Registros Blackbox de Betaflight, EmuFlight, INAV y Rotorflight (.bbl, .bfl, .txt), ArduPilot .bin y PX4 .ulg; los detecta por su contenido. No admite archivos de texto .log ni .tlog de ArduPilot, ni registros de ala fija de ArduPlane, Rover o PX4.

¿Puedo confiar en un análisis automático de Blackbox?

Cada estimación incluye un intervalo del 90 % y, si no hay una cantidad mínima de datos, no se emite ningún veredicto. Se resta el sesgo del método y se contrastan las recomendaciones. Aun así, es una orientación, no una sentencia: cambia un ajuste cada vez y comprueba el siguiente registro.

¿Se guarda mi registro?

Solo para poder repetir el análisis; se elimina automáticamente. La política de privacidad indica durante cuánto tiempo se conservan el registro y el informe. Puedes compartir el enlace del informe con quien quieras.

Actualizado:

Más guías