无人机项目化教程 课件 项目7 Tello无人机编程_第1页
无人机项目化教程 课件 项目7 Tello无人机编程_第2页
无人机项目化教程 课件 项目7 Tello无人机编程_第3页
无人机项目化教程 课件 项目7 Tello无人机编程_第4页
无人机项目化教程 课件 项目7 Tello无人机编程_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

无人机项目化教程项目7

Tello无人机编程项目7Tello无人机编程无人机与航模的最大区别就是无人机可通过程序进行控制,在感受完无人机的飞行后,或许您有一个大胆的想法,想学习无人机编程,通过程序控制无人机的飞行。对于无人机初学者来说,哪款无人机适合编程入门呢?如何开始无人机编程呢?项目任务:对于无人机初学者来说,要完成项目内容需学习以下任务:项目描述:任务7.1熟悉Tello无人机基础知识任务7.2搭建Tello无人机编程环境任务7.3Tello+图形化编程实践任务7.4Tello+Python编程实践Tello(特洛)是深圳市睿炽科技有限公司专为广大青少年无人机爱好者打造的一款小型无人机,它支持S抛飞、全向翻滚、手上降落、360°环绕等功能,可适配VR眼镜,使无人机爱好者体验先进的机器视觉所带来的稳定飞行性能。Tello无人机还是一款强大的益智编程无人机,它支持Scratch、Python和Swift等编程语言,提供丰富的SDK接口,是一款非常适合作为无人机初学者编程入门的产品。任务7.1熟悉Tello无人机基础知识Tello无人机1任务7.1熟悉Tello无人机基础知识Tello无人机由机身、桨叶、桨叶保护罩和电池几部分组成部分,其中机身包括状态指示灯、摄像头、电源开关、天线、视觉定位系统等,如图7-1所示。任务7.1熟悉Tello无人机基础知识图7-1Tello无人机任务7.1熟悉Tello无人机基础知识

TelloSDK通过Wi-FiUDP协议与无人机连接,使用户可以通过文本命令控制无人机。Tello无人机官网提供的一个基于Python2.7环境的UDP通信端口的无人机编程样例程序,可以实现与Tello无人机的交互,包括向Tello无人机发送SDK命令和接收Tello无人机回复的信息。控制命令(xxx)若执行成功,则返回“ok”;若执行不成功,则返回“error”。设置命令(xxa)若执行成功,则返回“ok”;若执行不成功,则返回“error”。读取命令(xx?)读取实时子参数值。TelloSDK接口介绍2任务7.1熟悉Tello无人机基础知识

2)TelloSDK命令由TelloSDK引出了一些命令集,供使用者二次开发。TelloSDK命令集如表7-1所示。类型命令描述可能的响应控制命令Command进入SDK命令模式ok/errortakeoff自动起飞land自动降落upx向上飞xcmx:20~500downx向下飞xcmx:20~500表7-1TelloSDK命令集控制命令leftx向左飞xcmx:20~500

ok/errorrightx向右飞xcmx:20~500forwordx向前飞xcmx:20-500backx向后飞xcmx:20~500flipx朝x轴翻滚

l=(left)r=(right)f=(forword)b=(back)goxyzspeed以设置速度(cm/s)飞往坐标(x,y,z)x:-500~500y:-500~500z:-500~500speed:10~100(cm/s)x,y,z不能同时在-20~20任务7.1熟悉Tello无人机基础知识控制命令jumpxyzspeedyawmid1mid2Tello无人机从1号挑战卡(mid1)飞往2号挑战卡(mid2),(x,y,z)是基于1号挑战卡(mid1)坐标系的相对位移量,speed表示飞行速度,yaw表示旋转角度(yaw>0)

ok/errorcwx顺时针旋转x°x:1~360ccwx逆时针旋转x°x:1~360设置命令speed将当前速度设置为xcm/sx:10~100mon打开挑战卡探测,默认打开前视和下视探测读取命令speed?获取当前设置的速度(cm/s)x(10~100)battery?获取当前电池剩余电量的百分比值x(10~100)sdk?获取TelloSDK版本号xx(x≥20)sn?获取Tello无人机的SN编码生产序列号任务7.1熟悉Tello无人机基础知识任务7.1熟悉Tello无人机基础知识Tello无人机通过视觉定位系统识别挑战卡上的ID,从而实现对无人机的定位。图7-2挑战卡挑战卡31)挑战卡卡面TelloEDU无人机盒子中有4张挑战卡,每张挑战卡正反两面印制着不同的图案和不同ID(共有8个ID),挑战卡上印制的图案是由小火箭、挑战卡ID、星球3部分组成,形成相互区别的标记,如图7-2所示。任务7.1熟悉Tello无人机基础知识

