drone class

Drone 클래스 생성

1
def __init__(self, flagCheckBackground = True, flagShowErrorMessage = False, flagShowLogMessage = False, flagShowTransferData = False, flagShowReceiveData = False):
Copied!
Default
flagCheckBackground
수신 받은 데이터를 백그라운드에서 확인
True
flagShowErrorMessage
에러 메세지 표시
False
flagShowLogMessage
로그 메세지 표시
False
flagShowTransferData
송신 데이터 배열 표시
False
flagShowReceiveData
수신 데이터 배열 표시
False

Drone 클래스의 public 함수 구성

이름
설명
isOpen()
시리얼 포트가 열린 경우 True 반환
open(portname)
시리얼 포트 열기. 포트가 열린 경우 True 반환
close()
시리얼 포트 닫기
makeTransferDataArray(header, data)
전송할 데이터 바이트 배열 생성
transfer(header, data)
데이터 전송(내부에서 makeTransferDataArray 함수를 실행함)
check()
수신 받은 데이터 확인. 데이터를 받은 경우 DataType을 반환
checkDetail()
수신 받은 데이터 확인. Header와 Data를 튜플로 반환
setEventHandler(dataType, eventHandler)
특정 타입의 데이터를 수신했을 때 호출할 사용자 지정 함수 등록
getHeader(dataType)
지정한 타입의 데이터와 함께 받은 헤더 반환
getData(dataType)
지정한 타입의 데이터 반환(데이터가 없으면 None 반환)
getCount(dataType)
지정한 타입의 데이터를 받은 횟수를 반환(데이터가 없으면 None 반환)
convertByteArrayToString(dataArray)
바이트 배열을 Hex 문자열로 변경하여 반환

Drone 클래스 데이터 수신 처리부

이름
설명
_receiving()
데이터 수신 Thread, 수신 받은 데이터를 버퍼에 저장
check()
버퍼에 저장된 데이터를 한 바이트씩 읽어 receiver에 전달. 하나의 데이터 블럭을 받은 경우 _handler()를 호출하여 받은 데이터를 파싱해서 저장하고 dataType을 반환. 받은 데이터가 없으면 DataType.None_ 반환
_handler()
헤더를 내부에 저장. 데이터는 파싱하여 내부에 저장. 이벤트 처리 함수가 등록된 경우 해당 함수 호출

함수 목록

일반

이름
설명
sendPing
핑 전송
sendRequest
데이터 요청
sendPairing
페어링 설정

조종

이름
설명
sendTakeOff
이륙
sendLanding
착륙
sendStop
정지
sendControl
비행 조종
sendControlWhile
지정한 시간 동안 비행 조종 명령 전송
sendControlPosition16
이동(RF)
sendControlPosition
이동(UART, USB)

설정

이름
설명
sendCommand
명령 전송
sendCommandLightEvent
명령 전송 + LED 이벤트
sendCommandLightEventColor
명령 전송 + LED 이벤트(RGB)
sendCommandLightEventColors
명령 전송 + LED 이벤트(팔레트)
sendModeControlFlight
비행 제어 모드 변경
sendHeadless
헤드리스 설정
sendTrimIncDec
Trim 한 단계씩 변경
sendTrim
Trim 값을 지정하여 변경
sendWeight
Weight 설정
sendLostConnection
연결이 끊긴 후 반응 시간 설정
sendFlightEvent
비행 이벤트 실행
sendClearBias
바이어스 초기화
sendClearTrim
Trim 초기화
sendSetDefault
장치 설정 초기화

모터

이름
설명
sendMotor
모터 동작 제어
sendMotorSingle
단일 모터 동작 제어

LED

이름
설명
sendLightManual
수동 제어
sendLightModeColor
모드 설정 (RGB)
sendLightModeColors
모드 설정 (팔레트)
sendLightEventColor
이벤트 설정 (RGB)
sendLightEventColors
이벤트 설정 (팔레트)
sendLightDefaultColor
기본 모드 설정 (RGB)

조종기 LCD 디스플레이

