当前位置:   article > 正文

大疆睿炽Tello EDU无人机python操控之二——使用Tello-Python-master示例程序控制Tello EDU无人机_tello无人机内部指令控制文件

tello无人机内部指令控制文件

使用Tello-Python-master示例程序控制Tello EDU

上篇文章我们应该可以掌握使用socket调试工具操控Tello EDU无人机,那么本篇文章我们将使用“正宗”python语言来实现Tello EDU的的控制,接下来直接上代码,我会在代码注释中对代码进行讲解:

#
# Tello EDU Control Demo
#
# Hopes_li
#
#2020/4/28

import threading  #导入线程模块
import socket  #导入套接字模块
import sys  #导入系统模块(其实没用到)
import time  #导入时间模块

#设置主机及端口号
host = ''	
port = 8889
locaddr = (host,port)


# 创建UDP的socket通信
#获取Udp/Ip套接字(socket就是套接字)
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#第一个参数为socket家族:有AF_UNIX基于文件类型,及AF_INET基于网络类型
#第二个参数为socket_type:流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM(datagram)、原始套接字SOCK_RAW

tello_address = ('192.168.10.1', 8889)  #设置tello主机及端口号

sock.bind(locaddr)  #绑定(主机,端口号)到套接字

#定义数据接收函数(从Tello EDU返回的信息)
def recv():
    count = 0
    while True:
        try:
            data, server = sock.recvfrom(1518)  #接收UDP数据;data为接收的数据,server为客户地址,1518为每次接收字节数
            print(data.decode(encoding="utf-8")) #输出从socket接收的数据,并以编码为"utf-8";
        except Exception:
            print ('\nExit . . .\n')
            break


print ('\r\n\r\nTello EDU Demo.\r\n')

print ('end -- 输入可退出.\r\n')


#启动多线程
recvThread = threading.Thread(target=recv)  #通过Thread类进行对象实例化为recvThread;
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")  #对要发送的信息进行编码
        sock.sendto(msg, tello_address)  #发送UDP数据

    except KeyboardInterrupt:
        print ('\n . . .\n')
        sock.close()  #关闭套接字
        break


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71

运行之后还没完,这是肯定的,因为我们还需要在控制台中输入相应的指令,然后回车发送(这点肯定不需要我讲了)就是这么简单,感觉这篇文章好像没讲点啥东西^ - ^ ,但是我们已经成功通过python来控制Tello EDU了。

另外我们每输入一条指令,Tello EDU都会给我们反馈一条信息,“ok”就代表发送成功,“error”就代表发送失败(这都是肯定的)。

有时候,特别是在发送“takeoff”指令的时候会反馈一条“error”,老是感觉没啥问题啊!其实大概率是Tello的电池电量不足了,所以会反馈“error”(为啥不任性话些捏,让我迟迟没找到error的点)

当然在SDK里不仅给我们提供了控制指令,还提供了读取命令用于读取此时Tello的信息,比如“电池电量”、“高度”等等,都可以在SDK文档中查询。

最后我觉得在所有的指令中唯独弧线飞行“curve”不太好理解,而且也是报错最多的,然后我就给睿炽发邮件咨询了,以下是回复的邮件(半天就回复了,还是蛮积极的)
在这里插入图片描述
以上就是本篇文章所有内容,使用Python示例程序控制Tello EDU就是这么简单!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/683934
推荐阅读
相关标签
  

闽ICP备14008679号