在运动控制中使用神经网络

时间:2014-05-18 17:07:44

标签: neural-network

我正在建造一个自平衡的两轮机器人。我一直在计划为平衡部分实现一个简单的算法 - 然后花几天时间调整算法,但是现在我知道我可以使用神经网络。

作为输入,我想给它提供车轮,陀螺仪和加速度计数据的当前速度,其尺寸与平衡相关,也可能来自遥控器。

作为输出,我想要每个电机的方向和推力。

错误情况包括根据遥控器摔倒而不移动。

我遇到的麻烦是如何训练它?理想情况下,它会随着时间的推移而学习,但我不知道网络将如何学习 - 比如它是否有所作为,然后在2秒后跌落。

所以我无法告诉网络某个输出立即出错。我的想法是说我会回滚"每次机器人跌落时,整个网络状态都会持续几秒钟。这样做的正确方法是什么?

我也希望网络能够节约能源;使用权力是消极的,但是必要的。

我希望能够在1 ghz BeagleBone Black计算机上使用libfann。

额外信息:我不允许机器人翻倒,因此如果达到某些阈值,手动算法将接管控制 - 并将机器人置于中立位置并将控制权交还给网络。

2 个答案:

答案 0 :(得分:1)

让它了解您需要记录所有输入和输出,然后将数据提供给ANN。我在水处理的过程控制领域做到了这一点。该软件价格昂贵,而且我不知道开源替代品,但是你的培训方式是什么?它是通过给它历史数据。例如,当您在输出上执行x时,y会返回输入。然后,您可以在记录数据并将数据输入ANN时进行大量实验。

答案 1 :(得分:1)

您可以从模拟器开始,以避免必须拿起机器人或诉诸使用备用控制器。您可以找到一个为T-Bot构建的here,它是KLiK Robotics生产的一种自平衡机器人。在python文件夹中查找T-BotSimulator_KB_HD.py文件。该仿真器当前使用级联PID回路进行设置,但是该框架非常简单明了,您可以轻松地将现有控制器替换为ANN。依赖关系是Numpy和Pygame。您还将需要TBotTools,它也位于Python文件夹中。祝你好运。