venerdì 14 agosto 2026

DJI Log Parser e GPS FigSpec FS60-C

Uno dei problemi del FigSpec FS60-C su cui sto lavorando e' che i log files sono con un orario spostato di 6 ore in avanti rispetto al fuso italiano e che non sono valorizzati nel file figspec.gps i valori di yaw/pitch/roll 

E' quindi necessario appoggiarsi ai dati loggati dal drone stesso con il suo sistema RTK


 

 

I dati sono contenuti nel telecomando in  

Internal Storage / DJI / com.dji.industry.pilot / FlightRecord /

sia in formato DAT che in formato TXT entrambi formati binari codificati. 

ATTENZIONE : i dati contenuti nel file DAT sono piu' numerosi dei dati contenuti nel file TXT (per esempio nel file DAT sono contenute le colonne WEATHER con le indicazioni del vento che sono assenti nel file TXT  

Per estrarre i dati dal formato TXT si deve scaricare l'eseguibile da 

https://github.com/lvauvillier/dji-log-parser/releases 

ottenere una OpenAPI key tramite un account developer sul sito DJI e lanciare il comando

dji-log.exe  .\dji\DJIFlightRecord_2026-07-31_[10-36-33].txt --api-key XXXXXXXXXf100d529d2329caba3 --csv vv.csv 

altrimenti si puo' utilizzare il servizio on line

 https://www.phantomhelp.com/logviewer/upload/

ATTENZIONE : i dati contenuti nel file csv esportato dal servizio on line sono piu' numerosi dei dati contenuti nel file TXT (per esempio sono contenute le colonne WEATHER con le indicazioni del vento che sono assenti dall'esportazione con dji-log locale)

L'aspetto da sottolineare e' che la quota di volo e' considerata come AGL (above ground level) rispetto al punto di decollo. Non c'e' direttamente una informazione di quota sul livelllo del mare del drone. Si ha invece l'informazione di Home.height (quota ellissoidica GPS) che viene pero' ripresa dal GPS del telecomando che non e' fornito di RTK 


Le unità di misura possono essere in Sistema Internazionale od in Sistema Imperiale con le quote espresse in feet 

OSD — stato di volo/telemetria principale

ColonnaSignificatoUnità / note
OSD.latitudeLatitudine GPS del dronegradi decimali (memorizzato in radianti nel file)
OSD.longitudeLongitudine GPS del dronegradi decimali (memorizzato in radianti nel file)
OSD.heightAltezza sul punto di decollo (relative altitude)metri
OSD.altitudeAltitudine assoluta (quando presente)metri
OSD.xSpeedVelocità orizzontale asse X (Nord/Est a seconda del riferimento)m/s
OSD.ySpeedVelocità orizzontale asse Ym/s
OSD.zSpeedVelocità verticalem/s (positivo = salita, a seconda della convenzione)
OSD.pitchAssetto pitch del velivologradi
OSD.rollAssetto roll del velivologradi
OSD.yawPrua/heading del velivologradi (0–360)
OSD.flycStateStato del "flight controller" (modo di volo interno, es. GPS, ATTI, Sport, RTH, Auto Takeoff/Landing)enum
OSD.flycCommandUltimo comando ricevuto dal FCenum
OSD.flightActionAzione automatica in corso (RTH, landing, ecc.)enum
OSD.groundOrSkySe il drone è a terra o in voloflag
OSD.isMotorOn / OSD.isMotorUpStato motoribool
OSD.isSwaveWorkStato "swave" (funzione interna)bool
OSD.goHomeStatusStato Return-to-Homeenum
OSD.isOnGroundRilevamento a terrabool
OSD.gpsLevel / OSD.gpsNumQualità/numero di satelliti GPS agganciatiintero (0–10+)
OSD.nonGpsCauseMotivo di eventuale assenza segnale GPSenum
OSD.flyTimeTempo di volo trascorsosecondi/decimi
OSD.voltageTensione batteria (talvolta duplicato da BATTERY)Volt
OSD.windSpeed / OSD.windDirectionVento stimatom/s / gradi
OSD.batteryTypeTipo batteria rilevataenum
OSD.vpsHeightAltezza da sensore visivo/ultrasuoni (VPS)metri
OSD.motorStartFailedCauseCausa fallito avviamento motori (se applicabile)enum

