주요 콘텐츠

ardupilotreader

ArduPilot 로그 파일 읽어오기

R2024a 이후

설명

ardupilotreader 객체는 ArduPilot® dataflash 로그 파일(.bin)을 읽어옵니다. 이 객체는 파일 시작 기록 시간과 종료 기록 시간, 사용 가능한 메시지, 그리고 로그 파일의 총 메시지 수를 저장합니다.

생성

설명

arduObj = ardupilotreader(filePath)는 지정된 파일 이름 또는 파일 경로에서 ArduPilot dataflash 로그 파일을 읽어오고 파일에 대한 정보가 포함된 객체를 반환합니다.

예제

속성

모두 확장

읽기 전용 속성입니다.

ArduPilot dataflash 로그 파일의 이름으로, string형 스칼라 또는 문자형 벡터로 지정됩니다. FileNamefilePath 인수에 지정된 경로입니다.

데이터형: char | string

읽기 전용 속성입니다.

ArduPilot dataflash 로그 파일의 시스템 시작 시간에서 오프셋된 기록 시작 시간으로, 'hh:mm:ss.SSSSSS' 형식의 duration 객체로 지정됩니다.

데이터형: duration

읽기 전용 속성입니다.

ArduPilot dataflash 로그 파일에 기록된 마지막으로 타임스탬프가 지정된 메시지의 타임스탬프로, 'hh:mm:ss.SSSSSS' 형식의 duration 객체로 지정됩니다.

데이터형: duration

읽기 전용 속성입니다.

기록된 모든 메시지의 요약으로, 다음 필드가 포함된 테이블로 지정됩니다.

  • MsgName

  • InstanceID

  • StartTimestamp

  • LastTimestamp

  • NumMessages

데이터형: table

읽기 전용 속성입니다.

로그 파일의 총 메시지 수

데이터형: double

객체 함수

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

예제

모두 축소

BIN 파일을 불러옵니다.

bin = ardupilotreader('flight.bin');

모든 메시지를 읽어옵니다.

msg = readMessages(bin);

선택할 메시지 간의 시간 간격을 지정합니다.

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

시간 간격 [d1 d2] 내의 자세 메시지를 읽어옵니다.

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

메시지에서 자세 데이터를 추출합니다.

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  
      ⋮

모든 파라미터 값을 읽어옵니다.

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  
      ⋮

기록된 모든 출력 메시지를 읽어옵니다.

loggedoutput = readLoggedOutput(bin);

시간 간격 [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"                                  

버전 내역

R2024a에 개발됨