|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Darrick Addison 是一个在数据库、网络、用户界面和嵌入式系统方面具有丰富经验的开发人员,他介绍了机器人技术领域和与机器人系统有关的问题。他谈到了机械设计、传感系统、电子控制和软件。他还讨论了微控制器系统,包括串行接口连接和存储映象接口连接,并谈到了某些可供选择的开放源代码软件。
“机器人(Robot)”一词起源于捷克语,意为强迫劳动力或奴隶。这个词是由剧作家 Karel Capek 引入的,他虚构创作的机器人很象 Frankenstein 博士的怪物-由化学和生物学方法而不是机械方法创造的生物。但现在流行文化中的机械机器人和这些虚构的生物创作物没多大区别。基本上,一个机器人包括:
* 机械设备,如可以与周围环境进行交互的车轮平台、手臂或其它构造。
* 设备上或周围的传感器,可以感知周围环境并向设备提供有用的反馈。
* 根据设备当前的情况处理传感输入,并按照情况指示系统执行相应动作的系统。
在制造业领域,机器人的开发集中在执行制造过程的工程机器人手臂上。在航天工业中,机器人技术集中在高度专业的一种行星漫步者上。不同于一台高度自动化的制造业设备,行星漫步者在月亮黑暗的那一面工作- 没有无线电通讯 -可能碰到意外的情况。至少,一个行星漫步者必须具备某种传感输入源、某种解释该输入的方法和修改它的行动以响应改变着的世界的方法。此外,对感知和适应一个部分未知的环境的需求需要智能(换句话说就是人工智能)。
从军事科技和空间探索到健康产业和商业,使用机器人的优势已经被认识到了这种程度- 它们正在成为我们集体经验和日常生活的一部分。
它们能把我们从危险和枯燥中解脱出来:
* 安全:机器人技术已经被开发用于处理核能和放射性化学制品的很多不同用途,包括核武器、电厂、环境清洁和某些药品的处理。
* 不愉快的事:机器人执行很多乏味、不愉快但必需的任务,如焊接和看门工作。
* 重复和精度:装配线工作已经成为机器人技术工业的一个中流砥柱。机器人被广泛地用于制造业,而且,在强调最小维护需求的空间探索中,使用机器人更具有吸引力。
<strong>机械平台 -硬件基础</strong>
一个机器人包括两个主要部分:机器人的身体和某种形式的人工智能(artificial intelligence,AI)系统。很多不同的身体部分都可以叫做机器人。关节手臂被用于焊接和上漆;起重机和传送带系统在工厂中运送零件;巨型机器人机器搬运矿井深处的泥土。一般说来,机器人最有趣的一个方面是它们的行为,这需要一种形式的智能。机器人最简单的行为是移动。典型地,轮子被作为让机器人从一点移动到下一点的基本机械装置。还需要某种力(如电力)让轮子在命令时转动。
<strong>电动机</strong>
很多种电动机向机器人提供能源,让它们用不同的编程动作搬运材料、零件、工具或专用设备。电动机的效率等级表明多少消耗的电量转化成机械能。让我们看看现代机器人技术中目前被使用的一些机械设备。
直流电机: 永久磁铁,直流(Permanent-magnet,direct-current,PMDC)电机只需要两根导线,使用固定磁铁、电磁铁(定子和转子)和开关。这些组成一个换向器来通过旋转的磁场产生运动。
交流电机 交流电机在输入导线循环能源,连续地运动磁场。直流电机和交流电机在收到一个信号时会全速运转。
步进电机 步进电机就像没有电刷的直流或交流电机。它通过按顺序(步进地)向电动机中不同的磁铁提供能源使其运转。步进电机设计的目的是更好的控制,它不会只在命令时旋转,还能够以任意的“步/每秒”(最高到它的最大速度)的速度旋转。
伺服电动机 伺服电动机是闭合线圈设备。在收到信号时,它可以自我调整直到与该信号匹配。伺服电动机用于无线电控制的飞机和汽车。它是有传动装置和反馈控制系统的简单的直流电动机。
<strong>驱动机制</strong>
齿轮和链条: 齿轮和链条是机械平台,它提供了一种向另一个地方传送转动动作的强大而精确的途径(可能在传送的时候改变了动作)。两个齿轮之间速度的改变取决于每个齿轮上齿的数目。当加电的齿轮旋转一周时,它根据齿轮上的齿数来拉动链条。
滑轮和皮带: 滑轮和皮带是机器人所使用的两种另外的机械平台,工作的方式与齿轮和链条一样。滑轮是轮缘有凹槽的轮子,皮带是可以放进这个凹槽的橡皮圈。
变速箱: 变速箱运转的原理与齿轮和链条一样,不过没有链条。变速箱需要更精密的公差配合,因为不是使用一条又大又松的链条来传送力量,也不用调整错位,齿轮之间直接和对方啮合。变速箱的示例可以在汽车的传动装置、落地大座钟的定时机制和打印机的送纸装置中找到。
<strong>电源</strong>
电源一般通过两种电池提供。一次电池使用过一次就被丢弃;二次电池以一种(通常是)可逆的化学反应工作,可以多次充电。一次电池有较高的容量和较低的自放电率。二次(可充电)电池比一次电池电量小,但可以重复充电,按化学反应和环境的不同可以多达一千次。一般可充电电池第一次使用可以为电器或机器人提供 4 小时连续工作的能源。
理论上机器人可以使用几百种不同类型和形式的电池。电池按化学反应和规格分类,按电压和电量分级。电池的电压由电池的化学反应决定,容量由化学反应和规格两者共同决定。请参阅表 1 了解电池规格。
表 1. 电源
<strong>规格</strong> <strong>NEDA</strong> <strong>IEC</strong> <strong>描述</strong> AAA24ALR03普通规格中最小的AA15ALR6最普遍使用的小电池,一般用 2 节或 4 节C14ALR14手电筒小电池,可用于大玩具D13ALR20最大的普通电池9v1604A6L-R61方形,上有可用夹子夹住的的连接器
机器人平台靠两组独立的电池运行,它们共享一根地线。这样,电动机可以用一组电池,而电子设备可以用另一组电池。电子设备和电动机还可以在不同的电压下工作。
<strong>电子控制</strong>
机器人中有两个主要的硬件平台。非调节电压、电力和反电动势峰的机械平台以及干净电源和 5 伏信号的电子平台。这两个平台需要顺序桥接,目的是让数字逻辑控制机械系统。经典的组件是桥式继电器。一个控制信号在继电器的线圈产生磁场,物理地闭合开关。例如 MOSFET,它是高效率的硅开关,有很多种规格,象晶体管一样可以作为固态继电器控制机械系统。
另一方面,更大的机器人可能需要 PMDC 电动机,这样 MOSFET 的“接通”电阻 Rd(on)会导致芯片热量的极大散发,从而显著地降低芯片的发热温度。MOSFET 中结点的温度、MOSFET 封装和散热片的传导系数是 PMDC 电动机的其它重要的特征。
晶体管广义地分为两种:双极结晶体管(bipolar junction transistors,BJT)和场效应晶体管(field-effect transistors,FET)。在 BJT 器件中,基极小的电流调节发射极和接收极之间大得多的电流。在 FET 器件中,栅极电场的存在会调节源极和漏极之间的电流。
<strong>传感器</strong>
机器人根据瞬间测量作出反应,这需要不同种类的传感器。
多数系统中对时间的感知是通过电路和编程中内建的。要想在实际中让这个具有生产性,机器人必须有感知硬件和软件,还要能快速地更新。不管传感器硬件或软件如何,感知和传感器可以被当作与外部事件交互(换句话说就是外部世界)。传感器测量世界的某个属性。变换器(transducer)一词经常与传感器一词交替使用。交换器是传感器的机制或元素,它将测量到的能源转换成另一种形式的能源。传感器接收能源并传送一个信号到显示器或计算机。传感器使用变换器将输入的信号(声音、光线、压力、温度等)改变成机器人可以使用的模拟或数字形式。
逻辑传感器: 传感器的一个强大的抽象是逻辑传感器,它是提供一个对象的传感单元或模块。它包括物理传感器的信号处理和提取感知所需的软件处理。
本体感受传感器: 本体感受是航位推测法,机器人可以测量来自本身的信号。
接近传感器: 接近传感器测量环境中传感器和对象之间相对的距离。
红外线(IR)传感器: 另一种活动的接近传感器是红外线传感器。它发出接近红外线的能量并测量有没有相当多的红外线返回。
碰撞和触角传感器: 另一类常见的机器人感知是触觉的,或基于触摸的,用碰撞和触角来完成。触角和触须由牢固的电线构成。碰撞传感器通常是机器人上一个突出的环,包括两层。
<strong>微控制器系统</strong>
微控制器(Microcontrollers,MCU)是机器人内部使用的智能电子设备。它提供的功能类似于个人电脑内部的微处理器(中央处理单元或 CPU)所执行的功能。MCU 速度较慢,使用的内存比 CPU 少,设计目的是现实世界的控制问题。CPU 和 MCU 之间的一个主要区别是运行所需的外部组件的数目。MCU 经常可以不需要外部部件就能运行,一般只需要一个外部晶体或振荡器。
微控制器有四个基本方面:速度、容量、存储器和其它。速度以时钟周期指定,通常以每秒百万个周期(兆赫兹(Megahertz,MHz)计量。周期的使用根据不同的 MCU 而不同,这影响到处理器的可用速度。容量指定 MCU 可以一步处理的信息的字节数 - 它自然的信息簇。MCU 有 4 位、8 位、16 位和 32 位的,8 位的 MCU 是最常见的容量。MCU 在大多数 ROM 中的计数单位是千字节(KB),在 RAM 中是字节。很多 MCU 使用 Harvard 体系,程序保存在内存的一段中(通常是内部的或外部的 SRAM)。然后这就能够让处理器更有效地访问独立的内存。
微控制器的第四个方面就作为“其它”来讲了,它包括诸如专用的输入设备的特性,该设备经常(但不总是)有一个小的 LED 或 LCD 显示作为输出。微控制器还从设备获取输入并通过向设备中不同组件发送信号对其控制。程序计数器也通过微控制器掌握要执行哪条命令。
R/C 伺服电动机: 用于无线电控制模型(汽车、飞机等)的伺服电动机在很多种较小的机器人中很有用,因为它紧凑而且相当便宜。伺服电动机本身有内建的电动机、变速箱、位置反馈机制和控制电路。标准的无线电控制伺服电动机在航模、车模、船模中使用,可用来制作手臂、腿和其它来回移动而不是转圈的机械附属肢体。
气体力学:气体力学是在大量商业机器人中使用的流体动力的名称。气体力学还用于多种仿生系统,这些系统属于流体动力的范畴。流体动力的一个更广为人知的分支是水力学。请访问气体力学 Web 站点(请参阅本文后面部分的 参考资料)以了解补充信息。
<strong>开放源代码机器人控制软件</strong>
开放机器人控制软件(Open RObot COntrol Software,OROCOS)是为了开始开放源代码机器人控制软件项目所作的努力。我们开展了广泛的讨论,涉及的问题有可以重用其它项目的哪些经验代码和工具,应该在项目中集成哪些开放标准,还有什么样的组织结构最适合这个项目。该项目的目的是按以下要求开发机器人控制软件,如下所示:
* 在开放源代码和/或自由软件的许可下
* 尽量模块化
* 质量最好(从技术和软件工程两种角度)
* 独立于(但兼容)商业机器人生产厂商
* 用于各类机器人设备和计算机平台
* 为所有编程语言本地化
* 以运动学、动力学、计划、传感、控制和硬件接口等方面的可配置的软件组件为特点。
项目的目的不只是要复制现存的商业机器人控制器或机器人模拟/编程软件包。OROCOS 项目希望开发可共享的库、独立组件(有时候被称为软件代理程序)和一个可以消除和控制所有分布式机器人系统的可配置的运行时环境。这类项目在以下几种情况有用处:
* 重用代码
* 作为一个独立的子系统使用
* 复制其组织结构
* 从管理一个开放源代码项目的经验中学习
* 设计和开发可扩展和可重用的软件
<strong>开放源代码矩阵库</strong>
下面是满足上面提到的要求的开放源代码矩阵库。我们推荐 Octave,因为它是 GPL 许可的,而且实现了所有需要的功能。
GNU Octave: GNU Octave 是一种高级语言,主要用于数字运算。它提供了一种方便的命令行界面,可以数字化地解决线性和非线性问题,也可以使用一种与 Matlab 基本上兼容的语言执行其它数字实验。通过 Octave 自己的语言编写的用户定义函数或使用 C++、C、Fortran 或其它语言编写的动态载入的模块,它很容易扩展和定制。
GNU Octave 是免费分发的软件。您可以重新分发它,或是修改它,但要符合自由软件基金(Free Software Foundation)颁布的 GNU 通用公共许可(General Public License,GPL)条款。关于 GNU Octave 更详细的信息可以在访问 Octave Web 站点时找到(请参阅 参考资料)。
GSL(GNU 科学库) GSL 是为数字运算开发一个现代的广泛 ANSI C 语言库正在进行的努力。GNU 科学库(GNU ScientificLibrary,GSL)收集了数字运算的例程。这些例程由 GSL 小组用 ANSI C 语言从头编写,旨在为 C 语言程序员提供一种现代应用程序编程接口(Applications Programming Interface,API),同时允许包装器为很高级的语言编写。
GSL 是自由软件。它遵照 GNU 通用公共许可分发。请访问 Red Hat Web 站点(请参阅 参考资料)以了解更多关于 GSL 的信息。
<strong>实时内核</strong>
实时 Linux(Real-Time Linux,RTLinux) RTLinux(TM)是一个可靠的实时操作系统,处理对时间关键的任务,并将 Linux 作为最低优先权执行线程运行。在 RTLinux 中,内核与标准 Linux 共享一个或更多的处理器。这使系统能够运行执行数据采集的、系统控制和机器人技术的精确计时的应用程序,同时作为标准的 Linux 工作站提供服务。在 ftp.rtlinux.com(请参阅 参考资料)Web 站点上可以获得版本 3.0(最终版本)。
RTLinux.org 是开放源代码用户和开发人员社区的非商业 RTLinux 站点。其姐妹站点 RTLinux.com(请参阅 参考资料)讨论商业支持和开发。
eCos(嵌入式可配置操作系统): eCos 是一个深度嵌入应用程序的开放源代码实时操作系统。它符合 Linux 不能达到的嵌入空间需求。在考虑应用程序和服务需求之前,Linux 目前内核最小约 500 千字节,占用 1.5 MB 内存。eCos 开放源代码项目可以在它的 Web 站点上找到(请参阅 参考资料)。
RTEMS(GPL 许可): RTEMS 是 C、C++ 和 Ada95 的开放源代码实时操作系统和环境。它遵从 GNU 通用公共许可的条款分发。
请访问 RTEMS 站点(请参阅 参考资料)以下载和获取更多关于 RTEMS 的详细信息。
<strong>实用程序和工具</strong>
ROBOOP(一个机器人技术面向对象 C++ 软件包): 本软件包是一个关于机器人模拟的面向对象 C++ 软件包。技术参考和下载在 参考资料中提供。
CORBA: 用于嵌入分布式软件代理的实时通信和对象请求中介程序软件包。每个独立的软件部分通过 IDL(Interface Definition Language,接口定义语言)的方式向 ORB 注册它本身及其功能。请访问其 Web 站点(请参阅 参考资料)以获得 COBRA 技术信息、下载和文档。
TANGO/TACO: 这个软件对控制多设备和多工具的机器人系统也许有用。TANGO 是一个基于 COBRA 的面向对象控制系统。设备服务程序可以用 C++ 或 Java 编写。TACO 是面向对象的,因为它将 所有 (物理的和逻辑的)控制系统中的控制点作为分布式环境中的对象来对待。所有行动都以类来实现。新的类可以以一种分级的方式从现存的类构建,这样可以确保高度的软件重用。类可以用 C++、用 C(使用一种称为 C 中的对象的方法)、用 Python 或用 LabView(使用 G 编程语言)编写。
TACO 设计成可移植的,并能够在许多平台(例如 Linux、Solaris、HP-UX、Windows/NT、Windows/95 和 OS9)上运行。要下载源代码和其它技术文档,请访问其 Web 站点(请参阅 参考资料)。
<strong>控制器</strong>
任务控制体系: 任务控制体系(Task Control Architecture,TCA)为移动机器人简化了任务级控制系统的建立。“任务级别”指的是完成给定的一套目标(任务)的感知、计划和实时控制的集成和协调。TCA 提供了一个通用的控制框架,旨在控制多种机器人。TCA 提供了一种高级的独立于机器的方法,可以在分布式机器之间发送消息(包括在 Lisp 和 C 进程之间)。TCA 提供了控制功能,如任务分解、监控和资源管理,这些对很多移动机器人应用程序来说是很常见的。 参考资料一节提供了任务控制体系的技术参考和下载信息。
EMC(增强的机器控制器): EMC 软件建立在 NIST 实时控制系统(Real time Control System,RCS)方法的基础之上,使用 NIST RCS 库编程。RCS 库使向多种 UNIX 和微软的平台移植变得容易,它向操作系统资源提供了一种中性的应用程序编程接口(application programming interface,API),如共享的内存、信号量和计时器。EMC 软件用 C 和 C++ 编写,而且已经被移植到 PC Linux、Windows NT 和 Sun 的 Solaris 操作系统上。
Darwin2K: Darwin2K 是一个免费的机器人模拟和自动化设计开放源代码工具包。它的特性是众多的模拟功能和一个改良的运算法则,该法则能够自动地综合和优化机器人设计,使其符合任务特定的性能目标。
<strong>语言</strong>
RoboML(机器人标记语言): RoboML 用于与机器人技术相关的数据的标准化表达。其设计的意图是既支持机器人为主的进程之间和接口进程之间的通信语言,也支持人- 机器人接口代理之间的通信语言,并提供了一种人 -机器人接口代理使用的归档数据的格式。
ROSSUM: 一种移动机器人的编程和模拟环境。Rossum 项目试图帮助收集、开发和分发机器人应用程序软件。Rossum 项目希望将类似的协作扩展到机器人软件的开发。
XRCL(可扩展机器人控制语言,Extensible Robot Control Language): XRCL(发音为 zircle)是个相对简单、现代的编程语言和环境,设计成让机器人技术研究人员可以通过共享代码来共享他们的想法。它是一个开放源代码项目,受 GNU Copyleft 的保护。
自动化系统内部控制的开放系统体系(Open System Architecture for Controls within Automation Systems,OSACA): OSACA 是一个合作的欧洲项目,旨在增进机器工具和控制系统生产厂商在世界市场中的竞争性。项目的主要目标是规定独立于生产厂商的开放控制系统的系统体系。
<strong>总结</strong>
机器人技术领域已经创造了很多种具有基本的物理和导航功能的机器人。同时,社会发展的趋势也开始成为将机器人结合到从娱乐到卫生保健的日常生活中。而且,机器人可以将很多人从危险的情况中解脱出来,本质上就是让机器人作为人类的替代品来使用。AI 机器人技术研究人员所研究的很多应用程序已经开始实现这种可能了。另外,机器人还可以用于更普通的工作,如看门工作。然而机器人最初是开发用于肮脏、枯燥和危险的应用程序,现在它们已经被看作是人类的助手了。不管是什么应用程序,随着未来科技发展到一个新的境界,机器人将会需要更多而不是更少的智慧,从而会对我们的社会形成巨大的影响。
参考资料
* Edwin Wise(Howard W. Sams,2000)的 应用机器人技术提供了一个对机器人技术领域的面向项目的介绍。它指导新手迎接建造一个工作的机器人的挑战,并向高级建造者提供新的想法和技术。
* CORBA 是一个实时通讯和嵌入式软件代理的对象请求中间人软件包。
* Darwin2K 是一个免费的机器人模拟和自动化设计开放源代码工具包。
* eCos 是嵌入式可配置操作系统,一个深度嵌入应用程序的开放源代码实时操作系统。
* EMC(增强的机器控制器)软件建立在 NIST 实时控制系统(Real time Control System,RCS)方法的基础之上,使用 NIST RCS 库编程。
* GNU Octave 是一种高级语言,主要用于数字运算。
* GSL(GNU 科学库)是开发一种现代、广泛的 ANSI C 语言库以用于数字运算所作的不间断的努力。
* Robin R. Murphy(Massachusetts Institute of Technology-MIT,2000)的 介绍人工智能机器人技术旨在包含所有为人工智能机器人编程的主题,机器人的应用包括传感、导航、路径计划和对非确定事物的导航。
* Orocos(开放机器人控制介绍)是开始开放源代码机器人控制软件项目的一个努力。该项目的第一阶段(到 2001 年 9 月为止)开发了一个战略性的景象,作出了高级设计决策并制定了库规范的原型。从那时起,Orocos 将受到欧盟的一个授权的部分支持。
* OSACA 是自动化系统内部控制的开放系统体系。
* 气体力学是在很多商业机器人中使用的流体动力的名称。
* roboML(机器人标记语言,RoboticMarkup Language)用于与机器人技术有关的数据的标准化表达。
* ROBOOP 是一个机器人技术面向对象的 C++ 软件包。
* Rossum 项目试图帮助收集、开发和分发机器人应用程序软件。
* RTEMS 是 C、C++ 和 Ada95 的开放源代码实时操作系统和环境。
* RTLinux 是一个硬实时操作系统,处理对时间关键的任务,并将Linux 作为最低优先权执行线程运行。还可以获得 商业支持和开发。
* TACO 将 所有 (物理的和逻辑的)控制系统中的控制点作为分布式环境中的对象对待。
* TCA(任务控制体系)为移动机器人简化了任务级控制系统的建立。
* XRCL(发音为 zircle)是可扩展的机器人控制语言。
* 浏览 developerWorks上 更多 Linux 参考资料。
* 浏览 developerWorks上 更多开放源代码参考资料。
关于作者
Darrick Addison 是 ASC Technologies Inc. 的高级软件工程师/顾问。他从 1993 年就开始设计和开发自定义软件应用程序了。他致力设计和开发的软件各种各样,有数据库应用程序、网络应用程序(TCP/IP 客户机/服务器)、GUI 应用程序,还有不同商业和政府环境的嵌入式系统。现在他持有计算机科学学士学位,并正在 Johns Hopkins University 完成他的计算机科学/通信硕士学位。您可以通过 dtadd95@bellatlantic.net 联系 Darrick。他会欢迎您的意见和问题。
来源:IBM公司,2001 年 9 月 01 日 |
|