Tello,这是一款可以编程的带图传的能录像的遥控小飞机,它简直满足了笔者儿时的所有梦想,内置了DJI飞控的它甚至拥有连DJI的无人机都不完全具有的室内安全飞行能力。笔者看到Tello的时候就在思考,这睿炽科技究竟是什么背景,才能得到DJI的青睐?
然而结果确实让人吃惊。公司电话都一样,一个在创维10楼一个在14楼,嘿!在笔者看来,睿炽科技的创立应该是DJI将品牌分离开来的一次尝试,就像华为将荣耀部门拆分成为一个独立的公司一样,为了区分品牌的价值导向,所以大疆创新将主要面对消费级以及专业级市场的DJI品牌和主要面对入门级无人机市场的Ryze品牌分离开来,以达到更加优化的市场营销效果。
这是Tello的包装盒,干净简洁的外观搭配大面积的透明区域让人对Tello的印象加分不少。黑白橙三色的搭配可以说是贯穿了整个Tello的周边,从睿炽科技的官网到Tello的App,整体的配色都围绕着这三个颜色来,从美学角度来说是相当优秀的。
包装里面除了一台飞机以及一套备用桨叶+拆桨器之外就只有说明书+USB数据线了,该有的配件都有。
Tello标配了一颗500万像素的摄像头,拍摄的视频最高支持到720P分辨率。在Tello的前侧有一颗RGB指示灯,可以通过不同颜色来提示Tello当前的状态。Tello的售价虽然低廉,但是在用料上面却丝毫没有缩水。根据笔者推测,机身下盖和中框内部为铝镁合金材质,这样也从根本上提升了Tello的质感以及耐用度。
Tello的上盖采用了可拆卸的结构,在官网有售,售价35元一块。这对于Tello的定位来说是一个补充,不过笔者个人认为还是白色好看嘿。
Tello的动力部分采用了四颗定制的空心杯电机,它的特点非常明显:相比无刷电机来说成本低廉、驱动方式简单。但是缺点其实也很致命:寿命要比无刷电机短很多。Ryze官方宣称Tello的电机寿命可以达到至少40小时。其实对于一台玩具级别的无人机来说,40小时的累计滞空寿命已经是非常充足的了,并且寄送官方更换新的电机价格也不贵。
在实际的体验上面,Tello的这四颗电机其实非常够劲,带动这样一台小飞机绰绰有余。只不过由于Tello的桨叶比较娇小并且转速非常快,所以Tello在飞行时的噪声也会很大,这算是Tello的一个已知缺点,也是这类小飞机的通病。
在Tello的机身下腹部有三颗传感器,两边大的黑色圆形传感器是TOF(TimeOfFlying)红外距离传感器,可以探测机身和下表面之间的实际距离,将机身内部的气压传感器对应的高度数据辅以TOF传感器就可以非常精确的获得飞机的实际高度了。
两颗TOF传感器中间是一颗下视摄像头,具体参数细节未知,但是从技术角度可以推断这颗摄像头的作用是提供图像数据给OpticalFlow(光流)算法以解算飞机相对于地平面的位移,并且融合IMU(惯性测量单元)数据来达到无GPS精准定位的效果。在这个价位的无人机上能体验到如此精准的室内飞行效果,很大程度上要归功于DJI纯熟的传感器运用经验。
什么,这么小的飞机居然用手机就可以完全操控?其实完全不必惊讶。Tello的图传依靠2.4GHz WiFi可以达到100米的覆盖范围,完全可以满足日常操作使用。进入Tello的App,连接上Tello的WiFi AP即可立刻起飞。
如果你没有连上Tello的WiFi-AP,Tello App会弹出一个窗口提醒飞机未连接。点击右下角的“连接”按钮,会自动跳转到系统的WiFi设置界面,用户自行选择SSID中含有Tello的WiFi热点进行连接即可。
进入主操控界面,我们可以看到一系列的操作按钮,基本上操作Tello所需要的一切动作都可以在这个界面完成,非常简单。Tello App在界面的左上角设有和DJI无人机类似的“一键起飞”按钮,点击+滑动即可起飞,非常方便。
中间是当前连接的Tello的各项信息,在飞行的时候可以直接查看到飞行器的状态。右侧的三个按钮用于控制拍照和录像。点击中间的“切换模式”按钮即可切换拍照和录像模式。
除了支持一般的飞行功能之外,Tello App还支持VR模式。将手机放入VR眼镜里面,进入设置-VR模式即可进入沉浸式的飞机操作环境,不过这时候需要搭配官网有售的蓝牙手柄才可以进行飞机的各项操控。
我们可以在设置-高级设置里面改变Tello回传的图像以及视频质量。Tello的本体并不带有机身存储,也不支持插入TF卡,唯一获取并保存摄像头数据的方式就是通过WiFi实时传输并且在手机保存。这也会造成一些问题,比如在WiFi连接不稳定的时候,保存的视频会出现缺失的情况。这可能是Tello最严重的缺陷了:没法保证稳定的视频拍摄,不过还好,拍摄照片就不会出现这个情况。
经过笔者的实测,Tello在保持这么小的机身的情况下,依然拥有一定的抗风能力,并且在风力过大的时候会在App内用醒目的标志提醒用户风速过大。
在“飞行模式”窗口,用户可以看到6种不同的飞行模式,一般来说最常用的是抛飞模式和一键环绕模式。DJI无人机有的大部分功能Tello一样有,但是Tello还有一个“特别的技巧”——8向翻滚模式。这个模式下,用户可以通过往不同方向滑动屏幕的方式来操控飞机往指定的方向空中翻滚360度。
http://p399u43d8.bkt.clouddn.com/18-8-20/99710789.jpg
笔者在这里放上一张动图,对于小朋友来说,这种炫酷的飞行效果是非常有吸引力的~
http://p399u43d8.bkt.clouddn.com/18-8-20/79222310.jpg
并且Tello还有一个绝招:超柔韧的机身。高空炸鸡怎么办?不怕!机身几乎可以以它超强的抗性抵御一切撞击(只要不撞到电机一般问题不大),笔者曾尝试从2楼高度摔下一台Tello到水泥地上,拿起来又是一台好Tello,照飞不误。
接下来一段内容是有关Tello SDK可扩展编程开发的介绍,如果您不知道该如何为飞机编程,或者正在迷惑它的运作方式,那么请继续往下看。
“Tello 开放 SDK,让你通过 DIY 定制独特功能,亲自拓展 Tello 的更多可能性。Tello 可适用于麻省理工学院设计开发的 Scratch 青少年编程工具,让你轻松入门程序设计。同时可搭配多种配件,为你的 Tello 增添技能吧!” 官方的宣传语总是那么的诱人,从官方的说明我们得知Tello支持基于Scratch的编程,经过笔者进一步搜索发现,Tello其实有开放的UDP端口,通过UDP协议,向Tello发送指令即可控制飞机,这就为进一步实现功能提供了可能。
在RyzeRobotics官网上有提供TelloSDK的安装步骤。笔者在此简单列出:
1·访问https://scratch.mit.edu/download ,按照指引安装 Scratch 2.0 Offline Editor
2·访问https://nodejs.org/en/download/ ,根据电脑系统类型,下载并安装 node.js。
3·在https://dl-cdn.ryzerobotics.com/downloads/tello/20180222/Scratch.zip下载 Tello.js 及 Tello.s2e,打开命令行(Mac 系统请打开 “终端”,Windows 系统请在“运行”中输入 cmd), 输入 Tello.js 文件存放路径后,输入"node Tello.js",回车运行。
4·运行 Scratch 2.0,按住“Shift”键,点击“文件”,选择“导入 试验性 HTTP 拓展功能”,并在文件列表中选择"Tello.s2e"。
我们按照官网的步骤,先安装Scratch的环境。访问https://scratch.mit.edu/download,根据Scratch官网的教程一步步走即可:
·第一步:安装Adobe AIR框架,选择系统点击Download即可,安装时一路确认到底
·第二步:安装Scratch Offline Editor(Scratch离线编辑器),和上一步操作一样
接下来我们安装Node.js,Node.js是一个Javascript本地运行时,它可以让Javascript运行在本地,它对于Tello涉及的局域网网络消息收发操作来说是基础要求。
访问https://nodejs.org/en/download/ ,根据电脑系统类型下载并安装 Node.js即可。
·第一步:根据自己系统类型选择合适的安装包并且下载,一般Windows用户点击三个绿色图标最左边的Windows Installer即可。
·第二步:运行下载好的安装包,一路点击Next直到安装完毕。
之后下载https://dl-cdn.ryzerobotics.com/downloads/tello/20180222/Scratch.zip这个压缩文件,将里面的TelloChs.s2e和Tello.js解压出来,即可通过在当前目录运行cmd输入node Tello.js来运行SDK。
当然啦,为了方便大家,笔者已经将所有需要的文件打包放到了一个压缩文件当中
下载地址:https://pan.baidu.com/s/1g-7kLQ9Wxhfzt3zg20utzg
将下载好的文件解压,我们会得到这样的文件
读者们可以按照1-4的顺序一步步进行安装。一般来说安装只需要双击打开并且一路点击下一步(Next/Install/etc.)按钮即可完成。在这里有一个需要注意的地方,第三步安装的Node.js需要根据自己的系统状态来选择要安装的版本,如果您的电脑是32位的,选择第一个安装,如果是64位则选择第二个,也就是写有[64bits]的安装包进行安装。
注意到了么?有个文件夹叫做"Tello-Runtime",这是笔者封装好的Tello快捷运行包,只要按照图上的步骤进行安装,进入TelloTime这个文件夹即可运行。
一般来说,用户只需要点击RunTello.bat即可运行Tello的js脚本程序,之后打开Scratch就可以进行编程操作了。
双击启动RunTello.bat之后,如果看到了这样的界面,那么说明之前环境安装的步骤没有问题,可以直接开始打开Scratch进行编程了。
在这里,笔者对原版的SDK进行了一点小改动,将命令行的提示加入了一些中文的提示,以方便英文不好的同学。在这里我们可以看到Scratch对Tello发出的命令以及飞机回传的数据。
接下来我们打开Scratch,注意:按住SHIFT键,同时点击窗口左上角的“File”,之后点击图中弹出菜单中带有小黄点的“Import experimental HTTP extension”(导入实验性HTTP插件)这个选项。
选中"4-[Install-It-In-Scratch]TelloChs.s2e"这个文件,导入即可。
之后我们即可在Scratch的组件里的“More Blocks”选项中看到Tello的各种操作了。
在Scratch插件中笔者相对于原版修改了一些内容,增加了各项操作的单位提示,方便各位在使用的时候清楚明白的知道参数应该填写多少。
Scratch是一款由麻省理工学院(MIT) 设计开发的少儿编程工具。使用者不需要懂得任何编程知识,也不需要任何计算机基础,构成程序的命令和参数通过积木形状的模块来实现,用鼠标拖动模块到程序编辑栏即可进行逻辑编写,让编程入门里面最困难的“编程逻辑”的训练变成了一件简单的事情。
在加入插件之后,用户通过使用内部预制的“控制积木块”即可获取用户按下的键盘按键、鼠标位置等信息,并且可以在按键被按下的瞬间触发用户编写的程序,以达到“按键或者鼠标控制飞机”的目的。
当然,除了Scratch这种入门级别的应用,有一定编程基础的用户也可以通过UDP协议和Tello(局网IP:192.168.10.1)的8889(控制指令)以及8890(视频流)端口进行通讯,以完成更加丰富多样的控制逻辑。这里是Ryze官方给出的一份Python3下的UDP命令行指令收发DEMO,通过简单的UDP收发操作加上Tello内置的简易通讯协议,即可直接控制Tello。
笔者根据官方SDK的说明整理了一套明确分类的命令列表,以供各位参考。当然,除了Python,其他编程语言也可以编写基于TelloSDK的程序,只要该语言支持硬件层面的UDP消息收发即可。
[b]总结 Summary[/b]
TELLO作为大疆在教育市场的第一次试水,能够做到这样优秀的飞机品质以及性价比的确让人赞叹:DJI还是那个DJI,国际范的DJI。大疆创新是国内诞生的一匹黑马,孕育出的优秀产品也的确没有让人失望。699,你买不了吃亏,买不了...不对拿错台词了,699,你能买到一台骨子里就刻着DJI精神的、带DJI飞控的、能飞100米远、能编程、能拍照能录像的便携小飞机,性价比高到爆炸!
当然,这并不代表TELLO没有改进的空间。机身没有内置存储是最大的败笔,这让连接不稳定时会出现视频丢失片段的严重问题,无线的稳定性也依然有待改善,可编程的特性虽然优秀但是目前开发文档非常不齐全,更深层次的开发工作只能依靠自己摸索。TELLO虽然还有很多需要改进的地方,不过这些并不妨碍TELLO成为这个价位的市场上最优秀的可编程无人机。
本文参考的文献内容 - 特别感谢
[Tello Coding]Hello, Tello - Hacking Drones With Go
https://gobot.io/blog/2018/04/20/hello-tello-hacking-drones-with-go/