이름
설명
sendDisplayClearAll
전체 지우기
sendDisplayClear
일부분 지우기
sendDisplayInvert
일부분 반전
sendDisplayDrawPoint
점 찍기
sendDisplayDrawLine
선 그리기
sendDisplayDrawRect
사각형 그리기
sendDisplayDrawCircle
원 그리기
sendDisplayDrawString
문자열 쓰기
sendDisplayDrawStringAlign
문자열을 정렬하여 쓰기

조종기 버저

이름
설명
sendBuzzer
소리 내기
sendBuzzerMute
묵음
sendBuzzerMuteReserve
묵음 예약
sendBuzzerScale
음계를 사용하여 소리 내기
sendBuzzerScaleReserve
음계를 사용하여 소리 내기 예약
sendBuzzerHz
주파수를 사용하여 소리 내기
sendBuzzerHzReserve
주파수를 사용하여 소리 내기 예약

조종기 진동

이름
설명
sendVibrator
진동 설정
sendVibratorReserve
진동 예약

함수 설명

sendPing

    핑 전송
    다른 장치와의 연결 상태를 확인할 때 사용
1
def sendPing(self, deviceType):
Copied!
변수 이름
형식 또는 범위
설명
deviceType
DeviceType
전송할 대상 장치

sendRequest

    데이터 요청
    지정한 장치에 데이터를 요청할 때 사용
1
def sendRequest(self, deviceType, dataType):
Copied!
변수 이름
형식 또는 범위
설명
deviceType
DeviceType
전송할 대상 장치
dataType
DataType
데이터의 타입

sendPairing

    페어링 설정
    지정한 장치의 페어링 설정을 변경할 때 사용
1
def sendPairing(self, deviceType, addressLocal, addressRemote, channel):
Copied!
변수 이름
형식 또는 범위
설명
deviceType
DeviceType
전송할 대상 장치
address0
0 ~ 65535
장치의 주소 0
address1
0 ~ 65535
장치의 주소 1
address2
0 ~ 65535
장치의 주소 2
scramble
0 ~ 127
스크램블
channel
0 ~ 81
채널

sendTakeOff

    이륙
    만약 이륙 준비 상태가 아니라면 자동으로 이륙 준비 상태를 거치게 됨
1
def sendTakeOff(self):
Copied!

sendLanding

    착륙
1
def sendLanding(self):
Copied!

sendStop

    드론 모드에 관계없이 강제로 정
1
def sendStop(self):
Copied!

sendControl

    비행 조종
1
def sendControl(self, roll, pitch, yaw, throttle):
Copied!
변수 이름
형식 또는 범위
설명
roll
-100 ~ 100
Roll
pitch
-100 ~ 100
Pitch
yaw
-100 ~ 100
Yaw
throttle
-100 ~ 100
Throttle

sendControlWhile

    비행 조종
    비행 및 주행에 모두 사용할 수 있습니다. timeMs에 지정한 ms동안 연속으로 조종 명령을 전송합니다.
1
def sendControlWhile(self, roll, pitch, yaw, throttle, timeMs):
Copied!
변수 이름
형식 또는 범위
설명
roll
-100 ~ 100
Roll
pitch
-100 ~ 100
Pitch
yaw
-100 ~ 100
Yaw
throttle
-100 ~ 100
Throttle
timeMs
0 ~ 1,000,000
동작 시간(ms)

sendControlPosition16

    드론 이동 명령
    모든 변수에 2byte 정수를 사용하는 대신 position과 velocity의 값에 x10을 적용.
1
def sendControlPosition16(self, positionX, positionY, positionZ, velocity, heading, rotationalVelocity):
Copied!
변수 이름
형식
범위
단위
설명
positionX
Int16
-100 ~ 100(-10.0 ~ 10.0)
meter x 10
앞(+), 뒤(-)
positionY
Int16
-100 ~ 100(-10.0 ~ 10.0)
meter x 10
좌(+), 우(-)
positionZ
Int16
-100 ~ 100(-10.0 ~ 10.0)
meter x 10
위(+), 아래(-)
velocity
Int16
5 ~ 20(0.5 ~ 2.0)
m/s x 10
위치 이동 속도
heading
Int16
-360 ~ 360
degree
좌회전(+), 우회전(-)
rotationalVelocity
Int16
10 ~ 360
degree/s
좌우 회전 속도

