首页 | 小学 | 初中 | 高中 | 作文 | 英语 | 幼教 | 综合 | 早知道 | 范文大全 |
早知道 当前位置:唯才网 > 早知道 > 正文 唯才网手机站

移动机器人编译语言aria英文文章

时间:2017-01-30 来源:唯才教育网 本文已影响

篇一:Aria学习

一、Aria综述

Aria是一个编程库,C++程序员要访问MobileRobots或ActivMedia的平台并且访问或

高或低的水平。除了给开发者提供一个完整的机器人和API配件外, Aria也可作为基础为

其它库提供附加功能。Aria的程序可以用C++或Java编写,就像这些程序自身用这种语言

编写一样。如果你分配任何与ARIA不谐调的工作,你必须为这个工作分配全部的源代码,

包括在相同许可条件下你可能做出修改的ARIA。

ARIA中个文件的功能:

README.txt 包括安装ARIA、重建ARIA、建立例子程序及运用开发工具平台的建议。

LICENSE.txt 重建ARIA或运用ARIA编程的GPL协议。

Change.txt 每个版本的ARIA的特色变化的总结。

INSTALL.txt 在不同的平台中安装ARIA的详细说明。

docs.txt库的参考文档(本手册)。

examples/ ARIA中的例子程序。

Include/ ARIA的头文件。

Src/ ARIA C++源代码文件。

Params/ 机器人定义文件(例如p3dx.p)

Lib/ Win32DELL输出文件和Linux共享文件。

其它有记录的ARIA文件

Aria.sln 建立ARIA库和例子的MS Visual C++工作区。

Aria.vcproj ARIA库中用于Aria.sln的MSVC++工程文件。

Makefile Linux makefile 用于建立ARIA和例子。

Makefile.dep Linux文件依据的法则。

Utils 公用程序,用于内部的MobileRobots 软件开发 ,再加上一些文件格式转换工具。

ArNetworking/ 网络基础设施库,包括ARIA,而且是一个单独的库。

tests/ 测试文件,在ARIA的开发中十分有用, 也很神秘。

advanced/ 先进的演示和例子。

pythonExamples/ 通过python运用ARIA的信息和例子。

javaExamples/ 通过java运用ARIA的信息和例子。

python/包括ARIA的python模块和其他文件。

java/ 包括ARIA的java包和其他文件。

ARIA遵守以下编程协定:

1.类名以“Ar”开头,并有混合的大小写。

2.枚举和常量以大写字母开始。

3.尽可能避免预处理器定义(而不是使用枚举或内联方法)。

4.类中的成员变量以“my”作为前缀。

5.类中的静止变量以“our”作为前缀。

6.成员函数名以小写字母开始。

7.变量名或方法名的第一个字母大写。

8.所有的类可用于一个多线程程序中,无论是内在的线程,还是锁定互斥保护提供了一个

API。

1.ARIA-Robot Client-Server Relationship 移动平台的根本的客户-服务器控制架构,传感器以及配件并没有太大变化。核心移动

机器人程序在Pioneer和AmigoBot(在机器人的微控制器上运行)操作系统固件上实施。这

些程序管理更加严格并且对时间敏感、低水平任务的机器人进行控制和操作,包括维护要求

的动作、朝向状态、估计测程位置和获取传感器的信息(声纳、指南针)并且驱动许多配件

(如PTZ摄像机、TCM2罗盘/测斜仪组件,及先锋5自由度手臂)。机器人,他的微处理器,

固件和集成设备(例如声纳)有时也被称为“机器人平台”。然而,机器人固件不执行任何

高水平的机器人任务。相反它是一个智能用户连接到PC上运行这些应用程序级机器人控制

策略和任务,如:障碍物检测和蔽障,传感器融合,定位,特征识别,映射,智能导航,

PTZ摄像机控制,手臂动作等等。ARIA的角色是支持这些用户应用和它们与机器人固件的

交流,以任何设备连接到计算机而不是机器人平台,通过网络控制远程软件。ARIA的核心

类是ArRobot类。这个类用固件管理通信周期,接收和提供关于机器人平台的运行状态数据,

该周期内触发任务并且决定并送回机器人的命令。他也可以作为一个引用到其它ARIA的对

象和移动机器人相关的一般功能的工具箱的容器。通过自己的动作基础设施,ARIA提供了

一个强大的机制相结合的独立的行为,以实现协调的运动控制和智能指导。以实际行动,你

很容易实施指导遥操作机器人,视觉跟踪,自主导航等应用,如运动方面。其他ARIA类提

供的接口来访问和控制配件的传感器和设备,包括声纳和激光测距仪,云台单位,手臂,惯

性导航装置,及其他设备。

2.机器人交流

ARIA的重要功能之一,你的应用程序必须做的事情之一就是在ArRobot对象的实例和

机器人平台操作系统(固件)之间建立联系。除了移动机器人自身,一些配件(比如声纳,

先锋夹持器,PTZ摄像机,先锋手臂,指南针及其他)内在的与机器人微控制器的AUX或

数字I/O排列相联系,并且使用机器人连接(因此这些对象的接口类需要一个相关的ArRobot

对象,其必须为连接的设备工作)。其他的配件,如SICK激光,录像捕捉卡,等等都直接

