使用机器学习实现简单的机器人控制

3
我希望用机器学习来改进我的小型机器人。目前,它在主要功能中使用简单的while和if-then决策作为割草机器人。
我的想法是使用SKLearn来实现这个目的。请帮我找到正确的第一步。
我有一些传感器可以告诉我关于外部世界的信息:
World = {偏航, 俯仰, 倾斜, 距离前方障碍物的距离, 地面颜色}
我有一个状态向量
State = {左电机、右电机、切割机电机}
控制机器人的三个动作。
我想建立一个输入输出值的数据集,教sklearn所需的行为,之后输入值应该给出正确的输出值,以控制机器人执行相应的动作。
例如:如果电机开启,机器人应该向前移动,但距离计表显示恒定值,则机器人似乎被卡住了。现在它应该决定后退、转向并向另一个方向移动。
首先,您认为这是否可能使用sklearn,其次,我应该如何开始?
我的(简单)机器人控制代码在这里:http://github.com/bgewehr/RPiMower 请帮我完成第一步!
2个回答

6
我建议使用强化学习。这里有一个Q-Learning的教程,非常适合你的问题。
如果你想用Python编写代码,目前scikit-learn中没有Q-learning的实现。但是,我可以给你一些在Python中使用的代码示例:1, 23
此外,请注意,强化学习旨在最大化所有未来奖励的总和。你必须关注全局视角。
祝你好运 :-)

谢谢!解决迷宫的任务与Q-learning方法相匹配是很明确的。但是,我如何教机器人理解“我的轮子在转动”和“我不移动”之间的关联,以便了解它被某些“隐形”障碍物阻挡了呢?这似乎并不是一个Q-Learning问题,对吧?这有点像自我意识问题,不是吗? - Bernd Gewehr
你必须以奖励为基础来设置所有内容。如果机器人试图朝障碍物的方向行进,那么你就给予负面奖励。如果机器人正朝你想要它到达的位置前进,那么你就给予正面奖励。 - hoaphumanoid
我会尝试的,必须更深入地思考这种方式! - Bernd Gewehr

1

sklearn包含了许多用于机器学习的有用工具,因此我认为这不是问题。如果是问题,那么肯定还有其他有用的Python包。我认为收集监督学习阶段的数据将是具有挑战性的部分,并且想知道在网格系统内使用带状轨迹是否明智。这将使将赛道转换为标签(网格中的x,y位置)更容易。如果您想制作复杂的赛道,则网格中的每个单元格应该很小。可能非常聪明的做法是检查他们在自动驾驶谷歌汽车中的表现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接