2)挑战卡坐标系挑战卡上的图案蕴含着三维坐标系的信息。以挑战卡的正中心为原点,小火箭飞起的方向为X轴正向,与小火箭垂直的方向为Y轴方向,Y轴左侧为Y轴正向,与挑战卡平面垂直的是Z轴,如图7-3所示。图7-3挑战卡坐标系任务7.1熟悉Tello无人机基础知识

3)挑战卡摆放挑战卡支持SDK2.0及以上版本的Tello无人机使用。将挑战卡放置在水平面上(地面或桌面),确定挑战卡小火箭的方向,设计好挑战卡的摆放位置。挑战卡的摆放方式有4张挑战卡的摆放方式、5张挑战卡的摆放方式、6张挑战卡的摆放方式,当然也可以根据实际需求自由摆放,如图7-4所示。图7-4挑战卡的摆放方式注意:①要使用卷尺,精确2张挑战卡的距离。②挑战卡的朝向要保持一致。③2张挑战卡的距离不宜太短,也不宜太长,在60~120cm比较合适。④放置无人机时,机头方向应与挑战卡方向一致。任务7.1熟悉Tello无人机基础知识4.UDP协议在Tello无人机编程和多机编队时,使用UDP协议传输命令,客户端通过Wi-Fi网络向Tello无人机发送utf-8类型的字符串,Tello无人机接收命令后执行对应的动作。UDP是socket套接字中的一种通信协议,如图7-5所示。图7-5UDP通信协议任务7.1熟悉Tello无人机基础知识客户端与服务器建立UDP通信需要如下3个步骤。第一步:创建socket套接字对象(实例化socket套接字对象)。第二步:发送数据到对应socket套接字的IP地址和端口号,接收服务器的数据。第三步:关闭socket套接字。Tello无人机在Wi-Fi模式下,socket套接字IP地址为,端口号为8889,在发送动作命令之前,先发送“command”命令给Tello无人机,使其启动SDK模式。Tello无人机的UDP连接编程代码如下。任务7.1熟悉Tello无人机基础知识#-*-coding:utf-8-*-

importsocket

#1.创建socket对象,设置参数AF_INET:面向网络、socket.SOCK_DGRAM:UDP连接协议

tello_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

#绑定端口号8889

tello_socket.bind((‘’,8889))

#发送“command”使Tello无人机启动SDK模式,获取Tello无人机回复的信息,并打印出来

tello_socket.sendto(‘command’.encode(‘utf-8’),(‘’,8889))

response,ip=tello_socket.recvfrom(100)

print(‘from%s:%s’%(ip,response))

#发送“takeoff”使Tello无人机起飞,获取Tello无人机的回复信息,并打印出来

tello_socket.sendto("takeoff".encode('utf-8'),('',8889))

response,ip=tello_socket.recvfrom(100)