连接到车载电脑。有几种方法来连接计算机上正在运行的ARIA到机器人的微控制器或到仿

真器。

与机器人或仿真的连接

ArRobotConnector对象用于建立和执行与机器人的连接,以机器人的参数文件为基础,

并通过命令行参数运行时间配置。类似的,ArLaserConnector用于连接到激光测距装置。

ArRobotConnector和ArLaserConnector在大多数例子程序中被使用。ArRobotConnector将首

先试着连接到本地TCP端口上的模拟器,如果没有模拟器运行,将连接到本地串口上的机

器人。ArRobotConnector还分析了一些命令行参数,可以明确指定远程主机名和通过TCP

连接的端口,或指定一个备用的本地串口使用机器人连接。

3.关于机器人和设备连接的具体细节

任何机器人都有许多可能的硬件配件连接,及连接配件到机器人和计算机的一些选择。

设备接口及连接的类需要关于连接什么设备和如何连接设备的信息。这些信息有两个来源:

机器人的参数文件,和通过ArArgumentParser及ARIAARGS环境变化从程序的运行参数得

到。硬件配置选择的例子可能需要指定要连接什么类型的激光测距仪,要连接哪个端口,激

光链接和数据参数,要连接什么样的GPS和使用哪个端口。此外,如果你要通过机载外的

TCP而不是通过机载连接到机器人,你必须提供一个运行的命令行参数给机器人网络名称。

机器人参数文件

机器人参数文件在机器人连接成功及机器人类型和个体名字确定后有ARIA读取。这些

文件提供给ARIA机器人具体的转换因素和物理角色,及辅助设备的连接信息。

程序运行时的选择

参数通过ArArgumentParser对象提供给其他类。所有的ARIA程序都要创建一个

ArArgumentParser,调用ArArgumentParser::loadDefaultArguments() 来加载出现在/ etc /

Aria.args文件或ARIAARGA环境变量中的任何参数,并且提供任何基础类中的对象接受他。

一旦所有的对象创建完成,你可以调用Aria::logOptions()来打印所有相关选择的总结(如假

设ArArgumentParser::checkHelpAndWarnUnparsed() 返回true则调用Aria::logOptions(); 及

Aria::exit(),最后调用Aria::parseArgs()导致每个检查各自的参数中的ArArgumentParser )。

4.ArRobot

客户端的命令和服务器信息包

ARIA和移动机器人平台或模拟器建的客户-服务器通信使用基于分组的协议。(本文中

客户端软件使用ARIA操作机器人,服务器是机器人平台的硬件。)ArRobot(使用

ArDeviceConnection,ArRobotPacketReceiver,ArRobotPacketSender,ArRobotPacket,

ArSerialConnection类)处理建设和发送命令包给机器人及接收和解码从机器人服务端收到

的数据包的细节。

分组处理程序

服务信息包(SIPs)被机器人服务端口传送,其中包括机器人和附件的升级信息。标准

的SIP由机器人每100毫秒自动传送给相关的客户端。它包含机器人的当前位置和估计,当

前的平移和旋转速度,声纳阅读更新,电涌电压,模拟和数字I/O状态及更多信息。这些数

据被ArRobot状态反思存储和使用,并通过ArRobot类的方法访问。扩展的SIP使用相同的

数据包格式作为标准的SIP,但用不同的数据包的“类型”代码。扩展的SIP的例子有I/O

端口数据,夹持器数据,或者是像原始编码数据一样的特殊机器人数据。为了获得扩展的

SIP用户端编程必须要求他们。在ARIA中这通常由设备接口类实现,当他们被初始化或当

机器人连接建立时。你可以将自己的自定义数据包处理程序利用

ArRobot::addPacketHandler(). 连接到ArRobot。你可以使用这个做自己的扩展的SIP数据的

额外的处理,或如果创建一个设备接口类的替代的实现。

命令包

为了控制机器人平台,用户端程序通过机器人连接发送命令包。这可以通过使用ArRobot

的运动命令功能,使用操作或在最基层,直接命令。命令包中这些方法的结果传送到机器人。

这意味着假如动作和动作命令被使用,或假如独立的程序模块传送运动命令,它们可能会发

生冲突。

机器人同步周期

标准的SIP以固定的周期传送,这个SIP接收触发一个ArRobot的同步任务处理周期的新的

迭代。这个周期包含一系列的任务,包括SIP数据包处理,传感器的解释任务,运动处理和

解决,状态反应。由于任务的周期由每个SIP(除非机器人平台开始无法发送SIP或任务周

期是明确的机器人连接的dissasociated )的接收触发,每项任务是在调用可预知的顺序,采

取行动的最新数据,没有任务会错过使用SIP的机会,且只要任务不会花太多的时间来执行,

每个SIP在机器人发送后都会尽快处理。

ArRobot任务周期综述

机器人→packet handler→lock robot(lock())

→sensor interpretation task→action task→state reflection task→user task→unlock robot(unlock

())→packet handler

程序开始调用ArRobot::run() 进入周期同步,或者调用ArRobot::runAsync()在一个新的

后台线程中调用周期。 ArRobot::stopRunning() 停止运行周期。ArRobot提供的方法来添加

你自己的传感器解释和通用的用户任务回调。为了增加任务回调创建了ArFunctor对象,增

