跳至内容

Cyberbotics 机器人课程/认知基准

来自 Wikibooks,开放世界开放书籍

认知基准主题已在 享受机器人比赛 一节中介绍过。本章首先简要介绍了该主题。然后,它详细介绍了一个认知基准:老鼠人生。为了避免与老鼠人生官方网站重复,我们只提供关于比赛的简要说明以及一些快速开始该基准的线索。最后部分专门介绍其他活跃的认知基准。

一般来说,基准是一种量化特定属性的方法。例如,在计算机领域,如果要建立一个按性能排序的 CPU 列表,则需要对每个 CPU 进行 CPU 基准测试。一个典型的 CPU 基准测试包括解决一个长时间的计算。CPU 完成此计算的速度越快,效率就越高。一旦量化了每个 CPU 的性能,就可以根据该指标对其进行排名。

类似地,认知基准是一种量化智力(不仅仅是人工智能)的方法。例如,镜子测试[1] 衡量自我意识。在动物没有注意到的情况下,在其身上标记一个无味记号。然后,将动物放在镜子前。动物可以分为三类:动物对记号不感兴趣,动物对反射中的记号感兴趣,或者动物对自己的记号感兴趣。如果动物属于最后一类,它就是自我意识(反之不一定正确)。根据此标准可以对动物进行排名。

在机器人学中,认知基准用于比较多个机器人控制器的人工智能质量。这种比较是在可衡量标准上进行的,例如解决问题的时间或游戏回合中的胜利。基准规则必须明确无误。为了提高参与者的积极性,认知基准通常以比赛的形式进行。由于这种竞争精神,在比赛结束时,参与者通常能够为给定问题找到非常好的解决方案。

象棋比赛就是一个认知基准的例子。该游戏的规则有限且明确无误。如果一名棋手赢得了比赛,他将获得三分,如果输了,他将得不到任何分数,如果两位棋手打成平手,他们每人将获得一分。在一个每个棋手都与其他所有棋手相遇的锦标赛中,分数准确地描述了每个参与者的象棋水平。此外,这种认知基准是一个混合基准,即完全不同的实体(例如,人类和计算机程序)可以参与。

在机器人研究中,认知基准主要用于比较研究成果。实际上,研究人员在科学出版物中提倡的一些技术缺乏与其他相关研究成果的比较。由于这种类型的活动,可以观察到一种技术与另一种技术的优缺点。一般来说,认知基准刺激了研究。

关于基准的生命周期,EURON 网站称:“一个基准只有在目标社区接受并广泛用于出版物、会议和报告中作为衡量和比较结果的方式时,才能被认为是成功的。今天最成功的基准可能是那些用于机器人比赛的基准。”[2]

最后,当人们知道 RoboCup[3] 的长期目标(“到 2050 年,开发一支完全自主的人形机器人队伍,能够在足球比赛中战胜人类世界冠军队伍。”)时,人们仍然可以期待机器人领域的许多惊喜。

老鼠人生基准

[编辑 | 编辑源代码]

本节介绍老鼠人生比赛。本节只简要介绍了这项比赛。另一方面,你将在这里找到关于机器人编程的线索,以便在比赛中快速入门。

老鼠人生是一个认知基准。在未知迷宫中,两只 e-puck 机器人争夺资源。他们必须在饲料器中找到能量才能生存。当一个饲料器被使用后,它会暂时不可用。比赛既可以在模拟中进行,也可以在现实中进行。真实的迷宫由乐高©积木构成。该图描绘了第 6 个迷宫中比赛的模拟。

老鼠人生比赛的 Webots 模拟

比赛的目的是实现一个 e-puck 控制器,让你的 e-puck 比对手生存更长时间。如果你完成了之前的练习,你将拥有参加这场比赛所需的所有背景知识。除了编程语言是 Java 而不是 C。但由于 Webots API 非常相似,并且 Java 比 C 更易于使用,因此过渡会很轻松。

世界文件可在 Webots(即使是在免费版本中)中找到,位于

webots_root/projects/contests/ratslife/worlds/ratslife.wbt

其中webots_root对应于 Webots 安装的目录。

在老鼠人生官方网站上,你可以找到精确的比赛规则、关于参与的信息、目前的排名、关于真实迷宫创建的信息等等。在这一步,我建议你在继续本课程之前参考老鼠人生官方网站:ratslife.org

从现在开始,我们希望你了解老鼠人生的规则和特定词汇。

主要兴趣领域和线索

[编辑 | 编辑源代码]

老鼠人生比赛的主要机器人挑战是视觉系统、未知环境中的导航和游戏策略。每个主题的最佳解决方案仍然是一个悬而未决的问题,即没有明确的解决方案。在比赛结束时,某个解决方案可能在某些主题上优于其他解决方案。实际上现在还没有这种情况。本节为每个主题提供了一个起点,即一些标准技术(或其参考)以及快速开始比赛的主题难度。显然,这些线索并非详尽无遗,它们不应限制你的创造力和研究。

视觉系统 - 模式识别

[编辑 | 编辑源代码]

在老鼠人生比赛中,使用了两种 e-puck 传感器:红外传感器和摄像头。第一个传感器很简单。红外传感器返回的信息非常直观,其使用或多或少局限于区分墙壁。然而,摄像头返回的信息要难处理得多。此外,摄像头必须区分并估计多种模式的位置和方向,例如点亮的光源、熄灭的光源、另一个 e-puck,尤其是地标。

模式识别是一个巨大的主题,其中存在许多技术。本文档的目标不是提供现有解决方案的完整列表,而是提供一种有效开始比赛的方法。因此,一个简单的解决方案是使用斑点检测[4] 算法。如果斑点选择在适当的像素集上进行校准,问题将变得更容易。

第一张图描绘了检测点亮饲料器的一种可能的流程。第一步是获取通道值(通过简单的RGB到HSV色彩空间[5]转换)。然后,应用斑点检测算法来获取对应于光源的斑点。最后,移除一些极端的斑点(尺寸过小、位置过高等等)。得到的斑点的x轴位置可以直接发送给电机。为了提高当前流程的鲁棒性,可以添加另一个斑点检测,该检测会在光点周围搜索红色光晕。

点亮饲料器的图像处理流程示例

第二张图描绘了检测地标的一种可能的流程。这个问题比上一个更棘手。以下是一个可能的解决方案。首先,可以计算图像的色调通道。使用这个色彩空间,可以很容易地区分四种地标颜色。然后,在这个信息上执行斑点检测。斑点的尺寸提供了关于地标距离的线索。似乎是地标的斑点会被拉直(例如,使用单应性变换[6]),并进行归一化(例如,在4x3矩阵上)。现在,可以很容易地将结果与数据库进行比较,以获取地标的编号。

地标图像处理流程示例

一般来说,计算机视觉流程由以下部分组成

  • 图像采集:这部分通过使用camera_get_image()函数来完成。它返回模拟或真实摄像机的像素值。
  • 预处理:预处理部分的目的是提高图像质量。例如,可以对图像应用高斯模糊来去除噪声。在前面的示例中,预处理对应于从RGB到HSV色彩空间的转换。
  • 特征提取:这部分最难选择。在前面的示例中,使用了斑点检测。但也可以使用完全不同的方法,例如边缘检测(要开始学习这个主题,请参考Canny边缘检测器[7]霍夫变换[8])。更复杂的技术可能与纹理、形状或运动有关。
  • 检测/分割:检测部分的目的是去除不可用的信息。例如,去除所有过小的斑点或选择感兴趣区域。
  • 高级处理:在这个步骤中,信息几乎可以使用了。但是,例如,地标斑点必须经过处理才能知道它属于哪个类别。这部分通常是机器学习[9]问题。这也是计算机科学中的一个巨大领域。如果我必须只推荐两种完全不同的方法,那将是生物启发的反向传播算法,该算法使用人工神经网络进行分类,以及统计启发的支持向量机(SVM)[10]