sendControlPosition

    드론 이동 명령
    position과 velocity는 실수 값, heading과 rotationalVelocity에는 정수 값 사용
1
def sendControlPosition(self, positionX, positionY, positionZ, velocity, heading, rotationalVelocity):
Copied!
변수 이름
형식
범위
단위
설명
positionX
float
-10.0 ~ 10.0
meter
앞(+), 뒤(-)
positionY
float
-10.0 ~ 10.0
meter
좌(+), 우(-)
positionZ
float
-10.0 ~ 10.0
meter
위(+), 아래(-)
velocity
float
0.5 ~ 2.0
m/s
위치 이동 속도
heading
Int16
-360 ~ 360
degree
좌회전(+), 우회전(-)
rotationalVelocity
Int16
10 ~ 360
degree/s
좌우 회전 속도

sendCommand

    명령 전송
    드론에 명령을 전달할 때 사용합니다.
    option에는 각 형식의 value 값 또는 숫자 값을 넣으셔야 합니다.
1
def sendCommand(self, commandType, option = 0):
Copied!
변수 이름
형식 또는 범위
설명
commandType
CommandType
명령 타입
option
ModeControlFlight
옵션
FlightEvent
Headless
Trim
UInt8

sendCommandLightEvent

    명령 + LED 이벤트
    드론에 명령을 전달할 때 사용합니다.
    option에는 각 형식의 value 값 또는 숫자 값을 넣으셔야 합니다.
1
def sendCommandLightEvent(self, commandType, option, lightEvent, interval, repeat):
Copied!
변수 이름
형식 또는 범위
설명
commandType
CommandType
명령 타입
option
ModeControlFlight
옵션
FlightEvent
Headless
Trim
UInt8
lightEvent
UInt8
LED 동작 모드
interval
0 ~ 65535
내부 밝기 제어 함수 호출 주기
repeat
0 ~ 255
반복 횟수

sendCommandLightEventColor

    명령 + LED 이벤트(RGB)
    드론에 명령을 전달할 때 사용합니다.
    option에는 각 형식의 value 값 또는 숫자 값을 넣으셔야 합니다.
1
def sendCommandLightEventColor(self, commandType, option, lightEvent, interval, repeat, r, g, b):
Copied!
변수 이름
형식 또는 범위
설명
commandType
CommandType
명령 타입
option
ModeControlFlight
옵션
FlightEvent
Headless
Trim
UInt8
lightEvent
UInt8
LED 동작 모드
interval
0 ~ 65535
내부 밝기 제어 함수 호출 주기
repeat
0 ~ 255
반복 횟수
r
0 ~ 255
Red
g
0 ~ 255
Green
b
0 ~ 255
Blue

sendCommandLightEventColors

    명령 + LED 이벤트(Palette)
    드론에 명령을 전달할 때 사용합니다.
    option에는 각 형식의 value 값 또는 숫자 값을 넣으셔야 합니다.
1
def sendCommandLightEventColors(self, commandType, option, lightEvent, interval, repeat, colors):
Copied!
변수 이름
형식 또는 범위
설명
commandType
CommandType
명령 타입
option
ModeControlFlight
옵션
FlightEvent
Headless
Trim
UInt8
lightEvent
UInt8
LED 동작 모드
interval
0 ~ 65535
내부 밝기 제어 함수 호출 주기
repeat
0 ~ 255
반복 횟수
colors
Colors
색상 팔레트 인덱스

sendModeControlFlight

    비행 제어 모드 설정
    드론 비행 제어 모드를 변경합니다.
1
def sendModeControlFlight(self, modeControlFlight):
Copied!
변수 이름
형식 또는 범위
설명
modeControlFlight
ModeControlFlight
비행 제어 모드

sendHeadless

    Headless 설정
