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

vincross · · 5822 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

嗨,大家好!我是Neo。最近几年人工智能(AI)可以说是个如火如荼的新锐概念。但不同于大疆的无人机或者各种VR设备,AI设备本身由于兼具了软硬件的要求,门槛其实还是挺高的。 比如对于之前刷屏的波士顿动力的后空翻机器人Atlas,无论是机械结构,还是运动平衡算法,都是普通玩家没法企及的。别的不说,数百甚至数千万美元的研发投入,就让大家只能看看而已了。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10122645_plM7.gif "在这里输入图片标题") 同时对于极客和硬件玩家来说,面对茫茫多的新概念,比如Raspberry Pi啦,Arduino啦,似乎都是非常火的产品二次开发社区。那么到底该如何选择呢,Neo我最近刚好在做一些个人项目,把周边朋友手头的这类设备都搜刮过来做了个全面解读,才有了此文。希望感兴趣的值友看完这篇文章,能对自己该选择怎样的产品能有一个比较明晰的概念。 ### 一. 树莓派 Raspberry Pi ![输入图片说明](https://static.oschina.net/uploads/img/201801/10122839_rAKV.jpg "在这里输入图片标题") 啥是树莓派? 树莓派是将电脑集成到了一块电路板上的微型电脑。 可接显示器鼠标键盘等外设;基于linux的系统;是一台功能完整的迷你电脑;存储通过micro-SD卡来提供;内置以太网接口可直接联网 (Arduino也可以访问网络,但那需要一些额外的部件)。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10122900_Wv6S.png "在这里输入图片标题") 也就是说,树莓派其实就是一台小电脑,并且已经兼容了完整的软硬件系统,可以直接进行开发。 这样对于偏编程开发的技术人员来说,树莓派是一个非常低成本而又可靠的开发平台。 并且编程环境就是标准的Linux编程环境,对于有经验的程序员来说上手非常容易。但这也就导致对于没有相关经验的人来说,树莓派的软件编程门槛有点高。并且如果想做运动实例的话,配置过程比较复杂,还需要外接驱动板,成本也就上去了。 ### 二. Arduino ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123045_Mb24.png "在这里输入图片标题") 啥是Arduino? Arduino是一个完全开源,可以二次开发用于商业运营的开发平台。 核心:AVR单片机 本质:单片机应用开发板 优势:简单的函数,还有许多应用库,这样就不用直接去操作寄存器了,使得没有很好的单片机基础的人员也可以使用Arduino做出自己想要的东西。 简洁的IDE(集成开发环境):也就是写代码,编译,调试,下载的上位机软件。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123132_k8Mn.png "在这里输入图片标题") 作为核心的Arduino开发板有多个版本,比如最常见的Arduino UNO板。此外,Arduino拥有自带的软件开发系统。目前非常的火的智能机械臂就是利用Arduino开发出的非常热门的品类。 然而Arduino的开发成本其实不低,要求玩家必须有丰富的软硬件知识和不错的动手能力。而对于这样的高阶玩家来说,Arduino芯片本身的性能又显得有些孱弱。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123315_Hs4y.gif "在这里输入图片标题") 所以目前Arduino更多的还是作为一些高校学生的毕业设计,或者个人/小团队练手的选择。如果要做严肃的机器人/AI项目开发,Arduino的算力/复杂度比,还是稍微低了点。也就是说,玩家实力达到创客级别之后,Arduino平台本身的硬件性能瓶颈,会明显限制创客的想象力了。 ### 三. 全地形可编程机器人HEXA 看到这里可能有值友会说:聊了半天啥情况? 波士顿动力那种牛逼的我们买不起; 树莓派那种偏软件的不仅上手门槛很高,即便开发出应用,也仍属于是一个PC设备,还称不上是机器人; 而Arduino这种偏硬件的对于开发者来说,如果不太明白机械结构设计不会自己搭控制系统,那么可玩性也非常低。 所以啥也干不了? 好在,有需求就会有厂商来努力填补这个空缺。 Vincross最近新出的一款可编程全地形机器人HEXA,似乎就是一个不错的尝试。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123355_mLiE.gif "在这里输入图片标题") 我最早注意到这个产品,其实也是看站内的一篇众测报告。 前不久还在《Wired》杂志的年度产品"Gear of the Year"里看到HEXA占据了非常大的篇幅: ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123407_vuUD.png "在这里输入图片标题") 虽然没有细看,但留下了印象。就是觉得这个产品蛮酷的,好像以前没见过。 没想到身边的Geek小伙伴居然已经直接在KS上众筹了一台,赶快第一时间拿过来玩玩。首先HEXA本身的造型比较让人印象深刻,把它放在办公桌上可以达到超过100%的回头率,不少同事甚至回头了不下三次。纷纷表示,这个是什么东西?能不能演示一下? ![直接导致我啥也没干就玩没电了](https://static.oschina.net/uploads/img/201801/10123431_jZ3l.jpg "在这里输入图片标题") 首先从外形来看,六足(Hexapod Robot)的结构会比传统的轮式、或者履带式结构更适合各种越野环境。美国NASA目前正在研制的登月机器人ATHLETE其实就是源于六足机器人的造型,从而可以更好的适应月球复杂的地表环境: ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123454_tPji.jpg "在这里输入图片标题") 在一些地面比较不平整的环境中,足型机器人先天就会比轮式机器人拥有更强的通过能力。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123516_hzt6.jpg "在这里输入图片标题") 对于一些沟壑,足型机器人也可以有更强的环境适应能力。而对于六足机器人来说,只要保证三足不离地,就可以非常稳定,而如果增加到八足或者更多又会造成对软硬件资源要求增加,效果却不明显。所以其实六足是最具性价比的一个选择: ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123516_hzt6.jpg "在这里输入图片标题") 而HEXA则将六足机器人的优势进一步优化,从步态上来说,有跨步、正常、探洞三种步态,再加上它可以360°无限旋转的头部,使得HEXA在行动能力上更加灵活便捷。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123532_Z8Gk.jpg "在这里输入图片标题") 我想HEXA的团队在设计这款产品的时候,主要也是考量了如何兼具性能和成本的平衡,从而最大化的实现产品力。 聊完了六足结构,回到产品本身。HEXA在传感器配置上也比较丰富,头部除了高清摄像头(有夜视功能)之外,还有测距传感器和红外发射器,可以比较充分的感知周围世界。这也给后续我们编程实现各种复杂功能提供了底层支撑。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123549_IUnN.gif "在这里输入图片标题") 如果觉得官方自带的传感器不够满足创客们的开发脑洞,HEXA也提供了丰富的硬件开发接口(I²C,ADC,GPIO,USB,音频接口等),可以扩展更多外设来DIY一些更复杂的功能。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123606_Ao9q.jpg "在这里输入图片标题") 这种科技感+神秘风的六足机器人,对于小朋友的吸引力实在是太大了。同事的儿子小C不过是来叫爸爸一起吃饭,直接就表示吃饭不急,得先玩玩这个高科技家伙。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123653_HKyi.jpg "在这里输入图片标题") 所以我干脆说,那就由小C你作为我们的测试员,来评测一下这个机器人吧! 小C的毫不示弱,在我帮忙连接好之后,就用"Explore"这个机器人应用(官方称为Skill)给小C用于"探险"。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123717_IJvy.jpg "在这里输入图片标题") 作为一个没有任何相关经验的5岁孩子,小C直接上手,就可以通过触摸屏控制,玩出各种丰富的步伐和身体姿态: ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123732_jZLN.jpg "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123734_aQPE.jpg "在这里输入图片标题") 而长时间不操作的话,HEXA也会自动"卧倒"进入休息模式。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123754_UGOV.jpg "在这里输入图片标题") 所以从易用性的角度来说,HEXA确实做得不错,没有任何基础的小朋友,也可以轻松上手。 不过,HEXA可不仅仅只是一个让小朋友玩的机器人玩具产品。定位于可编程的它,更重要的给想研究机器人科学的创客们,提供一个机器人学习和开发的平台。 对于初级的开发者,首先可以使用HEXA Simulater来进行入门学习。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123802_Iwz8.jpg "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123835_J6BQ.png "在这里输入图片标题") 在Simulator中,可以通过可视化的3D模拟器,让开发者不用编写代码就可以直观地进行动作设计。设计好的动作可以直接写入HEXA的硬件中,轻松实现想要的功能。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123851_1ONA.gif "在这里输入图片标题") 而且除了预设的动作,我们也可以简单地通过设置创造更多动作。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123918_10Qy.png "在这里输入图片标题") 当然,对于有编程基础的创客来说,HEXA也能够满足他们的机器人开发需求。HEXA搭载的是基于Linux内核定制优化的MIND OS操作系统。这个机器人操作系统其实类似智能手机里的iOS或者Android。创客可以通过这个系统,使用GO语言,进行更为深度的开发(后面我会介绍一个实例)。 另外,在开发的便捷性上,Vincross不仅在官网提供了完整的开发文档和教程,也同时在Github这样的开源平台上也进行了分享,方便了创客们的开发使用。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10123946_jMVv.png "在这里输入图片标题") 在完成相应的开发之后,创客可以将动作封装成机器人应用,也就是我上面提到的Skill。值得一提的是,HEXA提供了专门的Skill Store,类似于App Store,开发者不仅可以将自己创建的Skill上传到Skill Store上进行分享和售卖,其他的HEXA玩家也可以自行前往下载里面的应用,增加HEXA的功能。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10124013_sUe3.gif "在这里输入图片标题") 也就是说,HEXA并不是提供单纯的一个机器人硬件,而是所谓的一个完整的Package:硬件(HEXA)和软件(MINDOS)一同构建成一个完整的机器人开发生态,甚至一种机器人文化。作为一款新产品,这个完成度的确让我有些意外。 不过可能光这样罗列有些过于抽象,我们还是来看个实例吧~ **实例机器人应用:斗牛(Bullfight)** 比如这里我们以斗牛"Bullfight",来说明一下编写过程。 这个Skill是由[一位海外的Reddit用户编写](https://www.reddit.com/r/robotics/comments/6pv6n7/how_i_taught_my_robot_to_bullfight/)的。具体来说主要就是分三步:头部运动,捕捉红色信号,Go Go Go!!! 而这位用户也把完整的设计思路和源代码开源了出来,方便大家取用。具体来说,这个skill需要教会机器人的主要是2点: 1. 启动视频捕捉系统 2. 找到红色,然后启动运动系统走向红色目标 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10124251_j3CY.jpg "在这里输入图片标题") 最终实现分为三步: **_第一步:头部转动_** 具体的代码,其实就是修改"hexabody"这个package里面的头部转动参数:角度和时间。角度指的是接下来这个动作需要头部转动多少角度,而时间则代表了转动速度。具体代码如下: ``` func (skill *ScanRed) searchRed() { for skill.status { if skill.rotate { direction := hexabody.Direction() direction += 30 hexabody.MoveHead(direction, 200) skill.checkRedLightDistrict() time.Sleep(time.Millisecond * 100) } time.Sleep(time.Millisecond * 200) } } ``` 比如这里我想让HEXA转头的速度快一点或者慢一点,只有调整对应的参数就可以了。 **_第二步:侦测红色_** 这一步,首先是使用SnapshotRGBA() 来抓取HEXA捕捉到的视频图像信息。然后,通过所以中心点范围内的RGB值,来判断是否超过了阈值(即红色或者非红色)。这里的RGB算法其实也是多种多样,不过要平衡准确性和速度,其实有时候不得不把备选的各个算法都尝试一遍。这部分的代码如下: ``` func isRed() bool { thresHold := 200 subRed := 0 srcImg := media.SnapshotRGBA() srcBounds := srcImg.Bounds() m := image.NewRGBA(srcBounds) ptX := (srcBounds.Size().X * 1) / 10 ptY := (srcBounds.Size().Y * 1) / 10 draw.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().X height := newImg.Bounds().Size().Y for w := 0; w < width; w++ { for h := 0; h < height; h++ { r, g, b, _ := newImg.At(w, h).RGBA() r = r >> 8 g = g >> 8 b = b >> 8 c := (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的[官网](https://www.vincross.com/cn/hexa),以及京东和淘宝看看。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10124508_u0py.jpg "在这里输入图片标题") 总而言之,我们可能正处于创客最好的时代。 If you wanna DIY something, the best time is NOW! 好了,这次对于机器人开发入门的介绍就到这里,如有未尽之处,还请大家在评论区指出。 如果大家感兴趣的话,后续我也会带来更详尽的项目开发实例介绍。 我是(微博:沈少Neo),我们下次见!

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

5822 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传