petrone for python / Drone

Modified : 2018.11.26


drone 모듈을 소개합니다.



Drone 클래스


Drone 클래스 생성자

Drone 클래스의 생성자는 아래와 같습니다.

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

Drone 클래스 생성자 호출 시 인자를 입력하지 않으면 flagCheckBackgroundTrue가 되며, 나머지는 모두 False가 됩니다.

flagCheckBackgroundTrue인 경우에는 데이터를 받을 때마다 내부에서 check() 함수를 호출합니다. False인 경우에는 사용자가 직접 check() 함수를 호출하여 수신 받은 데이터를 처리해야 합니다.



Drone 클래스의 public 함수 구성

Drone 클래스의 외부에서 접근할 수 있는 함수 목록입니다.

이름 설명
isOpen() 시리얼 포트 연결 상태 반환
isConnected() BLE 연결 상태 반환
open(portName) 시리얼 포트 열기. 포트 이름을 지정하지 않으면 마지막에 검색된 장치에 연결. 포트가 열린 경우 True 반환
connect(portName, deviceName, flagSystemReset) 시리얼 포트가 열리지 않은 경우 시리얼 포트를 열고, PETRONE을 검색하여 가장 신호가 강한 장치에 연결합니다. deviceName을 지정하였으면 지정한 장치가 검색되었을 때에만 연결합니다. flagSystemReset은 시리얼 통신 연결 후 처음 PETRONE LINK를 리셋하고 시작할 때 사용합니다. 기본값은 False 입니다.
close() 시리얼 포트 닫기
makeTransferDataArray(header, data) 전송할 데이터 바이트 배열 생성
transfer(header, data) 데이터 전송(내부에서 makeTransferDataArray 함수를 실행함)
check() 수신 받은 데이터 확인. 데이터를 받은 경우 DataType을 반환
checkDetail() 수신 받은 데이터 확인. Header와 Data를 튜플로 반환
setEventHandler(dataType, eventHandler) 특정 타입의 데이터를 수신했을 때 호출할 사용자 지정 함수 등록
getHeader(dataType) 지정한 타입의 데이터와 함께 받은 헤더 반환
getData(dataType) 지정한 타입의 데이터 반환(데이터가 없으면 None 반환)
getCount(dataType) 지정한 타입의 데이터를 받은 횟수를 반환(한 번도 받지 못한 경우 0 반환)



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

Drone 클래스의 데이터 수신 처리부는 아래와 같이 구성되어 있습니다.

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



함수 목록


일반

이름 설명
sendPing 핑 전송
sendRequest 데이터 요청


조종

이름 설명
sendTakeOff 이륙
sendLanding 착륙
sendStop 정지
sendControl 비행 조종
sendControlWhile 지정한 시간 동안 비행 조종 명령 전송
sendControlDrive 자동차 조종
sendControlDriveWhile 지정한 시간 동안 자동차 조종 명령 전송


설정

이름 설명
sendCommand 명령 전송
sendModeVehicle Flight/Drive 모드 변경
sendHeadless 헤드리스 설정
sendTrim Trim 설정
sendTrimFlight 비행 Trim 설정
sendTrimDrive 주행 Trim 설정
sendFlightEvent 비행 이벤트 실행
sendDriveEvent 주행 이벤트 실행
sendClearTrim Trim 초기화
sendClearGyroBias 자이로 바이어스 초기화
sendUpdateLookupTarget 펌웨어 정보 확인


모터

이름 설명
sendMotor 모터 동작 제어


적외선

이름 설명
sendIrMessage 적외선 데이터 전송


LED

이름 설명
sendLightMode 모드 설정(팔레트)
sendLightModeCommand 모드 설정(팔레트), 명령
sendLightModeCommandIr 모드 설정(팔레트), 명령, 적외선
sendLightModeColor 모드 설정(RGB)
sendLightEvent 이벤트 설정(팔레트)
sendLightEventCommand 이벤트 설정(팔레트), 명령
sendLightEventCommandIr 이벤트 설정(팔레트), 명령, 적외선
sendLightEventColor 이벤트 설정(RGB)


이름 설명
sendLinkModeBroadcast LINK Broadcast 모드 변경
sendLinkSystemReset LINK 리셋
sendLinkDiscoverStart PETRONE 스캔
sendLinkDiscoverStop PETRONE 스캔 중단
sendLinkConnect PETRONE 연결
sendLinkDisconnect PETRONE 연결 해제
sendLinkRssiPollingStart RSSI 수집 시작
sendLinkRssiPollingStop RSSI 수집 중단



함수 정의



sendPing

핑 전송

드론과의 연결 상태를 확인할 때 사용합니다. 응답으로 Ack를 받습니다.

def sendPing(self):



