주요 콘텐츠

ulogreader

R2026b

PX4 ULog 파일 읽어오기

설명

ulogreader 객체는 PX4® ULog 파일(.ulg)을 읽어옵니다. 이 객체는 시작 기록 시간과 종료 기록 시간, 사용 가능한 토픽 요약, 드롭아웃 간격을 포함하여 파일에 대한 정보를 저장합니다.

생성

설명

ulogOBJ = ulogreader(filePath)는 지정된 경로에서 ULog 파일을 읽어오고 파일에 대한 정보가 포함된 객체를 반환합니다. filePath의 정보는 FileName 속성을 설정하는 데 사용됩니다.

예제

속성

모두 확장

읽기 전용 속성입니다.

ULog 파일의 이름으로, string형 스칼라 또는 문자형 벡터로 지정됩니다. FileName은 filePath 입력값에 지정된 경로입니다.

데이터형: char | string

읽기 전용 속성입니다.

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

데이터형: duration

읽기 전용 속성입니다.

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

데이터형: duration

읽기 전용 속성입니다.

기록된 모든 토픽의 요약으로, 다음 열이 포함된 테이블로 지정됩니다.

  • TopicNames

  • InstanceID

  • StartTimestamp

  • LastTimestamp

  • NumMessages

데이터형: table

읽기 전용 속성입니다.

기록 중 메시지가 누락된 시간 간격으로, 'hh:mm:ss.SSSSSS' 형식의 duration형 배열로 구성된 n×2 행렬로 지정됩니다. 여기서 n은 드롭아웃 수입니다.

데이터형: duration

객체 함수

readTopicMsgsRead topic messages
readSystemInformationRead information messages
readParametersRead parameter values
readLoggedOutputRead logged output messages

예제

모두 축소

ULOG 파일을 불러옵니다. 파일의 상대 경로를 지정합니다.

ulog = ulogreader('flight.ulg');

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

msg = readTopicMsgs(ulog);

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

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

시간 간격 [d1 d2]에서 인스턴스 ID가 0인 토픽 'vehicle_attitude'의 메시지를 읽어옵니다.

data = readTopicMsgs(ulog,'TopicNames',{'vehicle_attitude'}, ... 
'InstanceID',{0},'Time',[d1 d2]);

이 토픽의 토픽 메시지를 추출합니다.

vehicle_attitude = data.TopicMessages{1,1}
vehicle_attitude = 1066×3 timetable
       timestamp                             q                                              delta_q_reset                       quat_reset_counter
    _______________    ______________________________________________    ___________________________________________________    __________________

    00:00:01.952000    0.68231    0.0017879    -0.014252      0.73092    0.6823     2.1123e-10     6.8316e-10        0.73107            1         
    00:00:01.956000    0.68231    0.0017974    -0.014259      0.73092    0.6823     2.1123e-10     6.8316e-10        0.73107            1         
    00:00:02.004000    0.68126     0.001916    -0.014383      0.73189         1              0    -2.2119e-09      0.0013563            2         
    00:00:02.052000    0.68112    0.0019686    -0.014534      0.73202         1              0    -2.2119e-09      0.0013563            2         
    00:00:02.104000    0.68092     0.002101    -0.014752      0.73221         1              0    -2.2119e-09      0.0013563            2         
    00:00:02.152000    0.68067    0.0022023    -0.014936      0.73243         1              0    -2.2119e-09      0.0013563            2         
    00:00:02.204000    0.68045    0.0023886    -0.015088      0.73263         1              0    -2.2119e-09      0.0013563            2         
    00:00:02.252000    0.68016    0.0025014    -0.015266       0.7329         1              0    -2.2119e-09      0.0013563            2         
    00:00:02.304000    0.67995    0.0026582    -0.015413      0.73309         1              0    -2.2119e-09      0.0013563            2         
    00:00:02.352000    0.67983    0.0027451    -0.015558       0.7332         1              0    -2.2119e-09      0.0013563            2         
    00:00:02.404000    0.67979    0.0028021    -0.015723      0.73323         1              0    -2.2119e-09      0.0013563            2         
    00:00:02.452000    0.67975    0.0029118    -0.015801      0.73327         1              0    -2.2119e-09      0.0013563            2         
    00:00:02.504000    0.67972     0.002982    -0.015947      0.73329         1              0    -2.2119e-09      0.0013563            2         
    00:00:02.552000    0.67975    0.0030121    -0.016096      0.73326         1              0    -2.2119e-09      0.0013563            2         
    00:00:02.604000     0.6798    0.0030043    -0.016209      0.73321         1              0    -2.2119e-09      0.0013563            2         
    00:00:02.652000    0.67985    0.0030682    -0.016367      0.73317         1              0    -2.2119e-09      0.0013563            2         
      ⋮

