본문 바로가기
파이썬

파이썬으로 드론 조종하기 (패턴비행)

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

drone.sendFlightEvent(FlightEvent.종류) 사용으로 비행 중에 공중회전을 할 수 있습니다. FlightEvent에는 FlipFront, FlipRear, FlipLeft, FlipRight처럼 4종류가 있습니다.

 

공중회전

drone.sendFlightEvent(FlightEvent.종류) 사용으로 비행 중에 공중회전을 할 수 있습니다. FlightEvent에는 FlipFront, FlipRear, FlipLeft, FlipRight처럼 4종류가 있습니다.

 

from time import sleep
from e_drone.drone import *
from e_drone.protocol import *

def eventTrim(trim):
    print("{0}, {1}, {2}, {3}".format(trim.roll, trim.pitch, trim.yaw, trim.throttle))

if __name__ == '__main__':
    drone = Drone()
    drone.open("com5")
    drone.setEventHandler(DataType.Trim, eventTrim)
    drone.sendTrim(-10, 15, 0, 0)
    sleep(1)
    drone.sendRequest(DeviceType.Drone, DataType.Trim)
    sleep(1)
    print("TakeOff")
    drone.sendTakeOff()
    sleep(1)
    print("Hovering")
    drone.sendControlWhile(0, 0, 0, 0, 3000)
    sleep(1)
    print("Flip")
    drone.sendFlightEvent(FlightEvent.FlipFront)	#FlipFront, FlipRear, FlipLeft, FlipRight
    sleep(1)
    print("멈춤")
    drone.sendControlWhile(0, 0, 0, 0, 1000)
    print("Landing")
    drone.sendLanding()
    sleep(0.1)
    drone.sendLanding()
    sleep(0.1)
    drone.close()

 

원비행

 

  • Roll과 Yaw값을 이용하고나 Pitch와 Yaw값을 이용해서 원모양을 만들 수 있습니다.
  • Yaw의 값이 작을수록 원의 크기가 커집니다.
  • Yaw + 왼쪽, Yaw -오른쪽

 

from time import sleep
from e_drone.drone import *
from e_drone.protocol import *

def eventTrim(trim):
    print("{0}, {1}, {2}, {3}".format(trim.roll, trim.pitch, trim.yaw, trim.throttle))

if __name__ == '__main__':
    drone = Drone()
    drone.open("com5")
    drone.setEventHandler(DataType.Trim, eventTrim)
    drone.sendTrim(-10, 1, 0, 0)
    sleep(2)
    drone.sendRequest(DeviceType.Drone, DataType.Trim)
    sleep(2)
    print("TakeOff")
    drone.sendTakeOff()
    sleep(2)
    print("제자리")
    drone.sendControlWhile(0, 0, 0, 0, 3000)
    print("이동")   #왼쪽으로 원그림
    drone.sendControlWhile(0, 10, 50, 0, 10000)
    print("멈춤") 
    drone.sendControlWhile(0, 0, 0, 0, 2000)
    print("착륙")
    drone.sendLanding()
    sleep(0.1)
    drone.sendLanding()
    sleep(0.1)
    drone.close()

 

Trim으로 미세조정을 해주고, Pitch10, Yaw50으로 왼쪽으로 회전하는 원모습의 코드를 작성했습니다. 교재용 드론이라 그런가.. 원비행은 잘 안되네요.. 시뮬레이션했을때는 잘됬는데..ㅠ

728x90

댓글