乐高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 大对照==

从上面的表格对照中我们能够看到 除了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编敲代码变得更加easy。

而Objective C语言,作为一直以来的iOS开发语言。也仍然能够使用,Swift语言与Objective C语言全然无缝连接。

那么,我们是不是能够考虑把本来放在EV3控制块的图形化程序移动到iOS设备上,然后用iOS来控制EV3机器人?
1)在正常的情况,我们通过计算机上的EV3软件来编写图形化语言程序,然后编写完后将程序写入到EV3控制块上执行。

EV3控制块依据程序输出控制到EV3各个port上连接的传感器,实现整个程序的执行!

2)加入iOS设备后。我们在计算机上用Swift或Objective C语言来编写控制EV3机器人的程序,编写完后在iOS设备上执行!执行后。iOS设备先通过WiFi或蓝牙连接EV3控制块,然后iOS设备依据程序输出控制指令到EV3控制块。EV3控制块依据接收到的iOS设备的控制指令输出控制到EV3各个port上连接的传感器,而且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机器人,我们能做出来吗?

【本文为原创文章。如需转载,请注明出处。谢谢!

songrotek@qq.com】

【iOS与EV3混合机器人编程系列之中的一个】iOS要干嘛?EV3能够更酷!相关推荐

  1. 【iOS与EV3混合机器人编程系列之三】编写EV3 Port Viewer 应用监测EV3端口数据

    在前两篇文章中,我们对iOS与EV3混合机器人编程做了一个基本的设想,并且介绍了要完成项目所需的软硬件准备和知识准备. 那么在今天这一篇文章中,我们将直接真正开始项目实践. ==第一个项目: EV3 ...

  2. 【iOS与EV3混合机器人编程系列之二】工欲善其事,必先利其器(准备篇)

    在上一篇文章中,我们论述了iOS与EV3结合后机器人开发的无限可能, 那么,大家要不要一起来Hacking一把呢? 为了能够完整地完成我接下来我讲的项目,我们需要做以下准备: 1.一台Mac运行MAC ...

  3. 【iOS与EV3混合机器人编程系列之五】iOS_WiFi_EV3_Library 剖析之连接EV3

    在上一篇文章中,我们讲解了如何用开源代码库CocoaAsyncSocket来实现iOS上的UDP和TCP数据通信.那么在本文中,我们将介绍在CocoaAsyncSocket的基础如何使用UDP和TCP ...

  4. 【iOS与EV3混合机器人编程系列之六】iOS_WiFi_EV3_Library 剖析之发送命令给EV3

    在上一篇文章中,我们已经知道了如何通过WiFi将iOS设备和EV3连接起来,那么下一步的工作就是从iOS设备中发送命令给EV3并接收EV3返回的数据.这也是本篇文章将告诉大家的. 首先要明确的一点是本 ...

  5. 【iOS与EV3混合机器人编程系列之7】通过蓝牙控制EV3

    1 前言 在这个系列之前的博客中,我研究觉得在iOS未越狱的情况下,无法使用蓝牙来控制EV3,编写类似Commander的程序.但,最近和网友的研究发现,通过External Accessory 来实 ...

  6. 【iOS与EV3混合机器人编程一系列五个】iOS_WiFi_EV3_Library 解剖连接EV3

    在上一篇文章中.我们解说了怎样用开源码库CocoaAsyncSocket来实现iOS上的UDP和TCP数据通信.那么在本文中.我们将介绍在CocoaAsyncSocket的基础怎样使用UDP和TCP连 ...

  7. 【浅墨Unity3D Shader编程】之中的一个 夏威夷篇:游戏场景的创建 amp; 第一个Shader的书写...

    本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/40723789 作者:毛星云(浅墨) ...

  8. iOS 11开发教程(三)运行第一个iOS 11程序

    iOS 11开发教程(三)运行第一个iOS 11程序 运行iOS11程序 创建好项目之后,就可以运行这个项目中的程序了.单击运行按钮,如果程序没有任何问题的话,会看到如图1.6和1.7的运行效果. 图 ...

  9. iOS 11开发教程(二)编写第一个iOS 11应用

    iOS 11开发教程(二)编写第一个iOS 11应用 编写第一个iOS 11应用 本节将以一个iOS 11应用程序为例,为开发者讲解如何使用Xcode 9.0去创建项目,以及iOS模拟器的一些功能.编 ...

最新文章

  1. 使用mii-tool设置网卡速率
  2. mysql2000数据库四合一_sqlserver2000个人版64
  3. 启用邮箱提示访问特权不够
  4. BZOJ2298 [HAOI2011]problem a
  5. 用RAM存储器构造能够依次读取各存储单元内容的电路
  6. ubuntu无法安装vscode(visual studio code)如何卸载snap?
  7. 使用BIOS进行键盘输入和磁盘读写---汇编学习笔记
  8. Java Jackson源码研究 - how is class member attribute information is parsed by Serializer
  9. leetcode 55. 跳跃游戏 思考分析
  10. 【ZOJ - 3329】One Person Game(带循环的概率dp,数学期望,高斯消元,数学)
  11. Asp.Net MVC1.0正式版发布
  12. 十位值得关注的Java顶级专家
  13. android远程桌面软件毕设_2019 远程桌面解决方案综述
  14. java+map申明_Java中两种HashMap申明方式区别?
  15. P2:图像分类:KNN与线性分类器
  16. SQL2000系統表的應用
  17. linux php服务器搭建,如何搭建linux服务器
  18. Modelica学习笔记1
  19. 肯德尔秩相关系数matlab,常用的特征选择方法之 Kendall 秩相关系数
  20. CAD图纸该如何修改背景颜色呢?

热门文章

  1. 40 个 SpringBoot 常用注解
  2. 面试官问我 StringBuilder 线程不安全的点在哪儿.....
  3. 再见了SpringMVC,这个框架有点厉害,甚至干掉了Servlet!
  4. Linux纯干货知识总结 | 面试专用
  5. MySQL中,当update修改数据与原数据相同时会再次执行吗?
  6. Java如何优雅的实现时间控制
  7. 2021年自然语言处理学习路线!
  8. Tensorflow基础入门十大操作总结
  9. 当博导10年,一博士生跟了我7年,我是悲喜交加...
  10. 南大周志华清华胡事民入围院士候选!计算机领域共计7人