高级机器人学书籍
这本维基教科书主要是在 2012 年左右撰写的,可能有些过时,但核心概念应该仍然适用。 |
在当今世界,用于机器人的技术不断发展,变得越来越好。在过去,机器人仅仅是一个梦想,一个关于未来科技的“假设”。每一天,都有新的进展让那个梦想离现实越来越近。人类不断寻求突破,他们不愿受限于自身局限,始终拒绝服从界限的束缚。如果有人告诉一个人他或她不能做某事,那么他或她就会努力超越他人的认知,证明他们认为不可能的事情是可以做到的。有了飞机、直升机和其他空中飞行器,人类摆脱了局限于地面的束缚。有了火箭飞船,人类证明了他们甚至可以逃脱地球的束缚,完全离开地球,到达一个可以俯瞰家园世界的的高度,实现了极少数人才能做到的事情。这种科技的进步推动着人们想要创造更多东西的渴望,因为如果我们能够实现太空旅行,我们就能做更多的事情。
如今,世界上已经存在几种机器人;有一些用于清洁,有一些可以跳舞,还有一些可以像盔甲一样附着在人身上。Roomba 是一款小巧的圆形机器人,旨在像吸尘器一样清洁房屋地板。这款机器人由 iRobot 公司制造,旨在自动在房屋周围移动,吸走地板和地毯上的灰尘和污垢,包括边缘和角落。它还被设计成不会缠绕在椅子腿或桌子上。还有一些机器人,比如丰田吹小号的机器人,可以模仿人类嘴唇的运动,达到用真正的乐器(比如小号)演奏歌曲的程度。
随着每一天的进步,机器人技术的未来正在朝着建造具有完整人类般骨骼和肌肉系统的类人机器人方向发展。科学家们还在研究利用神经网络建造机器人的方法,这些神经网络模拟了人类的神经系统。这使机器人能够拥有一个“大脑”,让它们能够在执行任务的过程中学习。例如,如果一个机器人撞到桌子,由于它的神经网络,机器人就会知道不要再往那个方向移动,以避免再次撞到桌子。这是科学家们试图在仿人机器人设计中实现的目标,但这被证明是相当困难的。一个问题是试图让仿人机器人像人类一样用双腿行走,因为腿部机器人的移动难度比轮式机器人大,它们必须“学会”保持平衡。随着科技飞速发展,科学家们很快就会找到一种方法,让这些机器人更像我们。
机器人编程包括告诉机器人何时移动、移动到哪里、移动速度以及许多其他事情的编码命令。一个书面程序由控制机器人动作的指令组成,它提供有关必要任务的信息。用户程序由一系列描述所需行为的指令组成。编程机器人可能是一个复杂而具有挑战性的过程。由于人们现在试图创造能够节省资金并更好地促进其他人简化某些工作的机器人,因此创建用户友好且不具挑战性的编程语言至关重要。
机器人编程用于操纵现实世界中的物理对象,同时在模型中表示一些不一定属于现实世界的数据。基于某些模型的命令导致机器人改变现实世界的条件以及世界模型本身。机器人编程中最重要的概念之一是让机器人以与人类相同的方式移动;机器人应该能够向所有方向移动。一个高级的机器人编程概念是使用传感器,例如触摸传感器、超声波传感器或光线传感器,使机器人能够与周围的现实世界互动。由于这些原因,如今许多机器人都有包含内置程序的监控器,以与机器人控制系统和其他应用程序通信。监控器可以读取特定传感器,然后修改机器人的动作,例如让机器人沿着特定路径移动或避开朝机器人走来的行人。
在嵌入式系统中,操作系统通常被称为固件,或者存储在非易失性闪存中的嵌入式系统的软件,它提供对嵌入式系统硬件的控制。这允许用户编写一个程序,该程序可以作为紧凑文件(称为字节码)直接编译到机器人上,适合执行。字节码不能直接执行;相反,操作系统包含一个应用程序,它查看每个字节码并将其转换为相应的函数。基于运动和传感器,机器人现在还可以使用认知来规划其下一步行动。根据程序的编码,机器人可以“看到”接下来会发生什么,并根据机器人周围发生的事情执行一行或多行代码。如果机器人感觉到它刚刚撞到椅子,假设,机器人就可以计划后退并绕着椅子走。这些概念使机器人能够像人类一样在现实世界中行动。
机器人控制是研究如何控制机器人的学科。机器人控制是指机器人感知和采取行动的方式,以及传感器和其他机器人部件如何高效地协同工作。机器人有很多程序控制,几乎有无限种可能性,但在实际控制方面,它们受到特定数量的界限限制。如今,控制机器人的四种基本方法是: deliberative control、reactive control、hybrid control 和 behavior-based control。对于 deliberative control,机器人先认真思考,然后行动。对于 reactive control,机器人不思考,而是直接反应。对于 hybrid control,机器人独立思考和行动,同时进行。最后,对于 behavior-based control,机器人思考的方式就是它行动的方式。
解释这些要点是因为每个机器人都有自己的优缺点,因此没有一种控制机器人的方法是最好的。在控制机器人方面,存在一些权衡。思考可能很慢,但反应必须很快。思考可以让人有先见之明和提前计划的优势,从而避免任何不良行为。然而,思考也有一个缺点;思考太久可能是危险的,因为思考会让机器人忽略周围环境,从而导致危险情况,例如被撞到或从悬崖上掉下来。
正是由于这些权衡,机器人彼此的行为不同。有些机器人的设计是少思考少行动,而有些机器人则根本不思考。在决定机器人的用途以及它将放置的环境时,会考虑这些类型的决定。如果机器人的目的是快速反应和移动,那么几乎没有时间思考,因此,它不会被编程为以这种方式思考。两个例子是需要快速反应和移动的机器人:足球机器人和汽车机器人。足球机器人必须快速移动和反应,因为它必须能够在环境中快速移动,以便获得球并尝试进球。汽车机器人必须快速移动和反应,因为它需要能够以一定的速度移动,并迅速反应,以免撞到任何进入其路径的东西。
另一方面,那些处于环境不断变化的机器人有时间和机会思考并提前计划。这类机器人的例子包括下棋机器人、能够建造物体的机器人以及负责看守仓库的机器人。例如,下棋机器人需要能够思考并提前计划,因为棋盘游戏是一场智力游戏,如果快速思考和反应而不考虑所有可能的细节,就会导致机器人快速失败。
由于机器人旨在在现实世界中工作,正如人类需要身体和心脏才能运作一样,机器人也需要某种硬件作为它们的“身体”。机器人的硬件是指任何用于帮助机器人以特定方式操作的物理部件。构建机器人所需的硬件多种多样,取决于你要构建哪种类型的机器人。如果机器人是自动化的工厂工人,硬件可能涉及各种复杂的重型工业工具。另一方面,如果要构建人形机器人或太空探测机器人,硬件可以是肌肉丝或敏感镜头等。
机器人使用许多不同类型的硬件来使机器人能够以特定方式运作。硬件是使机器人能够以特定方式移动的部件。机器人使用电机来移动。有些机器人可能只有一个电机,只能以特定速度向前和向后移动。具有多个电机的机器人可以额外实现转弯。通过使一个电机比另一个电机移动得更快,机器人可以在慢速电机方向转弯。程序员可以对电机进行编程,使其以不同的速度移动,这使机器人能够完成更多工作。
机器人还具有传动机构,包括齿轮、链条、滑轮、皮带和齿轮箱。齿轮和链条的主要目的是将旋转运动从一个地方传递到另一个地方;在此过程中,还可以改变运动的速度或方向。这些传动机构可以帮助机器人将压力从一个地方转移到另一个地方,以保持机器人的重量均匀。它们还可以帮助电机平稳移动。虽然滑轮和皮带也具有与齿轮和链条相同的功能,但滑轮的形状像轮子,边缘有槽。
为了构建更智能的机器人,还可以安装传感器来赋予机器人更多生命力。例如,机器人可以安装触碰传感器,在编程后,当机器人撞到物体时,可以后退。机器人还可以使用声音传感器播放声音,以及听到声音并做出适当的反应。光传感器允许机器人在进入具有特定光照强度的空间时执行某些操作或任务。一个简单的例子是编程机器人沿着一条线移动;通过感知线的黑暗程度,机器人可以沿着线移动而不会偏离路径。机器人还可以使用超声波传感器来感知它前面的物体或人,而不必实际接触或撞击它。这对于特别脆弱的机器人可能很有用;能够避免接触物体可以减轻构建中敏感区域的压力。
机器人还需要某种电源。在乐高 Mindstorms NXT 机器人中,电源就是积木。它包含电池和所有端口,以便插入电机和传感器。如果没有积木,机器人将无法移动或以任何方式运行。积木是机器人能量的主要来源。
机器人也可以与摄像头一起使用。将摄像头或麦克风连接到机器人可以让用户移动机器人并看到它正在去的地方,或者听到周围环境中发生的事情。这些额外的硬件包可以让机器人变得更智能和更有创意。
-
水生机器人。
-
小型漫游者风格机器人。
-
军用机器人。
-
玫瑰修剪机器人。
-
人形机器人。
-
机场的资讯机器人。
机器人控制的数学
[edit | edit source]机器人控制的数学是在机器人积木中进行的,使机器人能够移动和运作。谈论机器人控制的数学时,通常使用的一个术语是运动学。运动学是指描述物体和系统运动的力学,当它与机器人相关时,就是使机器人能够移动的部件。运动学是指通过机械关节连接在一起的物体系统,该系统允许物体进行运动。一个例子是起重机;运动学允许起重机上下移动,并打开和关闭以拾取或抓住物体。
事实上,这是机器人控制的数学,这意味着其中涉及科学原理,解释了机器人如何使用其内部的关节或力学进行移动,以及什么程序或代码赋予其移动能力。在运动学中,点的位移是运动的关键。为了确定点的位移,首先需要确定另外三件事:原点,也称为参考点;距离,即机器人与原点的距离;以及参考点方向。
在机器人数学中,还有正运动学和逆运动学。首先,正运动学也称为“直接运动学”,在正运动学中,唯一给定的信息是每个关节的角度和每个连杆的长度。需要计算的是机器人工作空间中任何点的位移。对于逆运动学,则相反;给定每个关节的长度和工作空间中点的位移,需要计算每个关节的角度。
机器人编程语言
[edit | edit source]为了对机器人进行编程,可以使用许多语言。这取决于程序员的知识。许多不同的机器人套件或模型可能最适合某些编程语言,具体取决于程序的难度和机器人的构建。取决于用户是否熟悉 C、C++、Java 或其他语言,某些程序可能更容易上手。
ROBOTC 是一种基于 C 语言的程序,它非常兼容,尤其是与 NXT 机器人兼容。它由卡内基梅隆大学的机器人学院创建。ROBOTC 非常容易学习,可以用于简单的程序,也可以用于更复杂的程序。该编程语言包含一个调试器,允许程序员查看程序错误所在的位置;这使得编辑变得更容易。ROBOTC 允许程序员指定电机、计时器、传感器和变量。
与 ROBOTC 相似,Not Exactly C 或 NXC 也是一种基于 C 的程序。NXC 程序使用 Bricx 开发环境,该环境最初是为乐高的早期 RCX 机器人产品开发的,并且经过增强以支持 NXT。NXC 使用与 NXT-G 相同的固件,NXT-G 是乐高 Mindstorms 机器人套件使用的基本图形用户界面。这使得程序员可以使用图形环境和文本环境,而无需更改加载到机器人积木中的固件。用户可以同时在同一个积木中存储 NXT-G 和 NXC 程序。NXC 允许使用整数变量;但是,浮点变量会导致问题。
另一种与 NXT 兼容的编程语言是 ROBOLAB,它更像是程序的图形表示,而不是文本行。ROBOLAB 在塔夫茨大学开发,最初用于第一代乐高 Mindstorms RCX 微处理器“积木”。与 NXC 语言一样,它经过了广泛的改进和修改,可以与 RCX 和第二代 NXT 一起使用。该程序通常只在用户熟悉 ROBOLAB 平台的情况下有用。如果程序员不熟悉它的工作原理,则可以使用其他更容易的语言。
Lejos 是一种基于 Java 的程序,因此,如果用户更熟悉 Java 而不是 C,Lejos 是与机器人一起使用的很好语言。就像任何其他编程语言一样,Lejos 程序是在 PC 上编写和编译的。然后,编译后的程序被传输到 NXT 上执行。
Pblua 也是一种用于机器人的编程语言。Lua 是一种相对较新的基于文本的语言。它允许用户几乎完成与 ROBOTC 或 NXC 相同的操作;它只是用户可以学习的另一种编程语言,以扩展其机器人编程语言知识。
避障
[edit | edit source]避障是一种机器人训练,它允许机器人根据其感官提供的資訊移动。当情况不可预测且行为未知,或场景处于动态变化状态时,这些方法被用作一种不同且自然的替代方案。在这些类型的情况下,机器人的周围环境可能一直在变化,因此,传感器接收到的信息可用于发现已进行的变化,以便机器人可以继续适应和移动。
在该主题上进行的一些研究已经确定了这种训练的两个主要问题。其中一个是将两辆车置于有问题的事件中;在那里,它表明所使用的技术在适应当前情况方面能力有限。另一个造成重大问题的原因是机器人理解车辆特性在避障模式中的作用。这些特性包括动力学、形状和运动学。
大多数与避障相关的技术都没有考虑车辆的运动学和形状约束。正在研究车辆的人可能假设车辆具有无限的方向能力,并在发现车辆无法执行他们认为它可以做的一切时感到失望。一个贡献是能够将形状和运动学一起考虑的框架。这种避障过程是通过从避障方法中抽象约束来完成的。
任务规划和导航
[edit | edit source]任务规划是指通过执行某些较小的任务来实现最终目标,这需要学习机器人高效和正确地执行基本操作(如导航)的空间要求。由于现实工作环境中对机器人环境的要求,机器人任务规划应高效执行。
为了让机器人能够适当地计划任务,移动机器人通常完全依赖于空间信息。它们可以通过传感器同步来获取和理解外部环境的信息,并利用简单的领域知识,比如物体和地点的标签。一些机器人可能存储了关于配置空间的信息,以便确定一个合适的路径穿越配置空间,这样它们就可以绕过障碍物。一些机器人依赖于传感器或机器人代码中的程序规则来选择移动时的合适路线。还有一些神经网络系统允许机器人通过实验来学习。如果机器人撞到一个物体,迫使它转弯,机器人将从此知道,为了避免这个特定的障碍物,它不应该再走那条路了。此外,还有一些算法可以推导出机器人应该采取的路径,以最大化与特定障碍物的距离。
为了让机器人成功地执行任务计划和导航,机器人必须在其所有部分之间,例如传感器,建立有组织的通信。机器人的每个组件都会显著影响性能。机器人需要能够在没有碰撞的情况下运行,并知道哪些安全条件是必要的;这包括确保机器人不会遇到不安全的温度或灯光,例如。
为了让机器人安全导航,机器人必须意识到自己相对于某个位置。能够避免撞到有害物体或从楼梯上掉下来对于机器人成功完成任务计划至关重要。机器人的程序应该在代码中包含这一点,无论是使用传感器来感知世界还是使用神经网络。根据这些信息,机器人可以根据其速度或在不同方向上的转弯来进行相应的计划。机器人还应该能够在其任务期间创造连续的运动,以便顺利地实现目标。
机器人视觉引导领域是一个发展非常迅速的领域。凭借高级技术的优势,它带来了节省、可靠性、生产力和安全性。机器人视觉涉及识别和导航。视觉应用通常用于找到零件并将其定位以进行检查或机器人操作,然后再执行其他应用。有时,单个机器人站可以通过视觉引导机器人来取代多个机械工具。
当机器人需要视觉能力时,它需要将校准、温度、软件、摄像头和算法结合起来才能工作。机器人视觉系统校准取决于应用。这些应用范围从简单的引导应用到需要来自多个传感器数据的更复杂应用。算法始终在不断改进,允许进行更高水平和更复杂的检测。现在有些机器人具有碰撞检测功能,该功能可以在机器人即将撞到物体时通知系统。这种能力允许机器人与其他机器人一起在有障碍物的地方工作,而不必担心发生重大碰撞。当机器人检测到其路径上的其他物体限制其运动时,它会停止移动一段时间。
机器人视觉简化了流程,使其更加直接,从而降低了成本。当使用机器人视觉时,夹具和硬工具都被消除了。可以识别产品,并且可以执行应用而无需固定。机械和人工部门都有节省。由于机器人现在可以自行处理零件的装载,因此不需要人工。
在决定合适的机器人引导系统类型时,可以采取一些步骤。应该与集成商合作,并牢记一些事项。必须确保机器人视觉能够连接到机器人系统及其应用。如果出现断开连接,则可能会损坏机器人或产品,并会导致质量和生产损失。还必须确保机器人所处的环境是受控的,以便机器人视觉保持清醒和敏锐。最后,必须考虑环境中的所有因素,如照明、空气中的化学物质和颜色变化,因为它们会影响机器人在视觉中看到的内容。
视觉系统用于机器人技术中,以组织程序来处理图像并识别物体。为了使这能够正常工作并允许机器人系统在环境中达到所需的水平,视觉系统应通过改变和校正管理系统多个处理阶段的限制来适应众多工作环境。基于知识的视觉系统必须决定将哪些视觉模块连接在一起,并且它必须是图像采集的电源。用于此任务的基于知识的视觉系统可以分析明确提供的知识。
对于基于知识的视觉系统,必须向机器人提供物体的参数,例如特定物体的曲线或角。根据这些信息,机器人可以生成某些控制器。基于机器人提供的信息以及它自己计算的信息,基于知识的视觉系统可以创建一个显示物体的模型,该模型可以由用户修改。
基于知识的视觉系统负责调整它遇到的参数,通过更改摄像头的快门速度或可能调整灯光设置来获取图像,并观察系统的配置以在必要时进行更改。基于知识的视觉系统可能会遇到不同类型的输入数据,因此它必须能够相应地调整以适应运行时可能遇到的更改。通过其蓝图,基于知识的视觉系统能够识别有关世界周围环境的新信息,并相应地改变其行为。
但是,基于知识的视觉系统可能使用起来很昂贵。必须收集知识(如图像)可能既费钱又费时。基于知识的视觉系统仍然应该进行研究和更改以在动态的世界环境中更好地工作。
人工智能是机器人领域中最令人兴奋的领域之一。在机器人领域的争议中,人工智能总是位居榜首。虽然每个人都同意机器人有能力在装配线上工作,但并非所有人都同意机器人能够独立思考。人工智能与机器人的定义一样难。终极人工智能将是一台能够像人类一样思考的机器;它将是人类思维过程的再现。凭借这些能力,机器人将能够学习几乎所有东西;它将能够创造自己的想法,学习如何使用人类语言,并进行推理。目前,机器人领域还没有达到这种人工智能水平,但它在有限的人工智能领域取得了进展。
计算机已经能够在一定程度上解决问题,因为人工智能解决问题的基本理念非常简单。复杂的在于执行。首先,计算机或机器人必须通过人类告诉它或通过它自己的传感器来收集情况的事实。然后,计算机将信息与存储的数据进行比较,然后决定信息意味着什么。然后,计算机会运行它可以采取的不同类型的动作,并根据它收集的信息决定哪个动作最合适。它只能够解决给定的问题,没有任何分析能力。
人工智能的真正挑战在于试图理解自然智能是如何运作的。由于科学家没有一个可靠的模型可以借鉴,因此开发人工智能不像建造人工心脏。科学家知道大脑包含数十亿个神经元,并且不同神经元之间的电连接让人们能够思考和学习。他们不知道的是,这些连接如何加起来产生更高的推理能力,甚至低级运算,正是这种复杂的电路难以理解。