드론 쿼드콥터

Dataflash Log 다운로드 및 분석 방법

하늘이푸른오늘 2016. 12. 25. 00:06

Dataflash log는 픽스호크(또는 APM 2.x)의 내장 dataflash 메모리에 저장되어 있으며, 비행후 다운로드 받을 수 있다. Plane 과 Rover의 경우, dataflash 로그는 시동후 즉시 생성된다. Copter의 경우, 시동을 건 후 생성된다. 이 글은 Dataflash 로그를 설정하고 접근하는 방법에 관한 글이다.


참고 : 텔레메트리 로그("tlogs"라고 함)도 dataflash 로그와 비슷한 정보를 수집한다. (자세한 내용은 Log를 이용한 문제 진단 을 참고)

MAVLink를 통한 log 다운로드


이 방법은 AC3.2 이상에서만 사용할 수 있다.


  • 기체를 microUSB 케이블을 사용하여 미션플래너와 연결한다.
  • 미션플래너에서 Flight Data 화면을 연다.
  • 화면 좌측 아래에서 "DataFlash Logs" 탭을 선택하고 "Download DataFalsh Log Via MAVlink" 버튼을 누른다.


그 다음 원하는 로그를 선택한다. 로그는 MissionPlanner/logs 디렉토리 내에 기체의 유형 이름(예: QUADCOPTER)의 폴더 속에 저장된다.


로그의 자동 분석


가장 간단하게 분석하는 방법은 일반적인 문제 영역을 분석하는 기본적인 자동 보고서를 생성하는 것이다. "Log Analysis" 버튼을 누르고, MissionPlanner/logs 디렉토리에 이미 저장된 로그를 선택한다. 로그는 기체의 유형 이름(예: QUADCOPTER 또는 ROVER 등) 안에 들어 있다. 로그를 선택하면 다음과 같은 보고서가 생성된다.



수동 로그 점검

좀 더 자세한 분석을 하려면 "Review a Log"를 선택하고, 이미 MissionPlanner/logs 디렉토리에 저장된 로그를 선택한다. 로그를 선택하면, 아래와 같은 그래프를 볼 수 있다. dataflash의 기본 포맷은 다음과 같다.


  • 제일 좌측에 Line Number가 나타난다.
  • 소프트웨어 버전과 보드 유형이 윗부분에 표시된다.
  • 다음으로 FMT 메시지가 온다. 각각의 메시지 유형에 대한 행의 제목이 표시된다.
  • 다음으로 PARM 행이 온다. 각각의 Parameter(EEPROM에 나타나는 순서로)와, 비행 시작시의 값이 표시된다.
  • 다음으로 GPS, IMU 등의 비행 데이터 메시지가 온다.


먼저 적절한 행을 선택하면 행의 제목이 적절하게 갱신된다. 다음으로 원하는 열을 찾아 클릭한 뒤, "Graph left" 또는 "Graph right" 버튼을 누르면 그래프로 표시된다. 위의 예에서는 ATT의 Roll-In 과 Roll 데이터를 그린 것이다. 마우스 휠을 사용하면 확대/축소할 수 있다. 그래프에서 면적을 선택하여 확대하거나 축소할 수도 있다. 오른쪽 마우스 버튼을 누르고 "Set Scale to Default"를 누르면 기본 배율로 축소된다. 여기를 보면 간단한 투토리얼을 볼 수 있다.


첫번째 행을 선택하면 그 행(비행 데이터 메시지 유형)을 기준으로 필터링 할 수 있다. 예를 들어 드롭다운 메뉴에서 ATT를 선택하고 "Filter"를 누르면 ATT 메시지 외에는 모두 감춰진다. 이는 미션중 사용된 여러가지 비행모드 ("MODE" 메시지)를 볼때 특히 유용하다. 첫번째 열을 다시 클릭하고 "Cancel"을 누르면 필터가 취소된다.



저정을 원하는 데이터를 설정하기

LOG_BITMASK 파라미터는 dataflash에 어떤 메시지 유형이 저장될지 제어하는 데 사용된다. 최신 버전의 미션 플래너와 ardupilot의 경우, Config/Tuning -> Standard Params 화면에 들어가서 각각의 메시지를 선택할 수 있다.