GIMBAL — stato del gimbal/camera

ColonnaSignificatoUnità
GIMBAL.pitchInclinazione gimbalgradi
GIMBAL.rollRollio gimbalgradi
GIMBAL.yawImbardata gimbalgradi
GIMBAL.modeModalità gimbal (follow, FPV, free)enum
GIMBAL.isPitchAtLimit / isRollAtLimit / isYawAtLimitFine corsa raggiuntobool
GIMBAL.isStuckBlocco meccanico rilevatobool

RC — stato del radiocomando

ColonnaSignificatoUnità
RC.aileron, RC.elevator, RC.throttle, RC.rudderPosizione stick (canali principali)valore raw (es. 364–1684, centro ~1024)
RC.modePosizione dello switch di modalità voloenum
RC.goHomeStato pulsante RTHbool
RC.gimbalPitchRotellina controllo gimbalvalore raw
RC.downlinkSignal / RC.uplinkSignalQualità collegamento RC↔dronepercentuale/dB

HOME — punto di ritorno / riferimenti

ColonnaSignificatoUnità
HOME.latitude / HOME.longitudeCoordinate del punto Home registratogradi
HOME.heightAltezza di riferimento Homemetri
HOME.isHomeRecordSe l'home point è stato acquisitobool
HOME.goHomeModeModalità RTH configurataenum
HOME.maxAllowedHeightLimite di altezza impostatometri
HOME.compassCalibrationStatusStato calibrazione bussolaenum

Batteria — CENTER_BATTERY (batteria singola) / SMART_BATTERY (pacco intelligente, multi-batteria come sul M400)

ColonnaSignificatoUnità
BATTERY.relativeCapacityPercentuale di carica residua%
BATTERY.voltageTensione totale paccoVolt (mV nel raw)
BATTERY.currentCorrente istantanea (assorbimento)mA/A
BATTERY.currentTemperature / BATTERY.temperatureTemperatura celle°C
BATTERY.cellVoltage[1..n]Tensione delle singole celleVolt
BATTERY.usefulTimeAutonomia residua stimatasecondi/minuti
BATTERY.goHomeTimeTempo stimato necessario per RTHsecondi
BATTERY.landTimeTempo stimato necessario per atterraggiosecondi
BATTERY.batteryOnChargeIn carica sì/nobool
BATTERY.numberOfDischargeNumero di cicli di scaricaintero
BATTERY.serialNumberNumero seriale pacco batteriastringa

APP_GPS — GPS lato app/RadioComando

ColonnaSignificatoUnità
APP_GPS.latitude / APP_GPS.longitudePosizione GPS del dispositivo mobile/RCgradi
APP_GPS.accuracyAccuratezza stimatametri

RECOVER — metadati del volo 

ColonnaSignificato
RECOVER.droneTypeModello del drone (es. Matrice 400)
RECOVER.appTypeApp usata (DJI GO, GO 4, Fly, Pilot 2)
RECOVER.appVersionVersione app (1/2/3 = major.minor.patch)
RECOVER.aircraftSn / RECOVER.aircraftNameNumero seriale e nome assegnato al drone
RECOVER.cameraSnSeriale della camera/payload
RECOVER.rcSnSeriale del radiocomando
RECOVER.batterySnSeriale batteria
RECOVER.activeTimestampTimestamp di attivazione registrazione

DETAILS — riepilogo del volo (calcolato a fine registrazione)

ColonnaSignificatoUnità
DETAILS.latitude / DETAILS.longitudePosizione di decollogradi
DETAILS.city / DETAILS.area / DETAILS.streetGeocoding inverso della zona di volotesto
DETAILS.totalDistanceDistanza totale percorsametri
DETAILS.totalTimeDurata totale volosecondi
DETAILS.maxHeightAltezza massima raggiuntametri
DETAILS.maxHorizontalSpeedVelocità orizzontale massimam/s
DETAILS.maxVerticalSpeedVelocità verticale massimam/s
DETAILS.photoNum / DETAILS.videoTimeNumero foto scattate / tempo video registratointero / secondi

