智能玩具机器人的工作原理

智能玩具机器人的工作原理

人工智能(AI)可以说是最令人兴奋的在智能玩具机器人技术领域。这当然是最具争议的:每个人都同意,一个智能玩具机器人可以在装配线上工作,但是没有共识智能玩具机器人是否能够聪明。

像“智能玩具机器人”一词本身,人工智能是很难定义的。最终人工智能将是一个娱乐的人类思维过程——一个人造机器与我们的知识能力。这将包括学习任何东西的能力,能力的原因,使用语言的能力和制定独到的见解的能力。智能玩具机器人是远远没有达到这个水平的人工智能,但是他们取得了很多的进步更有限的人工智能。今天的人工智能机器可以复制一些特定元素的知识能力。

电脑已经可以解决问题在有限的领域。人工智能解决问题的基本思想非常简单,尽管它的执行是复杂的。首先,人工智能智能玩具机器人或电脑收集事实情况通过传感器或人工输入。电脑比较这些信息存储数据并决定信息意味着什么。电脑运行通过各种可能的行动和预测行动将是最成功的基于收集到的信息。当然,计算机只能解决问题的程序来解决,它没有任何广义分析能力。国际象棋计算机这类机器的一个例子。

一些现代智能玩具机器人也有能力学习能力有限。学习智能玩具机器人识别如果某个行动(以某种方式将其腿,例如)取得了预期的结果(导航障碍物)。智能玩具机器人商店这一信息,并尝试成功的行动,下次遇到同样的情况。

再次,现代计算机只能在非常有限的情况下做到这一点。他们不能像人类可以吸收任何类型的信息。有些智能玩具机器人可以通过模仿人类的行为。在日本,智能玩具机器人专家教智能玩具机器人舞蹈通过展示自己移动。

一些智能玩具机器人可以社会互动。在M.I.天命,一个智能玩具机器人T的人工智能实验室,道出了人类肢体语言和声音音调变化和适当的响应。命运的创造者感兴趣的人类如何和孩子互动,只有基于讲话的语气和视觉线索。这种低级的交互可能类似人类的学习系统的基础。

命运和其他人形智能玩具机器人在麻省理工学院人工智能实验室操作使用一个非传统的控制结构。而不是指挥每一个行动都使用一个中央计算机,智能玩具机器人控制低级的行为与低级别的电脑。程序的导演,罗德尼•布鲁克斯认为,这是人类智慧的更精确的模型。自动大多数事情;我们不决定他们意识的最高水平。

人工智能的真正的挑战是了解自然的情报是如何工作的。发展人工智能不像建立一个人工心脏——科学家们没有一个简单的,具体的模型。我们知道大脑包含数十亿数十亿的神经元,我们认为,通过建立学习不同神经元之间的电气连接。但我们不知道如何所有这些连接添加到更高的推理,甚至低级操作。复杂的电路似乎难以理解。

因此,人工智能主要是理论研究。科学家们假设如何以及为什么我们学习和思考,并使用智能玩具机器人他们尝试自己的想法。布鲁克斯和他的团队专注于人形智能玩具机器人,因为他们认为能够体验世界像人类是至关重要

的发展类似人类的智能。这也使人们更容易与智能玩具机器人交互,这可能让智能玩具机器人更容易学习。

正如物理智能玩具机器人的设计是一个方便的工具,了解动物和人体解剖学,人工智能的研究有助于理解自然的情报是如何工作的。对于一些智能玩具机器人,这观点是智能玩具机器人设计的终极目标。其他人想象一个世界,我们生活与智能机器和使用各种各样的小智能玩具机器人对体力劳动,卫生保健和沟通。大量的智能玩具机器人专家预测,智能玩具机器人进化最终会把我们变成半机械人,人类与机器集成。可以想象,人们在未来可能决定加载到坚固的智能玩具机器人,活了几千年!

在任何情况下,智能玩具机器人一定会发挥更大的作用在未来在我们的日常生活中。在未来的几十年里,智能玩具机器人将逐渐走出工业和科学世界和日常生活中,以同样的方式,电脑在1980年代蔓延到家里。