모든 시스템 정보를 읽어옵니다.

systeminfo = readSystemInformation(ulog)
systeminfo = 12×2 table
       InformationField                          Value                   
    _______________________    __________________________________________

    "ver_sw"                   "8763d71bf0b603e0da42ea16fceae7fd2590546f"
    "ver_sw_release"           "v1.11.0.RC"                              
    "ver_vendor_sw_release"    "192"                                     
    "ver_hw"                   "PX4_SITL"                                
    "sys_name"                 "PX4"                                     
    "sys_os_name"              "Linux"                                   
    "ver_sw_branch"            "master"                                  
    "sys_os_ver_release"       "84148479"                                
    "sys_toolchain"            "GNU GCC"                                 
    "sys_toolchain_ver"        "9.3.0"                                   
    "ver_data_format"          "1"                                       
    "time_ref_utc"             "0"                                       

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

params = readParameters(ulog)
params = 631×2 table
       Parameters        Values
    _________________    ______

    "ASPD_BETA_GATE"          1
    "ASPD_BETA_NOISE"       0.3
    "ASPD_DO_CHECKS"          0
    "ASPD_FALLBACK"           0
    "ASPD_FS_INNOV"           1
    "ASPD_FS_INTEG"          -1
    "ASPD_FS_T1"              3
    "ASPD_FS_T2"            100
    "ASPD_PRIMARY"            1
    "ASPD_SCALE"              1
    "ASPD_SCALE_EST"          0
    "ASPD_SC_P_NOISE"    0.0001
    "ASPD_STALL"             10
    "ASPD_TAS_GATE"           3
    "ASPD_TAS_NOISE"        1.4
    "ASPD_W_P_NOISE"        0.1
      ⋮

시간 간격 내에 기록된 출력 메시지를 읽어옵니다.

log = readLoggedOutput(ulog,'Time',[d1 d2])
log = 23×2 timetable
       timestamp       LogLevel                                          Messages                                       
    _______________    ________    _____________________________________________________________________________________

    00:00:00.176000     "INFO"     "[logger] [logger] ./log/2020-07-07/15_07_10.ulg"                                    
    00:00:00.176000     "INFO"     "[logger] Opened full log file: ./log/2020-07-07/15_07_10.ulg"                       
    00:00:00.176000     "INFO"     "[mavlink] MAVLink only on localhost (set param MAV_BROADCAST = 1 to enable network)"
    00:00:00.184000     "INFO"     "[px4] Startup script returned successfully"                                         
    00:00:01.044000     "INFO"     "[mavlink] partner IP: 127.0.0.1"                                                    
    00:00:01.096000     "INFO"     "[ecl/EKF] 888000: GPS checks passed"                                                
    00:00:01.948000     "INFO"     "[ecl/EKF] 1780000: reset position to last known position"                           
    00:00:01.948000     "INFO"     "[ecl/EKF] 1780000: reset velocity to zero"                                          
    00:00:05.548000     "INFO"     "[ecl/EKF] 5380000: reset velocity to GPS"                                           
    00:00:05.548000     "INFO"     "[ecl/EKF] 5380000: starting GPS fusion"                                             
    00:00:26.668000     "INFO"     "[commander] ARMED by Arm/Disarm component command"                                  
    00:00:31.268000     "INFO"     "[fw_pos_control_l1] Takeoff on runway"                                              
    00:00:31.360000     "INFO"     "[commander] Takeoff detected"                                                       
    00:00:31.688000     "INFO"     "[runway_takeoff] #Takeoff airspeed reached"                                         
    00:00:33.548000     "INFO"     "[runway_takeoff] #Climbout"                                                         
    00:00:34.088000     "INFO"     "[runway_takeoff] #Navigating to waypoint"                                           
      ⋮

참고 문헌

[1] PX4 Developer Guide. "ULog File Format." Accessed December 6, 2019. https://docs.px4.io/main/en/dev_log/ulog_file_format.html.

버전 내역

R2020b에 개발됨

참고 항목