PX4에서 SD메모리 카드에 따른 Logging 성능

최근에 진행한 PX4 관련 연구 중에서 개발자에게 꼭 필요한 내용을 공유하고자 합니다.

실험 환경 :

  • FC보드 : Pixhawk2.1 (총 3대에서 테스트)
  • PX4 Firmware : PX4 v1.7.3
  • micro SD 카드 : Pixhawk2.1 기본 (3개), SanDisk Extreme U3 32GB (2개)
  • 그래프 그리기 도구 : Python3, Matplotlib

드론의 경우 사용자가 지속적으로 비행체의 상태를 모니터링 하기가 쉽지 않고 비행 후에 비행체의 상태를 꼼꼼히 체크하기 위해서는 Logging 데이터가 필요합니다. 단순 PX4 기반 드론을 비행하는 경우뿐만 아니라 실험이나 연구에서 Logging 데이터를 활용할 일이 많이 있습니다.
따라서 얼마나 안정적으로 Logging이 되는지가 추후 비행 분석을 위해서 중요합니다.

– PX4 SD카드 벤치마킹 결과 –

이런 중요성 때문에 이미 PX4에 SD카드 성능을 테스트해 볼 수 있는 app이 포함되어 있습니다. 하지만 성능 테스트 결과만 가지고 drop이 얼마나 일어나는지를 사용자가 유추하기란 쉽지 않습니다.

다음과 같은 상황에서 테스트를 진행해 보았습니다.

  • 일정하게 동작하는 환경을 구성하기 위해서 최소 app만 남기고 모두 disable
  • 250Hz로 data를 생성하는 테스트 app을 구현(4ms마다 data 생성)
  • logger app이 최대 속도로 data를 SD카드에 logging하도록 설정 (logger 속도 최대)
  • 30분 동안 logger 기록 후 lost topic 분석 (아래 그래프 참고)

 

Pixhawk2.1 기본 SD카드 시 topic lost :

SanDisk Extreme U3 32GB 사용시 topic lost :

결론

비행데이터를 안정적으로 추출하기 위해서는 SanDisk Extreme U3 32GB 제품을 강력히 추천합니다.
SanDisk Extreme U3 32GB를 사용하는 경우 250Hz로 기록하는 경우 10회 이상 테스트에서 drop이 전혀 발생하지 않았습니다.
이에 비해 Pixhawk2.1에 포함된 SD카드의 경우 random하게 많은 topic들이 drop되는 것을 관찰할 수 있었습니다.
단순히 SD카드별로 읽기/쓰기 속도만 가지고 얼마나 drop이 일어나는지 감이 오지 않았는데 topic을 기준으로 측정하니 성능차이가 크게 느껴졌습니다.

[개발] PX4에서 SD메모리 카드에 따른 Logging 성능

Leave a Reply

Your email address will not be published. Required fields are marked *