Hauptinhalt

ardupilotreader

R2026b

Read ArduPilot log file

Since R2024a

Description

The ardupilotreader object reads an ArduPilot® dataflash log file (.bin). The object stores the file start and end logging times, available messages, and the total number of messages in the log file.

Creation

Description

arduObj = ardupilotreader(filePath) reads the ArduPilot dataflash log file from the specified file name or path, and returns an object containing information about the file.

example

Properties

expand all

This property is read-only.

Name of ArduPilot dataflash log file, specified as a string scalar or character vector. The FileName is the path specified in the filePath argument.

Data Types: char | string

This property is read-only.

Start time of logging offset from the system start time in the ArduPilot dataflash log file, specified as a duration object in the 'hh:mm:ss.SSSSSS' format.

Data Types: duration

This property is read-only.

Timestamp of the last timestamped message logged in the ArduPilot dataflash log file, specified as a duration object in the 'hh:mm:ss.SSSSSS' format.

Data Types: duration

This property is read-only.

Summary of all the logged messages, specified as a table that contains the fields:

  • MsgName

  • InstanceID

  • StartTimestamp

  • LastTimestamp

  • NumMessages

Data Types: table

This property is read-only.

Total number of messages in the log file.

Data Types: double

Object Functions

readMessagesRead messages from ArduPilot log file
readParametersRead parameter values from ArduPilot log file
readLoggedOutputRead logged output messages from ArduPilot log file

Examples

collapse all

Load the BIN file.

bin = ardupilotreader('flight.bin');

Read all messages.

msg = readMessages(bin);

Specify the time interval between which to select messages.

d1 = duration([0 1 00],'Format','hh:mm:ss.SSSSSS');
d2 = d1 + duration([0 0 55],'Format','hh:mm:ss.SSSSSS');

Read the attitude message in the time interval [d1 d2].

attMsg = readMessages(bin,'MessageName',{'ATT'},'Time',[d1 d2]);

Extract attitude data from the message.

AttData = attMsg.MsgData{1,1}
AttData = 534×10 timetable
       timestamp           TimeUS         DesRoll    Roll    DesPitch    Pitch    DesYaw     Yaw      ErrRP    ErrYaw    AEKF
    _______________    _______________    _______    ____    ________    _____    ______    ______    _____    ______    ____

    00:01:01.669489    00:01:01.669489       0       0.06       0        0.05     358.94    358.95      0        0        3  
    00:01:01.769448    00:01:01.769448       0       0.06       0        0.05     358.95    358.96      0        0        3  
    00:01:01.869408    00:01:01.869408       0       0.06       0        0.05     358.95    358.96      0        0        3  
    00:01:01.969368    00:01:01.969368       0       0.06       0        0.05     358.95    358.96      0        0        3  
    00:01:02.069328    00:01:02.069328       0       0.06       0        0.05     358.96    358.97      0        0        3  
    00:01:02.169288    00:01:02.169288       0       0.06       0        0.05     358.96    358.97      0        0        3  
    00:01:02.269248    00:01:02.269248       0       0.06       0        0.05     358.96    358.97      0        0        3  
    00:01:02.369208    00:01:02.369208       0       0.06       0        0.05     358.97    358.98      0        0        3  
    00:01:02.469168    00:01:02.469168       0       0.06       0        0.05     358.97    358.98      0        0        3  
    00:01:02.569128    00:01:02.569128       0       0.07       0        0.05     358.97    358.98      0        0        3  
    00:01:02.669088    00:01:02.669088       0       0.07       0        0.05     358.98    358.99      0        0        3  
    00:01:02.769048    00:01:02.769048       0       0.07       0        0.05     358.98    358.99      0        0        3  
    00:01:02.869008    00:01:02.869008       0       0.07       0        0.05     358.98    358.99      0        0        3  
    00:01:02.968968    00:01:02.968968       0       0.07       0        0.06     358.98    358.99      0        0        3  
    00:01:03.068928    00:01:03.068928       0       0.07       0        0.06     358.99       359      0        0        3  
    00:01:03.168889    00:01:03.168889       0       0.07       0        0.06     358.99       359      0        0        3  
      ⋮

Read all parameter values.

params = readParameters(bin)
params = 1312×4 timetable
       timestamp           TimeUS                Name           Value    Default
    _______________    _______________    __________________    _____    _______

    00:01:01.651163    00:01:01.651163    "FORMAT_VERSION"       120       120  
    00:01:01.651163    00:01:01.651163    "SYSID_THISMAV"          1         1  
    00:01:01.651163    00:01:01.651163    "SYSID_MYGCS"          255       255  
    00:01:01.651163    00:01:01.651163    "PILOT_THR_FILT"         0         0  
    00:01:01.651163    00:01:01.651163    "PILOT_TKOFF_ALT"        0         0  
    00:01:01.651163    00:01:01.651163    "PILOT_THR_BHV"          0         0  
    00:01:01.651163    00:01:01.651163    "SERIAL0_BAUD"         115       115  
    00:01:01.651163    00:01:01.651163    "SERIAL0_PROTOCOL"       2         2  
    00:01:01.651163    00:01:01.651163    "SERIAL1_PROTOCOL"       2         2  
    00:01:01.651163    00:01:01.651163    "SERIAL1_BAUD"          57        57  
    00:01:01.651163    00:01:01.651163    "SERIAL2_PROTOCOL"       2         2  
    00:01:01.651163    00:01:01.651163    "SERIAL2_BAUD"          57        57  
    00:01:01.651163    00:01:01.651163    "SERIAL3_PROTOCOL"       5         5  
    00:01:01.651163    00:01:01.651163    "SERIAL3_BAUD"          38        38  
    00:01:01.651163    00:01:01.651163    "SERIAL4_PROTOCOL"       5         5  
    00:01:01.651163    00:01:01.651163    "SERIAL4_BAUD"          38        38  
      ⋮

Read all logged output messages.

loggedoutput = readLoggedOutput(bin);

Read logged output messages in the time interval [d1 d2].

log = readLoggedOutput(bin,'Time',[d1 d2])
log = 16×2 timetable
       timestamp           TimeUS                              Message                     
    _______________    _______________    _________________________________________________

    00:01:01.651163    00:01:01.651163    "ArduCopter V4.3.3 (34e8e02c)"                   
    00:01:01.651163    00:01:01.651163    "d6384d347e3c476ea8702e6a78ef3590"               
    00:01:01.651163    00:01:01.651163    "Param space used: 323/4096"                     
    00:01:01.651163    00:01:01.651163    "RC Protocol: SITL"                              
    00:01:01.651163    00:01:01.651163    "New mission"                                    
    00:01:01.651163    00:01:01.651163    "New rally"                                      
    00:01:01.651163    00:01:01.651163    "New fence"                                      
    00:01:01.651163    00:01:01.651163    "Frame: QUAD/PLUS"                               
    00:01:01.651163    00:01:01.651163    "GPS 1: detected as u-blox at 230400 baud"       
    00:01:07.788707    00:01:07.788707    "Mission: 1 WP"                                  
    00:01:08.014449    00:01:08.014449    "EKF3 IMU0 MAG0 in-flight yaw alignment complete"
    00:01:08.019448    00:01:08.019448    "EKF3 IMU1 MAG0 in-flight yaw alignment complete"
    00:01:29.004384    00:01:29.004384    "Reached command #1"                             
    00:01:29.004384    00:01:29.004384    "Mission: 2 WP"                                  
    00:01:48.199202    00:01:48.199202    "Reached command #2"                             
    00:01:48.199202    00:01:48.199202    "Mission: 3 WP"                                  

Version History

Introduced in R2024a