加他使用 ArRobot::addSensorInterpTask() 或ArRobot::addUserTask()。这些任务可以通过

ArRobot::remSensorInterpTask() 或ArRobot::remUserTask() 删除。

每个任务周期的循环中ArRobot的锁定与解锁用ArRobot::lock() 和ArRobot::unlock()。

但是,锁必须用于安全访问任何其它线程或ArAsyncTask,例如ArAsync或者其他范围内的

设备或ARNL的规划或本地的任务。互斥锁保护ArRobot数据被其他线程修改(若在访问

过程中正确使用锁),和中断一系列任务。所以假如你从其他线程(包括主线程,如果你使

用ArRobot::runAsync()执行任务周期)访问ArRobot,你必须使用ArRobot::lock() 和

ArRobot::unlock()在任何方法调用和ArRobot中任何数据使用之前或之后锁和解锁机器人。

也可以在无需连接机器人时执行程序。接收数据包,这种替代的周期是不可触发的,相

反它有自身的稳定性,“链式”循环周期(默认是100ms,你可以用 ArRobot::getCycleTime()

和ArRobot::setCycleTime()检查和复位).。你也可明确的不赞成任何时候通过传入的SIP处理

程序加工ArRobot的程序周期,通过调用ArRobot::setCycleChained() 实现。“链式”的意思

是前一个周期结束后经过合适的延迟触发下一个周期以满足所需的周期频率。但是这样做会

降低性能,作为机器人的周期只执行ArRobot::getCycleTime()ms且每次只用最近阅读

的SIP。ArRobot的同步列表任务是ipmlemented树,有5个主要分支。一个用户端程序修

改此树或禁用树的分支任务是罕见的。如果一个特定的任务被禁用,其子女都将被禁用。任

务树的根可以通过调用ArRobot::getSyncTaskRoot()实现,它返回一个ArSyncTask对象。

状态反应

ArRobot 类中的状态反应是ARIA保持机器人的操作状况和价值的快照,如估计构成,

目前的速度,电池电压等。用于检查这些价值的ArRobot方法有ArRobot::getPose(),

ArRobot::getX(), ArRobot::getY(), ArRobot::getTh(), ArRobot::getVel(), ArRobot::getRotVel(),

ArRobot::getBatteryVoltage(), ArRobot::isLeftMotorStalled(), ArRobot::isRightMotorStalled(),

ArRobot::getCompass(), ArRobot::getAnalogPortSelected(), ArRobot::getAnalog(),

ArRobot::getDigIn(), ArRobot::getDigOut()。标准的SIP包含声纳阅读更新,反映在ArRobot

且用以下方法检查: ArRobot::getNumSonar(), ArRobot::getSonarRange(),

ArRobot::isSonarNew(), ArRobot::getSonarReading(), ArRobot::getClosestSonarRange(),

ArRobot::getClosestSonarNumber()。声纳接口类ArSonarDevice也接收这种信息。ArRobot

也使用状态反映任务来发送先前要求的运动命令给机器人,所以动作命令发送给机器人反应

了这些通过行动和动作命令方法在ArRobot的状态反应中设置需要的价值,并也因此监察机

器人不超时和禁用的机器人(如果没有运动命令设置,ArCommands::PILSE每个周期发送)。

如有必要,您可以进一步通过ArRobot::setStateReflectionRefreshTime().调整状态反应的运动

命令的发送速率。如果需要的话,你可以调整运动-控制反射到ArRobot::ArRobot()构

造。这将导致运动命令功能在调用时只发送一次命令直接到机器人而不是存储命令实现每周

期发送。

机器人回调

有一些有用的在连接事件中由ArRobot实行的有用的回调,可以用来添加和删除功能:

ArRobot::addConnectCB(), ArRobot::remConnectCB(), ArRobot::addFailedConnectCB(),

ArRobot::remFailedConnectCB(), ArRobot::addDisconnectNormallyCB(),

ArRobot::remDisconnectNormallyCB(), ArRobot::addDisconnectOnErrorCB(),

ArRobot::remDisconnectOnErrorCB(), ArRobot::addRunExitCB(), ArRobot::remRunExitCB()。

5.用命令和动作控制机器人

ARIA的用户端可以通过ArRobot的直接命令、运动命令或行动驱动机器人并运行各种

附件。

注意:机器人的运动速度有一些参数决定。首先,最大速度、加速度和减速由ARIA的

机器人参数文件(.P文件)给定用于限制ARIA发送的运动命令,如果该值非零。其次,机

器人固件配置的最大速度是用来限制由机器人接收到的运动命令。所有这些最大值可在运行

时通过调用ArRobot::setTransVelMax(),ArRobot::setRotVelMax(),和唯一的ArRobot::

setLatVelMax()改变。这些调用改变机器人固件和ARIA中的参数。即使机器人参数文件

中给定的任何最大值无效。最后,固件配置中的“TOP”参数限制速度;这些在运行时都不会改变,只使用配置程序。大多数机器人参数文件使用最大值为0值,禁用ARIA的初始限制检查;然而,为了保证机器人在最初的teleoperate下有一个安全的速度,在seekur.p下对速度进行限制设置。这些限制更改为0,以消除那些车速限制,并使用该平台的默认值,或使用ArRobot的方法在程序运行时改变他们。

(1)直接命令在机器人访问的最低水平,您可以发送任何命令数据包通过ArRobot直接给机器人或模拟器平台。直接命令包括1个字节的命令伴随着一个或多个参数,像被机器人的操作系统定义的一样。例如,命令编号4,启用,使能机器人的马达,如果伴随着参数1,用参数0禁用电机。使用ArRobot::com() 作为命令没有参数,例如PULSE;ArRobot::comInt()用2个字节整形参数作为参数,有符号和无符号,比如电机启动命令; ArRobot::com2Bytes()命令接受两个独立的字节作为参数,如VEL2命令;ArRobot::comStr() or ArRobot::comStrN()为空终止或固定长度的字符串参数,如声纳POLLING测序命令。ArCommands类中包含所有直接命令的枚举,如:ArCommands::ENABLE。并不是所有的直接命令被每个移动机器人支持,但一般不被识别的命令会被忽略。对于大多数命令,在ArRobot中存在一种方法,可以立即发送命令,也可以为状态反应任务的发送存储命令。然而,直接命令方式允许你发送任何不寻常或特别命令直接到机器人平台或模拟器,没有任何干预处理程序。

(2)运动命令控制功能

水平略高于ArRobot的直接命令的是运动命令控制功能。这些都是明确的简单的动作指令,由ArRobot的状态反映任务。如:ArRobot::setVel()设置的平移速度,

ArRobot::setRotVel设置旋转速度,ArRobot::setVel2()单独设置每个车轮的速度,ArRobot::setHeading()来设置一个全局的航向角转向,ArRobot::move()来驱动一个给定的距离,ArRobot::stop()停止所有的运动。ArRobot还提供了固件中的配置设置的限制以外设置车速限制的方法。这些运动功能部分工作在状态反映下,并ArRobot可能重新发送每一个命令周期,以尽量达到理想状态。请注意,直接或动作命令可能会在行动或其他上级过程的控制中发生冲突,并导致意想不到的后果。使用ArRobot::clearDirectMotion()取消先前设置的运动命令压倒一切的作用,使你的行动是能够重新获得控制机器人的权利。或限制动作命令防止其他动作的次数用ArRobot::setDirectMotionPrecedenceTime()。否则,运动命令将永远阻止行动。使用ArRobot::getDirectMotionPrecedenceTime()看一旦设定优先级多久看到一个“动作”命令。

(3)动作

虽然简单的序列运动命令可以很容易使用,试图实现更复杂的运动仅用运动命令会变得困难。为了使得定义复杂的独立动作,可重用固件成为可能,ARIA提供了更高层次的动作系统。动作是独立的对象,它独立提供动作要求(先评估,再结合每个周期产生一系列的移动命令)。这允许你从简单的动态积木和持续的运动控制到建立复杂的行为。动作时通过创建一个重载ArAction::file方法的ArAction基类的子类。ARIA还包含一些预先做好的动作类:在类文件或在ARIA的源代码中作为ArAction的子类找到他们。动作通过ArRobot::addAction(),附加到ArRobot对象中,同时确定了在动作列表中决定他的位置的优先级。ArAction::setRobot()当被添加到机器人时在动作对象中被调用。在你的动作子类中可以忽略这个。在每个任务周期的降低的优先级顺序下通过ArRobot的行动解析器评估动作仅高于状态反应。动作解析器调用每个动作的file()方法,结合他们需要的动作命令到单一的ArActionDesired对象,然后用状态反应发送动作命令。

注意:当动作十分活跃时发送简单的动作命令可能会导致简单的动作命令和动作解析器的命令之间的冲突。

篇二:模糊控制的移动机器人的外文翻译.doc

1998年的IEEE

国际会议上机器人及自动化

Leuven ,比利时1998年5月

一种实用的办法--带拖车移动机器人的反馈控制

F. Lamiraux and J.P. Laumond

拉斯,法国国家科学研究中心

法国图卢兹

{florent ,jpl}@laas.fr

摘 要

本文提出了一种有效的方法来控制带拖车移动机器人。轨迹跟踪和路径跟踪这两个问题已经

得到解决。接下来的问题是解决迭代轨迹跟踪。并且把扰动考虑到路径跟踪内。移动机器人

Hilare的实验结果说明了我们方法的有效性。

1引言

过去的8年,人们对非完整系统的运动控制做了大量的工作。布洛基[2]提出了关于这

种系统的一项具有挑战性的任务,配置的稳定性,证明它不能由一个简单的连续状态反馈。

作为替代办法随时间变化的反馈[10,4,11,13,14,15,18]或间断反馈[3]也随之被提出。从 [5] 移

动机器人的运动控制的一项调查可以看到。另一方面,非完整系统的轨迹跟踪不符合布洛基

的条件,从而使其这一个任务更为轻松。许多著作也已经给出了移动机器人的特殊情况的这

一问题[6,7,8,12,16]。

所有这些控制律都是工作在相同的假设下:系统的演变是完全已知和没有扰动使得系统偏离

其轨迹。很少有文章在处理移动机器人的控制时考虑到扰动的运动学方程。但是[1]提出了

一种有关稳定汽车的配置,有效的矢量控制扰动领域,并且建立在迭代轨迹跟踪的基础上。

存在的障碍使得达到规定路径的任务变得更加困难,因此在执行任务的任何动作之前都需要