예전 버전의 경우, 아래와 같이 드롭다운을 사용해 선택할 수 있다.



상세 메시지 (Copter 용)

ATT (자세 Attitude 정보)


 DesRoll(RollIn)

 조종자가 원하는 roll 각도 (단위 centi-degree). Roll left 가 음수임

 Roll

 기체의 실제 roll 각도 (단위 centi-degree). Roll left 가 음수임

 DesPitch(PitchIn)

 조종자가 원하는 pitch 각도 (단위 centi-degree). Pitch forward 가 음수임

 Pitch

 기체의 실제 pitch 각도 (단위 centi-degree). Pitch forward 가 음수임

 DesYaw(YawIn)

 조종자가 원하는 yaw 각도비율 (-4500 ~ 4500. deg/sec 이 아님). 시계방향이 양수임

 Yaw

 기체의 실제 heading (단위 centi-degrees. 북쪽이 0)

 NavYaw

 원하는 각도 (단위 centi-degrees)


ATUN (Auto Tune 개요)

 

 Axis : 1 = Roll, 1 = Pitch

 TuneStep

 0 = 수평쪽으로 복귀(test 전후)
 1 = 테스팅 (즉, 반응을 시험하기 위해 twitch 실시)

 2 = 이득 갱신 (twitch 완료 및 이득 조정)

 RateMin

 이 테스트 중 최소 기록 속도

 RateMax

 이 테스트 중 최대 기록 속도

 RPGain

 테스트중인 Rate P 이득 값 (Rate P gain value being tested)

 RDGain

 테스트중인 Rate D 이득 값

 SPGain

 테스트중인 Stabilize P 이득


ATDE(Auto Tune Step Details)

 Angle

 테스트 중인 축에 대한 콥터의 각(단위 centi-degrees)

 Rate

 테스트 중인 축에 대한 콥터의 회전속도


CAM(카메라 셔터가 작동된 시간 및 위치)

 GPSTime

 epoch 기준 GPS 시간 (단위 milliseconds)

 Lat

 가속도계 + GPS 위도 추정값

 Lon

 가속도계 + GPS 경도 추정값

 Alt

 가속도계 + 기압계 추정 고도 (지상 기준 cm)

 Roll

 기체 roll 각도 (centi-degrees)

 Pitch

 기체 pitch 각도 (centi-degrees)

 Yaw

 기체의 방향 (centi-degrees)


CMD (지상국에서 받은 명령 또는 Mission의 일부로 시행된 명령)


 CTot 

 미션에 포함된 총 명령수

 CNum

 이 명령의 미션중 순서 (0 : home, 1 : 첫번쨰 명령 등)

 Cld

 mavlink message id

 Copt

 옵션 parameter (여러가지 다른 목적에 사용됨)

 Prm1

 이 명령의 parameter(여러가지 다른 목적에 사용됨)

 Alt

 이 명령의 고도(미터)

 Lat

 이 명령의 위도

 Lon

 이 명령의 경도


MAG(COMPASS) (raw compass, offset and compassmot 보정 값)


 Field

 설명

 MagX, MagY, MagZ

 x,y,z 축에 대한 원시 자기장 값

 OfsX, OfsY, OfsZ

 원시 자기장 offsets (COMPASS_LEARN 이 1로 되어 있을 때만 변경됨)

 MOfsX, MOfsY, MOfsZ

 Compassmot compensation for throttle or current


CURR(CURRENT) (배터리 전압, 전류, 보드 전압 정보)

 Field

 설명 

 Thr

 조종사가 입력한 throttle (1~1000)

 ThrInt

 Throttle 총합 (즉 이 비행중 총 throttle output의 합계)

 Volt

 배터리 전압 (volt *100)

 Curr

 배터리로부터 끌어온 전류 (amp *100)

 Vcc

 보드 전압

 CurrTot

 배터리로부터 끌어온 전류 총합