sendRequest

데이터 요청

데이터를 요청할 때 사용합니다.

def sendRequest(self, dataType):
변수 이름 형식 또는 범위 설명
dataType DataType 데이터의 타입



sendTakeOff

이륙

비행 모드로 동작 시 이륙을 할 때 사용합니다.

def sendTakeOff(self):



sendLanding

착륙

비행 모드로 동작 시 착륙을 할 때 사용합니다.

def sendLanding(self):



sendStop

정지

드론 동작 모드에 관계없이 강제로 정지할 때 사용합니다.

def sendStop(self):



sendControl

비행 조종

비행 및 주행에 모두 사용할 수 있습니다.

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



sendControlWhile

비행 조종

비행 및 주행에 모두 사용할 수 있습니다. timeMs에 지정한 ms동안 연속으로 조종 명령을 전송합니다.

def sendControlWhile(self, roll, pitch, yaw, throttle, timeMs):
변수 이름 형식 또는 범위 설명
roll -100 ~ 100 Roll
pitch -100 ~ 100 Pitch
yaw -100 ~ 100 Yaw
throttle -100 ~ 100 Throttle
timeMs 0 ~ 1,000,000 동작 시간(ms)



sendControlDrive

자동차 조종

드론이 자동차 모드로 동작할 때 사용할 수 있습니다.

def sendControlDrive(self, wheel, accel):
변수 이름 형식 또는 범위 설명
wheel -100 ~ 100 Wheel
accel -100 ~ 100 Accel



sendControlDriveWhile

자동차 조종

드론이 자동차 모드로 동작할 때 사용할 수 있습니다. timeMs에 지정한 ms동안 연속으로 조종 명령을 전송합니다.

def sendControlDriveWhile(self, wheel, accel, timeMs):
변수 이름 형식 또는 범위 설명
wheel -100 ~ 100 Wheel
accel -100 ~ 100 Accel
timeMs 0 ~ 1,000,000 동작 시간(ms)



sendCommand

명령 전송

드론에 명령을 전달할 때 사용합니다.

option에는 각 형식의 value 값 또는 숫자 값을 넣으셔야 합니다.

def sendCommand(self, commandType, option = 0):
변수 이름 형식 또는 범위 설명
commandType CommandType 명령 타입
option ModeVehicle 옵션
  FlightEvent  
  DriveEvent  
  Headless  
  Trim  
  UInt8  



sendModeVehicle

Vehicle 동작 모드 설정

드론을 비행 또는 주행 모드로 변경할 수 있습니다.

def sendModeVehicle(self, modeVehicle):
변수 이름 형식 또는 범위 설명
modeVehicle ModeVehicle Vehicle 동작 모드



sendHeadless

Headless 설정

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



sendTrim

Trim 설정

def sendTrim(self, trim):
변수 이름 형식 또는 범위 설명
trim Trim 트림 설정



sendTrimFlight

비행 Trim 설정

def sendTrimFlight(self, roll, pitch, yaw, throttle):
변수 이름 형식 또는 범위 설명
roll -200 ~ 200 Roll
pitch -200 ~ 200 Pitch
yaw -200 ~ 200 Yaw
throttle -200 ~ 200 Throttle



sendTrimDrive

주행 Trim 설정

def sendTrimDrive(self, wheel):
변수 이름 형식 또는 범위 설명
wheel -200 ~ 200 Wheel



sendFlightEvent

비행 이벤트 실행

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



sendDriveEvent

주행 이벤트 실행

def sendDriveEvent(self, driveEvent):
변수 이름 형식 또는 범위 설명
driveEvent DriveEvent 주행 이벤트



sendClearTrim

비행, 주행 Trim 초기화

def sendClearTrim(self):



sendClearGyroBias

Accel, Gyro Bias 초기화

def sendClearGyroBias(self):



sendMotor

4개의 모터를 미리 지정된 방향으로 회전

def sendMotor(self, motor0, motor1, motor2, motor3):
변수 이름 형식 또는 범위 설명
motor0 0 ~ 4095 왼쪽 앞 모터 속도 지정
motor1 0 ~ 4095 오른쪽 앞 모터 속도 지정
motor2 0 ~ 4095 오른쪽 뒤 모터 속도 지정
motor3 0 ~ 4095 왼쪽 뒤 모터 속도 지정



sendIrMessage

적외선 데이터 전송

def sendIrMessage(self, value):
변수 이름 형식 또는 범위 설명
value 0x00000000 ~ 0xFFFFFFFF 적외선으로 전송할 데이터의 값





petrone for python

  1. Intro
  2. System
  3. Protocol
  4. Drone
  5. Examples - Information
  6. Examples - Imu
  7. Examples - Test Flight
  8. Examples - Light


Index