有一个路径规划。

在本文中,我们在迭代轨迹跟踪的基础上提出了一个健全的方案,使得带拖车的机器人按照

规定路径行走。该轨迹计算由规划的议案所描述[17] ,从而避免已经提交了输入的障碍物。

在下面,我们将不会给出任何有关规划的发展,我们提及这个参考的细节。而且,我们认为,

在某一特定轨迹的执行屈服于扰动。我们选择的这些扰动模型是非常简单,非常一般。它存

在一些共同点[1]。

本文安排如下:第2节介绍我们的实验系统Hilare及其拖车:两个连接系统将被视为(图1) 。

第3节处理控制方案及分析的稳定性和鲁棒性。在第4节,我们介绍本实验结果 。

图1带拖车的Hilare

2 系统描述

Hilare是一个有两个驱动轮的移动机器人。拖车是被挂在这个机器人上的,确定了两个不同

的系统取决于连接设备:在系统A的拖车拴在机器人的车轮轴中心线上方(图1 ,顶端),

而对系统B是栓在机器人的车轮轴中心线的后面(图1 ,底部)。 A对B来说是一种特殊

情况,其中 = 0 。这个系统不过单从控制的角度来看,需要更多的复杂的计算。出于这个

原因,我们分开处理挂接系统。两个马达能够控制机器人的线速度和角速度( , )。除了

这些速度之外,还由传感器测量,而机器人和拖车之间的角度 ,由光学编码器给出。机器

人的位置和方向( , , )通过整合前的速度被计算。有了这些批注,控制系统B是:

(1)

3 全球控制方案

3.1目的

当考虑到现实的系统,人们就必须要考虑到在运动的执行时产生的扰动。 这可能有许多的

来源,像有缺陷的电机,轮子的滑动,惯性的影响... 这些扰动可以被设计通过增加一个周

期在控制系统(1) ,得到一个新的系统的形式

在上式中可以是确定性或随机变量。 在第一种情况下,扰动仅仅是由于系统演化的不规

则,而在第二种情况下,它来自于该系统一个随机行为。我们将看到后来,这第二个模型是

一个更适合我们的实验系统。

为了引导机器人,从一开始就配置了目标,许多工程认为扰动最初只是机器人和目标

之间的距离,但演变的系统是完全众所周知的。为了解决这个问题,他们设计了一个可输入

的时间-状态函数,使目标达到一个渐近稳定平衡的闭环系统。现在,如果我们介绍了先前

定义周期 在这个闭环系统,我们不知道将会发生什么。但是我们可以猜想,如果扰动 很小、

是确定的、在平衡点(如果仍然还有一个)将接近目标,如果扰动是一个随机变数,平衡点

将成为一个平衡的子集。 但是,我们不知道这些新的平衡点或子集的位置。

此外,在处理障碍时,随时间变化的方法不是很方便。他们只能使用在附近的目标,

这附近要适当界定,以确保无碰撞轨迹的闭环系统。请注意连续状态反馈不能适用于真实情

况下的机器人,因为间断的速度导致无限的加速度。

我们建议达成某一存在障碍特定配置的方法如下。我们首先在当前的配置和使用自由

的碰撞议案所描述[17]目标之间建立一个自由的碰撞路径,然后,我们以一个简单的跟踪控

制率执行轨迹。在运动结束后,因为这一目标的各种扰动机器人从来没有完全达到和目标的

轨迹一致,而是这一目标的左右。如果达到配置远离目标,我们计算另一个我们之前已经执

行过的一个轨迹。

现在我们将描述我们的轨迹跟踪控制率,然后给出我们的全球迭代方法的鲁棒性问题。

3.2轨迹跟踪控制率

在这一节中,我们只处理系统A。对系统B容易计算(见第3.4节)。

图2 单一机器人的

移动机器人编译语言aria英文文章

跟踪控制率

很多带拖车轮式移动机器人的跟踪控制律已经被提出。其中[16]虽然很简单,但是提供

了杰出的成果。 如果 是模拟机器人的坐标构成真实机器人(图2),如果( )是输入的参

考轨迹,这种控制律表示如下:

(2)

我们控制律的关键想法如下:当机器人前进,拖车不需要稳定(见下文)。因此,我们

对机器人使用公式(2)。 当它后退时,我们定义一个虚拟的机器人 (图3)这是对称的真

实一对拖车的车轮轴:

然后,当真正的机器人退后,虚拟机器人前进和虚拟系统 在运动学上是等同于真正的一个。

因此,我们对虚拟机器人实行跟踪控制法(2)。

图3 虚拟机器人

现在的问题是:当机器人前进时,拖车是否真的稳定?下一节将回答这个问题。

3.3 拖车稳定性分析

在这里我们考虑的向前运动情况下 ,虚拟机器人向后的运动被等值转变。让我们把坐标 作

为参考轨迹并且把坐标 作为实际运动的系统。我们假设机器人完全跟随其参考轨迹: 并且

我们把我们的注意力放在拖车偏差 。这一偏差的变化很容易从系统(1)推导出 (系统A) :

尽管 是减少的

(3)

我们的系统而且被不等量限制了

(4)

因此 和式(3)等价于

(5)

图4显示 的范围随着给定的 的值正在减少。我们可以看到,这个范围包含了拖车的所

