brunch

You can make anything
by writing

C.S.Lewis

by Matthew Min 민연기 Sep 25. 2016

Betaflight 업데이트후 시동이 걸리지 않을 때

FLIGHT LOG

일주일에 몇 번씩이나 신기술과 신제품이 넘치는 레이싱 드론 바닥에서 뭐니 뭐니 해도 최근 가장 핫한 이슈는 Betaflight 3.0.0의 정식 Release입니다.

F4 지원부터 전혀 새로운 PID, 기본이 되어 버린 Super Rates, 모터 진동에 의해 발생한 노이즈를 잡아주는 Notch Filter까지 이것만 설치하면 내 레이싱 드론이 Skizo 같이 날아 줄 것만 같습니다.
일부러 날을 잡아 몸과 마음을 정결하게 하고 Betaflight 3.0.0을 설치해 봅니다. 혹시 실수하지 않을까 꼼꼼히 챙기면서 진행합니다. Betaflight Configurator가 생기고 업데이트가 더 간편해졌습니다.


Cleanflight vs Betaflight

                                                                

그런데 설치를 마치고 말로만 듣던 Arming이 되지 않는 현상이 생깁니다. Configurator에서 해당 Aux가 정상적으로 동작하는 것도 몇 번이나 확인했는데 전혀 동작하지 않습니다. 나와 긴 시간을 같이 보냈던 구형 Naze32는 빨간 불을 깜빡이기만 할 뿐입니다.

깜박이는 LED는 Status LEDs입니다. 뭔가 Status에 문제가 있는 듯합니다.

검색을 해보면 문제는 채널 설정을 잘 못했거나 min throttle 이 min_check 보다 낮이 않아 생긴 문제라고 합니다. 하지만 제 경우는 그렇지 않은 듯합니다. 다시 2.9.1을 설치하면 아무 일 없었다는 듯이 날아 줍니다.

Betaflight 공식 가이드에 이 Arming 문제 해결책으로 다음이 가이드 되어 있습니다.
- 업데이트할 때 Full Chip Erase를 해봅니다.
: 이것은 예전부터 종종 발생하던 문제로 업데이트할 때는 항상 Full Chip Eraise를 하는 것이 좋습니다.
- CLI 편집화면에서는 Arming 되지 않습니다. 이때는 Status LED가 빠르게 점멸합니다.
: CLI 화면에서 Arming할 일이 그다지 생각나지 않으므로 저와는 별 상관없을 것 같습니다.
- Accelerometer를 켈리브레이션 해봅니다.
: Manual 만 비행하기 때문에 저는 평소에도 항상 거두기 때문에 캘리브레이션 문제는 아닐듯합니다.
- RX 설정이 맞는지 확인해 봅니다.
:  Receiver 창에서 각 채널들이 잘 동작합니다.
- AUX 채널을 줄여 봅니다.
: 저는 아직도 촌스럽게 PWM 수신기를 쓰고 있습니다. 선을 몇 가닥 끊을까 잠시 고민이 됩니다.
- Status LED가 천천히 점멸된다면 CPU가 과부하 상태입니다.
: 저 깜박이는 LED가 천천히 점멸되는 것인지는 모르겠습니다. 일단 이게 가장 의심이 됩니다.

CPU에게 주어진 일이 어떤 것들이 있는지 확인하려면 CLI 창에 "tasks"라고 입력하면 됩니다. 그럼 윈도우의 작업 관리자처럼 어떤 작업들이 실행 중인지 볼 수 있습니다. 그리고 "status"라고 입력하면 CPU 상태를 알 수 있습니다.

제 레이싱 드론의 상태는 다음과 같습니다.
# tasks
Task list          rate/hz  max/us  avg/us maxload avgload     total/ms
00 - (      SYSTEM)      4       2       0    0.5%    0.5%         0
01 - (    GYRO/PID)   1923    1166     493  224.7%   95.3%     11588
04 - (          RX)     24      80      49    0.6%    0.6%        21
05 - (      SERIAL)     14     182       3    0.7%    0.5%         9
06 - (     BATTERY)     16      88       2    0.6%    0.5%         3
07 - (      BEEPER)     14       9       0    0.5%    0.5%         0
Total (excluding SERIAL)                    226.9%   97.4%
 
# status
System Uptime: 19 seconds, Voltage: 9 * 0.1V (1S battery - NOT PRESENT), CPU:100%
CPU Clock=72MHz, GYRO=MPU6050
Cycle Time: 513, I2C Errors: 0, config size: 1372
2.9.1 때와 동일한 설정인데도 어찌 된 영문인지 CPU가 100%에 육박합니다. Status LED는 이것 때문이었나 봅니다. tasks를 살펴보면 다른 기능들은 그다지 CPU를 사용하지 않는 것 같지만 GYRO/PID는 maxload를 살펴보면 224.7%나 됩니다. 3.0.0으로 올라오면서 새로 적용된 2DOF PID Controller는 제 연약한 Naze32에게는 무리인가 봅니다.

