Ardupilog - A DataFlash log to MATLAB converter

Hello Pablo,

Q3 has entirely to do with how ArduPilot chooses to generate its logged messages and what kind of data it puts inside. It’s not up to me to decide.
But you can get a list of the available messages if you load your log and print it:

>>> log

ans=

         fileName: 'my_log.bin'
     filePathName: '...'
         platform: 'ArduRover'
          version: 'V4.2.0-dev'
           commit: '74fa47a3'
      bootTimeUTC: '...'
    msgsContained: {1×213 cell}
     totalLogMsgs: 8558052
        msgFilter: []
          numMsgs: 8558052
          STAK_20: [1×1 LogMsgGroup]
           XKF4_1: [1×1 LogMsgGroup]
              XKQ: [1×1 LogMsgGroup]

Each LogMsgGroup object is a list of messages.

Then, by printing this message list you can get its fields

>> log.ATT

ans = 

  LogMsgGroup with properties:

           typeNumID: 68
          fieldUnits: [1×1 struct]
    fieldMultipliers: [1×1 struct]
                name: 'ATT'
              LineNo: [269043×1 double]
         MsgInstance: 0
               TimeS: [269043×1 double]
          DatenumUTC: [269043×1 double]
               ErrRP: [269043×1 double]
              ErrYaw: [269043×1 double]
              TimeUS: [269043×1 double]
              DesYaw: [269043×1 double]
                Roll: [269043×1 double]
             DesRoll: [269043×1 double]
                AEKF: [269043×1 double]
               Pitch: [269043×1 double]
                 Yaw: [269043×1 double]
            DesPitch: [269043×1 double]

Now what each of these things mean, it’s up to ArduPilot.

To plot more than one thing at the same time, you can pass the axis handle to the plot command, as follows:

>> ah = log.plot('ATT/Roll');
>> log.plot('ATT/Pitch', 'r', ah);

which gives the following image:
image

As for your first question, I’m not sure what you refer to when you’re talking about “raw data”. Perhaps you want to get Matlab arrays of data? In that case the log message fields are just that. For example, check your log.ATT.Roll array.