有的位置,包括式(4)所界定的范围。此外,以前的计算许可轻松地表明对于变量 ,0是

一个渐近稳定值的变量。

因此,如果实际或虚拟的机器人按照它的参考轨迹前进,拖车是稳定的,并且将趋于

自己的参考轨迹。

图4 的稳定范围

3.4虚拟机器人系统B

当拖车挂在机器人的后面,之前的结构甚至更简单:我们可以用拖车取代虚拟的机器人。

在这种实际情况下,机器人的速度 和拖车 一对一映射的连接。然后虚拟的机器人系统表示

为如下:

和以前的稳定性分析可以被很好的使用通过考虑悬挂点的运动。

下面一节讨论了我们迭代计划的鲁棒性。

3.5迭代计划的鲁棒性

我们现在正在显示上文所提到的迭代计划的鲁棒性。为此,我们需要有一个当机器人的运动

时产生扰动的模型。 [1]扰动的模型系统是一个不规则,从而导致矢量场确定性的变化。在

我们的实验中,我们要看到由于随机扰动导致的例如在一些悬挂系统中发挥作用。这些扰动

对模型是非常困难的。出于这个原因, 我们只有两个简单的假说有:

其中s是沿曲线横坐标设计路径, 和 分别是真正的和参考的结构, 是结构空间系统的距

离并且 , 是正数。 第一个不等量意味着实际和参考结构之间的距离成正比的距离覆盖计

划路径。第二个不等量是确保轨迹跟踪控制率,防止系统走得太远远离其参考轨迹。让我们

指出,这些假设是非常现实的和适合大量的扰动模型。

我们现在需要知道在每个迭代路径的长度。我们使用指导的方法计算这些路径验证拓扑

短时间的可控性[17]。这个也就是说,如果我们的目标是充分接近起初的结构,轨迹的计算

依然是起初的结构的附近。在[9] 我们给出的估算方面的距离:如果 和 是两种不够紧密

的结构,规划路径的长度验证它们之间的关系

这里 是一个正数。

因此,如果 是配置依次获得的,我们有以下不等式:

这些不等式确保distCS 是上界序列 的正数

和趋近于足够反复后的。

因此,我们没有获得渐近稳定性配置的目标,但这一结果确保存在一个稳定的范围处理这个

配置。 这一结果基本上是来自我们选择非常传统扰动的模型。让我们重复这包括诸如扰动

模型的时间不同的控制律无疑将使其失去其渐近稳定。

实验结果如下节显示,收敛域的控制计划是非常小的。

4实验结果

现在,我们目前获得的带拖车机器人Hilare系统A和B的实验结果。图5和图6显示第一

路径计算的例子所规划初始配置(黑色)和目标配置(灰色)之间的运动。在第二种情况下

包括上一次计算结果。连接系统的长度如下:系统A中 , 厘米,系统B 厘米, 厘米。

表1和表2提供的初始和最后配置位置以及目标和期望配置在第一次动作和第二次动作之间

的不足,3个不同的实验。在这两种情况下,第一次试验相当于图表。 意味着,在第一动

作后精度十分充足,没有更多可进行的动作。

评论和意见:表1和表2的报告结果显示了两个主要的见解。首先, 系统达成非常令人满

意的精密程度,其次迭代次数是非常小的(介于1和2之间)。事实上,精密程度取决于很

多的速度和不同的动作。在这里,机器人的最大线速度是50厘米/秒 。

5结论

我们已经提出了一种方法来控制机器人与拖车从初始结构到一个已知输入问题的目标。这种

方法是以迭代于开环和闭环控制相结合为前提的办法。它对大范围的扰动模型已经显示出健

全的一面。这个鲁棒性主要来自拓扑性能指导方法介绍[17] 。即使该方法不完全趋于机器

人的最终目标,但是在真正实验期间达到的精度程度是非常令人满意的。

图5:系统A:初始、目标配置跟踪第一路径 图6:系统B:初始、目标配置跟踪

第一路径和最终结果

表1:系统A:目标和期望配置在第一次动 表2:系统B:目标和期望配置在第一

次动

作和第二次动作之间的差距作和第二次动作之间的差距

参考文献

[1]M. K. Bennani et P. Rouchon. Robust stabilization of flat and chained systems. in European Control Conference,1995.

[2]R.W. Brockett. Asymptotic stability and feedback stabilization. in Differential Geometric Control Theory,R.W. Brockett, R.S. Millman et H.H. Sussmann Eds,1983.

[3]C. Canudas de Wit, O.J. Sordalen. Exponential stabilization of mobile robots with non holonomic constraints.IEEE Transactions on Automatic Control,Vol. 37, No. 11, 1992.

[4]J. M. Coron. Global asymptotic stabilization for controllable systems without drift. in Mathematics of Control, Signals and Systems, Vol 5, 1992.

[5]A. De Luca, G. Oriolo et C. Samson. Feedback control of a nonholonomic car-like robot, "Robot motion planning and control". J.P. Laumond Ed., Lecture Notes in Control and Information Sciences, Springer 'Verlag, to appear.

[6]R. M. DeSantis. Path-tracking for a tractor-trailerlike robot. in International Journal of Robotics Research,Vol 13, No 6, 1994.

