[python] DJI Tello 드론 코딩 (프로그래밍)
첨부 '10' |
---|
# DJI Tello
# 프로그래밍 가능한 드론
최근 프로그래밍 교육 열풍이 시작되면서 사용자 레벨에서 직접 프로그래밍을 통해 제어할 수 있는 드론(Drone)들이 이미 판매되고 있다. 말이 거창해 코딩에 프로그래밍이지.. 사실 드론에서 제공하는 외부 API(명령)을 리모컨 대신 호출하는 것이 전부이다.
그 중 유명했던 것(과거형)이 한국 회사에서 만든 코드론(CoDrone)인데 최근에 드론계의 애플이라 불리는 DJI에서도 프로그래밍이 가능한 Ryzerobotics Tello Drone을 새로 출시했다.
(코드론은 아두이노 기반으로 제작된 키트를 직접 조립해서 만들어야 하고 Tello는 예쁜 완성품으로 바로 사용할 수 있는데 왜 코드론이 더 비싸지? ㅠㅠ 코드론 Lite $120 / Pro $180 vs. 텔로 $99)
# CoDrone vs. Tello
어쨌든..
이런 종류의 드론을 제어하기 위한 프로그래밍 언어와 환경은 다양하다.
심지어 프로그래밍에 익숙하지 않은 아이들이나 초급자라도 간편하게 시작할 수 있다.
예를 들어, 초급자의 경우 드론블럭(Droneblocks), 스크래치(Scratch) 2.0 등의 GUI 툴을 이용하여 미리 정해진 명령 블럭들을 조립해서 실행하면 된다.
# DronBlocks application for iOS
# Scratch 2.0
조금 더 고급진(?) 방법은 현업에서 실제로 사용하는 프로그래밍 언어로 구현하는 것이다. 드론이 제공하는 네트워크에 접속하고 명령어 스펙을 구현하는 것이다.
다른 드론도 비슷하겠지만 Tello의 경우,
Tello가 제공하는 WiFi 네트워크에 접속해서 소켓을 열고 UDP 패킷에 명령어를 전송하는 방식이다.
# Demo Video that I made to control using python.
직접 명령을 입력해서 Tello에게 전달하는 데모 프로그램
우선 Wi-Fi를 지원하는 디바이스가 필요하다.
그리고 UDP 소켓 통신이 가능한 프로그래밍 언어라면 모두 가능하다.
중요한 것은 Tello Drone의 명령어셋이다.
명령어셋은 Tello SDK 문서에 명세되어 있고 RYZE 홈페이지에서 다운로드 할 수 있다.
https://www.ryzerobotics.com/tello/downloads
Command | Description | Possible Response |
command | Enter command mode | OK / FALSE |
takeoff | Auto takeoff | OK / FALSE |
land | Auto landing | OK / FALSE |
up xx | Fly upward xx cm (20-500) | OK / FALSE |
down xx | Fly downward xx cm (20-500) | OK / FALSE |
left xx | Fly left xx cm (20-500) | OK / FALSE |
right xx | Fly right xx cm (20-500) | OK / FALSE |
forward xx | Fly forward xx cm (20-500) | OK / FALSE |
back xx | Fly backward xx cm (20-500) | OK / FALSE |
cw xx | Rotate clockwise xx degree (1-3600) | OK / FALSE |
ccw xx | Rotate counter-clockwise xx degree (1-3600) | OK / FALSE |
flip x | Flip x (l, r, f, b, bl, rb, fl, fr) | OK / FALSE |
speed xx | Set current speed as xx cm/s (1-100) | OK / FALSE |
speed? | Get current speed | xx (0-100) |
battery? | Get current battery percentage | xx (0-100) |
time? | Get current flight time | xx (second) |
첨부된 예제는 Python 언어로(2.7) 작성된 것이다.
# Sample - drone_auto.py
해당 명령어들이 실행되면서 자동으로 비행한다.
import time
import tello
def main():
drone = None
try:
drone = tello.Tello()
print 'Battery : %d%%' % drone.battery()
except RuntimeError:
print 'Failed to initialize the drone.\n'
print 'Please, check your Wi-Fi SSID.\n'
return
drone.takeoff()
time.sleep(3)
drone.forward(50)
time.sleep(3)
drone.cw(90)
time.sleep(3)
drone.flip('f')
time.sleep(3)
drone.land()
time.sleep(3)
print 'Battery : %d%%' % drone.battery()
print 'Flight time: %s' % drone.flight_time()
if __name__ == '__main__':
main()
번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|---|
1117 | Develop | [api] 인스타그램 API Access_Token 발급 방법 (Instagram API) 3 | hooni | 2018.04.05 | 8193 |
1116 | Develop | [api] 인스타그램에서 최신 이미지 가져오기 (Using Instagram API) 20 | hooni | 2018.04.05 | 13214 |
1115 | Develop | [js] Click button copy to clipboard | hooni | 2018.04.05 | 1683 |
1114 | Develop | [php] Laravel 4. twitter bootstrap 적용하기 | hooni | 2018.04.05 | 3138 |
1113 | System/OS | How to Setup an Email Server on CentOS 7 | hooni | 2018.04.05 | 3579 |
1112 | Develop | How to Test SMTP AUTH using Telnet | hooni | 2018.04.05 | 2339 |
» | Develop | [python] DJI Tello 드론 코딩 (프로그래밍) 58 | hooni | 2018.03.04 | 29779 |
1110 | System/OS | [mac] 맥에서 기본 실행 앱 변경하기 | hooni | 2018.03.02 | 2629 |
1109 | System/OS | 콘솔에서 패스워드 걸린 zip 압축하는 명령 | hooni | 2018.03.02 | 1741 |
1108 | Develop | What is difference between Get, Post, Put and Delete? | hooni | 2018.02.28 | 2237 |
1107 | Develop | [php] Laravel Route에서 PC/Mobile 분기 | hooni | 2018.01.24 | 3105 |
1106 | Develop | Laravel 5 Failed opening required bootstrap/../vendor/autoload.php | hooni | 2018.01.24 | 2371 |
저 위의 파이썬에 대한 개념조차 없는지라 저위의 데모프로그램도.. 받을수 있는 주소 알려주시면 감사드립니다.
miss16@네이버 입니다.