自己动手做一辆无人车!

我刚刚帮助我的朋友Kendrick完成了一个小的项目。我们制作了一个小汽车,你可以教会它怎么行驶,让它成为一辆小型无人车。我负责了所有的硬件和arduino软件,而kendrick制作了所有的机械自如学习软件。他称之为suiron,并把他上传到了github。 https://github.com/kendricktan/suiron 在arduino上运行的软件被称之为汽车控制软件,我也上传到了github。https://github.com/jabelone/car-controller

现在,你已经得到了代码链接,可以去看一下,并找出他的工作原理吧~ 我将在这里简单介绍一下该软件,但我的主要重点将是硬件。另外有一点需要注意的是开源许可证,我所有的东西是隶属GPL和肯德里克的Suiron项目隶属MIT 。

这个文章主要作为一个整个小车项目的概述。如果我以后有时间,我会尽力把这篇文章变成一个自主制造小车的辅导教程。

在我们开始介绍之前,你可以看看这辆小车在行驶中的小视频。(需要翻墙)

https://www.youtube.com/watch?v=tFwCyHdAWf0

现在我们来讲讲有趣的部分,它是怎么做出来的的

硬件

以下是需要用到的主要组件

1)无线遥控小汽车

我们使用的是这个车,但同样大小的遥控车也可以。不过他必须配备一个标准的esc和转向伺服。它最初应该配备了一个遥控器,电池和充电。我建议买一个新的无线远程控制系统

2) IntenNUC –raspberry pi并没有足够的动力并且是arm驱动的。一个在NUC中x86驱动的处理器i5较容易达到机械自主学习的目的。具体使用哪一个NUC并不要紧。

3)为了NUC服务的电池-一个标准的笔记本电脑电池组用于供电。这个kogan提供的电池可以支撑约6-10小时的运行时间。

4) 罗技c920网络摄像头-从任何信誉良好的零售商购买。你也许可以使用一个更便宜的摄像头,但是我们发现c920这款更好用。

4)镜头滤镜 -如果你准备在阳光下进行任何操作,你会希望有一个两极分化和ND(中性密度)滤光片。摄像头并不能很好的在刺眼阳光和阴影下运作,于是镜头滤镜帮助得到更好的画面。一个较好的ND(中性密度)滤光片帮助你更好地调节黑暗程度。

5)无线控制系统-如果你打算用这个项目做更多的事,我推荐买一个FrSky TARANIS. 你不会对它的质量感到失望。或者一个TURNIGY 9XR款效果也不错。如果无线控制系统里不包含接收器,记得买一个。

6)你还需要一个Arduino。个人比较喜欢Arduino nano,因为他们比较便宜并具有板上usb接口。

我建议你学习的ESC(电子调速器)如何与一个电动机,接收器,伺服和电池在一起工作的原理。这是正常遥控车标准设置。一旦你明白了这些,你应该看的Arduino的教程,以及如何使用它们来做到灯光闪烁和读取输入。通读Arduino的代码和连接组件应该是相当简单的。

这些组件是如何组成在一起的

如何组合这辆小车的组件取决于你。我建议把一切东西放得越低越好,这样电池在小车行驶的时候会更加稳定。摄像头必须被安装在高处,这样它能有更好的视野来观察。我用了一块轻木把所有东西黏在一起,因为它透光性强,并把摄像头粘在上面。我决定用几张图片来解释我是怎么把他们组建在一起的。所有白色的东西是3D打印机制作的,但其实不用3D打印机制也很容易。

两极分化/ ND滤镜

偏振过滤器的重要性不能被低估,因为它减少了反射和刺目眩光。 在下图,你可以看到有多少区别。 图中的水流是个有点极端的例子,但我选择了这幅图像是为了更容易表现出差异,在现实操作里的差异不会那么明显。

中性密度滤波器比起偏振滤光器来说更为重要。这种滤镜可以说是网络摄像头的太阳眼镜。网络摄像头并不适合在刺眼的光线下使用,因此降低光线的强度但又干扰不图像。 下图为正确的中性密度滤波器如何更好地使刺眼的光线的图像。

我建议在安装的时候将这些滤镜装成方便拆卸的,因为在低光照条件下这些滤镜会使得影像过暗。 即使在光照完美的一天,黄昏前的几个小时都比中午的时候暗了很多。 所以我做了一个简单的安装——用一个鳄鱼夹来固定滤镜。 两个滤镜是黏在一起的,然后我用3D打印机给他们做了一个“小架子”。

The Arduino

下图显示了这些硬件是怎样连接的。 Arduino是“硬件大脑”。,它读取在从R / C接收机的值,然后基于所述模式信道来决定具体做什么。 大家可以通过Arduino代码(文章开头有链接),看看这究竟是怎样实现的:基本上有3种模式,手动,自动和紧急停止。

在手动模式下,Arduino在转向和电机值读出并直其传递到电动机和转向伺服。 在这种模式下,右旗启用,它也发回了UART是什么,这些价值观是每收到一个字符时间。 (每收到时间,可以防止串行缓冲器快满了,“滞后”),在自主模式Arduino的在从国统会UART读取输入。 在此模式下它接收到两个消息; 引导,x和电机,其中x是你想要将它的值设置为。 然后将它写入这些产出到转向伺服或马达。 最后,急停杀死电动机的输出和拉直转向舵机。 这急停覆盖任何形式的手动或自主控制的。