[7]A. Hemami, M. G. Mehrabi et R. M. H. Cheng. Syntheszs of an optimal control law path trackang an mobile robots. in Automatica, Vol 28, No 2, pp 383-387, 1992.

[8] Y. Kanayama, Y. Kimura, F. Miyazaki et T.Nogushi.A stable tracking control method for an autonomous mobile robot. in IEEE International Conference on Robotics and Automation, Cincinnati, Ohio, 1990.

[9] F. Lamiraux.Robots mobiles ci remorque : de la planification de chemins d: l ' e x h t i o n de mouuements,PhD Thesis N7, LAAS-CNRS, Toulouse, September 1997.

[l0] P. Morin et C. Samson. Application of backstepping techniques to the time-varying exponential stabitisation of chained form systems. European Journal of Control, Vol 3, No 1, 1997.

[11] J. B. Pomet. Explicit design of time-varying stabilizang control laws for a class of controllable systems without drift. in Systems and Control Letters, North

[12] M. Sampei, T. Tamura, T. Itoh et M. Nakamichi.Path tracking control of trailer-like mobile robot. in IEEE International Workshop on Intelligent Robots and Systems IROS, Osaka, Japan, pp 193-198, 1991.

[13] C. Samson. Velocity and torque feedback control of a nonholonomic cart. International Workshop in Adaptative and Nonlinear Control: Issues in Robotics, Grenoble, France, 1990.

[14] C. Samson. Time-varying feedback stabilization of carlike wheeled mobile robots. in International Journal of Robotics Research, 12(1), 1993.

[15] C. Samson. Control of chained systems. Application to path following and time-varying poznt-stabilization. in IEEE Transactions on Automatic Control, Vol 40,No 1, 1995.

[16] C. Samson et K. Ait-Abderrahim. Feedback control of a nonholonomic wheeled cart zncartesaan space.in IEEE International Conference on Robotics and Automation, Sacramento, California, pp 1136-1141,1991.

[17] S. Sekhavat, F. Lamiraux, J.P. Laumond, G. Bauzil and A. Ferrand. Motion planning and control for Hilare pulling a trader: experzmental issues. IEEE Int. Conf. on Rob. and Autom., pp 3306-3311, 1997.

[18] O.J. Splrdalen et 0. Egeland. Exponential stabzlzsation of nonholonomic chained systems. in IEEE Transactions on Automatic Control, Vol 40, No 1, 1995. Bolland, Vol 18, pp 147-158, 1992.

篇三:机械手设计英文参考文献原文翻译

翻译人:王墨墨 山东科技大学

文献题目:Automated Calibration of Robot Coordinates

for Reconfigurable Assembly Systems

翻译正文如下:

针对可重构装配系统的机器人协调性的自动校准

T.艾利,Y.米达,H.菊地,M.雪松 日本东京大学,机械研究院,精密工程部

摘要

为了实现流水工作线更高的可重构性,以必要设备如机器人的快速插入插出为研究目的。当一种新的设备被装配到流水工作线时,应使其具备校准系统。该研究使用两台电荷耦合摄像机,基于直接线性变换法,致力于研究一种相对位置/相对方位的自动化校准系统。摄像机被随机放置,然后对每一个机械手执行一组动作。通过摄像机检测机械手动作,就能捕捉到两台机器人的相对位置。最佳的结果精度为均方根值0.16毫米。

关键词:

装配,校准,机器人

1 介绍

21世纪新的制造系统需要具备新的生产能力,如可重用性,可拓展性,敏捷性以及可重构性 [1]。系统配置的低成本转变,能够使系统应对可预见的以及不可预见的市场波动。关于组装系统,许多研究者提出了分散的方法来实现可重构性[2][3]。他们中的大多数都是基于主体的系统,主体逐一协同以建立一种新的配置。然而,协同只是目的的一部分。在现实生产系统中,例如工作空间这类物理问题应当被有效解决。

为了实现更高的可重构性,一些研究人员不顾昂贵的造价,开发出了特殊的均匀单元[4][5][6]。作者为装配单元提出了一种自律分散型机器人系统,包含多样化的传统设备[7][8]。该系统可以从一个系统添加/删除装配设备,亦或是添加/删除装配设备到另一个系统;它通过协同作用,合理地解决了工作空间的冲突问题。我们可以把该功能称为“插入与生产”。

在重构过程中,校准的装配机器人是非常重要的。这是因为,需要用它们来测量相关主体的特征,以便在物理主体之间建立良好的协作关系。这一调整必须要达到表1中所列到的多种

标准要求。受力单元和方向的调整是不可避免的,以便使良好的协同控制得以实现。从几何标准上看,位置校准是最基本的部分。一般来说,校准被理解为“绝对”,即,关于特定的领域框架;或者“相对”,即,关于另一个机器人的基本框架。后者被称为“机器人之间的校准”。

个体机器人的校准已被广泛研究过了。例如,运动参数的识别就非常受欢迎。然而,很少有对机器人之间校准的研究。玉木等人是用一种基于标记的方法,在一个可重构的装配单元内,校准机器人桌子和移动机械手之间的相互位置/方向联系。波尼兹和夏发表了一种校准方法。该方法通过两个机械手的机械接触来实现,实验非常耗时,并要求特别小心地操作。 在本文中,我们针对图1中所示的可重构装配系统,提出了一种自动校准方法。在该系统中,一个机器人工作时,另一个额外机器人可以轻松插入并开始工作。系统中安装了两台摄像机,作为快速简单设备。该方案是为整体装配单元而开发,在协调系统中也具有更加广泛的应用。

