我正在建造一个自我平衡的两轮机器人。我一直计划为平衡部分实现一个简单的算法-然后花几天时间调整算法,但现在我有了一个想法,我可以使用神经网络来代替。
作为输入,我想给它提供轮子的当前速度,陀螺仪和加速度计在与平衡相关的维度上的数据,也许还可以从遥控器输入。
作为输出,我想要每个马达的方向和推力。
错误情况包括跌倒和不能根据遥控器移动。
我遇到的麻烦是如何训练它?理想情况下,它会随着时间的推移而学习,但我不知道网络将如何学习-比方说,如果它做了什么,那么2秒后就会掉下来。
因此,我无法立即告诉网络某个输出是错误的。我的一个想法是,每当机器人倒下时,我都会“回滚”整个网络状态几秒钟。这样做的正确方法是什么?
我也想让网络尝试节约能源;使用电力是负面的,但却是必要的。
我希望能够在1Ghz的BeagleBone黑色电脑上使用libfann。
额外信息:我不会允许机器人倒下,所以如果达到一定的阈值,手动算法将接管控制-并将机器人带到中立位置,并将控制权交还给网络。
发布于 2014-05-23 01:02:05
为了让它学习,你需要记录所有的输入和输出,然后将数据输入到ANN中。我已经在水处理的过程控制领域做到了这一点。软件可能很贵,而且我不知道有没有开源的替代方案,但你“训练”它的方式是给它提供历史数据。例如,当你在一个输出上做x时,y在一个输入上返回。然后,您可以在记录数据的同时进行一系列实验,并将数据输入ANN。
发布于 2020-11-18 17:01:19
您可以从模拟器开始,以避免不得不拿起机器人或求助于使用备用控制器。您可以找到一个为T-Bot构建的here,它是由KLiK Robotics生产的自平衡机器人。在python文件夹中查找T-BotSimulator_KB_HD.py文件。该仿真器目前采用的是级联PID回路,但其结构非常简单明了,你可以很容易地用现有的控制器代替人工神经网络。依赖项是Numpy和Pygame。您还需要TBotTools,它也在Python文件夹中。祝好运。
https://stackoverflow.com/questions/23724625
复制相似问题