Neural network 神经网络在运动控制中的应用

Neural network 神经网络在运动控制中的应用,neural-network,Neural Network,我正在建造一个自平衡两轮机器人。我一直计划为平衡部分实现一个简单的算法,然后花上几天的时间调整算法,但现在我有了一个想法,我可以用神经网络代替 作为输入,我想给它车轮的当前速度,陀螺仪和加速计的数据,这些数据与平衡相关,可能还有来自遥控器的输入 作为输出,我需要每个电机的方向和推力 错误情况包括摔倒和未按遥控器移动 我遇到的麻烦是如何训练它?理想情况下,它会随着时间的推移而学习,但我不知道网络会如何学习——比如说,如果它做了什么,那么它会在2秒钟后倒下 因此,我无法立即告诉网络某个输出是错误的。

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

作为输入,我想给它车轮的当前速度,陀螺仪和加速计的数据,这些数据与平衡相关,可能还有来自遥控器的输入

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

错误情况包括摔倒和未按遥控器移动

我遇到的麻烦是如何训练它?理想情况下,它会随着时间的推移而学习,但我不知道网络会如何学习——比如说,如果它做了什么,那么它会在2秒钟后倒下

因此,我无法立即告诉网络某个输出是错误的。我的一个想法是,每次机器人倒下时,我都会“回滚”整个网络状态几秒钟。正确的方法是什么

我还想让网络尽量节约能源;使用电力是消极的,但却是必要的

我希望能够在1GHz BeagleBone黑色计算机上使用libfann


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

要让它学习,需要记录所有输入和输出,然后将数据输入ANN。我在水处理的过程控制领域做过这项工作。这个软件可能很昂贵,我不知道开源的替代方案,但是你“训练”它的方式是通过给它提供历史数据。例如,当您在输出上执行x时,y在输入上返回。然后,您可以在记录数据并将数据输入ANN的同时进行大量实验。

您可以从模拟器开始,以避免必须拾取机器人或使用备用控制器。你可以找到一个为T-Bot建造的机器人,这是一个由微软生产的自动平衡机器人。在python文件夹中查找T-BotSimulator_KB_HD.py文件。模拟器目前采用级联PID回路进行设置,但框架非常简单明了,您可以轻松地用现有控制器替代ANN。依赖项是Numpy和Pygame。您还需要TBotTools,它也在Python文件夹中。祝你好运。

我喜欢这个主意。对于您的后备算法,您应该像segway那样(尝试使轴始终保持直角)检查递归神经网络,例如您是否知道(另请参阅)?可能重复@devinbost这是我在过去5分钟内看到的关于神经网络的第10个问题,您将其标记为对玩蛇问题的神经网络的澄清的重复,这是一个分数为-5分的问题,但您恰好为其编写了答案。我发现很难相信所有这些问题都是一个有着如此明确标题的问题的变体。我并不假装理解你这样做的动机,但请解释一下,或者停下来。这个解决方案需要有人首先控制机器人。我想让它尝试一些东西,直到它自己理解为止。据我所知,我需要一个递归神经网络。这正是我的解决方案,只是它不需要动态学习,它需要历史数据。通过这种方式,您可以在参数上尝试不同的权重,并微调ANN。你所说的“试东西直到它明白”是什么意思?我想让机器人试着通过反复试验来教自己如何平衡。有了你的解决方案,我还可以使用卡尔曼滤波器和PID控制器。