본문 바로가기
파이썬

파이썬으로 드론 조종하기 (함수사용법)

by ㈜㎹Ω∞ 2022. 7. 27.
728x90

함수 정리

setEventHandler(DataType.타입, 함수이름) : 주기적으로 반복되는 이벤트 타이머 함수입니다. DataType에는 Button과 Joystick이 있습니다.

 

  • DataType이 Button이라면 버튼 정보를 받습니다.
drone = Drone()
    drone.open('com5')
    drone.setEventHandler(DataType.Button,함수이름)

 

  • DataType이 Joystick이라면 조이스틱 정보를 받습니다.
drone = Drone()
    drone.open("com5")
    drone.setEventHandler(DataType.Joystick,함수이름)

 

sendRequest(DeviceType.Drone,DataType.타입) : 데이터를 요청하는 함수입니다. DataType에는 Motion과 Altitude가 있습니다.

 

  • Motion에는 가속도 센서(accelX, accelY, accelZ)의 상태와 자이로 센서(gyroRoll, gyroPitch, gyroYaw)의 기울기를 확인할 수 있습니다. 
def eventMotion(motion):
    print("eventMotion()")
    print("- Accel: {0}, {1}, {2}".format(motion.accelX, motion.accelY, motion.accelZ))
    print("- Gyro: {0}, {1}, {2}".format(motion.gyroRoll, motion.gyroPitch, motion.gyroYaw))

 

  • Altitude에는 온도(temperature), 압력(pressure), 고도(altitude), 해발고도(rangeHeight)센서 값을 확인할 수 있습니다.
def eventAltitude(altitude):
    print("eventAltitude()")
    print("- Temperature: {0:.3f}".format(altitude.temperature))
    print("- Pressure: {0:.3f}".format(altitude.pressure))
    print("- Altitude: {0:.3f}".format(altitude.altitude))
    print("- Range Height: {0:.3f}".format(altitude.rangeHeight))

 

sendLightDefaultColor(mode,interval,r,g,b) : LED 색상을 조절할 수 있습니다. r=빨강, g=초록, b=파랑이고, 각각 0~255 사이의 값을 넣어서 색상을 변경할 수 있습니다. 

 

  • 모드는 LightModeDrone.BodyDimming를 사용하고, 간격은 1이고, r, g, b순으로 숫자를 입력합니다.
  • 드론 객체를 만들 때는 drone = Drone(True, True, True, True, True)으로 작성합니다.
 drone = Drone(True, True, True, True, True)
    drone.open("com5")
    while True:
        drone.sendLightDefaultColor(LightModeDrone.BodyDimming, 1, 255, 0, 0)	#1빨강
        sleep(2)
        drone.sendLightDefaultColor(LightModeDrone.BodyDimming, 1, 0, 255, 0)	#2초록
        sleep(2)
        drone.sendLightDefaultColor(LightModeDrone.BodyDimming, 1, 0, 0, 255)	#3파랑
        sleep(2)
    drone.close()

 

sendClearBias() : 가속도, 기울기, 각속상태, 트림을 초기화합니다.

 

sendClearTrim() : 트림 속성 초기화합니다. Trim은 미세조정입니다.

 

  • 트림 함수를 만듭니다.
def eventTrim(trim):
    print("{0}, {1}, {2}, {3}".format(trim.roll, trim.pitch, trim.yaw, trim.throttle))

 

  • setEventHandler(DataType.Trim, 함수이름)으로 setEventHandler는 여러 개 작성할 수 있습니다.
  • drone.sendRequest(DeviceType.Drone, DataType.Trim)으로 Trim정보를 드론으로 보냅니다.

 

sendTrim(0,0,0,0) : Roll, Pitch값을 미세 조정합니다. Yaw, Throttle값은 드론 내부 센서로 컨트롤되므로 값을 변경해도 작동되지 않습니다. Trim값은 -200에서 +200 사이의 값으로 설정할 수 있습니다.

 

  • 드론이 오른쪽으로 흐를 때 Roll값을 0~-200 사이로 조정
  • 드론이 왼쪽으로 흐를 때 Roll값을 0~+200 사이로 조정
  • 드론이 앞쪽으로 흐를 때 Pitch값을 0~-200 사이로 조정
  • 드론이 뒤쪽으로 흐를 때 Pitch값을 0~+200 사이로 조정

 

sendRequest(DeviceType.Drone,DataType.Trim) : 현재 트림 값을 확인할 수 있습니다.

 

sendTakeOff() : 이륙 명령

 

sendLanding() : 착륙 명령, 안전하게 착륙하기 위해서 drone.sendLanding() 명령을 2번 작성합니다.

 

sendControlWhile(R, P, Y, T, 밀리초) : (0, 0, 0, 0, 1000)이라면 Roll, Pitch, Yaw, Throttle이 1초 동안 정지하라는 명령입니다. R, P, Y, T값은 -100에서 +100 사이의 값으로 설정할 수 있습니다.

 

  • R : 오른쪽 왼쪽으로 가고 싶다면 Roll값 변경
  • P : 앞뒤로 가고 싶다면 Pitch값 변경
  • Y : 제자리에서 회전하고 싶다면 Yaw값 변경
  • T : 위아래 움직이고 싶다면 Throttle값 변경

 

728x90

댓글