print('from%s:%s'%(ip,response))任务7.1熟悉Tello无人机基础知识任务7.2搭建Tello无人机编程环境Tello无人机编程需要准备的软件和硬件清单如表7-2所示。分类名称数量作用软件Python软件功能包Pycharm软件开发软件(选用)socketudp功能包Scratch软件编程软件,版本2.0硬件Tello无人机1-4架飞行编队挑战卡4张定位备用电池若干给无人机提供电源路由器1台发送命令计算机1台运行Python文件表7-2Tello无人机编程软、硬件清单Tello无人机编程软、硬件清单1任务7.2搭建Tello无人机编程环境Tello无人机编程可以采用Scratch编程平台和Python编程平台,Scratch编程平台的安装比较简单,在后面编程时会介绍,这里主要介绍Python编程平台的搭建。购买了Tello无人机后,可以联系供应商,获得相关编程资料。打开无人机编程的样例程序文件夹,无人机初学者可以先学习样例程序的编程思路,然后根据样例程序进行扩展性编程,如图7-6所示。图7-6无人机编程资料软件环境的安装2任务7.2搭建Tello无人机编程环境搭建Tello无人机编程环境,首先安装Python软件,然后安装3个Python模块,分别为netiface模块、netaddr模块、matplotlib模块。这里提供了一个.bat文件,它将Tello编程环境安装过程编写好了,无人机初学者可以直接双击该文件夹下的“Python环境一键安装.bat”文件,如图7-7所示。图7-7编程环境的安装如果想查看资料中的.py文件内容,那么可以安装Pycharm软件进行查看,Pycharm软件的安装方法,无人机初学者可以上网查看,这里不再赘述。说明:①.bat脚本的使用说明可以参考网络资料。②echo:回显命令,用于将此命令后的内容显示到控制台上。③pause:用于暂停批处理文件的处理并显示消息。任务7.2搭建Tello无人机编程环境任务7.3Tello+图形化编程实践在Tello无人机编程时,可以通过将扩展包加载到图形化编程软件中,使用扩展包提供的命令进行编程。1.准备工作1)Node端下载根据计算机系统类型,在Node.js官网下载并安装Node.js文件。2)Scratch2.0软件下载并安装Scratch软件,本书提供了Scratch2.0软件安装包,无人机初学者可进入百度网盘下载。3)Tello拓展包在深圳市睿炽科技有限公司网站下载Tello.js文件并解压。任务7.3Tello+图形化编程实践2.Tello+Scratch编程1)任务描述将4张挑战卡放置在边长为120cm的正方形4个角,挑战卡的中心与正方形的4个顶点对齐。Tello无人机从1号挑战卡飞到2号挑战卡,从2号挑战卡飞到3号挑战卡后上升20cm,从2号挑战卡飞到3号挑战卡,从3号挑战卡飞到4号挑战卡后下降20cm,从4号挑战卡飞到1号挑战卡后降落。任务7.3Tello+图形化编程实践2)任务实验第一步:打开Scratch软件,按住Shift键不放,单击“文件”选项卡,选择“ImportExperimentalExtension”选项(导入实验性HTTP扩展功能),选择之前下载的“TelloChs.s2e”文件,单击“确定”按钮,在“脚本”选项卡中出现“更多模块”选项,选择该选项可以看到Tello无人机的操作指令,如图7-8所示。图7-8导入Tello图形模块任务7.3Tello+图形化编程实践第二步:使用Node.js命令打开并运行“Tello.js”文件,如图7-9所示。图7-9运行Tello.js文件任务7.3Tello+图形化编程实践第三步:按照任务规划路径,使用卷尺在地面上绘制一个正方形,边长为120cm,左下角放置1号挑战卡,左上角放置2号挑战卡,右上角放置3号挑战卡,右下角放置4号挑战卡,挑战卡的中心与四边形的4个顶点对齐,如图7-10所示。图7-10路径俯视图任务7.3Tello+图形化编程实践第四步:编写程序。从指令区拉一个小旗,将“起飞”指令、“向前距离120”指令、“向右距离120”指令、“向上距离20”指令、“向后距离120”指令、“向下距离20”指令、“向左距离120”指令、“降落”指令拖动到代码区,注意设置好数值,如图7-11所示。图7-11Scratch软件任务7.3Tello+图形化编程实践第五步:连接Tello无人机的Wi-Fi。将Tello无人机放置在1号挑战卡上,打开Tello无人机电源开关,每架Tello无人机的Wi-Fi的账号都不相同,在计算机中搜索该Tello无人机的Wi-Fi,单击“连接”按钮,如图7-12所示。图7-12连接Tello无人机的Wi-Fi任务7.3Tello+图形化编程实践第六步:在运行程序前请检查所有设备放置、连接等状态是否正确,具体检查内容如下。①所有挑战卡的方向是否一致。②Tello无人机机头与挑战卡方向是否一致。③Tello无人机电量是否充足。④Tello无人机Wi-Fi是否已连接。⑤程序逻辑是否正确。⑥Tello无人机飞行的区域是否安全。检查无误后,单击小旗

进行测试,若正常按照规则飞行,则证明Tello无人机与Scratch软件连接成功。任务7.3Tello+scratch编程实践任务7.4Tello+Python编程实践

