老司机带你造「N^2 - Buggy」小车咯~


嘿!嘿!嘿!还记得儿时玩的避障小车吗?

小车能避障是因为厂商提前编好了程序。

现在有这样一辆小车:不需要编写任何代码,不需要调试避障距离,不需要预先设计躲避策略。只需要像训练小宠物一样让它学习避障。

有没有感觉很神奇?是不是很想了解?(o◕∀◕o)

一起来看看这辆小车吧


小车的学名是:SmartNode 神经网络智能避障机器人

我们亲切的呼唤它为:N^2 - Buggy 神经(病)小车


高 ! 大 ! 上 !是不是特别想拥有一台属于自己的小车呢?

需要的材料

N^2神经小车套件中已包含所有材料

1.Edison开发板


2. Edison Base Shield v2


3.电机驱动板


4.四个红外避障传感器


5. 红外接收器


6. 11.1V 3s航模电池


7.MultiPlo机器人底盘套件


创造 N^2 - Buggy 的身体

STEP 1 构建机械的身体

使用包装中的塑料积木构建Buggy的基本结构,虽然我们的例子给出的是一个简单的双轮小车。事实上,你可以根据自己的想象力构建出各种双电机驱动的小车,比如站立的,低矮的,很长的身体,甚至可以为他设计一个霸王龙的骨架,套上一个布偶的外套,为他创造一个像生物的身体。


对了,在你发挥完伟大的创意之后,记得把电机按照下图所示安装好,并且固定。我们希望你的Buggy生命体有一个非常坚实的肉体承载它的智慧和灵魂,当然,还有你伟大的创意。


STEP 2 为你的 Buggy 安装大脑

将套件中的Edison开发板、扩展板、还有电机驱动板像下图这样叠加在一起。恩,记得排针要对齐,然后稍微用力将他们挤压在一起。



STEP 3 将肌肉与大脑相连

记得第一步里我们安装好的电机么?左侧轮子的电机的两根线连接到M1端口,右侧轮子的电机的两根线连接到M2端口,拧紧螺丝。这里不需要焊接,为了你的安全考虑,实际上整个套件里都不需要你使用危险的电烙铁。当你熟练掌握这一切之后,相信我,焊接不会花费你太多时间。


STEP 4 连接电池

我们忘了什么?哦,对,为我们的Buggy提供能量。为了让你的Buggy动力强劲,不知疲倦,我们为你提供了11.7v的锂电池,不过它充满电以后电压有12v。但是不用担心,这样的电压并不会伤害你。将电池的正负极与电机驱动板的正负极准确连接,这里要稍微谨慎一点,因为如果接反了,你可能会看到一道火光冲上天空(笑)。红色代表正极,黑色代表负极,如下图连接好。

还有一个独立的DC2.5接头,他是为Edison准备的。将它插在Edison的DC输入孔上就可以了,你不会错过的。

STEP 5 为你的小车安装测距模块

昆虫拥有触角、蝙蝠拥有好嗓子和听力、动物有眼睛,为了感受距离,我们为Buggy准备了4个高精度的红外测距模块。像下图这样,将他们安装在小车的四个角,这样你的小车就能够360度无死角的感知周围接近它的东西了。分别连接到A0,A1,A2,A3引脚上。


好,如果你坚持到这一步,非常好,你已经为Buggy创造了属于它的肉体。但是很可怜,就如同《弗兰肯斯坦》一样,它目前什么都不会。不,我保证你的Buggy和弗兰肯斯坦不一样,要比他可爱的多。

现在,我们开始粗糙地体验一下一个未来的软件工程师开发他的智能设备的过程吧。

创造人工智能的灵魂

STEP 1 安装 SmartNode

请参照这个链接,为你的Edison模块安装SmartNode。不过其实我们套装中的Edison模块大多数已经预先安装了。这个只是为了以防万一你的Edison版本比较早而已。

具体方法请详见(拷贝网址并黏贴到浏览器):
http://www.smartnode.io/getstarted

安装好SmartNode之后,可以看到,里面成了神经网络的节点,如下图所示。


STEP 2 在 SmartNode 中导入设计“图纸”

正如你看到的,在SmartNode环境下,我们并不需要编写代码,只需要将各种功能节点拖拽并连接在一起就好,我们把连接好的SmartNode设计称之为“图纸”。对,就如《黑客帝国2》里那样。为了节省时间,请在SmartNode界面的右上角菜单栏,选择菜单栏->导入->剪贴板:


打开下面的文件,复制/黏贴 到刚刚打开的SmartNode剪贴板对话框中。


导入成功之后,你就会看到一幅交错纵横的“图纸”,描述了你的N^2 - Buggy小车的学习状态下的灵魂,Buggy小车在“采集数据”和“训练”模式下的所有节点连接。


STEP 3 获得训练数据

注意到“图纸”中左侧的“前”“后”“左”“右”节点了么?每次你用这些节点操作Buggy做运动动作的时候,实际上就是在教小车做各种动作了。在运动的同时,距离传感器的数据和你的操作数据都会被导入神经网络中进行训练。

训练的时候可以设置一些障碍物,操作小车躲避这些障碍物,当然了,如果你想做一个凶猛的小车,可以故意让小车去撞击这些障碍物。如此反复操作几十次之后,你还可以做的更多,你带领Buggy做的越多,它越能够领会你的训练意图。当你每次指挥小车做动作时,一组{前向距离,后向距离,左侧距离,右侧距离,行动方向}的数据就会被保存下来,用于训练小车上的SmartNode神经网络。


训练完成后点击“保存”节点,所有的训练数据保存在文件里。

STEP 4 开始“训练”

点击“训练”节点。

这时候,Buggy开始分析思考刚才的训练数据,用一种叫做神经网络的数学方法,对所有做过的传感器数据+你的控制指令进行学习,找到其中的规律,生成一套神经网络参数,Buggy就具有了全新的大脑。当你将它“放生”的时候,Buggy就会自己根据传感器提供的数据躲避障碍或者继续前行。

这个过程需要几秒钟时间,根据数据的质量和训练次数而定。


执行部分的节点构造比较简单。可以界面点击右上角“+”,新建一个工作流,然后导入图纸源码,图纸源码如下:

导入后图纸如下图,点击来看看训练的效果怎么样吧!


通篇学习下来,是不是对人工智能、SmartNode 的学习更有兴趣了呢!

好好学习,让我们一起创造世界吧!

文章来源 : 创客大爆炸