CTUN (Thrttle 과 Altitude 정보)


 Field 

 설명

 ThrIn

 조종사의 throttle. (1~1000)

 SonAlt

 지상기준 고도 (sonar)

 BarAlt

 지상기준 고도 (기압계)

 WPAlt

 AltHold, Loiter, RTL, Auto 모드에서 원하는 고도

 NavThr

 -

 AngBst

 콥터의 기울기의 결과에 따른 Throttle 증가분(0~1000) (기울이는 동안 고도를 잃지 않도록 모든 조종자 Throttle 및 AutoPilot Throttle에 자동으로 추가됨)

 CRate

 가속도계 + 기압계 climb rate 예측(cm/s)

 ThrOut

 모터에 보내진 최종 Throttle 출력(0~1000). Stabilize 모드에서는 일반적으로 ThrIn + AngBst 와 동일함

 DCRate

 조종사가 원하는 상승속도 cm/s


D32, DU32 (single data values. signed 32bit 정수 또는 unsigned 32bit 정수)


 Field

 설명

 id

 변수에 대한 고유번호. 2가지 가능성만 있음

 

 7 = bit mask of internal state (각각의 비트의 의미는 AP 구조의 정의에 있음)  여기??

 

 9 = simple mode's initial heading (centi-degrees)


EKF (Extended Kalman Filter)


Log Information here (Dev Wiki) 개요 here


ERR (에러 메시지)

서브시스템과 에러코드


Error 

 설명 

 1: Main

 (사용되지 않음)

 2: Radio

 ECode 1: "Late Frame", APM의 내장 PPM encoder가 최소2초 이상 갱신을 제공하지 않았다는 뜻

 3: Compass

 ECode 1: 전자나침반 초기화 실패(하드웨어 문제)
 ECode 2: 값 읽기 실패 (하드웨어 문제)
 ECode 3: 이상의 오류가 해결됨

 4: Optical Flow

 ECode 1: 초기화 실패(하드웨어 문제)

 5: Throttle Failsafe

 ECode 1: FS_THR_VALUE이하로 내려감. RX/TX간의 통신두절 가능성

 ECode 0: 이상의 오류가 해결됨. 

 6. Battery Failsafe

 ECode 1: 전압이 LOW_VOLT이하로 떨어짐 또는 총 사용 용량이 BATT_CAPACITY를 초과함

 7. GPS Failsafe

 ECode 1: 5초이상 GPS 고정이 안됨
 ECode 0: GPS 고정 복원

 8. GCS Failsafe

 ECode 1: GCS joystick 갱신이 최소 5초간 없음
 ECode 0: 지상국으로부터의 갱신 복원

 9. Fence

 ECode 1: 고도 Fence 침범함
 ECode 2: Circular Fence 침범함

 ECode 3: 고도 및 Circular Fence 모두 침범함

 ECode 0: 기체가 Fence 내로 돌아옴

 10. Flight Mode

 ECode 0~17 : 기체가 원하는 비행모드로 진입할 수 없음

 0=Stabilize, 1=Acro, 2=AltHold, 3=Guided, 4=Guided, 5=Loiter, 6=RTL, 7=Circle, 8=Position, 9=Land, 10=OF_Loiter, 11=Drift, 13=Sport, 14=Flip, 15=AutoTune, 16=PosHold, 17=Brake

 11. GPS 

 ECode 2: GPS 고장 ECode 0 : GPS 고장 해소

 12. Crash Check

 ECode 1: 충돌 감지됨


EV: (event 번호)


이벤트 번호 전체는 defines.h에 있음. 아래는 일반적인 이벤트임


 Event No

 설명

 10

 시동걸림 

 11

 시동 해제

 15

 Auto Armed (조종사가 throttle을 0이상으로 올렸고, autopilot이 throttle의 제어를 가질 자유가 있음?

 16

 이륙

 18

 Land Complete

 25

 Set Home (Home 위치 좌표를 획득함)


GPS 


 Field

 설명

 Status

 0: no GPS, 1 = GPS but no fix, 2= GPS with 2D fix, 3= GPS with 3D fix

 Time

 epoph 기준 GPS 시간 (milliseconds)

 NSats

 현재 사용중인 GPS의 수

 HDop

 GPS 정확도 측정 (1.5이하이면 좋음. 2.0 이상이면 좋지 않음) 

 https://en.wikipedia.org/wiki/dilution_of_precision

 Lat 

 GPS에 따른 위도

 Lng

 GPS에 따른 경도

 RelAlt

 가속도계+기압계 고도 (meter) 

 Alt

 GPS에 따른 고도 (비행콘트롤러에서 사용하지 않음)

 SPD

 수평 지상 속도 (m/s)

 GCrs

 지상 방향 (0=북쪽)


IMU (가속도계 + 자이로 정보)


 Field

 설명

 GyrX, GyrY, GyrZ

 원시 자이로 회전률 (degrees/sec)

 AccX, AccY, AccZ

 원시 가속도계 값 (m/s/s)


Mode (비행모드)


 Field

 설명

 Mode

 비행모드 (string으로 표시됨. 예: STABILIZE, LOITER 등)

 ThrCrs

 Throttle cruise(0~1000) 안정적인 호버링에 필요한 Throttle 값에 대한 autopilot의 최적 추정치


NTUN (항법 정보)


 Field 

 설명

 WPDst

 다음 지점까지 거리(또는 loiter target) 단위 cm. Loiter/RTL/AUTO모드에서만 갱신됨

 WPBrg

 다음 지점에 대한 방위각 (degrees)

 PErX

 콥터와 다음지점간의 중간 목표지 거리 (위도 방향)

 PErY

 콥터와 다음지점간의 중간 목표지 거리 (경도 방향)

 DVelX

 위도 방향의 원하는 속도 cm/s

 DVelY

 경도 방향의 원하는 속도 cm/s

 VelX

 위도 방향의 실제 가속도계 + GPS 속도 추정치

 VelY

 경도 방향의 실제 가속도계 + GPS 속도 추정치

 DAcX

 위도 방향의 원하는 가속도 cm/s/s

 DAcY

 경도 방향의 원하는 가속도 cm/s/s 

 DRol

 원하는 roll 각도 centi-degrees 

 DPit 

 원하는 pitch 각도 centi-degrees 


PM (성능 모니터링)

Field 

 설명

 RenCnt

 DCM renormalization count - 숫자가 높으면 DCM에서 문제가 있을 수 있는 가능성 (아주 희박함)

 RenBlw 

 DCM renormalization blow-up count - 마지막 PM으로부터 DCM가 DCM 매트릭스를 완전히 재구성한 횟수. 대부분 무해하지만, 숫자가 계속 증가하면 DCM이 고도를 계산하는데 문제가 있을 수 있음(아주 희박함)

 FixCnt

 마지막 PM 수신 이후 GPS 고정이 수신된 숫자 (이게 의미가 있나?)

 NLon

 오래 수행된 main loop의 수 (즉, 원래인 10ms 보다 5% 이상 오래 수행된 루프)

 NLoop

 마지막 PM 메시지 표시 이후 총 loop의 수. 천천히 수행된 루프의 비율을 계산하는데 사용될 수 있음. (15% 이상이 되어서는 안됨) 참고로 이 값은 autopilot의 clock speed에 따라 달라짐

 MaxT

 마지막 PM 메시지 이후 최대 loop 시간.  10,000 에 근접해야 하지만, 모터가 시동되는 경우 6백만까지 올라갈 수 있음

 PMT

 GCS에서 heartbeat가 수신될 때마다 증가하는 숫자

 I2CErr

 마지막 PM 메시지 이후 I2C 오류의 수. I2C 오류는 I2C 버스에서의 문제를 가르키며, 이는 메인 루프의 속도를 떨어뜨려 성능문제를 초래함


RCOUT (각 RC 출력에 대한 PWM 출력)


RC1, RC2 등 : 비행콘트롤러에서 esc/모터/RC 출력으로 보내진 PWM 명령


KMZ 파일 보기


dataflash 로그를 다운로드받으면 자동적으로 KMZ 파일이 생성된다. 이 파일을 사용하면 구글어스(Google Earth)에서 비행 궤도를 볼 수 있다. 자세한 내용은 텔레메트리 로그 페이지를 참고하라.


비디오 투토리얼



===

원문 : http://ardupilot.org/copter/docs/common-downloading-and-analyzing-data-logs-in-mission-planner.html