机器学习部分

我们使用了一种叫做张量流动图书馆。 这是由谷歌发布的一个开放源码机器学习库。 它是开源的,并在Apache许可证下发布。 它有一个很好的Python和一个“没有废话的”C ++ API。

收集数据

这是整个过程的一个非常简短的总结。 每个视频帧被记录Suiron(在NUC软件)时会询问车控制器(Arduino的上软件)是什么人的运营商在做什么。 请记住,在手动模式下,操作员是围绕驾驶的汽车。 车载控制器通过发送当前的转向和电机值回Suiron响应。 Suiron取这些数值和与所述框架的一个处理版本保存它们沿。

这一过程发生在30Hz左右(或每秒30次),只要你记录数据。 在最后的模型中,我们使用了约20分钟,值得培养的数据。 这是20分钟左右的轨道连续驱动。这似乎不是很多,但它非常快的重复。 在现实中,20分钟足够近的数据没有在那里。 它的工作原理是特定的轨道类似的照明条件下的很大,但如果条件改变太多可能会失败。

训练数据

再次,我不是在这一个使出,但我会尽量简要说明训练是如何工作的。 卷积神经网络(细胞神经网络)是他们的工作方式很奇怪。 这是不可能的究竟是如何或为何CNN的工作知道的。 基本上,我们给张量流框架和两个数字。 (转向和电机)然后,我们要求它制定出框架如何与这两个数字。 给它成千上万的例子(帧)后它可以尝试概括的模型。

由于计算能力的量需要花费很长的时间来培养一个很好的模式。 由于它具有进行计算的种类,张量流运行在专用GPU快得多。 只有20分钟的数据我们的模型花了半天的时间才能正常训练。 培训发生在一个桌面带着借来的GTX980,一个GPU这是对消费者的显卡的高端。

利用该模型

你可以看到它的行动在下面的GIF。 蓝线是模型认为它应该做的,绿线是当我转向它是我实际做。 注意,这个数据不包括在训练集,这是为了确保该模型适用于其它数据。

只要它经过训练,这套模式就可以被拿来用了。 基本上,发生的事情是我们从摄像头收集只是一个框架。 然后,我们把它传递给张量流,并要求它通过模型来运行它。 该模型然后吐出它认为我们两个值应该是一个转向,一个用于油门。 此刻的油门是未使用的,它以恒定的速度运行。 然而,我们认为我们会包括以防万一,我们希望在将来使用它。

原文发布于微信公众号 - 顶级程序员(TopCoding)

原文发表时间:2016-10-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯大讲堂的专栏

如何才能准确测量 APP 的功耗?

引言:电量消耗控制一直是困扰所有APP开发者的一大难题,其中又以Android平台尤甚。业界同行为此做了非常多的研究与尝试,腾讯自然也不例外。本周大讲堂继续推出...

40960
来自专栏FreeBuf

这下好了,家里的智能灯泡都会泄露数据了

近日,来自国外的研究人员提出了一种新的技术,可以从智能灯泡获取用户的数据。举个例子,研究人员能够从远处记录智能灯泡的亮度模式来获取用户的偏好。

10630
来自专栏一名叫大蕉的程序员

手把脚教你实现第一个在线预测系统No.21

本来呢,最近看了人类简史,想写一篇偏见相关的,思路还没整理好不好放出来,先写个技术的吧。最近真是忙成狗,搬职场,找房子租,参加各种各样的会议,还有开发任务,做屁...

284100
来自专栏机器人网

技术猿 | ABB机器人在激光切割上的技术分析及案例分享

导读:随着汽车业、军工及重工等行业的飞速发展,这些行业中的三维钣金零部件和特殊型材的切割加工呈现小批量化、多样化、高精度化的趋势。工业机器人和光纤激光所组成的机...

33450
来自专栏WeTest质量开放平台团队的专栏

你手机的电都去哪儿了?

与传统的APP相比,手游的耗电量那可不是盖的,手机还有10%的电,玩局游戏吧,正玩着HIGH呢,马上就要破记录了,无情的手机提示电量耗尽30秒后强制关机,欲哭无...

29830
来自专栏Youngxj

[seo优化]要想上权重就进来看看

21850
来自专栏ATYUN订阅号

微软推出iPad应用Earth Lens,使用AI来检测卫星图像中的物体

微软Garage的最新项目之一,利用AI来确定卫星图像中需要注意的精确项目。Earth Lens是今天推出的一款新的开源iPad应用程序,识别,跟踪和分析距离地...

10830
来自专栏数据派THU

干货收藏 | 计算机学习绝对不能错过的10大网站(内附网站链接)

本文整理出大数据和人工智能领域最实用,质量最高的10大技术网站信息,既可以用于丰富技术知识,也可以用于学术研究。

8020
来自专栏PPV课数据科学社区

【译文】关于数据科学难以忽视的11大真相

1、Data is never clean. 2、You will spend most of your time cleaning and preparing...

36670
来自专栏AI科技评论

动态 | 谷歌开源FHIR标准协议缓冲工具,利用机器学习预测医疗事件

AI科技评论按:在上月 26 日,谷歌在 arXiv 上发表的一篇论文《Scalable and accurate deep learning for elec...

32760

扫码关注云+社区

领取腾讯云代金券