【iOS与EV3混合机器人编程系列之一】iOS要干嘛?EV3可以更酷!

乐高Mindstorm EV3智能机器人(以下简称EV3)
自从在2013年的CES(Consumer Electronics Show美国消费电子展)上展出之后,
就吸引了全球广大机器人爱好者的眼球!
EV3相比其上一代机器人NXT最大的提升就在于其硬件上。
除了更强大的ARM处理器,并加载了Linux操作系统之外,
EV3还配备了蓝牙,支持外接USB,外接WiFi。
因为有了这么多的硬件提升,EV3最酷的特性在于
EV3支持iOS设备!!!
这使得我们可以使用iOS设备比如iPhone来控制EV3!
乐高官方推出了iOS上的控制App Commander,如下图所示:

我们可以用Commander通过蓝牙来控制EV3家庭版搭建的各种形态的机器人!
用iPhone就可以控制一个机器人,对每一个机器人爱好者来说,都是让人兴奋不已的事!
然而,官方的App Commander有它自己的局限性!那就是它只能对EV3机器人做极其简单的控制,最主要的就是控制机器人上电机的转动,我们没办法加上任何的控制逻辑。
可以说,Commander只是让iOS设备变成一个EV3遥控器而已!
作为机器人爱好者,这如何能让我们满足呢?
iPhone,iPad,作为目前世界上极先进的手机与平板,难道就只能做一个遥控器吗?
答案必须是No!
我们要将iOS和EV3完美地结合起来,然后做出远远超出目前EV3机器人所能做的事!

在前面,我们已经提到EV3最吸引人的地方就是可以连接iOS设备,可以使用iOS设备来控制EV3机器人!
但官方App的局限性使得我们只能把iOS设备当做一个机器人遥控器,这不是我们想看到的。
我们希望iOS结合EV3可以使机器人变得更酷!
那么,问题就出现了:我们应该如何把iOS和EV3结合起来呢?

==iOS设备与EV3 大对比==
【iOS与EV3混合机器人编程系列之一】iOS要干嘛?EV3可以更酷!_第1张图片
从上面的表格对比中我们可以看到 除了EV3支持很多iPhone不具备的传感器之外,在其他方面,EV3完全和iPhone5S不是在一个数量级!以此同时,iPhone上拥有的传感器EV3也不具备!显然,一般大家不会把EV3机器人和iPhone手机相提并论,毕竟两者完全不是同一个概念的产品!但是,如果只是从技术层面的角度来看,EV3的硬件配置真的非常低,完全落后于时代!虽然很多机器人爱好者看到EV3相对于NXT还只是单片机的水准感觉已经提升了好多!
看了上面的对比,大家是不是会萌生一个想法:
如果EV3机器人把iPhone的硬件全部吸收进去,那么这机器人将会多么强大!
是的,没错!所以对于机器人方面的创业者来说,这里有两个不错的idea值得参考:
1、设计出一套拥有iPhone性能,并且除了基本的EV3传感器还拥有iPhone上的所有传感器的机器人套件!
2、利用iPhone设计一个EV3扩展硬件使得EV3的传感器都能通过这个硬件直接连接到iPhone,这样就不用EV3的控制块,直接用iPhone进行控制!
但是目前我们还没有看到这样的产品,那我们能怎么做呢?
通过无线通讯将iOS和EV3连接起来!并且用iOS来控制EV3!


==iOS和EV3的结合==


我们一项一项的来分析iOS和EV3的结合方式:
1)编程与控制方式
我们在EV3上只能使用图形化语言来进行编程,这对于广大从未接触过编程的小伙伴们而言当然是不错的选择。但是,当我们已经熟悉了图形化语言,对编程也有一定的了解之后,我们就会发现图形化语言的弊端,那就是哪怕是编写稍微复杂一点的程序,用图形化语言编写看起来都会昏乱不堪。大家只要看一下EV3家庭版的Gyro Boy的图形化程序就会深有体会了。
编写麻烦,又不易看懂使得图形化语言的编程限制了EV3机器人控制程序的编写。因此,如果我们想用EV3机器人来做点更酷的事,我们就必须考虑用一般的文字语言来进行编程。
在WWDC2014上,苹果公司推出了全新的编程语言Swift,简洁现代的语言风格使得为iOS和Mac编写程序变得更加容易。而Objective C语言,作为一直以来的iOS开发语言,也仍然可以使用,Swift语言与Objective C语言完全无缝连接。
那么,我们是不是可以考虑把本来放在EV3控制块的图形化程序移动到iOS设备上,然后用iOS来控制EV3机器人?
1)在正常的情况,我们通过计算机上的EV3软件来编写图形化语言程序,然后编写完后将程序写入到EV3控制块上运行。EV3控制块根据程序输出控制到EV3各个端口上连接的传感器,实现整个程序的运行!
2)加入iOS设备后,我们在计算机上用Swift或Objective C语言来编写控制EV3机器人的程序,编写完后在iOS设备上运行!运行后,iOS设备先通过WiFi或蓝牙连接EV3控制块,然后iOS设备根据程序输出控制指令到EV3控制块,EV3控制块根据接收到的iOS设备的控制指令输出控制到EV3各个端口上连接的传感器,并且EV3控制块实时将传感器的数据传输给iOS设备从而在iOS设备上的程序可以获取传感器数据进行有效的程序运行。
总的来说,我们要用iOS设备来替代EV3控制块,使得EV3控制块的作用仅仅用于数据交换和输出控制的中转站!在这里我们先不谈具体的实现方式,这将在未来的篇章中介绍。
2)硬件的使用
从上面的对比中我们也看到了,iOS设备上有很不错的硬件。我们应该考虑将iOS设备上的硬件也应用在EV3机器人上。这里其实我们有两种使用iOS设备的方式:
(1)iOS设备在我们的手上,iOS设备既是EV3机器人的大脑,也是EV3机器人的控制器。
(2)iOS设备直接绑在EV3机器人上,iOS设备上的硬件与EV3上的传感器一起协同工作,我们可以考虑再加一个iOS设备放在手上作为控制器。
EV3上的传感器使用在这里就不谈了,我们来看看iOS设备上的硬件能怎么用?