了解智能玩具机器人的最佳方法是看具体设计。下一个页面上的链接将向您展示世界上目前的智能玩具机器人项目。

机器人、迷宫和包容体系结构

用 Java 语言编写虚拟机器人

机器人模拟器既是严肃的研究工具,也是能够通过 Java 编程创造乐趣的领域。学习如何使用 Simbad(一种基于 Java 3D 技术的开放源码机器人模拟器)和 Java 语言创建能够跟踪光源和走迷宫的虚拟机器人,并了解包容体系结构的机器人设计概念。

简介

机器人学很早就超出了科学幻想的领域,并在工业自动化、医疗、太空探索等领域发挥着重要作用。软件机器人模拟器不但简化了机器人工程师的开发工作,还为研究人工智能(artificial intelligence,AI)算法和机器学习提供了工具。以这种研究为中心的模拟器之一是开放源码的 Simbad 项目,它基于 Java 3D 技术(参见 参考资料)。本文讲解如何使用 Simbad 工具箱编写虚拟机器人,并介绍包容体系结构(subsumption architecture) 的机器人设计原理。

本文首先简要概述机器人学并解释包容体系结构概念。然后介绍 Simbad 工具箱并演示如何在 Simbad 中实现包容体系结构。然后使用这个体系结构编写一个简单的机器人。最后,讨论迷宫并编写第二个机器人,与 Homer Simpson 不同(参见 参考资料),这个机器人会自己走出迷宫。这里的机器人不是现实存在的,但是 “活” 在 Simbad 的虚拟世界中。

回页首

机器人编程

机器人 这个词没有被普遍接受的定义。根据本文的目的,可以认为一个机器人由三个部分组成:

 一个传感器(sensor) 集合 一个定义机器人的行为的程序 一个传动器(actuator) 和受动器(effector) 集合

传统的机器人学

在传统的机器人学中(也就是 1986 年之前的机器人学),机器人拥有一个中央 “大脑”,这个大脑构建并维护环境的 “地图”,然后根据地图制定计划。首先,机器人的传感器(例如接触传感器、光线传感器和超声波传感器)从它的环境中获得信息。机器人的大脑将传感器收集的所有信息组合 起来并更新它的环境地图。然后,机器人决定运动的路线。它通过传动器和受动器执行动作。传动器基本上是一些发动机,它们连接到受动器,受动器与机器人的环境交互。受动器包括轮子和机械臂等(传动器 这个词常常用来泛指传动器或受动器)。

简单地说,传统的机器人接收来自传感器(可能有多个传感器)的输入,组合传感器信息,更新环境地图,根据它当前掌握的环境视图制定计划,最后执行动作。但是,这种方法是有问题的。问题之一是它需要进行大量计算。另外,因为外部环境总是在变化,所以很难让环境地图符合最新情况。一些生物(比如昆虫)不掌握外部世界的地图,甚

至没有记忆,但是它们却活得非常自在;模仿它们会不会更好呢?这些问题引出了一种新型的机器人学,称为基于行为的机器人学(behavior-based robotics,BBR)。BBR 在当今的机器人实验室中占主要地位。

包容体系结构

可以使用包容体系结构(subsumption architecture)实现 BBR。包容体系结构的发明者是 Rodney A. Brooks(MIT AI Lab 的现任领导)在 1986 年的文章 “Elephants Don't Play Chess” 中提出了包容体系结构(参见 )。基于行为的机器人依赖于一组独立的简单的行为。行为的定义包括触发它们的条件(常常是一个传感器读数)和采取的动作(常常涉及一个受动器)。一个行为建立在其他行为之上。当两个行为发生冲突时,一个中央仲裁器(arbitrator) 决定哪个行为应该优先。机器人的总体行为是突然的(emergent),根据 BBR 支持者的说法,它的效果好于其部分之和。较高层行为包容(subsume) 较低层行为。我们并不创建整个机器人,只需添加行为并看看会发生什么。

回页首

Simbad:一个机器人模拟环境

LEGO Mindstorms

本文主要关注软件机器人的构建,但是如果希望构建物理机器人,那么可以考虑使用 LEGO Mindstorms。

LEGO Mindstorms 总部的宣言说,“我们将让机器人学发生巨变,就像 iPod 给音乐界带来的影响。” LEGO 于 1998 年推出了 Mindstorms 机器人学工具箱的第一版。这个工具箱很快就变得畅销了,大大超出了 LEGO 的预期。尽管它的价格似乎不便宜($250),但是要知道这只相当于 iPod Classic 的价格,而且每个人 都拥有 iPod。 但是,iPod 没 Mindstorms 那么容易破解。在 Mindstorms 发布后不久,硬件黑客就开始取出 Mindstorms RCX brick(Mindstorms 机器人的 “大脑”)并进行反向工程。LEGO 没有预料到这种情况,而且不确定是否应该制止这种做法。最后,LEGO 的管理层决定允许 Mindstorms 黑客的这种行为。

由此产生了一个兴旺的 Mindstorms 社区(参见 参考资料)。尽管 Mindstorms 只附带一种拖放式图形化编程语言 NXT-G,但是软件黑客很快就在 Mindstorms 中添加了对 C 和 Java 等其他语言的支持。结果,大约一半的 Mindstorms 由成年人使用。 可以使用 Simbad 在软件中模拟机器人。该项目 Web 站点指出,它 “让程序员能够编写自己的机器人控制器、修改环境和使用可用的传感器。它主要向研究人员/程序员提供一个基本工具,用来在自治机器人学和自治代理上下文中研究情景人工智能(Situated Artificial Intelligence)、机器学习和其他 AI 算法。”

Simbad 是由 Louis Hugues 和 Nicolas Bredeche 用 Java 语言编写的。在符合 GNU General Public License 的条件下,可以免费使用和修改这个项目(可从 SourceForge.net 上获得)。

技术细节

Simbad 环境可以包含代理(Agent,也就是机器人)和固定对象(盒子、墙、灯等等)。Simbad 环境中的时间划分成离散的 “嘀嗒(tick)”。Simbad 在代理之间调度时间分配。与物理机器人一样,Simbad 代理也有传感器(距离、接触、光线等等)和传动器(常常是轮子)。在每个嘀嗒时刻,一个机器人可以执行动作。

代理通过覆盖 performBehavior() 方法决定它们的行为。

在 performBehavior() 中,机器人可以读取传感器读数并设置它的平移和旋转速度。performBehavior() 执行的时间很短,所以不能发出 “前进一米” 这样的命令。为了解决这个限制,通常必须跟踪机器人的状态。还可以使用计时器变量记录保持当前状态的时钟嘀嗒数。

Simbad API

在本文的练习中,主要使用两个 Simbad API 包:

o

o

o

o

o simbad.sim:这个包中的类代表机器人和它所在的环境。包括: Agent:Agent 就是机器人。 Arch:机器人可以绕过或从下面通过的拱形结构。 Box:可以作为机器人的环境中的障碍物。 CameraSensor:可以从机器人的视角查看机器人的环境。 EnvironmentDescription:代表 “环境”,可以在其中添加机器人和墙或

盒子等对象。

o

o

o

o LampActuator:可以添加到机器人上的灯。 LightSensor:感应光线的强度。 RangeSensorBelt:包含机器人周围的一组距离传感器。 RobotFactory:用这个类在机器人上添加传感器。

沿墙走

沿墙走是一种简单的解迷宫算法,您可能在小时候就学过了。在用这种算法解迷宫时,只需要把左手一直放在左边的墙上(或者把右手一直放在右边的墙上),然后沿着墙走,直到走出迷宫。很容易看出,如果迷宫的边界上有一个入口和一个出口,那么这种算法总是有效的。但是,如果目标在一个孤岛(即迷宫中不与其他部分相连的部分)中,那么这种算法无法找到解决方案,因为它无法 “跳” 到孤岛上。

Pledge 算法

Pledge 算法比沿墙走算法复杂,能够解决更多的迷宫类型,因为它可以在孤岛之间跳跃。Pledge 算法的基本思想是,先选择一个绝对方向(比如东、南、西或北),然后总是尽可能朝这个方向走。我把这个方向称为偏好方向(favored direction)。当遇到墙时,向右转身并采用左手沿墙走方式,直到面向偏好方向而且 转身数的总和为零(顺时针转身是负值,逆时针转身是正值)为止。此时,继续沿偏好方向向前走。转身数的总和必须是零,这是为了避免陷入某些环路,比如大写字母 G 形状的环路(在纸上试着走一下这个形状,就会明白我的意思)。

回页首

Algernon:一个解迷宫机器人

现在该让您的朋友大吃一惊了,我们来构建一个解迷宫机器人,它的名字是 Algernon。 设计机器人

为了实现沿墙走或 Pledge 算法,需要知道机器人什么时候遇到交叉路口,以及在遇到交叉路口时应该走哪个方向。

有多种实现这一目标的方法,但是我们采用的方法是在机器人的左边安装一个声纳传感器。当左边出现通道时,这个传感器会发出警报。为了了解机器人正在走的通道什么时候到头了(即,机器人遇到了墙),在机器人的前面添加一个接触传感器。 实现沿墙走算法

我们使用 algernon.subsumption 包编写 Algernon(下载 源代码)。Algernon 是一个非常简单的机器人,可以按照简单的 “过程式” 方式编写它。但是,即使对于这么简单的机器人,使用包容编程也会使代码更加清晰,更模块化,更容易理解。

为了简化算法实现,假设墙的转弯都是直角的。所以,机器人的所有转身都是 90 度左转或 90 度右转。

如果分析一下(左手)沿墙走算法,就会发现它可以分解成四个行为:

Branwyn 的 Absolute Beginner's Guide to Building Robots(参见 ),就可以用 BEAM 工具箱构建出您的第一个机器人。还可以购买并使用 Roomba。

在编写机器人并查看其他人的机器人代码之后,我很快就发现了一个令人吃惊的情况:只需很少的代码,就能够让机器人做许多事情(但是,为了让这些代码精确地实现目标,可能需要做许多分析和实验)。使用 LEGO Mindstorms 工具箱,只需半天时间,就能够构建一个简单的机器人。

对机器人学感兴趣的爱好者可以通过许多渠道提高技能,比如机器人图书、机器人竞赛、机器人视频资料和当地的机器人俱乐部。

智能玩具机器人的工作原理

人工智能(AI)可以说是最令人兴奋的在智能玩具机器人技术领域。这当然是最具争议的:每个人都同意,一个智能玩具机器人可以在装配线上工作,但是没有共识智能玩具机器人是否能够聪明。

像“智能玩具机器人”一词本身,人工智能是很难定义的。最终人工智能将是一个娱乐的人类思维过程——一个人造机器与我们的知识能力。这将包括学习任何东西的能力,能力的原因,使用语言的能力和制定独到的见解的能力。智能玩具机器人是远远没有达到这个水平的人工智能,但是他们取得了很多的进步更有限的人工智能。今天的人工智能机器可以复制一些特定元素的知识能力。

电脑已经可以解决问题在有限的领域。人工智能解决问题的基本思想非常简单,尽管它的执行是复杂的。首先,人工智能智能玩具机器人或电脑收集事实情况通过传感器或人工输入。电脑比较这些信息存储数据并决定信息意味着什么。电脑运行通过各种可能的行动和预测行动将是最成功的基于收集到的信息。当然,计算机只能解决问题的程序来解决,它没有任何广义分析能力。国际象棋计算机这类机器的一个例子。

一些现代智能玩具机器人也有能力学习能力有限。学习智能玩具机器人识别如果某个行动(以某种方式将其腿,例如)取得了预期的结果(导航障碍物)。智能玩具机器人商店这一信息,并尝试成功的行动,下次遇到同样的情况。

再次,现代计算机只能在非常有限的情况下做到这一点。他们不能像人类可以吸收任何类型的信息。有些智能玩具机器人可以通过模仿人类的行为。在日本,智能玩具机器人专家教智能玩具机器人舞蹈通过展示自己移动。

一些智能玩具机器人可以社会互动。在M.I.天命,一个智能玩具机器人T的人工智能实验室,道出了人类肢体语言和声音音调变化和适当的响应。命运的创造者感兴趣的人类如何和孩子互动,只有基于讲话的语气和视觉线索。这种低级的交互可能类似人类的学习系统的基础。

命运和其他人形智能玩具机器人在麻省理工学院人工智能实验室操作使用一个非传统的控制结构。而不是指挥每一个行动都使用一个中央计算机,智能玩具机器人控制低级的行为与低级别的电脑。程序的导演,罗德尼•布鲁克斯认为,这是人类智慧的更精确的模型。自动大多数事情;我们不决定他们意识的最高水平。

人工智能的真正的挑战是了解自然的情报是如何工作的。发展人工智能不像建立一个人工心脏——科学家们没有一个简单的,具体的模型。我们知道大脑包含数十亿数十亿的神经元,我们认为,通过建立学习不同神经元之间的电气连接。但我们不知道如何所有这些连接添加到更高的推理,甚至低级操作。复杂的电路似乎难以理解。

因此,人工智能主要是理论研究。科学家们假设如何以及为什么我们学习和思考,并使用智能玩具机器人他们尝试自己的想法。布鲁克斯和他的团队专注于人形智能玩具机器人,因为他们认为能够体验世界像人类是至关重要

的发展类似人类的智能。这也使人们更容易与智能玩具机器人交互,这可能让智能玩具机器人更容易学习。

正如物理智能玩具机器人的设计是一个方便的工具,了解动物和人体解剖学,人工智能的研究有助于理解自然的情报是如何工作的。对于一些智能玩具机器人,这观点是智能玩具机器人设计的终极目标。其他人想象一个世界,我们生活与智能机器和使用各种各样的小智能玩具机器人对体力劳动,卫生保健和沟通。大量的智能玩具机器人专家预测,智能玩具机器人进化最终会把我们变成半机械人,人类与机器集成。可以想象,人们在未来可能决定加载到坚固的智能玩具机器人,活了几千年!

在任何情况下,智能玩具机器人一定会发挥更大的作用在未来在我们的日常生活中。在未来的几十年里,智能玩具机器人将逐渐走出工业和科学世界和日常生活中,以同样的方式,电脑在1980年代蔓延到家里。

了解智能玩具机器人的最佳方法是看具体设计。下一个页面上的链接将向您展示世界上目前的智能玩具机器人项目。

机器人、迷宫和包容体系结构

用 Java 语言编写虚拟机器人

机器人模拟器既是严肃的研究工具,也是能够通过 Java 编程创造乐趣的领域。学习如何使用 Simbad(一种基于 Java 3D 技术的开放源码机器人模拟器)和 Java 语言创建能够跟踪光源和走迷宫的虚拟机器人,并了解包容体系结构的机器人设计概念。

简介

机器人学很早就超出了科学幻想的领域,并在工业自动化、医疗、太空探索等领域发挥着重要作用。软件机器人模拟器不但简化了机器人工程师的开发工作,还为研究人工智能(artificial intelligence,AI)算法和机器学习提供了工具。以这种研究为中心的模拟器之一是开放源码的 Simbad 项目,它基于 Java 3D 技术(参见 参考资料)。本文讲解如何使用 Simbad 工具箱编写虚拟机器人,并介绍包容体系结构(subsumption architecture) 的机器人设计原理。

本文首先简要概述机器人学并解释包容体系结构概念。然后介绍 Simbad 工具箱并演示如何在 Simbad 中实现包容体系结构。然后使用这个体系结构编写一个简单的机器人。最后,讨论迷宫并编写第二个机器人,与 Homer Simpson 不同(参见 参考资料),这个机器人会自己走出迷宫。这里的机器人不是现实存在的,但是 “活” 在 Simbad 的虚拟世界中。

回页首

机器人编程

机器人 这个词没有被普遍接受的定义。根据本文的目的,可以认为一个机器人由三个部分组成:

 一个传感器(sensor) 集合 一个定义机器人的行为的程序 一个传动器(actuator) 和受动器(effector) 集合

传统的机器人学

在传统的机器人学中(也就是 1986 年之前的机器人学),机器人拥有一个中央 “大脑”,这个大脑构建并维护环境的 “地图”,然后根据地图制定计划。首先,机器人的传感器(例如接触传感器、光线传感器和超声波传感器)从它的环境中获得信息。机器人的大脑将传感器收集的所有信息组合 起来并更新它的环境地图。然后,机器人决定运动的路线。它通过传动器和受动器执行动作。传动器基本上是一些发动机,它们连接到受动器,受动器与机器人的环境交互。受动器包括轮子和机械臂等(传动器 这个词常常用来泛指传动器或受动器)。

简单地说,传统的机器人接收来自传感器(可能有多个传感器)的输入,组合传感器信息,更新环境地图,根据它当前掌握的环境视图制定计划,最后执行动作。但是,这种方法是有问题的。问题之一是它需要进行大量计算。另外,因为外部环境总是在变化,所以很难让环境地图符合最新情况。一些生物(比如昆虫)不掌握外部世界的地图,甚

至没有记忆,但是它们却活得非常自在;模仿它们会不会更好呢?这些问题引出了一种新型的机器人学,称为基于行为的机器人学(behavior-based robotics,BBR)。BBR 在当今的机器人实验室中占主要地位。

包容体系结构

可以使用包容体系结构(subsumption architecture)实现 BBR。包容体系结构的发明者是 Rodney A. Brooks(MIT AI Lab 的现任领导)在 1986 年的文章 “Elephants Don't Play Chess” 中提出了包容体系结构(参见 )。基于行为的机器人依赖于一组独立的简单的行为。行为的定义包括触发它们的条件(常常是一个传感器读数)和采取的动作(常常涉及一个受动器)。一个行为建立在其他行为之上。当两个行为发生冲突时,一个中央仲裁器(arbitrator) 决定哪个行为应该优先。机器人的总体行为是突然的(emergent),根据 BBR 支持者的说法,它的效果好于其部分之和。较高层行为包容(subsume) 较低层行为。我们并不创建整个机器人,只需添加行为并看看会发生什么。

回页首

Simbad:一个机器人模拟环境

LEGO Mindstorms

本文主要关注软件机器人的构建,但是如果希望构建物理机器人,那么可以考虑使用 LEGO Mindstorms。

LEGO Mindstorms 总部的宣言说,“我们将让机器人学发生巨变,就像 iPod 给音乐界带来的影响。” LEGO 于 1998 年推出了 Mindstorms 机器人学工具箱的第一版。这个工具箱很快就变得畅销了,大大超出了 LEGO 的预期。尽管它的价格似乎不便宜($250),但是要知道这只相当于 iPod Classic 的价格,而且每个人 都拥有 iPod。 但是,iPod 没 Mindstorms 那么容易破解。在 Mindstorms 发布后不久,硬件黑客就开始取出 Mindstorms RCX brick(Mindstorms 机器人的 “大脑”)并进行反向工程。LEGO 没有预料到这种情况,而且不确定是否应该制止这种做法。最后,LEGO 的管理层决定允许 Mindstorms 黑客的这种行为。

由此产生了一个兴旺的 Mindstorms 社区(参见 参考资料)。尽管 Mindstorms 只附带一种拖放式图形化编程语言 NXT-G,但是软件黑客很快就在 Mindstorms 中添加了对 C 和 Java 等其他语言的支持。结果,大约一半的 Mindstorms 由成年人使用。 可以使用 Simbad 在软件中模拟机器人。该项目 Web 站点指出,它 “让程序员能够编写自己的机器人控制器、修改环境和使用可用的传感器。它主要向研究人员/程序员提供一个基本工具,用来在自治机器人学和自治代理上下文中研究情景人工智能(Situated Artificial Intelligence)、机器学习和其他 AI 算法。”

Simbad 是由 Louis Hugues 和 Nicolas Bredeche 用 Java 语言编写的。在符合 GNU General Public License 的条件下,可以免费使用和修改这个项目(可从 SourceForge.net 上获得)。

技术细节

Simbad 环境可以包含代理(Agent,也就是机器人)和固定对象(盒子、墙、灯等等)。Simbad 环境中的时间划分成离散的 “嘀嗒(tick)”。Simbad 在代理之间调度时间分配。与物理机器人一样,Simbad 代理也有传感器(距离、接触、光线等等)和传动器(常常是轮子)。在每个嘀嗒时刻,一个机器人可以执行动作。

代理通过覆盖 performBehavior() 方法决定它们的行为。

在 performBehavior() 中,机器人可以读取传感器读数并设置它的平移和旋转速度。performBehavior() 执行的时间很短,所以不能发出 “前进一米” 这样的命令。为了解决这个限制,通常必须跟踪机器人的状态。还可以使用计时器变量记录保持当前状态的时钟嘀嗒数。

Simbad API

在本文的练习中,主要使用两个 Simbad API 包:

o

o

o

o

o simbad.sim:这个包中的类代表机器人和它所在的环境。包括: Agent:Agent 就是机器人。 Arch:机器人可以绕过或从下面通过的拱形结构。 Box:可以作为机器人的环境中的障碍物。 CameraSensor:可以从机器人的视角查看机器人的环境。 EnvironmentDescription:代表 “环境”,可以在其中添加机器人和墙或

盒子等对象。

o

o

o

o LampActuator:可以添加到机器人上的灯。 LightSensor:感应光线的强度。 RangeSensorBelt:包含机器人周围的一组距离传感器。 RobotFactory:用这个类在机器人上添加传感器。

沿墙走

沿墙走是一种简单的解迷宫算法,您可能在小时候就学过了。在用这种算法解迷宫时,只需要把左手一直放在左边的墙上(或者把右手一直放在右边的墙上),然后沿着墙走,直到走出迷宫。很容易看出,如果迷宫的边界上有一个入口和一个出口,那么这种算法总是有效的。但是,如果目标在一个孤岛(即迷宫中不与其他部分相连的部分)中,那么这种算法无法找到解决方案,因为它无法 “跳” 到孤岛上。

Pledge 算法

Pledge 算法比沿墙走算法复杂,能够解决更多的迷宫类型,因为它可以在孤岛之间跳跃。Pledge 算法的基本思想是,先选择一个绝对方向(比如东、南、西或北),然后总是尽可能朝这个方向走。我把这个方向称为偏好方向(favored direction)。当遇到墙时,向右转身并采用左手沿墙走方式,直到面向偏好方向而且 转身数的总和为零(顺时针转身是负值,逆时针转身是正值)为止。此时,继续沿偏好方向向前走。转身数的总和必须是零,这是为了避免陷入某些环路,比如大写字母 G 形状的环路(在纸上试着走一下这个形状,就会明白我的意思)。

回页首

Algernon:一个解迷宫机器人

现在该让您的朋友大吃一惊了,我们来构建一个解迷宫机器人,它的名字是 Algernon。 设计机器人

为了实现沿墙走或 Pledge 算法,需要知道机器人什么时候遇到交叉路口,以及在遇到交叉路口时应该走哪个方向。

有多种实现这一目标的方法,但是我们采用的方法是在机器人的左边安装一个声纳传感器。当左边出现通道时,这个传感器会发出警报。为了了解机器人正在走的通道什么时候到头了(即,机器人遇到了墙),在机器人的前面添加一个接触传感器。 实现沿墙走算法

我们使用 algernon.subsumption 包编写 Algernon(下载 源代码)。Algernon 是一个非常简单的机器人,可以按照简单的 “过程式” 方式编写它。但是,即使对于这么简单的机器人,使用包容编程也会使代码更加清晰,更模块化,更容易理解。

为了简化算法实现,假设墙的转弯都是直角的。所以,机器人的所有转身都是 90 度左转或 90 度右转。

如果分析一下(左手)沿墙走算法,就会发现它可以分解成四个行为:

Branwyn 的 Absolute Beginner's Guide to Building Robots(参见 ),就可以用 BEAM 工具箱构建出您的第一个机器人。还可以购买并使用 Roomba。

