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

嗨,你们好!我是Neo。最近几年人工智能(AI)能够说是个如火如荼的新锐概念。但不一样于大疆的无人机或者各类VR设备,AI设备自己因为兼具了软硬件的要求,门槛其实仍是挺高的。linux

好比对于以前刷屏的波士顿动力的后空翻机器人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 += 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能够说是提供了一个完整的开发环境和比较严谨的进阶之路:

一、酷炫的外形和自带skill,好比Explore,能够吸引极客玩家对机器人的兴趣,也让任何零基础的玩家操控HEXA来一段越野探险。 二、简单易用的HEXA Simulator,可让不太懂编程的用户,经过所见即所得的方式编写和组合各类HEXA的新动做,实现相关的功能。对于培养青少年的编程、机械制造兴趣,也是很是好的。 三、完整的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),咱们下次见!

相关文章
相关标签/搜索