图1:重新配置装配系统

在第2节中,将介绍一种摄像机的算法问题。第3节研究校准。在第4、5节中,我们讨论实验结果及其应用。第6节为总结。

2 直接线性变换

我们的校准方法是基于实体坐标的3D重建技术,这些实体正是通过直接线性代数变换方法,从摄像机图像中变换而来的[10]。尽管很多精心制作的研究方法可以作为代替,例如蔡的那种研究方法[11],但是直接线性变换法更加简单,也能充分实现我们所需要的实验结果。假设两个摄像头观察同一个对象,我们就可以分别用影像平面来表示实体的位置。直接线性变换公式如下:

,通过每台摄像机i(i=1,2)的

式中,

表示参考系中对象的位置;

我们把等式(1)(2)改写为

表示未知的直接线性变换参数。

u=f(x),式中,

(3)

我们可以从实体的观测结果来确定直接线性变换的参数,这些实体的坐标被称为“控制点”。一旦直接线性变换的参数被识别,摄像机中的图像将以实体3D重建坐标。

3 校准方法

3.1 校准综述 在本节中,我们提出我们的针对装配系统重新配置的校准方法。通过图1中所阐释的两台摄像机,我们可以对机械手进行标记检测,而通过这一检测可以使两个机械手的基本构架得以校准。我们在工作区内测量一个有限体积,因为对于校准每一部分体积都是必不可少的。注意,每一个机械手都在其末端器上进行了标记。

我们打算在原有的机械手“B”的旁边安装一个新的机械手“A”。然后,我们对A与B的基本框架之间的转化进行校准。在基本构架内,分别用

表示A、B机械手上每一

的形式表现出所捕获的

组标记的校准数据。我们可以通过每个机械手的内部传感器(编码器)来计算注意,

分别包含四组标记的坐标,这些标记通过两台摄像机捕捉。

校准程序大体概述如下:

1. 一名人工操作员放置好两台摄像机,以便其对机械手A和B上的标记进行观测。

2. 机械手A在有限空间内独立运动,摄像机对其上的标记动作进行捕捉。

成对的

被抽样标记为控制点

3. 然后机械手B

在有限空间内独立移动,摄像机也对其上标记的动作进行捕捉。成对的

被抽样标记为控制点

4. 机械手之间的相互位置关系从我们的方法的显著特点: ? ? ? ?

。 和

中计算得出。

校准程序基本是自动化的。人工操作员只需放置好两台摄像机,不管他们在哪里都可以检测这些标记。

摄像机的位置可以未知。因此我们可以随机放置摄像头的位置。

可以获得两个机械手的基础构架之间的转换。很适合由自发的主体组成的分散系统。 校准在有限空间内进行(我们称之为“校准空间”)。只有在校准空间周围才能获得可靠精度,在这一空间内可以实现机器人之间的操作。

3.2 问题公式化

我们将用公式来表达上述程序。两个机器人手臂之间的校准将用于计算一个仿射变换,这一变换可以将一个参考系内的坐标转换到如下的另一个坐标系内:

式中,

是机械手B在机械手A的坐标系中的一组标记的坐标;

表示旋转; 表示转换。

我们可以把等式(4)写成

通过最小化下列指数,得到h,即可实现校准:

由于

提供了测量的位置,在等式(6)的右边包含A的首项,表示机械手A的直接

线性变换的校准误差。包含B的第二项,表示直接线性变换的误差,以及机械手B的仿射变换。

3.3 通过迭代法进行参数识别

等式(6)包含了待测量的34个参数:

的11个参数,

的11个参数,R的9个参数,

以及p的3个参数。尽管这34个参数中有部分是多余的(因为R有3个参数),但是所有的参数对于计算等式(6)而言都是就等价的。在如此高维度空间内做最小化相当耗时,因此我们采用线性最小二乘法来进行迭代。该程序如下:

1. 最小化计算出f。由于等式对和是线性

的,所以使用最小二乘法可计算出f的最优值。

2. 用定值f最小

化,从而计算出h。由于等

对于R和p中的元素是线性的,所以使用最小二乘法可计算出h的

最优值。

3. 用定值h最小化J,从而计算出f。

由于等式

是线性的,所以使用最小二乘法可计算出f的最优值。

4. 如果J值收敛于一点,就停止迭代。否则,返回到步骤2。

注意,通过以上程序,J有可能不会收敛于总体最优值,但它却提供了一个通过微量估计达到足够精度度的最佳方法。

4 校准方面的实验结果

4.1 实验装置

我们建立了一个实验装置,由两套六自由度机械手和两个由如图2所示的单色电荷耦合摄像机组成。每个机械手的手臂上都安装了一个发光二极管,用来作为校准的标记。两台机械手都有

的重复精度。每台电荷耦合摄像机具有640*416的像素分辨率。

图2 试验设备

4.2 准确度方面的结果

当一个新的机器人安装好后,转换的精度取决于我们的校准方法。摄像机的布置说明详见图3。两个机器人依次在校准空间内移动。注意,摄像机应放置在任何可以捕获到发光二极管标记的地方。