使用socket调试工具控制Tello EDU无人机
最近工作一直在搞大疆之前推出的一款用于编程教育的无人机–Tello EDU,就是下图的这个小东西:
我们可能都知道在Tello EDU推出之前还有上一代Tello,它们两个的外观差异不算太大,只不过把白色外壳改成了透明外壳,给人一种“透明探索版”的感觉,但是我总觉得还是白色的好看。。。并且EDU版本很显然的增加了教育元素,包括可以使用最简单的scratch编程控制,使用swift语言以及当今热门的python语言来操控,所以本系列文章主要针对python编程语言来控制。
在搞这个小东西的时候其实还是非常困难的,因为国内好像针对于使用python控制Tello EDU无人机的比较系统的教程并不多(可能是我检索能力有限),所以就想来做这件事,包括我在探(xia)索(gao)的过程中遇到的一些令人头疼的问题及解决方法也会分享出来;当然搞这个东西不能急于求成,我会连载多篇博客来分享Tello EDU使用python控制的经验。接下来,进入主题:
在正式开始使用python语言控制之前我们需要先搞清楚“Tello EDU无人机是通过哪种方式和我们的电脑进行通信的?”
很显然,如上图所示,打开Tello EDU后,它会发送一个自己的WIFI信号,我们需要断掉当前电脑的网络,然后和它相连。。。(我。。。),总之,我不太喜欢这种方式,因为经常在调试的过程中电脑会自动断连Tello的Wi-Fi(根本没网),所有就会产生很多多余的步骤,而且感觉真的不如蓝牙稳定,但可能考虑到Tello飞行距离的原因,所以连接方式就必须舍弃蓝牙该用WIFI了。
另外,Wi-Fi其实只是一个通信的载体,从根源上分析的话—Tello EDU和PC是基于UDP的socket通信,至于“神马是基于UDP的socket通信?”,我这个《计算机网络》没学好的人实在不敢详细解释(以免误人子弟),所以大家可以参考其他博客的关于UDP和socket的介绍,当然不要怕,不需要理解的很深刻,只要知道两者分别什么概念?用来做什么的?简单通信过程?就可以了;然后再回到这里我们继续说。
这里我们建议先去Tello EDU官网下载SDK文档然后简单阅读:
https://www.ryzerobotics.com/cn/tello-edu/downloads
当我们知道了Tello EDU和PC是通过“基于UDP的socket通信”之后,这里我推荐一个socket调试工具—“ssokit”,以下是官网的链接:
http://product.rangaofei.cn/ssokit/pages/
当然也可以到我上传的资源免费下载:
分别为windows和Mac的安装包
下载完打开后的样子:(我的是MAC,但是基本和windows没差别)
这里我们需要在最下面一栏选择UDP模式,然后选择“客户端”并对地址和端口进行设置,地址及端口号都在SDK文档里有所标注:
然后点击连接后会显示如下状态信息:
数据1、数据2、数据3都是一样用的,在哪个栏里输入基本没区别,在启动使用socket调试模式控制前需要先输入“command”指令(SDK文档里有写),然后点击发送,再然后随意选择一栏输入SDK文档中给我们提供的指令,比如起飞“takeoff”、降落“land”等等。
当然把一开始输入的“command”删掉再写入其他指令也肯定没问题,但是这个软件不太方便的一点是每次输入指令都必须使用鼠标点击相应的数据栏,删除并输入新指令后再鼠标点击“发送”(回车都不管用)所以在使用ssokit控制Tello EDU时必须要快速输入,因为Tello无人机的安全模式使得如果15秒内无任何指令发送,无人机将会自动降落。
另外,有时候发送指令后,发现无人机不听话了,为啥呢?此时你也许就能体会PC主动断连Tello EDU Wi-Fi的糟糕之处了。。。
如果没有问题的话,借助SDK文档尝试一遍里面的控制指令吧!