Gyro Update Frequency를 낮추어 CPU에 여유를 주어야겠습니다. 2kHz를 포기하는 것은 아쉽지만 (대부분 요즘은 4kHz 쓰지 않으시나요?) 1.6kHz로 낮춥니다.
1.6kHz
# tasks
Task list          rate/hz  max/us  avg/us maxload avgload     total/ms
00 - (      SYSTEM)      9       5       0    0.5%    0.5%         1
01 - (    GYRO/PID)   1594    1166     494  186.3%   79.2%     60131
04 - (          RX)     49      83      49    0.9%    0.7%       255
05 - (      SERIAL)     99     219       2    2.6%    0.5%        37
06 - (     BATTERY)     49      87       1    0.9%    0.5%        32
07 - (      BEEPER)     98       9       0    0.5%    0.5%        12
Total (excluding SERIAL)                    189.1%   81.4%
 
# status
System Uptime: 106 seconds, Voltage: 8 * 0.1V (1S battery - NOT PRESENT), CPU:10%
CPU Clock=72MHz, GYRO=MPU6050
Cycle Time: 634, I2C Errors: 0, config size: 1372

100%에서 10%로 줄어들었습니다. 내친김에 몇 가지 키고 꺼봅니다.

1.6kHz +Blackbox 설정인 경우
# tasks
Task list          rate/hz  max/us  avg/us maxload avgload     total/ms
00 - (      SYSTEM)      9       2       0    0.5%    0.5%         0
01 - (    GYRO/PID)   1597    1166     493  186.7%   79.2%      6902
04 - (          RX)     49      79      46    0.8%    0.7%        29
05 - (      SERIAL)     99     223       2    2.7%    0.5%         8
06 - (     BATTERY)     49      88       1    0.9%    0.5%         3
07 - (      BEEPER)     98       9       0    0.5%    0.5%         1
Total (excluding SERIAL)                    189.4%   81.4%
 
# status
System Uptime: 17 seconds, Voltage: 8 * 0.1V (1S battery - NOT PRESENT), CPU:10%
CPU Clock=72MHz, GYRO=MPU6050
Cycle Time: 632, I2C Errors: 0, config size: 1372
블랙박스는 아무 영향도 안 미치나 봅니다.

1.6kHz +Blackbox + Accelerometer 설정인 경우
# tasks
Task list          rate/hz  max/us  avg/us maxload avgload     total/ms
00 - (      SYSTEM)      9       3       0    0.5%    0.5%         0
01 - (    GYRO/PID)   1386    1166     492  162.1%   68.6%      6761
02 - (       ACCEL)    742     397     167   29.9%   12.8%      1299
03 - (    ATTITUDE)     90     308     277    3.2%    2.9%       248
04 - (          RX)     49      80      49    0.8%    0.7%        32
05 - (      SERIAL)     89     348       2    3.5%    0.5%        17
06 - (     BATTERY)     45      88       1    0.8%    0.5%         6
07 - (      BEEPER)     90       8       0    0.5%    0.5%         1
Total (excluding SERIAL)                    197.8%   86.5%
 
# status
System Uptime: 28 seconds, Voltage: 7 * 0.1V (1S battery - NOT PRESENT), CPU:40%
CPU Clock=72MHz, GYRO=MPU6050, ACC=MPU6050.n
Cycle Time: 725, I2C Errors: 0, config size: 1372
예상했던 데로 Accelerometer는 영향이 있네요.

아쉽지만 Gyro Update Frequency를 1.6kHz로 설정하니 아무 문제없이 동작합니다. PID는 어느 버전에서부터 인지 기본 값이 내가 조종한 값보다 더 좋아져 이젠 기본 설정으로만 날려 봅니다. 어서 동네 호버링을 할 만한 곳을 찾아 시험 비행을 해 봅니다.

3.0.0의 PID 성능을 평가하는데 참조하시라고 창피한 비행 솜씨지만 공유합니다. 그렇습니다. 2kHz 면 아니 4kHz 면 틀림없이 Skizo나 Charpu처럼 비행할 수 있는 것입니다. 말해 놓고 갑자기 무척 어두워 집이다.

결론입니다. 괜한 걸로 고민하지 마시고 용량 넉넉하고 빠른 F3 FC로....
              


더 많은 드론 이야기를 만나보세요 : FPV미니드론

http://book.naver.com/bookdb/book_detail.php?bid=13584005


작가의 이전글 드론 조종기, 컴퓨터에 연결하기
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari