我正在尝试构建一个小型应用程序,该程序将运行在一个传感能力非常有限的机器人上(配备陀螺仪/超声波/触摸传感器的NXT),实际的人工智能实现将基于层次感知控制理论。我只是在寻找一些关于实现的指导,因为当我从理论转向实现时感到困惑。
场景
我的候选场景将有两种行为,一种是避开障碍物,另一种是根据给定的直径进行圆形运动。
问题
我阅读了几篇论文,但无法确定如何对我的虚拟机(行为层?)进行分类,以及它们应该如何与较低层级进行通信并解决内部冲突。
以下是我试图寻找答案时阅读过的论文列表,但遗憾的是没有找到答案
以下是我头脑风暴的结果:
-
避障层将是我的’感觉层‘的一部分,因为它只识别某些值,如接近的物体,例如超声波传感器的特定值范围。第二个层将是’配置层‘的一部分,因为它会尝试检测机器人行驶的模式,如直线、随机、圆形,甚至完全不动,这是使用陀螺仪和电机读数。’强度层‘代表所有传感器值,因此不应作为设计的一部分来考虑。
-
第二个想法是将这两个层都作为’配置‘,因为它们会直接响应来自’强度层‘的传感器值,并且它们将以网状设计表示,其中每一层可以将其参考值发送到与执行器接口的较低层。
我的问题在于如何处理冲突行为(绕过物体并保持圆形运动)?是否应该类似于Subsumption,其中某些层被抑制/抑制并具有某种优先级系统?请原谅我的简短解释,因为我不想让这个问题变得冗长。
/Y
回答:
来自CSGnet列表的RM的部分回答:https://listserv.illinois.edu/wa.cgi?A2=ind1312d&L=csgnet&T=0&P=1261
忘记层级。它们只是建议,对构建工作机器人没有用处。
对于你想要开发的机器人类型,更好的参考是CROWD程序,其文档位于http://www.livingcontrolsystems.com/demos/tutor_pct.html。
CROWD程序中的代理可以完成你希望机器人做的大部分工作。因此,设计的一种方法是尝试使用NXT机器人可用的传感器和输出实现CROWD程序中的控制系统。
通过思考应该控制哪些感知来设计机器人,以产生你希望看到的机器人行为。例如,如果你希望看到的一种行为是“避障”,那么思考避障行为是什么(我认为它是保持与障碍物的目标距离),然后思考如果保持控制,哪种感知会导致你看到机器人与物体保持固定距离。我认为可能是超声波脉冲发送和接收之间的时间延迟的感知。由于机器人在二维空间中移动(我假设),可能需要两个脉冲传感器来感知物体的二维位置。
你需要构建的控制系统之间可能存在潜在的冲突;例如,我认为控制圆形路径移动的系统和控制避障的系统之间可能存在冲突。CROWD程序中的代理也有同样的问题,有时会陷入死胡同冲突。处理这种冲突有各种方法;例如,你可以有一个更高层次的系统监控两个可能冲突系统中的错误,如果冲突(错误)持续一段时间,则降低其中一个系统或另一个系统的增益。