|
本帖最后由 Zoro 于 2019-3-26 12:58 编辑
简介:
虚谷号控制无人机的原理是通过UDP协议,虚谷端通过python编写UDP客户端,
通过客户端向无人机服务端发送对应指令实现无人机的操控。
1、准备
1)功能完好的Tello无人机
2)功能完好的虚谷号板子
3)Tello无人机开机
4)虚谷号连接Tello无人机的wifi(默认是TELLO-XXX的无密码wifi)如图1
2、控制无人机
1)终端运行Tello.py文件,命令:python Tello.py 如图2
2)终端输入command,UDP客户端会接收到无人机服务端返回的OK字符 如图3
3)接着输入对应的指令就可操控无人机(如:takeoff 自动起飞)如图4
4)详细指令请下载附件《Tello_SDK_2.0_使用说明.pdf》文件查看
Tello.py源码:(附件Tello.tar.gz为Tello.py的压缩包)
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(1024)
print(data.decode(encoding="utf-8"))
except Exception:
print ('\nExit . . .\n')
break
print ('\r\n\r\nTello Python3 Demo.\r\n')
print ('Tello: command takeoff land flip forward back left right \r\n up down cw ccw speed speed?\r\n')
print ('end -- quit demo.\r\n')
#recvThread create
recvThread = threading.Thread(target=recv)
recvThread.start()
while True:
try:
msg = input("");
if not msg:
break
if 'end' in msg:
print ('...')
sock.close()
break
# Send data
msg = msg.encode(encoding="utf-8")
sent = sock.sendto(msg, tello_address)
except KeyboardInterrupt:
print ('\n . . .\n')
sock.close()
break
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|