블랙박스 비행데이터 기록기(Blackbox flight data recorder)
개요(Introduction)
이 기능은 모든 control loop iteration 상의 비행데이터 정보를 시리얼포트를 통해 OpenLog to be recorded 와 같은 외부 저장장치, 일부 비행콘트롤러에 존재하는 내장 데이터플래시 칩 또는 내장 SD 카드 소켓으로 전송합니다.
비행후에는 아래의 대화식 로그 뷰어(log viewer)를 사용하여 결과 로그를 볼 수 있습니다.
https://github.com/cleanflight/blackbox-log-viewer
아울러 블랙박스 해독 도구를 사용하여 로그를 해석용 CSV 파일로 변환하거나, 블랙박스 렌더링 도구를 사용하여 비행로그를 비디오로 생성할 수 있습니다. 이들 도구는 아래 저장소에 있습니다.
https://github.com/cleanflight/blackbox-tools
로그 데이터(Logged data)
블랙박스는 비행콘트롤 루프의 모든 반복(every iteration of the flight control loop) 마다 비행 데이터를 기록합니다. 블랙박스는 현재시간(ms), 각각의 축에 대한 P/I/D 보정, RC의 조종간 위치(expo 커브를 적용한 뒤), 자이로 데이터, 가속도계 데이터(low-pass filtering을 설정한 후), 기압계, 초음파 값, 3축 전자나침반 값, 원시 VBAT 및 현재 측정값, 신호수신강도(RSSI), 각각의 ESC에 보내진 명령 등을 기록합니다. 이들 자료는 근사치 혹은 정밀도 희생없이 완전히 기록되므로, 아주 미묘한 문제도 비행 데이터 로그로부터 탐지할 수 있습니다.
GPS 데이터는 새로운 GPS 데이터가 존재하면 기록됩니다. CSV 해독기가 이 데이터를 해독하지만, 비디오 생성기는 아직 GPS 정보는 전혀 표시하지 못합니다. (추후 추가 예정)
지원되는 콥터(Supported configurations)
비행로그에 기록될 수 있는 최대 데이터 속도는 상당히 제한적이어서, load가 증가되면 비행 로그에 프레임이 빠지거나 에러가 발생할 수 있습니다.
블랙박스는 일반적으로 트리콥터와 쿼드콥터에서 사용됩니다. 헥사콥터나 옥타콥터에서도 작동하지만, 기록해야 할 모터가 많아서 비행데이터로 전송할 데이터가 많습니다. 이로 인해 생략되는 프레임이 많습니다. 브라우저 기반의 로그 뷰어가 헥사/옥타 콥터를 지원하지만, 명령어기반 블렉박스 렌더링 도구는 현재 트리콥터와 쿼드콥터만 지원합니다.
클린플라이트의 looptime 설정이 비행로그에 저장되는 갱신 속도를 결정합니다. 클린플라이트의 looptime 기본값은 3500 입니다. looptime 설정을 2400 보다 작게 하면 전송 데이터가 많아 일부 프레임이 빠지게 되는 걸을 경험할 수도 있습니다. 그러한 경우 블랙박스 설정에서 sample rate를 줄이 거나, 로거의 baudrate를 25000으로 올릴 필요가 있습니다. 블랙박스 기능에 대한 설정에 대한 자세한 내용은 마지막 절을 참고하세요.
Setting up logging
먼저 블랙박스 기능을 활성화시켜야 합니다. 클린플라이트 설정프로그램에서 설정(Configuration) 탭으로 들어간 뒤, 페이지 맨 아래 쪽에 있는 "BLACKBOX" 기능을 체크하고, "Save and reboot"를 클릭합니다.
이제 비행로그를 어떤 장치에 저장할 지 결정해야 합니다. 로그 데이터를 시리얼포트를 통해 OpenLog serial data logger 와 같은 외부 저장장치를 사용하여 microSDHC 카드에 기록하거나, 호환가능한 비행콘트롤러가 있다면 로그를 내장 데이터플래시 저장장치에 저장할 수도 있습니다.
OpenLog serial data logger
OpenLog는 시리얼포트를 사용하여 비행콘트롤러에 부착하여, 비행 로그를 MicroSC 카드에 기록할 수 있는 소형 기록장치입니다.
OpenLog는 SkarkFun에서 표준 "OpenLog 3" 펌웨어를 설치하여 판매중입니다. 이 오리지널 OpenLog 펌웨어가 블랙박스와 잘 동작하기는 하지만, 빠지는 프레임의 수를 줄이기 위해서는 좀더 성능이 높은 OpenLog Blackbox 펌웨어로 재설치해야 합니다. OpenLog 펌웨어의 변종인 OpenLog Blackbox 펌웨어는 아울러, OpenLog가 클린플라이트 호환가능한 설정과 115200 baud를 기본값으로 하도록 확실하게 해줍니다.
블랙박스 버전의 OpenLog 펌웨어와 OpenLog에 설치하는 방법은 여기에서 찾을 수 있습니다.
microSDHC
어떤 microSDHC 카드를 쓰느냐는 시스템의 성능에 매우 중요합니다. OpenLog는 카드에 매우 작은 데이터를 지연없이 자주 기록할 수 있어야 하므로, 모든 카드가 가능하지 않습니다. SD-카드 속도가 등급이 높다고 하여 반드시 성능이 높다는 보장은 할 수 없습니다.
성능이 늦은 microSDHC 카드
- Generic 4GB Class 4 microSDHC card - 프레임이 빠지는 비율이 약 1%로, 특히 가장 흥미로운 부분에 집중됩니다.
- Sandisk Ultra 32GB (16GB 버전과는 달리 이 버전은 기록 지연이 매우 나쁩니다.)
성능이 확인된 microSDHC 카드
- Transcend 16GB Class 10 UHS-I microSDHC (전형적인 오류율 < 0.1%)
- Sandisk Extreme 16GB Class 10 UHS-I microSDHC (전형적인 오류율 < 0.1%)
- Sandisk Ultra 16GB (이론적 성능의 절반뿐이 안되지만, it performs only half as well as the Extreme in theory, 그래도 좋은 편입니다.)
반드시 모든 카드는 SD Association의 특별 포맷 도구를 사용하여 포맷해야 합니다. OpenLog가 가장 높은 속도로 기록할 수있도록 보장해주기 때문입니다. FAT로 포맷해도 무방하지만, FAT32로 포맷하는 것을 추천합니다.
OpenLog를 위한 시리얼포트 선택
먼저 블랙박스를 (내장 플래시메모리가 아닌)시리얼포트를 통해 로그하도록 설정해야 합니다. 설정프로그램(Configurator)의 CLI 탭으로 들어가서 [set blackbox_device=SERIAL] 을 입력하고 저장합니다.
클린플라이트에서 어떤 시리얼포트를 OpenLog 에 (즉 블랙박스 포트) 연결할지 설정해야 합니다. 설정프로그램의 포트(Ports) 탭에서 설정할 수 있습니다.
이때 반드시 하드웨어 시리얼포트(예: Naze32의 중앙에 있는 2핀 Tx/Rx 헤더가 있는 UART1)를 사용해야 합니다. SoftSerial 포트로 사용할 수 있지만, 19200 baud로 제한 되어 있기 때문에, 로그 속도(logging rate)를 많이 줄여야 합니다. 따라서 SoftSerial 포트는 추천하지 않습니다.
하드웨어 시리얼 포트를 사용할 때, 블랙박스는 최소 115200 baud 이상으로 설정해야 합니다. looptime이 빠를 때(<2500)에는 최소한 250,000 이상으로 설정해야만 프레임이 빠지는 걸 줄일 수 있습니다.
블랙박스용 시리얼포트는 MSP 프로토콜외에 다른 기능(예: GPS, 텔레메트리)과 공유하면 안됩니다. MSP가 블랙박스와 동일한 포트를 사용하면, 보드의 시동이 꺼졌을 때만 MSP가 활성화되고, 시동이 켜지면 블랙박스가 활성화됩니다. 즉, 시동을 넣은 상태에서는 설정프로그램(Configurator)과 MSP가 필요한 다른 기능 (OSD, 블루투스 무선통신 설정 앱 등)을 사용할 수 없습니다.
시리얼포트의 "TX"핀을 OpenLog의 "RXI" 핀에 연결합니다. 시리얼포트의 RX 핀은 OpenLog에 연결해서는 안됩니다. 시동이 꺼졌을 때 해당 시리얼포트를 공유한 다른 기능과 간섭이 발생하기 때문입니다.
Naze32 시리얼포트 선택
Naze32에서 보드위쪽에 있는 TX/RX 핀은 UART1에 연결되어 있으며, USB 커넥터와 공유되어 있습니다. 따라서, USB를 통하여 설정프로그램을 사용하기 위해서는 MSP를 UART1에 대해 활성화시켜야 합니다. 블랙박스가 Naze32위에 있는 핀에 연결되면, 시동을 건 상태에서는 설정프로그램이 정지됩니다. 하지만, 시동이 걸린 상태에서 동일한 핀을 사용하는 OSD 가 설치되어 있지 않고, FrSky 텔레메트리를 사용하지 않는다면, 이 설정이 가장 좋은 방법입니다.
보드 아래쪽의 RC3 핀은 UART2의 Tx 핀입니다. 블랙박스를 UART2에 설정했다면, 시동이 걸렸을 때도 MSP를 UART1에서 사용할 수 있으며, 따라서 블랙박스와 함께 설정프로그램도 계속하여 사용할 수 있습니다. 참고로 병렬식 PWM(PARALLEL_PWM) 모드에서는 입력채널이 6개인 보드의 경우, RC3/RC4 핀이 UART2의 Tx와 Rx로 사용됩니다. 클린플라이트에서는 포트(Ports)텝에서 UART2가 활성화되었을 때 자동적으로 논리적 채널을 이동시키므로, Naze32의 3번부터 6번 핀에 연결된 수신기 핀을 2만큼 이동시켜야 합니다.
OpenLog는 3.3V에서 12V까지 사용할 수 있습니다. 표준 5V BEC에 Naze32 를 연결한 경우, spare motor header의 +5V와 GND 핀을 OpenLog에 전원으로 사용할 수도 있습니다.
기타 비행콘트롤러 하드웨어
Naze32 이외의 보드에서는 사용할 수 있는 하드웨어 시리얼 장치가 더 많을 수 있습니다. 이 경우, 블랙박스에 어떻게 연결할지는 해당 장치의 문서를 참고하세요. 아래는 중요한 기준입니다.
- SoftSerial 보다는 하드웨어 시리얼포트를 사용하세요.
- MSP를 제외한 다른 기능(GPS, 텔레메트리)와 공유할 수 없습니다.
- MSP가 동일한 UART를 사용하게되면, 시동상태에서 MSP는 작동을 정지합니다.
OpenLog 설정
microSC 카드를 꼽은 상태로 OpenLog에 전원을 넣고 10초 정도 기다렸다가 전원을 내리고 microSD 카드를 컴퓨터에 연결합니다. 카드에 있는 "CONFIG.TXT" 파일을 텍스트 에디터로 엽니다. OpenLog의 현재 설정된 baud rate(대부분 115200 또는 9600)이 보이실 겁니다. 이 baud rate를 설정프로그램(Configurator)의 포트(Ports) 텝에서 입력한 값(대부분 115200 또는 250000)에 맞춰 고쳐줍니다.
이제 파일을 저장하고 다시 OpenLog에 삽입합니다.
If your OpenLog didn't write a CONFIG.TXT file, create a CONFIG.TXT file with these contents and store it in the root of the MicroSD card:
OpenLog가 CONFIG.TXT 파일을 생성하지 못할 경우, 이러한 내용으로 CONFIG.TXT 파일을 만들고 MicroSD 카드의 최상위 폴더에 저장합니다.
115200 baud
original OpenLog 펌웨어를 사용할 경우, 아래의 설정을 사용하세요.
115200,26,0,0,1,0,1 baud,escape,esc#,mode,verb,echo,ignoreRX
오픈로그 보호
OpenLog는 검정색 전기테이프 또는 열수축튜브를 사용하여 탄소섬유와 같은 전도성 프레임과 격리시킬 수 있지만, 이렇게 할 경우, 상태 LED가 보기 힘들게 됩니다. 투명 열수축 튜브를 사용하는 게 좋습니다.
내장 dataflash 메모리
일부 비행콘트롤러는 보드상에 SPI NOR dataflash 칩이 있는데, OpenLog를 사용하는 대신 여기에 비행로그를 저장할 수 있습니다.
Naze32 풀버전 과 CC3D는 "m25p16" 2 MB dataflash 저장칩이 있습니다. 이 칮은 8개의 발이 달린 작은 칩으로, Naze32의 화살표 방향 표시의 바닥면에 있습니다. 이 칩은 Naze32 "아크로(Acro)" 버전에는 없습니다.
SPRacingF3에는 이보다 큰 8 MB 플래시메모리가 달려있어 훨씬 오랫동안 저장할 수 있습니다.
아울러 다음과 같은 칩들도 지원됩니다.
- Micron/ST M25P16 - 16 Mbit / 2 MByte
- Micron N25Q064 - 64 Mbit / 8 MByte
- Winbond W25Q64 - 64 Mbit / 8 MByte
- Micron N25Q0128 - 128 Mbit / 16 MByte
- Winbond W25Q128 - 128 Mbit / 16 MByte
dataflash 기록 활성화
설정프로그램의 CLI 탭에서 [set blackbox_device=SPIFLASH] 라고 입력하고 저장하시면 됩니다.
블랙박스 설정
블랙박스는 현재 데이터 로그 속도를 조절할 수 있는 두 가지(blackbox_reate_num 과 blackbox_rate_denom)) 설정이 존재합니다. 이 두 인수로 분수를 취하면 (blackbox_rate_num / blackbox_rate_denom) 비행콘트롤러의 control loop iterations 중 어떤 부분을 로그할 것인지 결정할 수 있습니다. 기본값은 1/1 즉, 모든 iteration을 로그하는 것입니다.
속도가 늦은 MicroSD 카드를 사용할 경우, 데이터 로그 속도를 낮추어 망가진 로그 프레임의 수를 줄일 수 있습니다. 1/2 로 설정하면 대부분의 기체에서 작동합니다.
로그 속도 설정은 클린틀라이트 설정프로그램의 CLI 탭에서 다음과 같은 명령을 입력하면 됩니다.
set blackbox_rate_num = 1 set blackbox_rate_denom = 2
looptime이 2400 이고 rate가 1/1 인 제 쿼드콥터의 데이터 속도는 약 10.25kB/s 입니다. 이 속도라면 제가 사용중인 OpenLog의 16GB MicroSD카드로는 18일치의 비행로그를 저장할 수 있습니다.
SoftSerial을 사용하여 로그하는 경우, 로그속도를 1/32 로 낮추어야 합니다. 이 로그속도에서도 looptime이 1000 보다 빠르다면 성공적인 로그를 장담할 수 없습니다.
OpenLog가 아닌 내장 dataflash 칩에 저장하는 경우, 2MB가 아주 작은 용량이라는 걸 명심하셔야 합니다. 로그속도 1/1 에 looptime 2400의 경우 약 3분 정도면 끝납니다. 비행중 발생하는 기체문제를 조사하는데는 충분하지만, 저장시간을 늘리기 위해서는 로그 속도를 낮추어야 합니다.
저장 시간을 최대로 하려면, 로그 속도를 1/32 (최소값)까지 낮춰야 합니다. 이렇게 하면 10-20Hz 정도 (650byte/sec)로 저장됩니다. 이 정도의 로그 속도라면 2MB dataflash 칩으로도 약 50분간의 비행 데이터를 저장할 수 있습니다. 다만 자세한 사항은 거의 사라지고, 진동이나 PID 설정 문제등 비행 문제를 진단하는 데는 사용할 수 없습니다.
사용(Usage)
블랙박스는 기체에 시동을 걸자마자 데이터를 기록하기 시작하며, 시동을 끄면 정지합니다.
기체에 부저가 부착되어 있다면, 클린플라이트의 시동 삐삐소리를 사용하여 블랙박스 로그와 비행 비디오를 동기화 시키면 됩니다. 클린플라이트의 시동 삑삑 소리는 "길고, 짧고" 패턴입니다. 처음 긴 삑 소리의 시작이 비행데이터로그에서는 파란색으로 보이므로, 이것을 사용하여 저장된 음향 트랙과 동기화 시키세요.
기체를 시동해제시킬 경우 몇초 정도 기다려주어야 블랙박스가 데이터 저장을 마무리할 수 있습니다.
사용법 - OpenLog
매번 전원이 꺼졌다 켜지면, OpenLog는 새로운 로그파일을 생성합니다. 전원은 끄지 않고 여러번 시동을 걸었다가 해제했다를 반복하면, 이들 로그는 하나의 파일로 병합됩니다. 이 경우, 명령줄 도구를 사용하려면 그림을 그리거나 해도록하고자 하는 여러번의 비행중 하나를 선택해야 합니다.
OpenLog 에 전원이 들어와 있는 상태로 SD 카드를 삽입하거나 제거하지 마세요.
사용법 - Dataflash 칩
비행이 끝나면 클린플라이트 설정프로그램(Configurator)를 사용하여 내장 메모리에 있는 내용을 컴퓨터로 다운로드 받습니다. "dataflash" 탭으로 가서 "플래시를 파일로 저장(save flash to file...)" 버튼을 클릭합니다. 로그 저장은 2-3분 정도 소요됩니다.
로그를 다운로드 받은 후, "플래시 삭제(erase flash)"버튼을 클릭하여 칩에 들어 있는 내용을 삭제하셔야 합니다.
내장메모리가 가득찬 상태에서 새로운 비행을 기록하려고 하면, 블랙박스 로그기록은 비활성화되고 아무것도 기록되지 않습니다.
사용법 - 보드에 있는 SD 카드 소켓
비행콘트롤러에 전원을 넣기 전에 반드시 SD 카드를 삽입해야 합니다. 전원이 켜진 상태로 SD 카드를 제거할 수는 있지만, 먼저 시동을 해제하고 5초 정도 기다렸다가 빼야 합니다. (아니면 파일시스템이 망가질 수 있습니다.)
클린플라이트는 기체가 시동이 걸릴 때마다 "LOG" 폴더에 새로운 파일을 생성합니다. 블랙박스 로깅 스위치(Logging switch)를 사용하여 전체 비행동안 기록을 중지시시키면, 시동이 해제된 후 빈 로그 파일은 삭제됩니다.
로그를 읽으려면 반드시 SD 카드를 제거하여 컴퓨터에서 읽어야 합니다. (설정프로그램에서는 이 로그들을 직접 읽어낼 수 없습니다.)
사용법 - 로깅 스위치(Logging Switch)
내장 플래시 칩에 기록을 할 경우, 저장공간을 아끼기 위해 블랙박스 저장 기능을 비활성화 하고싶을 수 있습니다. 이렇게 하려면 설정프로그램(Congifurator)의 모드(Modes) 탭에서 AUX 채널중 하나에 블랙박스 비행모드를 추가합니다. 모드를 추가한 후에는 이 모드를 활성화 시켜야만 블랙박스가 활성화됩니다.
로그파일의 헤더는 항상 시동때 기록됩니다. 로그기록이 정지되었을 때도 마찬가지입니다. 비행중에 언제든지 기록을 정지시키거나 재개시킬 수 있습니다.
기록된 로그 보기(Viewing recorded logs)
비행후에는 확장자가 .TXT 인 비행로그파일이 여러개 생성됩니다.
이러한 .TXT 비행로그 파일은 웹브라우저에 Cleanflight Blackbox Explorere 확장프로그램을 설치하면 대화식으로 확인할 수 있습니다.
https://github.com/cleanflight/blackbox-log-viewer
이 확장프로그램을 이용하면 로그를 그래프로 표시하여 자세히 살펴볼 수 있습니다. 로그를 비디오로 내보내어 다른 사람들과 공유할 수도 있습니다.
블랙박스 해독 도구(blackbox decode tool)을 사용하여 비행로그를 CSV 파일로 변환하여 분석하거나, 블랙박스 렌더링 도구(blackbox render tool)을 사용하여 PNG 프레임으로 렌더링하고 이를 사용하여 비디오로 변환할 수도 있습니다.
이러한 도구와 사용법은 아래 저장소를 확인하세요.
https://github.com/cleanflight/blackbox-tools
====
원문 : https://github.com/cleanflight/cleanflight/blob/master/docs/Blackbox.md
이전글 : G-Tune 사용법(G-Tune Instructions)
다음글 : Baseflight 에서 전환하기(Migrating from baseflight)