레이싱 드론의 비행제어용으로 많이 사용하는 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

resource BEEPER 1 A12

resource MOTOR 1 A08

resource MOTOR 2 A11

resource MOTOR 3 B06

resource MOTOR 4 B07

resource MOTOR 5 B08

resource MOTOR 6 B09

resource PPM 1 A00

resource PWM 1 A00

resource PWM 2 A01

resource PWM 3 A02

resource PWM 4 A03

resource PWM 5 A06

resource PWM 6 A07

resource PWM 7 B00

resource PWM 8 B01

resource LED_STRIP 1 A06

resource SERIAL_TX 1 A09

resource SERIAL_TX 2 A02

resource SERIAL_TX 11 A07

resource SERIAL_TX 12 B01

resource SERIAL_RX 1 A10

resource SERIAL_RX 2 A03

resource SERIAL_RX 11 A06

resource SERIAL_RX 12 B00

resource INVERTER 2 B02

resource I2C_SCL 2 B10

resource I2C_SDA 2 B11

resource LED 1 B03

resource LED 2 B04

resource SPI_SCK 2 B13

resource SPI_MISO 2 B14

resource SPI_MOSI 2 B15

resource ADC_BATT 1 A04

resource ADC_RSSI 1 A01

resource ADC_CURR 1 B01

resource ADC_EXT 1 A05


resource MOTOR ## ## 형식으로 되어있는데

여기서 첫번째 번호는 채널, 두번째는 할당된 포트 번호를 의미한다.


SERVO가 할당되어있지 않으므로 MOTOR 3~6까지를 SERVO 1~4로 할당해야한다.

이때 resource SERVO 1 B06 이라고 입력하면 이미 할당되어 있다고 나오므로 먼저 MOTOR에 할당된 포트를 Free해야한다.

"resource MOTOR 3 none" 이라고 입력하면 


# resource MOTOR 3 none

Freed

Freed 라고 출력한다.

나머지 MOTOR 4,5,6 에 대해서 각각 resource none 을 해준다.

이제 각 포트 B06, B07, B08, B09에 대해서 SERVO 1, 2, 3, 4를 할당하기 위해

# resource SERVO 1 B06 # resource SERVO 2 B07 # resource SERVO 3 B08 # resource SERVO 4 B09

라고 입력한다.

모두 입력한 다음 반드시 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 출력을 설정한다면


# mmix reset

# mmix 0 1.0 0.0 0.0 0.3 # Left Engine # mmix 1 1.0 0.0 0.0 -0.3 # Right Engine

을 입력하면 조종기와 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번부터 진행하고 서보 순서는 다음과 같다.


idServo slot
0GIMBAL PITCH
1GIMBAL ROLL
2ELEVATOR / SINGLECOPTER_4
3FLAPPERON 1 (LEFT) / SINGLECOPTER_1
4FLAPPERON 2 (RIGHT) / BICOPTER_LEFT / DUALCOPTER_LEFT / SINGLECOPTER_2
5RUDDER / BICOPTER_RIGHT / DUALCOPTER_RIGHT / SINGLECOPTER_3
6THROTTLE (Based ONLY on the first motor output)
7FLAPS

서보의 순서 중 0, 1 은 Motor에 할당되어 있으므로 2번을 엘리베이터, 3, 4번 채널을 에일러론, 5번 채널을 러더로 설정한다.


# smix reset

% Rule Servo Source Rate Speed Min Max Box # smix 0 3 0 100 0 0 100 0 % Roll / Aileron # smix 1 4 0 100 0 0 100 0 % Roll / Aileron # smix 3 5 2 100 0 0 100 0 % Yaw / Rudder # smix 2 2 1 100 0 0 100 0 % Pitch / Elevator


이렇게 입력하면 각 서보 채널에 대해 롤/피치 요 값이 적용되는 것을 확인할 수 있다.


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를 입력하면


# smix reverse s i0 i1 i2 i3 i4 i5 i6 i7 i8 i9 i10 i11 i12 i13 0 n n n n n n n n n n n n n n 1 n n n n n n n n n n n n n n 2 n n n n n n n n n n n n n n 3 n n n n n n n n n n n n n n 4 n n n n n n n n n n n n n n 5 n n n n n n n n n n n n n n 6 n n n n n n n n n n n n n n 7 n n n n n n n n n n n n n n

각 행은 서보의 순서 혹은 채널을 의미하고 열은 입력 소스(Input sources)를 의미한다.


idInput sources
0Stabilised ROLL
1Stabilised PITCH
2Stabilised YAW
3Stabilised THROTTLE
4RC ROLL
5RC PITCH
6RC YAW
7RC THROTTLE
8RC AUX 1
9RC AUX 2
10RC AUX 3
11RC AUX 4
12GIMBAL PITCH
13GIMBAL ROLL

에일러론으로 설정된 3번 서보의 Stabilized Roll가 Reverse 되어있다면 다음과 같이 입력한다.

# smix reverse 3 0 r

마찬가지로 엘리베이터로 설정된 2번 서보의 Stabilized Pitch 가 Reverse 되어있다면 다음과 같이 입력한다.

# smix reverse 2 1 r

smix reverse 를 입력하면 다음과 같이 변경되었음을 확인할 수 있다.

# smix reverse

s i0 i1 i2 i3 i4 i5 i6 i7 i8 i9 i10 i11 i12 i13 0 n n n n n n n n n n n n n n 1 n n n n n n n n n n n n n n 2 n r n n n n n n n n n n n n 3 r n n n n n n n n n n n n n

save 후 reboot 하여 제대로 동작하는지 확인해보면 된다.

# save


주의! 이때 조종기 자체 설정에서 출력을 Reverse 하면 안된다.



+ Recent posts