我想通过机器学习改进我的小机器人。
到目前为止,它使用简单的,然后在其主要功能中作为草坪割草机器人的决定。
我的想法是为此目的使用SKLearn。
请帮我找到正确的第一步。
我有几个传感器可以告诉世界:
World = {yaw,pan,tilt,distance_to_front_obstacle,ground_color}
我有一个状态向量
State = {left_motor,right_motor,cutter_motor}
控制机器人的3个角色。
我想构建一个输入和输出值的数据集来教导sklearn所希望的行为,之后输入值应该为actor提供正确的输出值。
一个例子:如果电机开启且机器人应向前移动但距离计指示恒定值,则机器人似乎被阻挡。现在它应该决定退回并转向另一个方向。
首先,你认为这是可能的sklearn和第二我应该如何开始?
我的(简单)机器人控制代码在这里:http://github.com/bgewehr/RPiMower
请帮我完成第一步!
答案 0 :(得分:6)
我建议使用Reinforcement Learning。在这里,您有一个Q-Learning的教程,可以很好地解决您的问题。
如果你想在python中使用代码,那么我认为在scikit-learn中没有实现Q-learning。但是,我可以为您提供一些可以使用的python代码示例:1,2和3。
另请注意,强化学习的目的是最大化所有未来奖励的总和。你必须专注于一般观点。
祝你好运: - )答案 1 :(得分:1)
sklearn软件包包含许多有用的机器学习工具,所以我不认为这是一个问题。如果是,那么肯定还有其他有用的python包。我认为为监督学习阶段收集数据将是一个具有挑战性的部分,并且想知道在网格系统中使用磁带制作轨道是否明智。这样可以更容易地将轨道转换为标签(网格中的x,y位置)。如果你想在以后制作复杂的曲目,网格中的每个单元格都应该很小。检查他们在自动驾驶谷歌车中的表现可能非常明智。