机器人技术是一个很久以前就离开科幻小说领域的领域,以推动工业自动化,医疗保健,太空探索和其他应用程序的发展。 软件机器人模拟器不仅简化了机器人工程师的开发工作,而且还为研究人员提供了研究人工智能(AI)算法和机器学习的工具。 这样一种以研究为重点的模拟器是基于Java 3D技术构建的开源Simbad项目(请参阅参考资料 )。 本文展示了如何使用Simbad工具包对虚拟机器人进行编程,以实现包含架构的机器人设计理念。
本文从对机器人技术的简要概述开始,并解释了包含架构的概念。 然后介绍了Simbad工具包,并演示了如何在Simbad中实现包含架构。 然后,您将使用该体系结构编写一个简单的机器人。 最后,您将看到令人着迷的迷宫世界,并对第二台机器人进行编程,该机器人不同于荷马·辛普森(参见参考资料 ),可以从迷宫中摆脱出来。 您的机器人不会是物理的,但会“生活”在Simbad虚拟世界中。
机器人编程
机器人一词没有公认的定义。 出于本文的目的,请考虑将机器人分为三个部分:
- 传感器集合
- 定义机器人行为的程序
- 执行器和效应器的集合
传统机器人
在传统的机器人技术(即1986年之前的机器人技术)中,机器人具有中央的“大脑”,该“大脑”构建和维护世界的“地图”,并根据该地图制定计划。 首先,机器人的传感器(例如,触摸传感器,光传感器和超声波传感器)从其环境中获取信息。 机器人的大脑融合了传感器收集的所有信息,并更新了世界地图。 然后,机器人决定要采取的行动。 它通过其执行器和效应器起作用。 执行器基本上是电动机,并连接到执行器,执行器与机器人的环境相互作用。 效应器的例子是轮子和手臂。 ( 执行器一词通常宽松地指执行器或效应器。)
简而言之,传统的机器人从可能的多个传感器获取输入,融合该传感器信息,更新其世界地图,基于其当前的世界视图制定计划,然后采取行动。 但是,此方法有问题。 一方面,它是高度计算密集型的。 另外,由于外部世界总是在变化,因此保持世界地图最新是很困难的。 此外,许多生物,例如昆虫,在没有外部世界地图甚至记忆的情况下依然繁衍生息。 尝试模仿它们会更好吗? 这些问题导致了一种新型的机器人技术,称为基于行为的机器人技术 (BBR)。 BBR可能是当今机器人实验室中的主导哲学。
包含架构
可以使用包含架构来实现BBR。 包容体系结构的发明者—现在是MIT AI实验室负责人的Rodney A. Brooks —在其1986年的开创性论文“大象不玩象棋”中介绍了它(请参阅参考资料 )。 基于行为的机器人是由一组独立的简单行为组成的 。 行为由触发它们的原因(通常是传感器读数)和所采取的动作(通常涉及效应器)定义。 行为相互叠加。 当两种行为发生冲突时,中央仲裁员将决定哪个优先。 根据BBR支持者的说法,机器人的整体行为是紧急的 ,并且可以大于其各个部分的总和。 出现的较高级别的行为包含较低级别的行为。 无需尝试设计机器人,您只需添加行为并查看出现的情况即可。
Simbad:机器人仿真环境
Simbad允许您在软件中模拟机器人。 根据该项目的网站,该网站“使程序员能够编写自己的机器人控制器,修改环境并使用可用的传感器。它主要面向希望简单学习基础人工智能,机器学习,在自治机器人和自治代理的情况下,更一般地说是AI算法。”
Simbad由Louis Hugues和Nicolas Bredeche用Java语言编写。 在SourceForge.net上托管的项目是免费的,您可以在GNU通用公共许可证的条件下使用和修改。
技术细节
Simbad世界可以包含特工(机器人)和无生命的对象(盒子,墙壁,灯光等)。 Simbad世界中的时间分为离散的滴答声。 Simbad计划在特工之间共享时间。 与物理机器人一样,Simbad Agents既具有传感器(距离,触摸,光线等)又具有执行器(通常是轮子)。 在每个滴答声中,机器人都可以行动。
代理会覆盖performBehavior()
方法来确定其行为。 在performBehavior()
,机器人可以记录传感器读数并设置其平移和旋转速度。 performBehavior()
会立即发生,因此它无法发出“前进一米”之类的命令。 为了解决此限制,通常必须跟踪机器人的状态。 您还可以使用计时器变量来跟踪您处于当前状态的时钟滴答声。
Simbad API
对于本文的练习,您将主要关