嗨,大家好!我是Neo。最近几年人工智能(AI)可以说是个如火如荼的新锐概念。但不同于大疆的无人机或者各种VR设备,AI设备本身由于兼具了软硬件的要求,门槛其实还是挺高的。

比如对于之前刷屏的波士顿动力的后空翻机器人Atlas,无论是机械结构,还是运动平衡算法,都是普通玩家没法企及的。别的不说,数百甚至数千万美元的研发投入,就让大家只能看看而已了。

同时对于极客和硬件玩家来说,面对茫茫多的新概念,比如Raspberry Pi啦,Arduino啦,似乎都是非常火的产品二次开发社区。那么到底该如何选择呢,Neo我最近刚好在做一些个人项目,把周边朋友手头的这类设备都搜刮过来做了个全面解读,才有了此文。希望感兴趣的值友看完这篇文章,能对自己该选择怎样的产品能有一个比较明晰的概念。

一. 树莓派 Raspberry Pi

啥是树莓派?

树莓派是将电脑集成到了一块电路板上的微型电脑。

可接显示器鼠标键盘等外设;基于linux的系统;是一台功能完整的迷你电脑;存储通过micro-SD卡来提供;内置以太网接口可直接联网 (Arduino也可以访问网络,但那需要一些额外的部件)。

也就是说,树莓派其实就是一台小电脑,并且已经兼容了完整的软硬件系统,可以直接进行开发。

这样对于偏编程开发的技术人员来说,树莓派是一个非常低成本而又可靠的开发平台。

并且编程环境就是标准的Linux编程环境,对于有经验的程序员来说上手非常容易。但这也就导致对于没有相关经验的人来说,树莓派的软件编程门槛有点高。并且如果想做运动实例的话,配置过程比较复杂,还需要外接驱动板,成本也就上去了。

二. Arduino

啥是Arduino?

Arduino是一个完全开源,可以二次开发用于商业运营的开发平台。

核心:AVR单片机
本质:单片机应用开发板

优势:简单的函数,还有许多应用库,这样就不用直接去操作寄存器了,使得没有很好的单片机基础的人员也可以使用Arduino做出自己想要的东西。

简洁的IDE(集成开发环境):也就是写代码,编译,调试,下载的上位机软件。

作为核心的Arduino开发板有多个版本,比如最常见的Arduino UNO板。此外,Arduino拥有自带的软件开发系统。目前非常的火的智能机械臂就是利用Arduino开发出的非常热门的品类。

然而Arduino的开发成本其实不低,要求玩家必须有丰富的软硬件知识和不错的动手能力。而对于这样的高阶玩家来说,Arduino芯片本身的性能又显得有些孱弱。

所以目前Arduino更多的还是作为一些高校学生的毕业设计,或者个人/小团队练手的选择。如果要做严肃的机器人/AI项目开发,Arduino的算力/复杂度比,还是稍微低了点。也就是说,玩家实力达到创客级别之后,Arduino平台本身的硬件性能瓶颈,会明显限制创客的想象力了。

三. 全地形可编程机器人HEXA

看到这里可能有值友会说:聊了半天啥情况?

波士顿动力那种牛逼的我们买不起;
树莓派那种偏软件的不仅上手门槛很高,即便开发出应用,也仍属于是一个PC设备,还称不上是机器人;
而Arduino这种偏硬件的对于开发者来说,如果不太明白机械结构设计不会自己搭控制系统,那么可玩性也非常低。

所以啥也干不了?
好在,有需求就会有厂商来努力填补这个空缺。
Vincross最近新出的一款可编程全地形机器人HEXA,似乎就是一个不错的尝试。

我最早注意到这个产品,其实也是看站内的一篇众测报告。
前不久还在《Wired》杂志的年度产品"Gear of the Year"里看到HEXA占据了非常大的篇幅:

虽然没有细看,但留下了印象。就是觉得这个产品蛮酷的,好像以前没见过。
没想到身边的Geek小伙伴居然已经直接在KS上众筹了一台,赶快第一时间拿过来玩玩。首先HEXA本身的造型比较让人印象深刻,把它放在办公桌上可以达到超过100%的回头率,不少同事甚至回头了不下三次。纷纷表示,这个是什么东西?能不能演示一下?

首先从外形来看,六足(Hexapod Robot)的结构会比传统的轮式、或者履带式结构更适合各种越野环境。美国NASA目前正在研制的登月机器人ATHLETE其实就是源于六足机器人的造型,从而可以更好的适应月球复杂的地表环境:

在一些地面比较不平整的环境中,足型机器人先天就会比轮式机器人拥有更强的通过能力。

对于一些沟壑,足型机器人也可以有更强的环境适应能力。而对于六足机器人来说,只要保证三足不离地,就可以非常稳定,而如果增加到八足或者更多又会造成对软硬件资源要求增加,效果却不明显。所以其实六足是最具性价比的一个选择:

而HEXA则将六足机器人的优势进一步优化,从步态上来说,有跨步、正常、探洞三种步态,再加上它可以360°无限旋转的头部,使得HEXA在行动能力上更加灵活便捷。

我想HEXA的团队在设计这款产品的时候,主要也是考量了如何兼具性能和成本的平衡,从而最大化的实现产品力。
聊完了六足结构,回到产品本身。HEXA在传感器配置上也比较丰富,头部除了高清摄像头(有夜视功能)之外,还有测距传感器和红外发射器,可以比较充分的感知周围世界。这也给后续我们编程实现各种复杂功能提供了底层支撑。

如果觉得官方自带的传感器不够满足创客们的开发脑洞,HEXA也提供了丰富的硬件开发接口(I²C,ADC,GPIO,USB,音频接口等),可以扩展更多外设来DIY一些更复杂的功能。

这种科技感+神秘风的六足机器人,对于小朋友的吸引力实在是太大了。同事的儿子小C不过是来叫爸爸一起吃饭,直接就表示吃饭不急,得先玩玩这个高科技家伙。

所以我干脆说,那就由小C你作为我们的测试员,来评测一下这个机器人吧!
小C的毫不示弱,在我帮忙连接好之后,就用"Explore"这个机器人应用(官方称为Skill)给小C用于"探险"。

作为一个没有任何相关经验的5岁孩子,小C直接上手,就可以通过触摸屏控制,玩出各种丰富的步伐和身体姿态:


而长时间不操作的话,HEXA也会自动"卧倒"进入休息模式。

所以从易用性的角度来说,HEXA确实做得不错,没有任何基础的小朋友,也可以轻松上手。
不过,HEXA可不仅仅只是一个让小朋友玩的机器人玩具产品。定位于可编程的它,更重要的给想研究机器人科学的创客们,提供一个机器人学习和开发的平台。
对于初级的开发者,首先可以使用HEXA Simulater来进行入门学习。


在Simulator中,可以通过可视化的3D模拟器,让开发者不用编写代码就可以直观地进行动作设计。设计好的动作可以直接写入HEXA的硬件中,轻松实现想要的功能。

而且除了预设的动作,我们也可以简单地通过设置创造更多动作。

当然,对于有编程基础的创客来说,HEXA也能够满足他们的机器人开发需求。HEXA搭载的是基于Linux内核定制优化的MIND OS操作系统。这个机器人操作系统其实类似智能手机里的iOS或者Android。创客可以通过这个系统,使用GO语言,进行更为深度的开发(后面我会介绍一个实例)。

另外,在开发的便捷性上,Vincross不仅在官网提供了完整的开发文档和教程,也同时在Github这样的开源平台上也进行了分享,方便了创客们的开发使用。

在完成相应的开发之后,创客可以将动作封装成机器人应用,也就是我上面提到的Skill。值得一提的是,HEXA提供了专门的Skill Store,类似于App Store,开发者不仅可以将自己创建的Skill上传到Skill Store上进行分享和售卖,其他的HEXA玩家也可以自行前往下载里面的应用,增加HEXA的功能。

也就是说,HEXA并不是提供单纯的一个机器人硬件,而是所谓的一个完整的Package:硬件(HEXA)和软件(MINDOS)一同构建成一个完整的机器人开发生态,甚至一种机器人文化。作为一款新产品,这个完成度的确让我有些意外。

不过可能光这样罗列有些过于抽象,我们还是来看个实例吧~

实例机器人应用:斗牛(Bullfight)

比如这里我们以斗牛"Bullfight",来说明一下编写过程。

这个Skill是由一位海外的Reddit用户编写的。具体来说主要就是分三步:头部运动,捕捉红色信号,Go Go Go!!!

而这位用户也把完整的设计思路和源代码开源了出来,方便大家取用。具体来说,这个skill需要教会机器人的主要是2点:

  1. 启动视频捕捉系统
  2. 找到红色,然后启动运动系统走向红色目标

最终实现分为三步:

第一步:头部转动

具体的代码,其实就是修改"hexabody"这个package里面的头部转动参数:角度和时间。角度指的是接下来这个动作需要头部转动多少角度,而时间则代表了转动速度。具体代码如下:

func (skill *ScanRed) searchRed() {for skill.status {if skill.rotate {direction := hexabody.Direction()direction += 30hexabody.MoveHead(direction, 200)skill.checkRedLightDistrict()time.Sleep(time.Millisecond * 100)}time.Sleep(time.Millisecond * 200)}
}

比如这里我想让HEXA转头的速度快一点或者慢一点,只有调整对应的参数就可以了。

第二步:侦测红色

这一步,首先是使用SnapshotRGBA() 来抓取HEXA捕捉到的视频图像信息。然后,通过所以中心点范围内的RGB值,来判断是否超过了阈值(即红色或者非红色)。这里的RGB算法其实也是多种多样,不过要平衡准确性和速度,其实有时候不得不把备选的各个算法都尝试一遍。这部分的代码如下:

func isRed() bool {thresHold := 200subRed := 0srcImg := media.SnapshotRGBA()srcBounds := srcImg.Bounds()m := image.NewRGBA(srcBounds)ptX := (srcBounds.Size().X * 1) / 10ptY := (srcBounds.Size().Y * 1) / 10draw.Draw(m, srcImg.Bounds(), srcImg, image.Pt(ptX, ptY), draw.Src)subBounds := image.Rect(srcBounds.Min.X/2, srcBounds.Min.Y/2, srcBounds.Max.X/2, srcBounds.Max.Y/2)newImg := m.SubImage(subBounds)width := newImg.Bounds().Size().Xheight := newImg.Bounds().Size().Yfor w := 0; w < width; w++ {for h := 0; h < height; h++ {r, g, b, _ := newImg.At(w, h).RGBA()r = r >> 8g = g >> 8b = b >> 8c := (int(r) - int(g)) + (int(r) - int(b))if c > thresHold {subRed++}}}log.Info.Printf("%d %d", subRed, width*height)if subRed > (width*height)/200 {return true}return false
}

当然了,掌握算法以后,也可以随意更换颜色对象。

而第三步就是冲向红色目标了

这一步其实就是直接调用WalkContinuously()命令。具体代码如下:

func (skill *ScanRed) goToRed() {for skill.status {if skill.run {log.Info.Printf("RUN...")hexabody.Walk(hexabody.Direction(), 100)}else {time.Sleep(time.Millisecond * 200)}}
}

最终的实现效果,还是不错的。

所以,HEXA可以说是提供了一个完整的开发环境和比较严谨的进阶之路:

1、酷炫的外形和自带skill,比如Explore,可以吸引极客玩家对机器人的兴趣,也让任何零基础的玩家操控HEXA来一段越野探险。
2、简单易用的HEXA Simulator,可以让不太懂编程的用户,通过所见即所得的方式编写和组合各种HEXA的新动作,实现相关的功能。对于培养青少年的编程、机械制造兴趣,也是非常好的。
3、完整的HEXA Mind SDK,可以让对机器人和AI感兴趣的高校学生、从业人员或者Geek、创客们轻松发挥自己的想象力。创客们不需要精通机械设计,也不需要精通软件编程和开发,就可以直接拿HEXA进行高级语言的动作程序开发,非常方便和高效。

不仅仅是降低了机器人学习和开发的门槛,也提供了一条学习曲线并不算陡峭的机器人入门之路。

当然,其实也不难看到HEXA的目标不止于此。HEXA结合MIND OS构建的机器人开发生态,让用户完全有能力超越目前的功能演示范畴,开发出一些有强大应用价值的功能(比如:极端狭窄环境的探险、抢险救援中提供一些协助、作为机器人宠物承担家庭陪伴的功能等等)。

可以想象,当这些功能真正应用到实际生活中,机器人就不在只是一个生活在科幻电影中摸不着的,或者只是玩具一般的产物,而是像如今的智能手机一样普及生活助手。从机器人行业的角度来看,HEXA的价值更在于让创客们对于机器人的想象有途径可以实现,从而推动整个机器人产业的发展。当然了,光靠这一款产品显然是不够的,但显然我们看到了好的迹象和趋势。

四. 尾巴

回到最初的话题,现在国际化背景之下,我们接触最新最高科技技术的方式的确是越来越多了。并且各种开源文化的影响之下,和世界一起开发新产品早就不是一句空话而已经成为了现实。

如果想要做一些个人创客项目,或者只是单纯的做一些好玩的作品,树莓派、Arduino或者HEXA这样的成品,其实都提供的相当不错的基础。至于如何选择,更多的可能还是看实际的需求来决定。

如果是做一些数据监控和处理任务,比如下载机、空气监控、PM 2.5监控,树莓派应该是最佳选择,价格不贵几百元搞定,实例也多;

如果是做一些运动控制的小作品,比如机械臂、微型3D打印机、智能小车,Arduino是更合适的选择,并且拖各种改版的开源产品库的福,在某宝上可以直接买到原始图纸。一般一个项目的成本大约在1000-3000元;

如果想不只是学习DIY产品的过程,而是直接学习机器人从初级到高级的编程,对复杂环境、丰富视频信号的捕捉、处理和进一步动作,从而实现真正的机器人应用,并且通过类Skill的形式在全球创客的智能手机上传播,目前HEXA也可以说是这个品类下最佳的选择。甚至,是唯一的选择。感兴趣的朋友可以去Vincross的官网,以及京东和淘宝看看。

总而言之,我们可能正处于创客最好的时代。

If you wanna DIY something, the best time is NOW!

好了,这次对于机器人开发入门的介绍就到这里,如有未尽之处,还请大家在评论区指出。
如果大家感兴趣的话,后续我也会带来更详尽的项目开发实例介绍。
我是(微博:沈少Neo),我们下次见!

欢迎来到AI的世界:从树莓派,Arduino 到 HEXA | 了解机器人开发必看相关推荐

  1. 欢迎来到OpenGL的世界

    欢迎来到OpenGL的世界 前言 为什么要订阅这专栏呢 你将学会什么呢? 前言 欢迎来到OpenGL的世界.我希望能够建立起一个完善的OpenGL教学,无论你学习OpenGL是为了学业,找工作,或仅仅 ...

  2. 4分钟训练ImageNet!腾讯机智创造AI训练世界纪录

    4分钟训练ImageNet! 腾讯机智创造AI训练世界纪录 by 腾讯机智团队 注:腾讯机智机器学习平台由TEG架构平台部和运营管理部团队携手,并和香港浸会大学计算机科学系褚晓文教授团队深度合作联袂打 ...

  3. 华为郑叶来:致敬开发者,共创“ AI ”的世界

    2018全联接大会第三天,华为公司副总裁.云BU总裁郑叶来在全体大会上发表了<致敬开发者,共创"AI"的世界>主题演讲,发布了AI全流程开发平台与工具--更快的普惠AI ...

  4. 欢迎来到WebGPU的世界

    欢迎来到WebGPU的世界 WebGPU是一门神奇的技术,在浏览器支持率0%,标准还没有定稿的情况下,就已经被Three.js和Babylon.js等主流3D和游戏框架支持了.而且被Tensorflo ...

  5. attiny13a程序实例_世界最小的Arduino——ATTiny13上手全攻略1B在Arduino IDE环境下的搭建...

    本帖最后由 幻生幻灭 于 2017-2-15 10:41 编辑 系列教程传送门 世界最小的Arduino--ATTiny13上手全攻略1A简介 世界最小的Arduino--ATTiny13上手全攻略1 ...

  6. “AI+”改变世界 不同领域的5大人工智能趋势

    "AI+"改变世界!不同领域的5大人工智能趋势 人工智能是当代最热门和关注度最高的话题,它将改变人们对20年后世界的看法. AI相关工作的需求频繁增加,尤其是在数据科学和机器学习职 ...

  7. 华为5G手机发布!5G和AI给世界带来什么?

    5G+AI多元化的场景应用为企业提供了巨大的市场机遇,也提出了更高要求. 2月24日晚,华为如约亮相MWC大会发布业绩期盼已久的5G折叠屏手机--华为Mate X.Mate X合起来时不会在中间留个缝 ...

  8. 【soft6星社评】担心AI“主宰”世界 如同杞人忧天

    友谊应当是不朽的. -- 蒂特·李维 中国软件网每日精选集 4月25日,在上海人工智能(AI)发展联盟发起成立仪式暨2019世界人工智能创新大赛启动仪式上,上海发布首批12个人工智能试点应用场景:学校 ...

  9. Flask开发轻博客(一):欢迎来到 Flask 的世界

    目录 Flask开发轻博客(一):欢迎来到 Flask 的世界 Flask开发轻博客(二):Flask 模板 Flask开发轻博客(三):Flask 的 Web 表单 Flask开发轻博客(四):数据 ...

最新文章

  1. 奥运会志愿者需要做哪些工作?
  2. gradle更换仓库 解决下载速度慢问题
  3. shell处理mysql增、删、改、查
  4. JVM调优:CMS的执行过程及存在的问题
  5. 通信 / HTTP 详解
  6. 天津政府应急系统之GIS一张图(arcgis api for flex)解说(二)鹰眼模块
  7. 关于 MySQL 的 boolean 和 tinyint(1)
  8. php程序设计案例教程 程序题,PHP程序设计案例教程
  9. 用promise封装ajax_ES6-promise封装AJAX请求
  10. 一个简单的用户注册JavaBean
  11. Linux网络编程 --------- Socket编程---最浅显易懂的介绍
  12. 图 Graph-图的相关算法
  13. mysql首字母排序_mysql 按字段的首字母排序及查询
  14. 三维重建之环境搭建1-VS2017安装
  15. #C语言或C++中强大的图形库——easyx
  16. hud android,HUD | F-Droid - Free and Open Source Android App Repository
  17. 天线知识详解:天线原理、天线指标测试
  18. c语言回文数实验报告,C语言 · 回文数
  19. 程序员常用的博客网站
  20. Bailian4108 羚羊数量-Number Of Antelope【递推+打表+递归+记忆化递归】

热门文章

  1. Week9 作业——B - 东东学打牌
  2. 生物学重复好不好--看看样本相关性
  3. 程序员是如何荒废的?
  4. 初中计算机公开课教学设计,初中信息技术公开课《申请电子邮箱》教案
  5. 有了Forter ,中国的跨境电商们可以安心做生意了
  6. 设计模式-MVC模式
  7. B站投放管理功能上线!领取你的专属投放报告
  8. oracle asru,最佳实践之二:VSP+ORACLE
  9. 数据结构课设——单位员工通讯录管理系统
  10. Vue-Router的push和replace方法[Uncaught (in promise) Error]解决方案