在编写机器人并查看其他人的机器人代码之后,我很快就发现了一个令人吃惊的情况:只需很少的代码,就能够让机器人做许多事情(但是,为了让这些代码精确地实现目标,可能需要做许多分析和实验)。使用 LEGO Mindstorms 工具箱,只需半天时间,就能够构建一个简单的机器人。

对机器人学感兴趣的爱好者可以通过许多渠道提高技能,比如机器人图书、机器人竞赛、机器人视频资料和当地的机器人俱乐部。


相关内容

  • 家庭服务机器人
  • 机器人技术基础 论 文 成 员: 家庭服务机器人 摘要 21世纪机器人将成为人类密切的伙伴,成为人类生活不可缺少的一部分,随着服务机器人技术不断发展和开发成本的不断下降,服务机器人将会走进千家万户,将成为人们生活.工作和学习上的好帮手,家家都将拥有机器人.而家庭服务机器人作为先进制造业自动化领域的一 ...

  • 基于单片机的智能循迹小车(文献综述)(4)
  • 基于MCS-51单片机智能小车控制器设计与实现 电子技术.计算机技术和制造技术的飞速发展,数码相机.DVD.洗衣机.汽车等消费类产品越来越呈现光机电一体化.智能化.小型化等趋势.各种智能化小车在市场玩具中也占一个很大的比例.根据美国玩具协会的调查统计,近年来全球玩具销量增幅与全球平均GDP增幅大致相 ...

  • 智能循迹避障小车毕业论文
  • 智能循迹避障小车 摘 要:本设计是一种基于单片机控制的简易自动寻迹小车系统,包括小车系统构成软硬件设计方法.小车以STC89C52单片机为控制核心, 用L298N 驱动小车的两个直流电动机,用单片机产生PWM 波,控制小车速度.利用红外对管对路面黑色轨迹和障碍物进行检测, 并将路面检测信号反馈给单片 ...

  • 机器人教学WORD版
  • 乐高公司:乐高玩具公司总部位于丹麦Billund, 是一家家族式私有企业.在提供模拟儿童的创造力.想象力和学习能力的高品质产品和体验方面,它是全球的佼佼者,其产品主要通过游戏性的活动来鼓励游戏者动手.动脑创作,激发他们的兴趣,并促进团结和共同思考. 公司全面奉行的座右铭:"锐意进取,只求最 ...

  • 了解机器人及其工作原理
  • 了解机器人及其工作原理 一.教学目标 知识目标:了解机器人的概念.产生.发展.种类与应用. 技能目标:熟练利用网络查找信息和处理信息. 情感目标:培养学生对机器人的兴趣,培养学生关心科技.热爱科学.勇于探索的精神. 二.重点难点 教学重点:机器人的概念及应用 难点分析:机器人的概念 三.教学过程: ...

  • 毕业设计题目3
  • 题 目: 学 院: 专 业:姓 名:完成日期: 辽 宁 大 学 毕业论文(设计)记录表 序 言······································································································· ...

  • 梦想工场智能玩具创业计划书
  • 梦想工场智能玩具公司 创业计划书 姓名:陈静 班级:12级地本二班 学号:1209140209 目录 1执行总结 ............................................... 4 1.1公司 1.2市场 1.3投资与财务 1.4组织与人力资源 2项目背景 ..... ...

  • 智能玩具2017年的发展趋势如何?
  • 官方网站:http://www.hayidai.com/ 智能玩具2017年的发展趋势如何? 2017年,随着智能时代的到来,我们的生活开始被智能覆盖,就连小孩子的玩具,都走上了智能的潮流!然而,随着越来越多智能玩具的涌现,智能玩具潮流趋势越发明显: 1.进口玩具声势不减 据中外玩具网数字显示,20 ...

  • 换种方法陪孩子
  • 别让你的孩子落伍了 很多人都把机器人教育独立在学科之外,其实在日本.美国等国家,信息技术课与课外科技活动开设了有关机器人的课程内容,很多学校是将机器人设置为校本课程,作为学科课程教育开展课时教育的.有专家认为,机器人是一门科学和一种现代社会成员应该掌握的文化,在各级各类教育中,以专门课程或学科渗透( ...