###参考にしたサイト
###全体の構成
####( ① TelloとMacbookとのWifi疎通確認 )
-
Wifi親機(Host): Tello本体 (※)
※ Tello本体内には、Wifiルータが標準仕様として内蔵されている -
Wifi子機(Client): MacBook
-
MacBookのWifi接続先一覧から、Telloのアクセスポイント(AP ※)を探して、選択。
※ Tello内蔵のWifi APの(local) IPアドレスは、$192.168.10.1$。 -
接続後、TelloのAPのローカルIPアドレス($192.168.10.1$)に対して、MacBookからpingを飛ばして、TelloとMacBookとの疎通を確認。
electron@diynoMacBook-Pro Tello % ping 192.168.10.1
PING 192.168.10.1 (192.168.10.1): 56 data bytes
64 bytes from 192.168.10.1: icmp_seq=0 ttl=255 time=1.624 ms
64 bytes from 192.168.10.1: icmp_seq=1 ttl=255 time=2.079 ms
64 bytes from 192.168.10.1: icmp_seq=2 ttl=255 time=1.979 ms
^Z
zsh: suspended ping 192.168.10.1
####Pythonスクリプトファイルの存在を確認
( 結果 )
カレント・ディレクトリにある。
( カレントディレクトリ: Desktop直下のTelloディレクトリ )
electron@diynoMacBook-Pro Tello % ls
ello_python.py
electron@diynoMacBook-Pro Tello %
####Python3が使えることの確認
- 今回、実行するスクリプトファイルは、Python3の利用を前提とします。
electron@diynoMacBook-Pro Tello % python3 --version
Python 3.9.6
electron@diynoMacBook-Pro Tello %
electron@diynoMacBook-Pro Tello % python --version
Python 2.7.16
electron@diynoMacBook-Pro Tello %
##Teminalのコマンド入力画面(の例)
- 着陸命令("command")の実行終了後、Ctrl-Zで、スクリプトを抜けて終了。
- 今回は、以下の順に、命令を送出しました。
① 離陸(takeoff)
② 時計回り90度回頭(cw 90)
③ 50(cm)前進(forward 50)
④ 着陸(land)
electron@diynoMacBook-Pro Tello % python3 Tello_python.py
Telloに送る指示コマンドを入力してください。: takeoff
Telloに送る指示コマンドを入力してください。: cw 90
Telloに送る指示コマンドを入力してください。: forward 50
Telloに送る指示コマンドを入力してください。: land
Telloに送る指示コマンドを入力してください。: ^Z
zsh: suspended python3 Tello_python.py
electron@diynoMacBook-Pro Tello %
###実行したスクリプト
縣さんのコードを一部、変更しました。
import threading
import socket
import sys
import time
host = ''
port = 9000
locaddr = (host, port)
# Create a UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
tello_address = ('192.168.10.1', 8889)
sock.bind(locaddr)
def recv():
count = 0
while True:
try:
data, server = sock.recvfrom(1518)
except Exception:
print ('\nExit . . .\n')
break
#recvThread create
recvThread = threading.Thread(target=recv)
recvThread.start()
while True:
# 最初に入力が必要な"command"命令は、ユーザが打ち込まなくて良いようにスクリプト側でTelloに送出する
msg = str("command").encode(encoding="utf-8")
sent = sock.sendto(msg, tello_address)
# "takeoff"以降の命令をユーザ入力から受け取る
try:
msg = input("Telloに送る指示コマンドを入力してください。: ")
if not msg:
break
# Send data
msg = msg.encode(encoding="utf-8")
sent = sock.sendto(msg, tello_address)
except KeyboardInterrupt:
sock.close()
break
###Telloコマンドの一覧
Tello SDKマニュアルに掲載されています。
なお、コマンド一覧を、和文の表形式にまとめたものは、以下のウェブページに掲載されています。