如何利用神经网络教机器人走路?

电子说

1.3w人已加入

描述

说起乐高积木,大多数人一定都想的是小孩子的玩具吧?但如果再加上Cortex-M4处理器,一两个马达和一些电线绑带,你能把它玩得有“技术含量”吗?当然,“技术流”玩家还是有的,Sebastian Förster,这位来自德国的嵌入式系统开发者,便用这些东西搭建了一个四足机器人,并且用神经网络教会它走路。这个被命名为“Scratchy”小怪物的机器人,一共有四个伺服电机控制四条腿,使用超声波探测距离,主控则用的是STM32F407探索开发板。

对此,Arm深度学习技术总监Mark Connor专程和Sebstian见面并对他进行了采访,请他谈了一下为什么要做这个“小怪物”以及他的心得体会,让我们一起来围观下吧。

能否谈谈你怎么想到要去做这个“小怪物”的吗?

我目前硕士学位论文的题目就是有关如何在更小的Cortex-M处理器上实现机器学习,通过一个神经网络的实例来做性能测试。而作为测试的一部分,我把FANN神经网络库移植到了Cortex-M4上,并且我不想做太学术太死板的东西,而希望是有型的东西,于是我选择做个机器人。如你所见,其实我没做的很复杂,就先把一些乐高积木连到电机上,然后再连到一块有足够Flash和SRAM的STM32F4开发板上。

“小怪物”的成功也证明了我论文的结论——在小型的基于Cortex-M设备上运行机器学习算法是完全可能的。

你有没有试图自己对腿部动作进行编程?

当然没有,这显然应该是让AI去干的!“小怪物”的结构允许我可以独立地训练向前和向后的步法,让我大吃一惊的是,虽然它没有膝关节,但是也能工作。因为Deep Mind在 Atari Q-Learner上取得了很大的成功,所以我也决定使用Q-Learning,并且我可以在他们的基础之上编写Q-learning的代理。 FANN库其实是由其他人开发并在LGPL许可下开源的,我只是单纯移植到了Cortex-M4上。

你是如何决定网络拓扑的?

SRAM的大小限制了拓补结构,神经网络可以做的更大,但使用额外的变量会消耗非常多的存储器空间,而我更想直接在Cortex-M4上直接进行训练。在我看来,使用两个或三个前馈层并没有太大区别,尽管我没有直接比较它们,而我想压榨一下处理器!

神经网络

用微控制器进行当前的神经网络研究是否容易?

其实裸C(非CUDA)框架完全可以适用于512Kb闪存和256Kb SRAM,我很幸运地找到FANN,但是我需要编写一个小文件系统,以便库可以直接从闪存加载保存的网络权重。”

你对那些有兴趣构建和培训自己的机器人的开发者,有什么建议吗?

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分