基于视觉的导航 - 同时定位与建图(SLAM)

[edit | edit source]

基于视觉的导航和建图毫无疑问是“老鼠人生”比赛中最困难的部分。为了具有竞争力,e-puck必须存储其之前的动作。事实上,如果一个e-puck找到了饲料器之间的最短路径,它很可能赢得比赛。这需要构建地图的表示。例如,一个简单的地图表示可以是生成一个图,该图可以将观测(地标、饲料器、死胡同)与动作(向左转、向前走)联系起来。这里介绍了一种强大的技术来解决这个问题。一旦地图创建完成,就可以使用一些技术在迷宫中找到最短路径(参考DijkstraA*算法)。

同时定位与建图(SLAM)是一种构建未知环境地图并通过参考静止参考点估计机器人当前位置的技术。这些点可以是迷宫墙壁(使用红外传感器:基于距离传感器的导航),也可以是地标(使用摄像头:基于视觉的导航)。有关更多信息,请参考关于SLAM的练习。

游戏策略

[edit | edit source]

“老鼠人生”是一场基于竞争的比赛。制定有效的策略是赢得比赛的第一步。游戏策略(以及e-puck的行为)必须解决以下关键点

  • 迷宫探索:e-puck如何探索迷宫(随机地、右手算法)?它什么时候可以探索迷宫?
  • 覆盖范围:生存需要多少个饲料器?当e-puck有足够的饲料器来生存时,它的行为将是什么?
  • 对手策略的反应:如果对手封锁了一个通道,e-puck应该怎么做?如果对手跟随它,它的行为应该是什么?
  • 能量管理:e-puck从哪个电池电量开始冲向饲料器?破坏饲料器的能量是否有用?
  • 对手干扰:e-puck如何阻挡对手?对手使用哪个饲料器?

其他机器人认知基准

[edit | edit source]

在世界各地,存在着大量的机器人比赛。在大多数比赛中,比赛从物理机器人的设计和建造开始。在这种情况下,很难比较机器人的认知能力,因为它们受到硬件选择的很大影响。为了能够对机器人的认知能力进行基准测试,需要标准化的平台和环境。“老鼠人生”使用e-puck作为标准平台,使用乐高迷宫作为环境。类似地,RoboCupFIRA组织有一个比赛类别,其中使用的机器人是相同的,环境是精心定义的。

RoboCup - 标准平台联盟

[edit | edit source]

RoboCup组织机器人足球比赛。有多个类别。其中一个类别使用标准平台:一个名为Nao的双足机器人(见图)。使用这个平台的第一个比赛于2008年举行。两支由四台Nao组成的队伍在足球比赛中竞争。


更多信息可以在RoboCup的官方网站上找到:http://www.robocup.org

这个比赛的基于Webots的模拟版本可以在RobotStadium 上找到:http://www.robotstadium.org

国际机器人足球协会联盟(FIRA) - Kheperasot

[edit | edit source]

FIRA还组织机器人足球比赛,包括一个基于Khepera差速轮机器人的标准联盟。

FIRA的官方网站是:http://www.fira.net


注释

[edit | edit source]
  1. 更多维基百科信息:镜子测试
  2. 来源:http://www.euron.org/activities/benchmarks/index.html
  3. 更多信息:http://www.robocup.org/
  4. 更多信息:斑点检测
  5. 更多信息:HSV色彩空间
  6. 更多维基百科信息:单应性变换
  7. 维基百科上的更多信息:Canny 边缘检测器
  8. 维基百科上的更多信息:霍夫变换
  9. 在练习中的更多信息:模式识别粒子群优化 和维基百科:机器学习
  10. 维基百科上的更多信息:支持向量机
华夏公益教科书