Altri tipi di record

Tipo recordContenuto
CUSTOMMetadati custom, es. CUSTOM.updateTime (timestamp locale della riga)
DEFORMStato apertura/chiusura bracci (drone pieghevole)
APP_TIP / APP_WARN / APP_SER_WARNMessaggi di avviso/errore mostrati in app durante il volo (testo)
FIRMWAREVersioni firmware dei vari componenti (FC, ESC, RC, camera, batteria...)
COMPONENTElenco componenti rilevati/collegati (per aeromobili modulari come il M400)
RC_GPS, RC_DEBUG, OFDM_DEBUG, VISION_GROUP, VISION_WARN, MC_PARAM, APP_OPERATIONFormato non documentato pubblicamente — noti solo per nome, non per struttura
JPEGMiniature/fotogrammi JPEG incorporati nel log (non telemetria)

 questi invece sono i campi completi 

CUSTOM.date [local],
CUSTOM.updateTime [local],
OSD.flyTime,OSD.flyTime [s],7
OSD.latitude,OSD.
longitude,OSD.height [ft],
OSD.heightMax [ft],
OSD.vpsHeight [ft],
OSD.altitude [ft],
OSD.mileage [ft],
OSD.hSpeed [MPH],
OSD.hSpeedMax [MPH],
OSD.xSpeed [MPH],
OSD.xSpeedMax [MPH],
OSD.ySpeed [MPH],
OSD.ySpeedMax [MPH],
OSD.zSpeed [MPH],
OSD.zSpeedMax [MPH],
OSD.pitch,OSD.roll,
OSD.yaw,OSD.yaw [360],
OSD.directionOfTravel,
OSD.flycState,
OSD.flycCommand,
OSD.flightAction,
OSD.gpsNum,
OSD.gpsLevel,
OSD.isGPSUsed,
OSD.nonGPSCause,
OSD.droneType,
OSD.isSwaveWork,
OSD.waveError,
OSD.goHomeStatus,
OSD.batteryType,
OSD.ctrlDevice,
OSD.isOnGround,
OSD.isMotorOn,
OSD.isMotorBlocked,
OSD.motorStartFailedCause,
OSD.motorFailReason,
OSD.isImuPreheated,
OSD.imuInitFailReason,
OSD.isAcceletorOverRange,
OSD.isBarometerDeadInAir,
OSD.isCompassError,
OSD.isGoHomeHeightModified,
OSD.canIOCWork,
OSD.isNotEnoughForce,
OSD.isOutOfLimit,
OSD.isPropellerCatapult,
OSD.isVibrating,
OSD.isVisionUsed,
OSD.voltageWarning,
GIMBAL.mode,
GIMBAL.pitch,
GIMBAL.roll,
GIMBAL.yaw,
GIMBAL.yaw [360],
GIMBAL.isPitchAtLimit,
GIMBAL.isRollAtLimit,
GIMBAL.isYawAtLimit,
GIMBAL.isStuck,
CAMERA.isPhoto,
CAMERA.isVideo,
CAMERA.filename,
CAMERA.sdCardIsInserted,
CAMERA.sdCardState,
RC.downlinkSignal,
RC.uplinkSignal,
RC.aileron,
RC.elevator,
RC.throttle,
RC.rudder,
RC.mode,
RC.goHomeDepressed,
RC.recordDepressed,
RC.shutterDepressed,
RC.playbackDepressed,
RC.wheelDepressed,
RC.wheelOffset,
RC.custom1Depressed,
RC.custom2Depressed,
RC.custom3Depressed,
RC.custom4Depressed,
BATTERY.chargeLevel,
BATTERY.currentPV [V],
BATTERY.currentCapacity [mAh],
BATTERY.fullCapacity [mAh],
BATTERY.voltage [V],
BATTERY.isCellVoltageEstimated,
BATTERY.cellVoltage1 [V],
BATTERY.cellVoltage2 [V],
BATTERY.cellVoltage3 [V],
BATTERY.cellVoltage4 [V],
BATTERY.cellVoltage5 [V],
BATTERY.cellVoltage6 [V],
BATTERY.cellVoltage7 [V],
BATTERY.cellVoltage8 [V],
BATTERY.cellVoltage9 [V],
BATTERY.cellVoltage10 [V],
BATTERY.cellVoltage11 [V],
BATTERY.cellVoltage12 [V],
BATTERY.maxCellVoltageDeviation,
BATTERY.isCellVoltageDeviationHigh,
BATTERY.isVoltageLow,
BATTERY.current [A],
BATTERY.temperature [F],
BATTERY.minTemperature [F],
BATTERY.maxTemperature [F],
BATTERY.usefulTime [s],
BATTERY.goHomeTime [s],
BATTERY.landTime [s],
BATTERY.goHomeBattery,
BATTERY.landBattery,
BATTERY.safeFlyRadius,
BATTERY.volumeConsume,
BATTERY.status,
BATTERY.goHomeStatus,
BATTERY.goHomeCountdown,
BATTERY.lowWarning,
BATTERY.lowWarningGoHome,
BATTERY.seriousLowWarning,
BATTERY.seriousLowWarningLanding,
BATTERY.timesCharged,
MC.failSafeAction,
MC.isObstacleAvoidanceEnabled,4
MC.isCollisionAvoidanceEnabled,
MC.isRthObstacleAvoidanceEnabled,
MC.isBraking,MC.isAvoidingObstacle,
MC.isAvoidingActiveObstacle,
MC.isAscentLimitedByObstacle,
MC.isLandingConfirmationNeeded,
MC.atLowAltitudeLimit,
MC.atDistanceLimit,
MC.atAirportAltitudeLimit,
MC.atAirportBoundary,
HOME.latitude,
HOME.longitude,
HOME.distance [ft],
HOME.height [ft],
HOME.heightLimit [ft],
HOME.isHomeRecord,
HOME.goHomeMode,
HOME.aircraftHeadDirection,
HOME.isDynamicHomePointEnabled,
HOME.isReachedLimitDistance,
HOME.isReachedLimitHeight,
HOME.isCompassCalibrating,
HOME.compassCalibrationState,
HOME.isMultipleFlightModeEnabled,
HOME.isBeginnerMode,
HOME.isIOCEnabled,
HOME.iocMode,
HOME.goHomeHeight [ft],
HOME.courseLockAngle,
HOME.forceLandingHeight [ft],
HOME.dataRecorderFileIndex,
WEATHER.windDirection,
WEATHER.windRelativeDirection,
WEATHER.windSpeed [MPH],
WEATHER.maxWindSpeed [MPH],
WEATHER.windStrength,
WEATHER.isFacingWind,
WEATHER.isFlyingIntoWind,
RECOVER.appType,
RECOVER.appVersion,
RECOVER.aircraftName,
RECOVER.aircraftSerial,
RECOVER.cameraSerial,
RECOVER.rcSerial,
RECOVER.batterySerial,
DETAILS.totalTime [s],
DETAILS.totalDistance [ft],
DETAILS.maxHeight [ft],
DETAILS.maxHorizontalSpeed [MPH],
DETAILS.maxVerticalSpeed [MPH],
DETAILS.photoNum,
DETAILS.videoTime [s],
DETAILS.aircraftName,
DETAILS.aircraftSerial,
DETAILS.cameraSerial,
DETAILS.rcSerial,
DETAILS.batterySerial,
DETAILS.appName,
DETAILS.appType,
DETAILS.appVersion,
DETAILS.guid,
SERIAL.flightController,
SERIAL.camera,
SERIAL.gimbal,
SERIAL.rc,
SERIAL.battery,
SERIAL.battery2,
APPGPS.latitude,
APPGPS.longitude,
APPGPS.accuracy,
APP.tip,
APP.warning
 

Nessun commento:

Posta un commento

Da quota ellissoidica ad ortometrica

Per passare da quote ellissoidiche GPS a quote sul geoide ci sono varie opzioni in base al modello scelto ITG2009   Se si usa EGM 2008 si ha...