==iOS设备的硬件使用==


iOS设备上可以和EV3结合的硬件可以分成以下几类:
1)摄像头
2)运动传感器(包含三轴陀螺仪传感器,三轴加速度传感器)
3)GPS和指南针传感器
4)语音识别
5)多点触控Retina屏幕
6)WiFi与蓝牙通讯模块
对于WiFi与蓝牙通讯模块,其作用就是连接EV3实现数据通讯,在此暂且不谈。而其他类别的硬件则在EV3机器人上大有用武之地。
1)摄像头
EV3机器人瞬间多了一只眼睛!
最基本的玩法就是将iPhone绑在EV3机器人上,然后让iPhone上的摄像头实时拍摄视频并传输到另一台手持iOS设备,这样我们就可以远距离观看EV3机器人看到的影像!是不是很酷呢?
高级点的玩法那就是进行图像识别。EV3机器人有了摄像头就能通过编程实现图像识别从而利用识别的结果来进行特别的行为。比如自动行走,将EV3机器人变成一辆无人驾驶汽车,自动躲避障碍,自动识别路线行走,无需人的干预!如果做得到这一点,那这EV3机器人就太强大了是不是呢?
2)运动传感器
有了运动传感器,我们可以有两种使用方法:
(1)在EV3机器人上。EV3教育版配备有陀螺仪传感器,但只是单轴的,也就是说只能检测一个方向上的旋转情况。而iOS设备上的陀螺仪和加速度传感器都是三轴的,这意味着可以检测空间X,Y,Z三个方向的运动情况。将iPhone与EV3绑定,使用iPhone上的运动传感器,将大大增强EV3机器人的性能。比如EV3家庭版的Gyro Boy模型,如果加上运动传感器,我们不但能够检测Gyro Boy前后俯仰,还能检测Gyro Boy在移动过程中是上坡还是下坡,是左转还是右转,具体转动多少角度,我们都可以轻松知道。根据运动传感器的数据,结合伺服电机的数据,我们甚至可以计算出整个EV3机器人的运动轨迹,然后直接显示在我们手持设备的屏幕上。这又使得EV3机器人提升了一个层次。
2)作为手持控制器。利用运动传感器,我们可以将手中的iPhone变成一个体感控制器。因为根据运动传感器的数据,我们就可以知道iPhone的具体姿态,从而根据姿态输出具体的控制量。我们还是举例子说明。比如我们搭建了一个EV3机械臂,那么在此之前我们能怎么控制它呢?EV3的官方例子只能让机械臂自己动,但这不是我们想要看到的效果!有了iPhone,我们就有更酷的玩法了:我们用iPhone体感控制EV3机械臂,iPhone在我们手中旋转,EV3机械臂就跟着旋转,iPhone在我们手中往下转动,EV3机械臂就往下转动。。。这将是我们最后挑战的项目之一,将在后面的篇章中详细讲述实现的方法。
3)GPS和指南针传感器
有了GPS和指南针传感器,我们对EV3机器人的控制将变得更加得心应手。因为我们连EV3机器人在哪里都一清二楚了。结合摄像头,结合运动传感器,甚至结合网络,我们可以实现对EV3机器人的超远程控制,我们不需要看到机器人本身就能通过网络传输控制它,这让EV3机器人变成了真正意义上的机器人!我们把EV3打造成机器人Walle如何?
4)语音识别
想不想用iPhone通过语音识别来控制EV3机器人呢?我们将可以做到。
(加点Siri介绍)
iPhone自带的Siri正在慢慢开放,在未来的iOS版本中,我们或许可以直接使用Siri来控制EV3机器人。
那么,即使Siri暂时不开放我们无法使用,我们还可以使用科大讯飞的语音识别技术!通过在iOS应用中嵌入科大讯飞的语音识别SDK,我们就能够在应用中识别语音然后根据语音识别的内容来进行判断,从而输出控制!
5)多点触控屏幕
不想使用EV3控制块上丑陋的黑白点阵屏幕,那我们直接用iPhone的Retina屏替换掉算了。在iPhone上查看EV3连接的每一个传感器的信息显然更方面,我们当然也可以在iPhone上测试每个传感器的工作情况,甚至做好数据记录。
大家可以看到,有了iOS设备,简直就是给EV3机器人添加了几根强劲的翅膀,可以使EV3机器人站得更高,创造出以前难以想象的EV3机器人。
或许很多小伙伴们会有这样的疑虑:如此强大的EV3机器人,我们能做出来吗?

【本文为原创文章,如需转载,请注明出处,谢谢![email protected]



你可能感兴趣的:(ios,编程,机器人,LEGO,ev3)