1
def sendHeadless(self, headless):
Copied!
변수 이름
형식 또는 범위
설명
headless
Headless
Headless 설정

sendTrimIncDec

    Trim 설정
1
def sendTrimIncDec(self, trimIncDec):
Copied!
변수 이름
형식 또는 범위
설명
trimIncDec
TrimIncDec
트림 설정

sendTrim

    비행 Trim 설정
1
def sendTrim(self, roll, pitch, yaw, throttle):
Copied!
변수 이름
형식 또는 범위
설명
roll
-200 ~ 200
Roll
pitch
-200 ~ 200
Pitch
yaw
-200 ~ 200
Yaw
throttle
-200 ~ 200
Throttle

sendWeight

    무게
1
def sendWeight(self, weight):
Copied!
변수 이름
형식 또는 범위
설명
weight
Weight
무게

sendLostConnection

    통신 연결이 끊긴 후 반응 시간 설정
    마지막으로 비행 이벤트 또는 조종 명령을 보냈던 장치와의 연결이 끊어진 후에 지정한 시간이 경과하면 해당 명령을 실행. 시간을 0으로 설정한 경우 해당 명령은 실행하지 않음. 시간 단위는 ms
1
def sendLostConnection(self, timeNeutral, timeLanding, timeStop):
Copied!
변수 이름
형식 또는 범위
설명
timeNeutral
0 ~ 65,535
조종 중립
timeLanding
0 ~ 65,535
착륙
timeStop
0 ~ 4,294,967,295
정지

sendFlightEvent

    비행 이벤트 실행
1
def sendFlightEvent(self, flightEvent):
Copied!
변수 이름
형식 또는 범위
설명
flightEvent
FlightEvent
비행 이벤트

sendClearBias

    Accel, Gyro Bias 초기화
1
def sendClearBias(self):
Copied!

sendClearTrim

    비행, 주행 Trim 초기화
1
def sendClearTrim(self):
Copied!

sendSetDefault

    장치 설정 초기화
    지정한 장치의 설정을 초기화 함
1
def sendSetDefault(self, deviceType):
Copied!

sendMotor

    4개의 모터를 미리 지정된 방향으로 회전
1
def sendMotor(self, motor0, motor1, motor2, motor3):
Copied!
변수 이름
형식 또는 범위
설명
motor0
0 ~ 4095
왼쪽 앞 모터 속도 지정
motor1
0 ~ 4095
오른쪽 앞 모터 속도 지정
motor2
0 ~ 4095
오른쪽 뒤 모터 속도 지정
motor3
0 ~ 4095
왼쪽 뒤 모터 속도 지정

sendMotorSingle

    1개의 모터를 회전 방향을 지정하여 동작
    target에 들어가는 값은 0~3입니다. 모터의 순서는 왼쪽 앞 모터부터 시계방향입니다.
1
def sendMotorSingle(self, target, rotation, value):
Copied!
변수 이름
형식 또는 범위
설명
target
0 ~ 3
제어할 모터의 번호
rotation
Rotation
모터의 회전 방향
value
0 ~ 4095
모터의 속도

sendLightManual

    LED 수동 제어
    flags에는 LightFlagsDrone, LightFlagsController의 value 값을 사용하거나 직접 플래그에 해당하는 비트를 선택하시면 됩니다.
    brightness는 값은 0일 때 꺼지며 값이 커질수록 밝아집니다.
1
def sendLightManual(self, deviceType, flags, brightness):
Copied!
변수 이름
형식 또는 범위
설명
deviceType
DeviceType
LED를 제어할 장치
flags
0b00000000 ~ 0b11111111
LED 플래그
brightness
0 ~ 255
밝기

sendLightModeColor

    LED 모드 설정(RGB)
    lightMode 변수에는 LightModeDrone, LightModeController의 value 값을 사용합니다.
1
def sendLightModeColor(self, lightMode, interval, r, g, b):
Copied!
변수 이름
형식 또는 범위
설명
lightMode
UInt8
LED 동작 모드
interval
0 ~ 65535
내부 밝기 제어 함수 호출 주기
r
0 ~ 255
Red
g
0 ~ 255
Green
b
0 ~ 255
Blue

