我正在建造一个自平衡的两轮机器人.我一直在计划为平衡部分实现一个简单的算法 - 然后花几天时间调整算法,但现在我知道我可以使用神经网络代替.
作为输入,我想给它提供车轮,陀螺仪和加速度计数据的当前速度,其尺寸与平衡相关,并且可能来自遥控器.
作为输出,我想要每个电机的方向和推力.
错误情况包括根据遥控器摔倒而不移动.
我遇到的麻烦是如何训练它?理想情况下,它会随着时间的推移而学习,但我不知道网络将如何学习 - 如果它做了什么,然后在2秒后跌倒.
因此,我无法告诉网络某个输出立即出错.我的想法是说每次机器人跌落时我都会"回滚"整个网络状态几秒钟.这样做的正确方法是什么?
我也希望网络能够节约能源; 使用权力是消极的,但是必要的.
我希望能够在1 ghz BeagleBone Black计算机上使用libfann.
额外信息:我不允许机器人翻倒,因此如果达到某些阈值,手动算法将接管控制 - 并将机器人置于中立位置并将控制权交还给网络.
小智 1
为了让它学习,您需要记录所有输入和输出,然后将数据输入人工神经网络。我在水处理过程控制领域做到了这一点。该软件可能很昂贵,而且我不知道有开源替代品,但“训练”它的方式是为其提供历史数据。例如,当您在输出上执行 x 时,y 会在输入上返回。然后,您可以在记录数据的同时进行大量实验,并将这些数据输入 ANN。
归档时间: |
|
查看次数: |
834 次 |
最近记录: |