1)设置路由器账号和密码使用网线将计算机与路由器相连,在浏览器地址栏输入“”,进入路由器管理界面。在左侧导航栏单击“基本设置”选项,在右侧无线网络基本设置页面的“SSID号:”文本框中输入“UAV”,单击“保存”按钮。在导航栏单击“无线设置”→“无线安全设置”选项,在右侧无线网络安全设置页面的“PSK密码:”文本框中输入“12345678”,单击“保存”按钮,完成路由器账号和密码的设置,如图7-13所示。编队前准备1任务7.4Tello+Python编程实践图7-13设置路由器账号和密码任务7.4Tello+Python编程实践

2)重置Tello无人机的Wi-Fi在Tello无人机开机状态下,长按电源按钮直到状态指示灯熄灭,Tello无人机的Wi-Fi账号和密码将恢复出厂设置,此时默认为无密码。

3)获取Tello无人机的SN编码获取Tello无人机的SN编码有两种方式,一种是直接查看,另一种是通过程序获得。直接查看方式:在Tello无人机电池卡槽中(拔出电池后),可以看到该机的SN编码和默认的Wi-Fi账号,如图7-14所示。图7-14Tello无人机的SN编码任务7.4Tello+Python编程实践程序获得方式:用计算机连接Tello无人机的Wi-Fi进行连接,连接成功后,在douji文件夹中双击“双击获取SN编码.bat”脚本文件,系统弹出命令窗口,返回该无人机的SN编码,在命令窗口中可以看到系统的响应信息,如图7-15所示。图7-15查看SN编码任务7.4Tello+Python编程实践

