레이싱 드론의 비행제어용으로 많이 사용하는 naze32 보드에 비행기를 설정하여보았다.
이미 이전 포스팅에서 naze32 보드로 비행기제어하기 라는 포스팅에서 설정방법을 올렸으나. 최신 Cleanflight Configurator 버전 2.4.0(2019/1/7현재) 에서는 제대로 동작하지 않는 현상이 있어서 다시 정리해보았다.
0. FW 올리기
Cleanflight Configurator 2.4.0 를 실행 후 Firmware Flasher탭에서
Board : NAZE
Firmware version: CLFL_v2.3.2 버전을 다운로드 후 Flash한다.
또는 아래 링크에서 직접 다운로드 한다.
https://github.com/cleanflight/cleanflight/releases/tag/CLFL_v2.3.2
*2019/1/7 현재 Naze32 rev6 보드의 경우 가장 최신버전은 2.3.2까지 동작한다. 2.4 이후 버전은 제대로 동작하지 않음
1. Ports 설정
UART2 에서 Serial Rx를 Enable 하고 재부팅한다.
2. Configuration 설정
Mixer = Custom Airplane
ESC/Motor 프로토콜은 PWM으로 설정한다.
RC수신기는 SBUS 형식의 수신기를 사용하므로 SBUS로 선택한다.
3. 조종기 입력 설정
Receiver 탭에서 RC조종기 입력을 설정하고 각 스틱이 제대로 입력되는지 확인한다.
주의! 조종기 스틱 입력에 Reverse 가 설정되어있다면 모두 해재한다.
4. Resource OUTPUT 변경하기
펌웨어 1.14 그리고 Cleanflight configurator 1.1.0 버전에서는 mixer를 airplane으로 설정 시 pwm output mapping이 자동으로 서보 모터에 할당되었지만 그 이후에는 CLI에서 수동으로 resource를 할당해주어야하는 것으로 바뀌었다.
방법은 다음과 같다.
주의! CLI에서 입력하는 모든 명령어는 마지막에 save를 입력하고 재부팅해야 eeprom에 저장되어 설정된다. 그냥 연결을 끄면 모든 변경 내용이 사라지므로 주의한다.
CLI 탭에서 resource를 입력하면 아래와 같이 출력된다.
resource MOTOR ## ## 형식으로 되어있는데
여기서 첫번째 번호는 채널, 두번째는 할당된 포트 번호를 의미한다.
SERVO가 할당되어있지 않으므로 MOTOR 3~6까지를 SERVO 1~4로 할당해야한다.
이때 resource SERVO 1 B06 이라고 입력하면 이미 할당되어 있다고 나오므로 먼저 MOTOR에 할당된 포트를 Free해야한다.
"resource MOTOR 3 none" 이라고 입력하면
Freed 라고 출력한다.
나머지 MOTOR 4,5,6 에 대해서 각각 resource none 을 해준다.
이제 각 포트 B06, B07, B08, B09에 대해서 SERVO 1, 2, 3, 4를 할당하기 위해
라고 입력한다.
모두 입력한 다음 반드시 save 를 입력하고 재부팅한다.
5. Mixer설정
지금까지는 각 출력 포트를 서보의 채널과 연결시키는 작업이었다면 다음은 각 서보 채널을 비행기의 throttle, aileron, elevator, rudder 입력으로 연결하는 것이다.
자세한 방법은 https://cleanflight.readthedocs.io/en/stable/Mixer/ 에 설명되어 있다.
모터 출력은 mmix 에서 담당하고 각 파라미터는 다음과 같이 구성된다.
mmix
[n(모터 순서)]
[throttle 입력(0.0혹은1.0)]
[roll: roll 입력에 대한 authority(-1.0~1.0)]
[pitch: pitch 입력에 대한 authority(-1.0~1.0)]
[yaw: yaw 입력에 대한 authority (-1.0~1.0)]
따라서 엔진이 2개인 비행기의 경우 yaw입력에 대해 1번 엔진과 2번 엔진에 differential 출력을 설정한다면
을 입력하면 조종기와 gyro의 yaw 입력에 따라 차등하여 엔진 출력을 조절할 수 있다.
서보 모터 출력은 smix에서 담당하고 각 파라미터는 다음과 같이 구성된다.
smix
[rule]
[n(서보 순서)]
[Source ID: 0=Stab Roll, 1=Stab Pitch, 2=Stab Yaw, 3=Stab Throttle, 4=RC Roll, 5=RC Pitch, 6=RC Yaw...]
[Rate : 100]
[Speed: 0]
[Min: 0]
[Max: 100]
[Box: 0]
smix 설정은 Rule 0번부터 진행하고 서보 순서는 다음과 같다.
id | Servo slot |
---|---|
0 | GIMBAL PITCH |
1 | GIMBAL ROLL |
2 | ELEVATOR / SINGLECOPTER_4 |
3 | FLAPPERON 1 (LEFT) / SINGLECOPTER_1 |
4 | FLAPPERON 2 (RIGHT) / BICOPTER_LEFT / DUALCOPTER_LEFT / SINGLECOPTER_2 |
5 | RUDDER / BICOPTER_RIGHT / DUALCOPTER_RIGHT / SINGLECOPTER_3 |
6 | THROTTLE (Based ONLY on the first motor output) |
7 | FLAPS |
서보의 순서 중 0, 1 은 Motor에 할당되어 있으므로 2번을 엘리베이터, 3, 4번 채널을 에일러론, 5번 채널을 러더로 설정한다.
이렇게 입력하면 각 서보 채널에 대해 롤/피치 요 값이 적용되는 것을 확인할 수 있다.
6. 서보 Reverse
이제 보드에 서보를 연결하고 조종기를 켜서 제대로 동작하는지 확인해보자.
조종면 확인은 다음과 같다.
에일러론부터 시작하여 엘리베이터, 러더 순서로 진행한다.
Roll Left -> Aileron left goes up, Aileron right goes down
Roll Right -> Aileron left goes down, Aileron right goes up
Elevator Push -> Elevator goes down
Elevator Pull -> Elevator goes up
Rudder Left -> Rudder goes left
Rudder Right -> Rudder goes right
만약 서보의 방향이 반대로 움직인다면 smix reverse의 설정을 변경해주어야 한다.
다시 CLI에서 smix reverse를 입력하면
각 행은 서보의 순서 혹은 채널을 의미하고 열은 입력 소스(Input sources)를 의미한다.
id | Input sources |
---|---|
0 | Stabilised ROLL |
1 | Stabilised PITCH |
2 | Stabilised YAW |
3 | Stabilised THROTTLE |
4 | RC ROLL |
5 | RC PITCH |
6 | RC YAW |
7 | RC THROTTLE |
8 | RC AUX 1 |
9 | RC AUX 2 |
10 | RC AUX 3 |
11 | RC AUX 4 |
12 | GIMBAL PITCH |
13 | GIMBAL ROLL |
에일러론으로 설정된 3번 서보의 Stabilized Roll가 Reverse 되어있다면 다음과 같이 입력한다.
마찬가지로 엘리베이터로 설정된 2번 서보의 Stabilized Pitch 가 Reverse 되어있다면 다음과 같이 입력한다.
smix reverse 를 입력하면 다음과 같이 변경되었음을 확인할 수 있다.
save 후 reboot 하여 제대로 동작하는지 확인해보면 된다.
주의! 이때 조종기 자체 설정에서 출력을 Reverse 하면 안된다.
'Drone' 카테고리의 다른 글
VTOL Mini Skywalker 수직 이착륙기 만들기 (1) | 2019.02.12 |
---|---|
Hobbyking Bixler 무인기 프로젝트[Part.2] 드론 자동 비행 (0) | 2018.12.02 |
Freestyle FPV 드론 만들기 (0) | 2018.11.06 |
px4 ulog 분석 툴 소개 (9) | 2018.10.04 |
Cleanflight에서 naze32 보드로 비행기 제어하기 (0) | 2018.03.22 |