로그 분석

드론이 비행하는 동안 축적되는 비행데이터는 개발 혹은 운용을 위해 매우 중요하다. 특히 비행이 불안정하거나 임무가 실패로 돌아가는 경우에는 다양한 원인이 있는데 로그가 그 원인을 파악하고 사고를 방지하는데 큰 도움을 준다. 아래는 그 분석 방법과 도구에 대해 정리한 것이다. 

 

px4 에서 공식적으로 지원하는 log 파일 포맷은 ulog 이다.

이 로그는 uorb 메세지로 전송되는 데이터를 포함하고 있다.

자세한 내용은 아래를 참조.

https://dev.px4.io/en/log/flight_log_analysis.html

 

로그의 저장

이 로그는 microsd 카드가 탑재되는 모든 px4지원 비행제어기에서 사용할 수 있는데 qgroundcontrol에서 설정하는 방법에 따라 전원을 켬과 동시에 시작하거나 시동(Arming) 이후부터 시동 끔(Disarming)까지를 저장하는 방법을 선택할 수 있다.

저장된 로그는 매 비행 후  microsd 카드에 저장된다.

 

로그 분석 도구

가장 손쉽고 빠르게 비행데이터를 확인하는 방법은 아래 사이트에 로그 파일을 전송하여 받아보는 방법이 있다.

https://logs.px4.io/

이 도구를 사용하면 각 비행 단계, 제어기 입/출력, 센서 데이터 등을 매우 상세한 그래프로 보여준다. 

하지만 이 도구는 다음과 같은 몇가지 단점들이 존재한다.

1. 온라인에 접속하여 사용하는 방식이므로 인터넷 연결이 원활하지 않은 실외 혹은 방화벽이 설정된 환경에서는 사용하기 어려움.

2. 특정한 데이터를 입맛대로 조작하거나 다른 데이터와 비교하기가 용이하지 않음.

 

그래서 ulog파일을 엑셀이나 다른 도구로 불러들일 수 있도록 .csv형식으로 변환해주는 도구도 존재한다.

 

pyulog

https://github.com/PX4/pyulog 에서 제공하는 pyulog는 다음과 같은 기능을 제공한다.

    • ULog 파일을 읽어들이는 파이썬 라이브러리 제공하여 다양한 분석 도구와 시각화 도구에 적용할 수 있다.

ULog 정보를 추출하고 표시하는 스크립트 제공:

    • ulog_info: ULog파일로부터 정보를 표시
    • ulog_messages: Ulog파일로부터 로그 메세지를 표시
  • ulog_params: ULog파일로부터 파라미터 자료를 추출
  • ULog파일을 다른 포맷으로 변환하는 스크립트 제공:
    • ulog2csv: ULog 파일을 (여러가지의) CSV 파일로 변환.
    • ulog2kml: ULog 파일을 (여러가지의) KML 파일로 변환.

 

위 패키지를 활용하면 csv파일로 변환해서 데이터를 추출할 수 있다.

 

plotUlog 패키지

위 기능을 활용하여 매틀랩 같은 도구에서 데이터를 입맛에 맞게 조작할 수 있는 방법이 없을까 해서 궁리끝에 octave라는 오픈소스 프로젝트를 접하게 되었다. 

매트랩은 물론 아주 좋은 그래핑 및 수학 연산 도구이지만 개인이나 소규모 회사가 구입해서 사용하기에는 비용이라는 문제가 가장 크다. 

그런데 octave 에서는 Matlab 못지 않은 수학 연산 도구와 강력한 플롯 생성 기능을 제공하면서 무료로 사용할 수 있다. 그래서 이 도구를 활용하기로 결정하고 방법을 찾아보니 의외로 어렵지 않게 분석 도구를 만들 수 있었다.

 

 

이 도구를 사용하면 센서(Sensors) 데이터, 비행 자세(Attitude), 고도(Altitude) 위치(Position) 제어 그리고 전력 사용(Power)에 대해 세밀한 분석 결과를 보여준다.

 

사용 방법은 다음과 같다.

 

설치하기

1. octave 의 설치.

 현재 옥타브는 공식적으로 리눅스, 맥 그리고 윈도우를 지원한다. 

https://www.gnu.org/software/octave/ 현재 4.4.2 버전까지 나와있는데 맥에서는 4.4.1까지 업데이트가 이루어져 있다. 

 

Ubuntu 환경

필자는 우분투 16.04 버전에서 apt install 로 설치하였다.

[2022/8/9 업데이트] 현재 우분투 20.04 버전에서 GNU Octave, version 5.2.0 버전이 설치되는 것을 확인하였다.

 

맥 환경

맥에서는 homebrew 를 설치하고 brew install octave로 설치하는것이 가장 빠른 방법이다.

 

2. pyulog 설치

설치 방법은 위에 언급한 깃허브 페이지에서 git clone 후 설치 방법에 따라 진행한다.

 

[2022/8/9 업데이트] Ubuntu 20.04 버전을 사용하는 경우 pip 로 간단히 설치 가능하다.

pip install pyulog

다만 위 방법으로 설치 시 ulog2csv 실행파일은 ~/.local/bin 에 설치되는데, 이 파일을 실행할 수 있게 하려면 octave의 환경변수에 해당 위치를 추가해주어야 한다.

홈 디렉토리에 .octaverc 파일을 하나 만들고 다음 내용을 추가해준다.

setenv ('PATH', ['/home/본인의HOME이름/.local/bin:', getenv('PATH')])

또는 터미널에서 다음을 입력한다.

echo 'setenv ("PATH", [\047'$HOME'/.local/bin:\047, getenv("PATH")])' >> ~/.octaverc

3. octave 의 workspace로 사용할 폴더를 만들고 터미널에 다음을 입력하여 패키지를 다운로드 한다.

git clone https://github.com/kyuhyong/plotulog.git

 

실행하기

1. octave를 실행한 다음 위 패키지를 다운로드한 폴더로 이동한다.

 

2. sdcard에서 ulog 파일을 위 폴더에 복사한 다음 파일명을 다음과 같이 지정한다.

"log###.ulg"

여기서 ###는 001과 같은 숫자이다. 이렇게 파일명을 지정하면 ###의 숫자를 가지고 csv파일을 생성하게 되므로 편리하다.

다른 이름으로 저장하게 되면 동작하지 않을 수 있으므로 주의.

 

3. octave 터미널에서 다음을 입력하면 분석 작업을 시작한다.

plotUlog("log###.ulg", "Description")

여기서 Description 은 변환된 csv파일이 저장될 폴더 이름에 추가하는 구분자이다. 이렇게 입력을 하게 되면 하위에 "###_Description"이라는 폴더가 생성되고 여기에 모든 로그와 추출한 그래프가 저장된다.

 

4. 이미 분석이 완료된 후 다시 실행하기 위해서는 단지 폴더 이름만 입력하면 된다.

plotUlog("###_Description/") 이라고 입력하면 다시 그래프를 그리기 시작한다.

 

 

 

 

 

+ Recent posts