4)切换AP模式Tello无人机的AP模式是无人机编队模式,打开资料文件夹中的“fromation_setup.py”文件,最后一行“set_ap(‘UAV’,‘12345678’)”语句用于设置Tello无人机AP模式的路由器账号和密码,此处要与前面路由器设置的账号、密码保持一致。在设置Tello无人机的AP模式时,首先用计算机连接Tello无人机的Wi-Fi,然后双击duoji文件中的“双击转换AP模式.bat”脚本文件,如图7-16所示。在命令窗口显示“ok”时,表示Tello无人机进入了AP模式,可以进行编程了。图7-16转换AP模式任务7.4Tello+Python编程实践2.编程路径规划新建一个文本文档,命名为“play4”,保存在E盘duoji文件夹中。以4架Tello无人机编程为例,在“play4.txt”文件中编写程序,使4架Tello无人机一起完成起飞、移动、翻滚和降落等动作。第一步:摆放挑战卡拿出4张挑战卡并将其卡按照边长为120cm的正方形摆放,挑战卡的方向统一与图7-17中X轴正向一致,每张挑战卡都有独立的坐标系,挑战卡与挑战卡之间使用相对位移量来表示移动的坐标值。挑战卡摆放俯视图如图7-17所示。图7-17挑战卡摆放俯视图任务7.4Tello+Python编程实践注意:①图7-17中X、Y坐标指示不代表整体坐标系,坐标指示只表明独立挑战卡的方向。②在编程过程中挑战卡位置固定不动。第二步:根据挑战卡的摆放方式进行多机编队路径规划,具体的无人机编程飞行方式如下。任务7.4Tello+Python编程实践1)初始位置摆放先放置4架Tello无人机在4张挑战卡上,如图7-18所示。在Tello无人机机身处查看并记录Tello无人机的SN编码,本书中1~4号无人机的SN编码分别如下:1号无人机:OTQDF8UEDB203H2号无人机:OTQDG44EDBJ5423号无人机:OTQDG44EDB23H44号无人机:OTQDG7REDBX81Z图7-18初始位置摆放任务7.4Tello+Python编程实践2)起飞动作使4架Tello无人机同时起飞,起飞高度为100cm,如图7-19所示。图7-19起飞视图任务7.4Tello+Python编程实践3)下降动作编号为1、4的Tello无人机下降,下降至60cm高度,编号为2、3的Tello无人机保持不动,如图7-20所示。图7-201号和4号无人机下降视图任务7.4Tello+Python编程实践4)交换位置第一步:2号无人机飞到4号挑战卡,4号无人机飞到2号挑战卡,这2架无人机高度保持不变,编号为1、3的无人机保持不动,如图7-21所示。图7-212号与4号无人机对角飞任务7.4Tello+Python编程实践4)交换位置第二步,1号无人机飞到3号挑战卡,3号无人机飞到1号挑战卡,这2架无人机高度保持不变,编号为2、4的无人机保持不动,如图7-22所示。图7-221号和3号无人机对角飞任务7.4Tello+Python编程实践5)上升动作编号为1、4号无人机上升,上升至100cm高度,编号为2、3的无人机保持不动,如图7-23所示。图7-231号和4号无人机上升任务7.4Tello+Python编程实践6)绕场动作第一步:4架Tello无人机同时移动。3号无人机飞到4号挑战卡,4号无人机飞到1号挑战卡,1号无人机飞到2号挑战卡,2号无人机飞到3号挑战卡,如图7-24所示。图7-24绕场移动任务7.4Tello+Python编程实践6)绕场动作第二步:4架Tello无人机再次同时移动。注意:4架Tello无人机必须同时移动,否则会撞机。1号无人机飞到1号挑战卡,2号无人机飞到2号挑战卡,3号无人机飞到3号挑战卡,4号无人机飞到4号挑战卡,如图7-25所示。图7-25绕场移动任务7.4Tello+Python编程实践7)翻滚动作4架Tello无人机同时向右翻滚,如图7-26所示。图7-26翻滚动作任务7.4Tello+Python编程实践8)降落动作4架Tello无人机同时降落,如图7-27所示。至此,完成4架Tello无人机的编程路径规划。图7-27降落动作任务7.4Tello+Python编程实践3.多机编队指令在进行Tello无人机多机编程时,需要使用Tello无人机官方提供的SDK指令,前面已经介绍了TelloSDK指令,接下来按任务的路径规划来编写程序。多机编程程序如表7-3所示。指令说明scan4batterycheck15correct_ip1=0TQDF8UEDB203H2=0TQDG44EDBJ5423=0TQDG44EDB23H44=0TQDG7REDBX81Z*>monsync5*>takeoff//扫描4台Tello无人机//检查无人机电量是否在15%以上//所有无人机打开挑战卡探测//同步时间为5s//起飞表7-3多机编队程序任务7.4Tello+Python编程实践sync101>go0010060m12>go0010060m23>go0010060m34>go0010060m4sync51>go006060m12>go0010060m23>go0010060m34>go006060m4sync51>go006060m12>jump-120-120100600m2m43>go0010060m34>jump12012060600m4m2sync10//同步时间为10s//1号无人机以60cm/s的速度上升至100cm高度//2号无人机以60cm/s的速度上升至100cm高度//3号无人机以60cm/s的速度上升至100cm高度//4号无人机以60cm/s的速度上升至100cm高度//同步时间为5s//1号机以60cm/s的速度下降至60cm高度//2号机高度保持不变//3号机高度保持不变//4号机以60cm/s的速度下降至60cm高度//同步时间为5s//1号机高度保持不变//2号机从挑战卡2飞往挑战卡4,速度为60cm/s//3号机高度保持不变//4号机从挑战卡4飞往挑战卡2,速度为60cm/s//同步时间为10s任务7.4Tello+Python编程实践1>jump120-12060600m1m32>go0010060m43>jump-120120100600m3m14>go006060m2sync101>go0010060m32>go0010060m43>go0010060m14>go0010060m2sync101>jump-1200100600m3m42>jump0120100600m4m13>jump1200100600m1m24>jump0-120100600m2m3sync10//1号无人机从挑战卡1飞往挑战卡3,速度为60cm/s//2号机高度保持不变//3号机从挑战卡3飞往挑战卡1,速度为60cm/s//4号机高度保持不变//同步时间为10s//1号机以60cm/s的速度上升至100cm高度//2号机高度保持不变//3号机高度保持不变//4号机以60cm/s的速度上升至100cm高度//同步时间为10s//1号机从挑战卡3飞往挑战卡4,速度为60cm/s//2号机从挑战卡4飞往挑战卡1,速度为60cm/s//3号机从挑战卡1飞往挑战卡2,速度为60cm/s//4号机从挑战卡2飞往挑战卡3,速度为60cm/s//同步时间为10s任务7.4Tello+Python编程实践1>jump-1200100600m4m12>jump0120100600m1m23>jump1200100600m2m34>jump0-120100600m3m4sync10*>fliprsync5*>land//1号机从挑战卡4飞往挑战卡1,速度为60cm/s//2号机从挑战卡1飞往挑战卡2,速度为60cm/s//3号机从挑战卡2飞往挑战卡3,速度为60cm/s//4号机从挑战卡3飞往挑战卡4,速度为60cm/s//同步时间为10s//所有无人机向右翻滚//同步时间为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论