sendLightModeColors

    LED 모드 설정(Palette)
    lightMode 변수에는 LightModeDrone, LightModeController의 value 값을 사용합니다.
1
def sendLightModeColors(self, lightMode, interval, colors):
Copied!
변수 이름
형식 또는 범위
설명
lightMode
UInt8
LED 동작 모드
interval
0 ~ 65535
내부 밝기 제어 함수 호출 주기
colors
Colors
색상 팔레트 인덱스

sendLightEventColor

    LED 이벤트 설정(RGB)
    lightEvent 변수에는 LightModeDrone, LightModeController의 value 값을 사용합니다.
1
def sendLightEventColor(self, lightEvent, interval, repeat, r, g, b):
Copied!
변수 이름
형식 또는 범위
설명
lightEvent
UInt8
LED 동작 모드
interval
0 ~ 65535
내부 밝기 제어 함수 호출 주기
repeat
0 ~ 255
반복 횟수
r
0 ~ 255
Red
g
0 ~ 255
Green
b
0 ~ 255
Blue

sendLightEventColors

    LED 이벤트 설정(Palette)
    lightEvent 변수에는 LightModeDrone, LightModeController의 value 값을 사용합니다.
1
def sendLightEventColors(self, lightEvent, interval, repeat, colors):
Copied!
변수 이름
형식 또는 범위
설명
lightEvent
UInt8
LED 동작 모드
interval
0 ~ 65535
내부 밝기 제어 함수 호출 주기
repeat
0 ~ 255
반복 횟수
colors
Colors
색상 팔레트 인덱스

sendLightDefaultColor

    LED 기본 모드 설정(RGB)
    lightMode 변수에는 LightModeDrone, LightModeController의 value 값을 사용합니다.
1
def sendLightDefaultColor(self, lightMode, interval, r, g, b):
Copied!
변수 이름
형식 또는 범위
설명
lightMode
UInt8
LED 동작 모드
interval
0 ~ 65535
내부 밝기 제어 함수 호출 주기
r
0 ~ 255
Red
g
0 ~ 255
Green
b
0 ~ 255
Blue

sendDisplayClearAll

    화면 전체 지우기
1
def sendDisplayClearAll(self, pixel = DisplayPixel.Black):
Copied!
변수 이름
형식 또는 범위
설명
pixel
DisplayPixel
채울 색상

sendDisplayClear

    화면 일부 지우기
1
def sendDisplayClear(self, x, y, width, height, pixel = DisplayPixel.Black):
Copied!
변수 이름
형식 또는 범위
설명
x
-2000 ~ 2000
X축 시작 위치
y
-2000 ~ 2000
Y축 시작 위치
width
-2000 ~ 2000
너비
height
-2000 ~ 2000
높이
pixel
DisplayPixel
채울 색상

sendDisplayInvert

    화면 일부 반전
1
def sendDisplayInvert(self, x, y, width, height):
Copied!
변수 이름
형식 또는 범위
설명
x
-2000 ~ 2000
X축 시작 위치
y
-2000 ~ 2000
Y축 시작 위치
width
-2000 ~ 2000
너비
height
-2000 ~ 2000
높이

sendDisplayDrawPoint

    점 찍기
1
def sendDisplayDrawPoint(self, x, y, pixel = DisplayPixel.White):
Copied!
변수 이름
형식 또는 범위
설명
x
-2000 ~ 2000
X축 위치
y
-2000 ~ 2000
Y축 위치
pixel
DisplayPixel
점 색상

sendDisplayDrawLine

    선 그리기
1
def sendDisplayDrawLine(self, x1, y1, x2, y2, pixel = DisplayPixel.White, line = DisplayLine.Solid):
Copied!
변수 이름
형식 또는 범위
설명
x1
-2000 ~ 2000
X축 시작 위치
y1
-2000 ~ 2000
Y축 시작 위치
x2
-2000 ~ 2000
X축 끝 위치
y2