Python을 통한 Tello 작업 (기본 및 클라우드에서 MQTT로 작업까지)
11606 단어 AlibabaCloud텔로mqttIoT드론
Tello란?
Ryze Tech와 DJI가 공동 개발한 12,800엔의 소형 토이 드론으로, API가 공개되어 있으므로 누구나 간단하게 프로그램에 의해 조작할 수 있습니다.
htps //w w. ry 제로보치 cs. 코 m / jp / 꼭
API에는 다음 두 가지 유형이 있습니다.
오늘은 어른스럽게 1의 표준 커맨드를 이용합시다. 성실하게 쓰면 더 있습니다만, 조작에 필요한 것은 싹둑이런 느낌입니다. 자세한 내용은 여기
명령
사양
command
명령 모드로
takeoff
이륙
land
착륙
up xx
xx cm 상승(20 < xx < 500)
다운 xx
xx cm 하강(20 < xx < 500)
left xx
왼쪽으로 xx cm 이동 (20 < xx < 500)
right xx
오른쪽으로 xx cm 이동 (20 < xx < 500)
forward xx
이전 xx cm 이동 (20 < xx < 500)
back xx
뒤로 xx cm 이동 (20 < xx < 500)
cw xx
시계 방향으로 xx°회전(1 < xx < 3600)
ccw xx
반 시계 방향으로 xx ° 회전 (1 < xx < 3600)
flip x
귀환 l (왼쪽) r (오른쪽) f (전방) b (후방)
입문편: 이착륙
단순히 8889/udp에 필요한 명령을 던지기만 하면 됩니다.
#!/usr/bin/env python
import socket
import time
tello_ip = '192.168.10.1'
tello_port = 8889
#udpソケット作成
socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
tello_address = (tello_ip , tello_port)
#コマンドモードを使うため'command'というテキストを投げる
socket.sendto('command'.encode('utf-8'),tello_address)
#5秒まつ
time.sleep(5)
#離陸のため'takeoff'というテキストを投げる
socket.sendto('takeoff'.encode('utf-8'),tello_address)
#5秒まつ
time.sleep(5)
#着陸のため'land'というテキストを投げる
socket.sendto('land'.encode('utf-8'),tello_address)
네 간단. 입문편 종료.
응용편: 클라우드의 IoT Platform에서 MQTT로 작업
개요도
PC가 드론의 컨트롤러가 되어 MQTT 클라이언트로서 MQTT Broker에 접속합니다. MQTT Broker를 SaaS로 제공하는 클라우드도 다양하지만, 여기에서는 손에 있는 알리바바 클라우드를 이용합니다. 알리바바 클라우드의 IoT platform에 MQTT 연결할 때의 파라미터 준비는 "ESP32 ~ Alibaba Cloud IoT Platform을 MQTT 연결 (Arduino Core 버전)" 에서 소개하고 있습니다.
그림중 PC라고 써 있습니다만, 라즈파이에서도 OK. 다만, Tello가 WiFi의 AP로서 동작하는 사양으로, 네트워크 인터페이스의 하나는 Tello와 밖에 접속할 수 없기 때문에, 클라우드에 접속하기 위해서 또 하나의 네트워크 인터페이스가 필요합니다. 나는 아이폰의 USB 테더링을 사용했다. Tello와 연결하는 네트워크 (기본적으로 192.168.10.0/24)를 제외하고는 모두 iPhone usb 테더링을 통과해야합니다. OSX에서 설정하려면 인터넷을 통해 클라우드에 연결하는 인터페이스의 우선 순위를 Tello와 연결하는 WiFi보다 높아야 합니다.
코드
#!/usr/bin/env python
import socket
import time
import paho.mqtt.client as mqtt
TELLO_IP = '192.168.10.1'
TELLO_PORT = 8889
# 以下はMQTT Brokerの仕様に応じて書き換えてね。
BROKER = 'MQTT BrokerのIPもしくはFQDN'
CLIENTID = 'クライアントID'
USER = 'ユーザーID'
PASS = 'パスワード'
TOPIC = '購読するトピック'
# subscribeしたtopicでメッセージを受けたらそのままTelloへ送る
def on_message(client, socket, msg):
print(str(msg.payload))
socket.sendto(str(msg.payload).encode('utf-8'),tello_address)
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
if __name__ == '__main__':
tello_address = (TELLO_IP , TELLO_PORT)
socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
socket.sendto('command'.encode('utf-8'),tello_address)
client = mqtt.Client(client_id=CLIENTID,userdata=socket, protocol=mqtt.MQTTv311)
client.username_pw_set(USER, password=PASS)
client.on_message = on_message
client.on_connect = on_connect
client.connect(BROKER, port=1883, keepalive=30)
client.subscribe(TOPIC)
client.loop_forever()
동작 확인
여기는 Alibaba Cloud 콘솔에서 'takeoff'라는 명령을 pusblish하여 이륙시키는 예입니다. 미세한 화면 전환은 생략합니다. 'land'를 publish하면 착륙합니다. 간단하네요.
요약
소감
10분 정도로 배터리가 끊어지므로 충전 또는 배터리 교환 필요. 사람이 근처에 있어야 하기 때문에 초저전력 대기 모드라든지, 무선 충전 기능이라든가 없으면 원래 클라우드에서 원격 조작하는 의미가 ^^;
PC나 라즈파이까지 없어도 ESP32를 2개(WiFi 환경이 Tello용과 인터넷 접속용의 2개 필요하기 때문에) 사용해 Arduino Core에서도 움직일 수 있는 것은 아닐까요.
수중의 클라우드를 사용했습니다만, MQTT Broker로서 mosquitto, Publisher로서 mosquito_pub를 사용한 테스트도 할 수 있을까.
마지막으로
이것은 내 취미 활동입니다. 소속된 단체의 사고방식은 전혀 반영하지 않습니다.
Reference
이 문제에 관하여(Python을 통한 Tello 작업 (기본 및 클라우드에서 MQTT로 작업까지)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/makotaka/items/e3ed92e58e9bc15cefbf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#!/usr/bin/env python
import socket
import time
tello_ip = '192.168.10.1'
tello_port = 8889
#udpソケット作成
socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
tello_address = (tello_ip , tello_port)
#コマンドモードを使うため'command'というテキストを投げる
socket.sendto('command'.encode('utf-8'),tello_address)
#5秒まつ
time.sleep(5)
#離陸のため'takeoff'というテキストを投げる
socket.sendto('takeoff'.encode('utf-8'),tello_address)
#5秒まつ
time.sleep(5)
#着陸のため'land'というテキストを投げる
socket.sendto('land'.encode('utf-8'),tello_address)
개요도
PC가 드론의 컨트롤러가 되어 MQTT 클라이언트로서 MQTT Broker에 접속합니다. MQTT Broker를 SaaS로 제공하는 클라우드도 다양하지만, 여기에서는 손에 있는 알리바바 클라우드를 이용합니다. 알리바바 클라우드의 IoT platform에 MQTT 연결할 때의 파라미터 준비는 "ESP32 ~ Alibaba Cloud IoT Platform을 MQTT 연결 (Arduino Core 버전)" 에서 소개하고 있습니다.
그림중 PC라고 써 있습니다만, 라즈파이에서도 OK. 다만, Tello가 WiFi의 AP로서 동작하는 사양으로, 네트워크 인터페이스의 하나는 Tello와 밖에 접속할 수 없기 때문에, 클라우드에 접속하기 위해서 또 하나의 네트워크 인터페이스가 필요합니다. 나는 아이폰의 USB 테더링을 사용했다. Tello와 연결하는 네트워크 (기본적으로 192.168.10.0/24)를 제외하고는 모두 iPhone usb 테더링을 통과해야합니다. OSX에서 설정하려면 인터넷을 통해 클라우드에 연결하는 인터페이스의 우선 순위를 Tello와 연결하는 WiFi보다 높아야 합니다.
코드
#!/usr/bin/env python
import socket
import time
import paho.mqtt.client as mqtt
TELLO_IP = '192.168.10.1'
TELLO_PORT = 8889
# 以下はMQTT Brokerの仕様に応じて書き換えてね。
BROKER = 'MQTT BrokerのIPもしくはFQDN'
CLIENTID = 'クライアントID'
USER = 'ユーザーID'
PASS = 'パスワード'
TOPIC = '購読するトピック'
# subscribeしたtopicでメッセージを受けたらそのままTelloへ送る
def on_message(client, socket, msg):
print(str(msg.payload))
socket.sendto(str(msg.payload).encode('utf-8'),tello_address)
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
if __name__ == '__main__':
tello_address = (TELLO_IP , TELLO_PORT)
socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
socket.sendto('command'.encode('utf-8'),tello_address)
client = mqtt.Client(client_id=CLIENTID,userdata=socket, protocol=mqtt.MQTTv311)
client.username_pw_set(USER, password=PASS)
client.on_message = on_message
client.on_connect = on_connect
client.connect(BROKER, port=1883, keepalive=30)
client.subscribe(TOPIC)
client.loop_forever()
동작 확인
여기는 Alibaba Cloud 콘솔에서 'takeoff'라는 명령을 pusblish하여 이륙시키는 예입니다. 미세한 화면 전환은 생략합니다. 'land'를 publish하면 착륙합니다. 간단하네요.
요약
소감
10분 정도로 배터리가 끊어지므로 충전 또는 배터리 교환 필요. 사람이 근처에 있어야 하기 때문에 초저전력 대기 모드라든지, 무선 충전 기능이라든가 없으면 원래 클라우드에서 원격 조작하는 의미가 ^^;
PC나 라즈파이까지 없어도 ESP32를 2개(WiFi 환경이 Tello용과 인터넷 접속용의 2개 필요하기 때문에) 사용해 Arduino Core에서도 움직일 수 있는 것은 아닐까요.
수중의 클라우드를 사용했습니다만, MQTT Broker로서 mosquitto, Publisher로서 mosquito_pub를 사용한 테스트도 할 수 있을까.
마지막으로
이것은 내 취미 활동입니다. 소속된 단체의 사고방식은 전혀 반영하지 않습니다.
Reference
이 문제에 관하여(Python을 통한 Tello 작업 (기본 및 클라우드에서 MQTT로 작업까지)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/makotaka/items/e3ed92e58e9bc15cefbf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Python을 통한 Tello 작업 (기본 및 클라우드에서 MQTT로 작업까지)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/makotaka/items/e3ed92e58e9bc15cefbf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)