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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc29uZ3JvdGVr/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
从上面的表格对照中我们能够看到 除了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 应用监測EV3port数据

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

  2. 【iOS与EV3混合机器人编程系列之四】iOS_WiFi_EV3_Library 剖析之中的一个:WiFi UDP和TCP

    在上一篇文章中.我们通过编写EV3 Port Viewer项目实现了iOS监測EV3的实时端口数据. 程序最核心的部分就是我们的开源码库iOS_WiFi_EV3_Library. 那么,在本文中,我们 ...

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

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

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

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

  5. hdu1465不easy系列之中的一个(错排)

    版权声明:本文为博主原创文章,未经博主同意不得转载. vasttian https://blog.csdn.net/u012860063/article/details/37512659 转载请注明出 ...

  6. 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(中)

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 四.创建一个Blazor应用程序 1. 第一种创 ...

  7. 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(下)

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  8. 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(完)

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

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

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

随机推荐

  1. P3649 [APIO2014]回文串(回文树)

    题目描述 给你一个由小写拉丁字母组成的字符串 ss .我们定义 ss 的一个子串的存在值为这个子串在 ss 中出现的次数乘以这个子串的长度. 对于给你的这个字符串 ss ,求所有回文子串中的最大存在值 ...

  2. Git学习总结(6)——作为一名程序员这些代码托管工具你都知道吗?

    作为一名程序员这些代码托管工具你都知道吗? 作为一名优秀的开发者,大家都会用到代码托管,我本人用的是github,确实github里面有很多很多开源的项目,所以我们目前的创业项目程序员客栈www.pr ...

  3. 【转】30分钟掌握 C#6

    [转]30分钟掌握 C#6 1. 只读自动属性(Read-only auto-properties) C# 6之前我们构建只读自动属性: public string FirstName { get; ...

  4. 使用ThoughtWorks.QRCode生成二维码

    新建Windows应用程序,加入引用ThoughtWorks.QRCode.dll,编写代码生成二维码. using System; using System.Drawing; using Syste ...

  5. Nrf51822中设置128bit UUID service

    Nrf51822中设置128bit UUID service uint32_tble_dajia_add_service(ble_dajia_t *p_wechat) { uint32_t err_c ...

  6. HDU3265 Examining the Rooms【stirling数】

    题目链接: http://acm.hdu.edu.cn/showproblem.php? pid=3625 题目大意: 有N个房间,每一个房间的要是随机放在某个房间内,概率同样.有K次炸门的机会. 求 ...

  7. 识别CentOS和Ubuntu的系统版本

    识别CentOS和Ubuntu的系统版本1.用 lsb-release#!/bin/bashInstall_LSB(){        if [ "$PM" = "yum ...

  8. [UOJ#334][NOIP2017]列队 平衡树/线段树/树状数组

    题目链接 题意不说了,一辈子也忘不掉 解法1.平衡树 这题就是平衡树裸题,每一行开一棵维护前 \(m-1\) 个,最后一列单独维护,因为很多人没有用到,所以平衡树每个节点是一个区间(pair),分裂时 ...

  9. 罗列几个Android插件化开发框架

    携程插件化框架 ACDD插件化框架 360插件化框架 Android-Plugin-Framework DL APK动态加载框架 部分框架对比 DynamicLoadApk 迁移成本很重:需要使用『t ...

  10. ssh 免密及加密远程脚本实现

    windows_host文件路径:C:\Windows\System32\drivers\etc ssh-copy-id -i ~/.ssh/id-rsa.pub root@xxxxxxx 免密验证操 ...