




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
机器人工程基础第六章机器人控制器如果仅仅有感官和肌肉,人的四肢还是不能动作。一方面是因为来自感官的信号没有器官去接收和处理,另一方面也是因为没有器官发出神经信号,驱使肌肉发生收缩或舒张。同样,如果机器人只有传感器和驱动器,也不能正常工作。原因是传感器输出的信号没有起作用,驱动电动机也得不到合适驱动电压和电流,所以机器人需要有一个用硬件和软件组成的控制器。机器人控制器的概念在工业机器人上体现得尤为显著—工业机器人本体近旁会放置一个控制箱。本章我们将以工业机器人为例,从控制器要实现的功能开始,介绍控制器的组成结构。第六章机器人控制器6.1控制器的功能6.2控制器的结构6.3运动规划6.4机器人编程6.5控制系统中的通信控制器设计的目标是实现机器人的功能。首先以工业机器人为例,我们看一下图6.1所示机器人控制系统所要实现的功能。工业机器人是基于示教或者编程生成轨迹点的序列,并反复再现这些轨迹的点序列。作业规划(顺序)一般由操作者通过人机交互方式输入。运动规划系统的任务主要是将机器人语言转换成轨迹点的序列,它们多半通过直线或圆弧等简单函数平滑地连接起点和终点。点和轨迹的执行由位置伺服实现。6.1控制器的功能图6.1机器人控制的功能(1)人机交互:6.1控制器的功能机器人想要发挥作用,还需要拥有与人交互的能力。工业机器人常用的人机交互方法是键盘手柄、触摸屏、操作编程界面这样的方式。服务机器人的发展促进了交互方式的新体验,技术的发展主要包含语音识别、语义理解、人脸识别、图像识别、体感/手势交互等技术。通过语音识别、合成、理解等技术,实现更精准的交互服务。通过人脸识别,可帮助商家精准的识别用户,并主动与用户打招呼,提升用户体验。这些交互方式的改变将会深层次影响机器人在日常生活的应用场景。(2)编程功能:6.1控制器的功能目前工业机器人的工作要靠操作人员指定其在结构化环境下的作业动作,人告诉机器人怎么工作的方式是编程。常用的编程包括示教编程和离线编程。示教编程分为示教和再现两个过程。示教阶段,由人工用示教盒、操纵杆、开关等手段,导引机器人末端执行器(安装于机器人关节结构末端的夹持器、工具、焊枪、喷枪等)使机器人完成预期的动作。控制器存储这些路径点。再现阶段,任务程序结合辅助功能指令,控制机器人末端执行器按存储的轨迹运动。在工业机器人领域中,离线编程可以降低停机时间,加速机器人系统集成,并且在不影响生产效率的情况下可以不断编辑、改善机器人程序。在离线状态下,用户使用文字编辑器编写程序,之后加载到机器人控制器上运行。使用生产商提供的编程语言,可以利用到更多的机器人功能——但是,因为程序的特殊性与难度,用户群体也较封闭,编写的轨迹程序可能需要更多的调试。(3)作业规划:6.1控制器的功能作业规划就是生成完成工作任务的作业顺序。目前,工业机器人的作业规划是通过编程的方式实现的。操作人员利用自己的智能、结合任务的特点,形成任务到运动动作的分解。而后,使用示教和编程的方式,“指挥”机器人完成各个动作。当然,这种分解动作的实现过程中,机器人具备运动轨迹的规划能力,使编程描述作业规划的工作不是那么繁琐。为了提高机器人自身的作业规划能力,人工智能技术逐步应用于作业规划之中,这使机器人有了一定的自主能力。比如一些移动机器人具有自主建图和路径规划的能力,语音识别技术达到了通过语言进行人机交互的能力。尽管如此,希望机器人达到对人类的指令的理解和执行,还有很长一段路要走。(4)运动规划:6.1控制器的功能运动规划这一级的主要任务是基于上面作业和移动的规划,生成适合现场作业或移动的轨迹,将命令通过旁路直接发送给下位系统处理。对于机械手,是手部轨迹生成、障碍物回避等。对于移动机器人,是生成与机器人能力相应的轨迹(如回转曲率、根据路面状况修正轨迹)、障碍物回避等。(5)运动控制:6.1控制器的功能运动规划得到的轨迹一般表述在相对于人和机器人来说都具有同样感觉的坐标系(世界坐标系或机器人基准坐标系等)中。机器人要完成末端执行器的位姿控制,运动规划产生的信息被转换到机器人的关节空间中(关节角度、角速度、关节转矩等)。在运动控制系统中需要做复杂的实时坐标变换计算,因此它与伺服控制系统一起构成了机器人控制最重要的部分。如图6.2所示工业机器人的坐标系,是工业机器人运动控制的基础,方便机器人的操作,包括大地坐标系、基坐标系、工具坐标系、用户坐标系和工件坐标系。图6.2机器人的坐标系6.1控制器的功能大地坐标系是整个工作空间的坐标系,有多个机器人在同一工作空间内工作,使用大地坐标系能够使机器人之间能够相互通信,十分有利。基坐标系{B}是工业机器人的基础坐标系,和机器人的基座固连,是机器人几何解算的基础。工具坐标系{T}是以工具中心点TCP为原点建立的坐标系。TCP的设定方便了编程和调整程序。用户坐标系{S}基于大地坐标系进行定义。工业机器人的应用通常会涉及到工作台或夹具,用户坐标系是为了处理具有不同位置和方向的不同夹具或工作台——为每个夹具/工作台定义用户坐标系。工件坐标系{T}基于用户坐标系定义。当夹具包含机器人要处理的多个工件时,为每个工件定义一个坐标系,能够方便调整程序。工作坐标系同样适合离线编程,和手动操作机器人。(6)伺服系统:6.1控制器的功能实现运动控制需要对于运动学的解耦和各个关节运动过程的伺服控制,这包括多轴联动、运动控制、速度和加速度控制、动态补偿等。伺服控制的运行需要依据一条条命令来执行,因此需要将控制信息分解为下达到单个自由度系统的命令。伺服系统首先确保多个自由度的时间同步,这样才能形成协调的动作完成规定的运动。其次,系统对于独立自由度的控制,是在闭环控制结构下的跟随过程。(7)设备传感接口:6.1控制器的功能在机器人的反馈控制中,要求采用各种传感器来掌握机器人各层级的状况,需要传感器来反馈各种环境信息。传感器获取的原始数据需要转换成最简单的物理量,并以适合伺服系统的反馈信息(位置、速度、转矩)进行输出,实现机器人柔顺控制,一般为力觉、触觉和视觉传感器。除了传感器接口之外,机器人的工作需要和辅助设备等连接,因此需要相应的接口功能。数字和模拟量输入输出:各种状态和控制命令的输入或输出。打印机接口:记录需要输出的各种信息。(8)诊断和安全保护功能:6.1控制器的功能运行时系统状态监视、故障状态下的安全保护和故障自诊断。进行异常处理,所谓异常就是无法预测的事件。该部分对各层级的信息和当前信息做适当的诊断,判断异常事件发生的可能性,并通过有效的显示提醒操作者。6.2控制器的结构我们把伺服电机等执行元件作为执行机构,相当于人的肌肉,包含在如图6.3所示的机器人本体中。从功能上考虑,机器人的控制器包括:伺服驱动、运动控制规划、人机交互编程、传感设备接口等几个模块。如果从硬件的结构来看,伺服驱动器多是独立的一个模块,有自己独立的微控制器,其作用是接收控制器的运动指令,并控制机器人关节的运动。其它的功能,会在一个微控制器或几个微控制器形成的硬件中实现。图6.3机器人控制系统6.2控制器的结构机器人控制器根据指令以及传感信息控制机器人完成一定的动作或作业任务。随着微电子技术的发展,微处理器的性能越来越高,而价格则越来越便宜,目前市场上已经出现了1-2美元的32位微处理器。高性价比的微处理器为机器人控制器带来了新的发展机遇,使开发低成本、高性能的机器人控制器成为可能。为了保证系统具有足够的计算与存储能力,目前机器人控制器多采用计算能力较强的ARM系列、DSP系列、POWERPC系列、Intel系列等芯片组成。从机器人控制算法的处理方式来看,可分为集中控制结构、主从控制结构、分布式控制结构三种。6.2控制器的结构(1)集中控制方式,即单CPU结构,用一台功能较强的计算机实现全部控制功能,机器人有一个单独的控制器。这个控制器收集从机器人各个关节、各个附加传感器传送来的位置、角度等信息,通过控制器处理后,计算机器人下一步的工作。整个机器人是在这个控制器的控制下运作,对于一些异常的处理也在程序的设定范围内。传统的机器人大都是工业机器人。他们通常工作在流水线的一个工位上,每个机器人的位置是已知、确定的;设计者在每台机器人开始工作之前也很清楚他的工作是什么,他的工作对象在什么位置。这种情况下,对机器人的控制就变成了数值计算,或者说“符号化”的计算。例如,我们通过实地测量可以得到一台搬运机器人的底座的坐标;再通过空间机构几何学的计算(空间机器人的正解、逆解),可以得到机器人的各个关节处于什么样的位置的时候其末端的搬运装置可以到达给定位置。这样,机器人控制策略设计者是在一个静态的、结构化的、符号化的环境中编写策略;他不需要考虑太多的突发情况,至多需要考虑一些意外,例如利用简单的传感器检测应该被搬运的工件是否在正确的位置,从而决定是否报警或者停止工作等等。对于上面描述的工作内容,程控式、集中控制式结构是非常理想的。如前所述,机器人不会遇到太多动态的、非符号化的环境变化,并且控制器能够得到足够多的、准确的环境信息。设计者可以在机器人工作前预先设计好最优的策略,然后让机器人开始工作,过程中只需要处理一些可以预料到的异常事件。6.2控制器的结构(2)主从式控制方式,即二级CPU结构。一级CPU为主机,担当系统管理、机器人语言编译和人机接口功能,同时也利用它的运算能力完成坐标变换、轨迹插补,并定时地把运算结果作为关节运动的增量送到公用内存,供二级CPU读取;二级CPU完成全部关节位置数字控制。这类系统的两个CPU总线之间基本没有联系,仅通过公用内存交换数据,是一个松耦合的关系。(3)分布式控制方式,是一种多CPU结构。目前,普遍采用这种上、下位机二级分布式结构,上位机负责整个系统管理以及运动学计算、轨迹规划等。下位机由多CPU组成,每个CPU控制一个关节运动,这些CPU和主控机联系是通过总线形式的紧耦合,这种结构的控制器工作速度和控制性能明显提高。但这些多CPU系统共有的特征都是针对具体问题而采用的功能分布式结构,即每个处理器承担固定任务,目前世界上大多数商品化机器人控制器都是这种结构。6.3运动规划在控制器的功能模块中,作业规划部分依靠操作人员的编程实现。机器人运动规划的任务是针对应用环境,得到执行器的运动轨迹(考虑障碍时也要进行关节运动的约束)。运动控制接收规划的输出信息,以运动学为基础,把运动轨迹转化为单关节的运动变量,形成关节空间的伺服控制。运功规划,是机器人控制器程序的一项重要内容。轨迹规划就是根据作业任务要求计算出满足约束条件的机器人运动轨迹。所谓的轨迹是包含时间变量的机器人的运动曲线,机器人的运动轨迹上受到的位置、速度、加速度及时间变量的约束。轨迹规划生成的是机器人的运动执行指令,是执行层级的机器人运动。规划的轨迹通常包含机器人的位置、速度、加速度等信息,机器人需要严格执行规划的运动。机器人的轨迹规划包含关节空间轨迹规划和操作空间轨迹规划两大类。由于不平稳的运动将导致机器人产生振动和冲击,使机械零部件的磨损和破坏加剧,因此进行机器人的轨迹规划时要求机器人的运动轨迹必须是光滑连续的,而且轨迹函数的一阶导数(速度)也是光滑连续的,对于一些要求,需要轨迹函数的二阶导数(加速度)也是光滑连续的。6.3运动规划机器人是由多个关节组成,关节空间的轨迹规划就是对每个关节都基于关节运动约束条件规划它的光滑运动轨迹。关节的运动约束条件包括它的运动范围、运动速度、加速度等。例如,在机器人的运动控制中,采用关节空间轨迹规划的流程如图6.4所示。首先在机器人的操作空间中确定机器人要路过的路径点(一般称之为节点),由运动学逆解方法求出对应的各个关节值;针对每个关节,在每两个相邻关节值之间规划其过渡运动轨迹,实际上就是采用光滑函数规划关节变量的平稳变化曲线;最后让每个关节在相同的时间段内执行完规划的关节轨迹,即可实现预期的机器人在操作空间中的运动。6.3.1关节空间的轨迹规划确定路径点反解关节值光滑函数拟合每个关节关节执行(运动时间相同)图6.4关节轨迹规划流程6.3运动规划三次多项式函数具有一阶、二阶微分光滑特性,所以在机器人关节空间轨迹规划中被普遍采用。6.3.1关节空间的轨迹规划
用三次多项式函数规划关节轨迹
图6.5三次多项式函数规划关节轨迹6.3运动规划三次多项式的函数的通式为:6.3.1关节空间的轨迹规划
用三次多项式函数规划关节轨迹
角度约束:
速度约束:
6.3运动规划将四个约束条件代入三次多项式函数通式(6-1),可得到下面四个方程:6.3.1关节空间的轨迹规划
用三次多项式函数规划关节轨迹
求解可得到三次多项式系数为:
6.3运动规划五次多项式函数的通式为:6.3.1关节空间的轨迹规划
用五次多项式函数规划关节轨迹
6.3运动规划将上述6个约束条件代入五次多项式通式,可得6个方程:6.3.1关节空间的轨迹规划
用五次多项式函数规划关节轨迹
6.3运动规划求解上述方程组,可得五次多项式的系数为:6.3.1关节空间的轨迹规划
用五次多项式函数规划关节轨迹
6.3运动规划求解上述方程组,可得五次多项式的系数为:6.3.1关节空间的轨迹规划
用五次多项式函数规划关节轨迹
6.3运动规划一个具有旋转关节的单杆机器人,处于静止状态时,θ=15°。期望在3s内平滑地运动关节至θ=75°。求出满足该运动的一个三次多项式的系数,并且使操作臂在目标位置为静止状态。画出关节的位置、速度和加速度随时间变化的函数曲线。6.3.1关节空间的轨迹规划
关节空间规划举例
根据三次多项式公式可以求得
6.3运动规划图6.6所示为在40Hz时,对应于该运动的关节位置、速度和加速度函数曲线。该三次函数的速度曲线为抛物线,加速度曲线为直线。6.3.1关节空间的轨迹规划
关节空间规划举例图6.6 一个三次曲线段的位置、速度和加速度曲线图,起始和终止时均为静止6.3运动规划机器人的操作空间即机器人的工作空间。6.3.2操作空间的轨迹规划在机器人的关节空间中规划其关节运动轨迹,可保证机器人的末端经过起点和终点,但在两点之间的轨迹是未知的,它依赖于每个机器人独特的运动学特性。在很多应用中需要保证机器人末端的运动轨迹,比如弧焊,这就需要在机器人的操作空间中规划机器人的轨迹。6.3运动规划6.3.2操作空间的轨迹规划操作空间的规划一般是在笛卡儿直角坐标系中进行的。规划出机器人操作空间的轨迹后,通过循环对机器人的末端定位点反解求出各关节值,即可控制机器人实现预期的操作空间运动轨迹。在笛卡尔坐标系中进行轨迹规划具有下列优点:(1)机器人的运动轨迹是直观的,容易理解和描述;(2)笛卡尔坐标系中的机器人运动可以非常容易地推广到圆柱坐标系、球坐标系以及其他正交坐标系统。在笛卡尔坐标系中,机器人的末端的轨迹可用一系列的“节点”来表示。所谓节点就是机器人操作空间轨迹上的“拐点”或关键点,可用机器人末端坐标系相对于参考系的位姿来表示。笛卡尔空间和关节空间的轨迹规划,所规划的变量不同,曲线的选择、计算的方法是相同的。笛卡尔空间规划的“点”要换算到关节空间,带来了比较大的计算量。6.4机器人编程机器人的智能没有达到可以自主完成复杂作业的情况下,机器人的工作要靠人类给它们编程实现。什么是机器人编程?机器人程序的作用是向机器人下达的期望执行作业的顺序。机器人编程语言就是为方便实现这种描述形式而开发的程序语言。所谓机器人控制,最终都可以归结为对关节角度(或速度、力矩)变化的控制。机器人控制器中已经集成了从末端执行器运动到关节参数映射的运动学和动力学算法,这部分工作不需要系统集成去考虑了。在工业应用中,我们希望机器人完成什么样的工作,怎么对它们编程呢?我们看一个如图6.7所示的机器人上下料的例子:图6.7机器人上下料6.4机器人编程我们想发出的智能指令是“把工件从A盒子中拿出来,放到B盒子中排列整齐”。机器人不会自己完成这个操作,操作要分成可以执行的步骤,用程序语言指挥机器人执行。(1)找到工件的位置(可以使用视觉传感器获得后传输给机器人控制器,也可以是人工设定);(2)执行器移动到工件位置(有障碍物的话要规划壁障);(3)抓取工件(一般通过工具I/O信号,控制执行去抓取);(4)获得放置工件的位置(可以实视觉传感器获得后传输,也可以是设定的固定位置);(5)移动工件到放置位置;(6)放下工件(通过工具I/O操作执行器)这种任务的分解叫做“任务规划”,它是由作业对象相关知识、工序分解相关知识等组成的知识库系统,研究在作业中按照作业规范自动生成机器人的动作。比如运动中间点的位置,可以根据环境内障碍物信息用避障算法计算。这些处理实现了任务的描述。6.4机器人编程我们要介绍的机器人语言,负责处理(1)—(6)中已经经过任务分解之后的动作,也称为动作描述。机器人完成指定动作所必需的功能包括三方面:(1)动作控制(2)环境信息交互(3)逻辑处理能力面向这样的需求,描述动作的机器人语言与一般通用算法语言或系统描述语言(即所谓的形式语言)具有几乎相同的语法结构。编程方式一般包括示教编程和代码语言编程两种方式。本节主要介绍动作描述型机器人语言,重点讲解语言的语法结构和应用方法。6.4机器人编程
①动作顺序信息②环境信息③机器人结构信息机器人编程的目的是向机器人下达期望执行的作业的顺序,机器人语言就是为方便实现这种描述形式而开发的程序语言,是以人们容易理解的形式把向机器人下达期望作业或动作的命令记述成用软件输人的形式语言。使机器人完成指定动作所必需的信息主要包括:6.4.1机器人编程级别6.4机器人编程(1)示教早期的机器人都是通过一种我们称之为示教的方法进行编程的,这种方法包括,移动机人到一个期望目标点,并在存贮器中将这个位置记录下来,使得顺序控制器可以在再现时读取这个位置。在示教阶段,用户通过手或者通过示教盒交互方式来操纵机器人。如图6.8所示,示教盒是手持的按钮盒,它可以控制每一个操作臂关节或者每一个笛卡儿自由度。这种控制器可以进行调试和分步执行,因此,能够输入包含逻辑功能的简单程序。一些示教盒带有字符显示,并且在性能上接近复杂的手持终端。图示为一个操作者正在使用一个示教盒对一台大型工业机器人进行编程。这些信息可以是现场检测反馈的,也可以是存储在计算机内供调用的。实际上除了使用实际机器人实际作业的示教再现方式、借助于计算机内部模型计算所有机器人动作的CAD/CAM方式之外,其他多种方式是介于两者之间的。从语言的控制级别来看,机器人编程可以分为下述的三个级别:6.4.1机器人编程级别图6.8机器人示教6.4机器人编程自从廉价且功能强大的计算机出现以来,这种通过计算机语言编写程序的可编程机器人日益成为主流。通常,这些计算机编程语言的特征是可应用于各种可编程操作臂,因此称为机器人编程语言(RPLs)。大多数机器人系统配备了机器人编程语言,但同时也保留了示教盒接口。(2)动作级机器人编程语言6.4.1机器人编程级别机器人编程语言常用的是专用操作语言。这类机器人编程语言是作为全新的语言开发出来的。虽然这类语言专门用于机器人领域,相比通用的计算机编程语言要欠缺一些功能。例如Unimation公司开发的用来控制工业机器人的VAL语言,如果作为通用的计算机语言,它的功能是相当弱的。例如,它不支持浮点型数据或字符串,并且子程序不能传递函数。Stanford大学开发的AL语言也是专用操作语言的一个例子。尽管AL编程语言现在已经过时了,但是有些功能在当前的许多语言中仍然不具备(如力控制、并联机构控制)。因为AL语言是在学校环境中开发出来的,因此有许多参考书介绍了这种语言。由于上述原因,我们在讨论中仍将继续参考这种语言。除专用语言以外,应用已有计算机语言的机器人程序库也是常用的方法。这种机器人编程语言的开发始于一种流行的计算机语言(例如Pascal语言),并且附加了一个机器人专用的子程序库。这样,用户只要写一段Pascal程序就可以根据机器人的控制要求访问预定义的子程序包。由NASA的喷气机推进实验室开发的JARS语言是这样一种基于Pascal语言的机器人编程语言。美国Cimflex公司的AR-BASIC语言是一个标准BASIC应用程序的子程序库。6.4机器人编程机器人编程方法的第三个发展阶段是任务级编程语言。这种语言允许用户直接给定期望任务的子目标指令,而不是详细指定机器人的每一个动作细节。与动作级机器人编程语言相比,在这样的系统中,用户能够在更高水平上给出应用程序的指令。一个任务级机器人编程系统必须拥有自动执行许多任务规划的能力。例如,如果已经发出“抓住螺钉”的指令,系统必须为操作臂规划一个路径,使其避免与周围的任何障碍物碰撞,必须在螺钉上自动选择合适的抓取位置,且必须抓住螺钉。相反,对于动作级机器人编程语言来说,所有的这些选择都需要编程者来完成。(3)任务级编程语言6.4.1机器人编程级别动作级机器人编程语言与任务级别编程语言之间的区别是非常显著的。虽然对动作级机器人编程语言的不断改善有助于使编程简化,但是不能认为这些改进是一个任务级编程系统的组成部分。至今还没有真正的操作臂任务级编程语言,但是它已经成为当今一个活跃的研究课题。6.4机器人编程我们以工业机械手为例介绍机器人语言的功能。编程语言描述的机器人动作,包括两种控制路径的方式:一种是连续路径控制(ContinuousPathcontrol),控制机器人全部路径;一种是点对点控制(Point-To-PointControl),控制机器人运动路径上的有限个经由点。典型的连续路径控制,是对喷漆作业和弧焊作业机器人的控制;典型的点对点控制,如对上下料和装配作业机器人的控制。在连续路径控制方式中,实际上还包括一种所谓的“伪连续路径控制”,它把点对点控制中的插补点间隔取得很小,从而生成近似连续的曲线。轨迹插补的方式是连续路径控制的关键,不同插补方式,会产生不同的运动轨迹。6.4.2机器人语言的功能6.4机器人编程(1)关节角直线插补6.4.2机器人语言的功能首先将点PT1和点PT2,变换到关节角坐标系中,用速度除点PT1和点PT2在直角坐标系内的距离,以确定经由点PT1到PT2的时间。以各个关节角为纵轴,时间为横轴的图形上,在PT1-PT2两点之间进行对时间的直线插补运算。假设两个点的通过时间为T,起始点和终点的关节角分别为θ[PT1]和θ[PT2],在关节角坐标系内的直线插补运算公式为:
6.4机器人编程(2)直角坐标系直线插补6.4.2机器人语言的功能首先求得通过时间T,然后在直角坐标系内针对点PT1和点PT2之间进行插补运算,运算公式为
再选择适当的点数进行逆运动学变换,得到关节角θ。在大多数情况下,选择位置指令指定的时间间隔来分隔点数,可以直接计算相应关节角。必要时允许在关节角坐标系内再次做直线插补运算,然后向伺服系统输出命令。6.4机器人编程(3)直角坐标系圆弧插补6.4.2机器人语言的功能圆弧插补是机器人编程指令中常用的插补方式。几何学确定圆弧有多种方法,例如,指定圆心和圆周上的一点及其方向,指定三个圆周点等。用这些方法可以在直角坐标系内定义圆的方程。与前述在直角坐标系上插补的方式相同,在圆周上以适当的间隔进行逆运动学变换,得到坐标系内的插补点。后面的步骤与直角坐标系内的插补方式一样。上述的路径控制是机器人编程语言的核心功能。机器人语言的命令集大致有表6.1中所列的几种。除机器人动作命令外,和一些通用的程序语言的差别不大。不同机器人语言的功能各不相同,大多数工业机器人语言却具有共同的功能。机器人指令集功能1移动插补供能2数据结构和运算3程序控制功能4数值运算功能5输入输出和中断6文件管理功能7其他功能表6.1机器人指令功能6.4机器人编程1)移动插补功能6.4.2机器人语言的功能移动插补功能是机器人语言所特有的,主要可以分成如下几种:①速度设定(JSPEED,SPEED)②路径插补(JMOVE,LMOVE,VMOVE,CMOVE,CMOVE3,ATRAN,ITRAN)③动作定时(PAUSE,DELAY)④定位精度(COARSE,FINE)⑤手部控制(OPEN,CLOSE)其中,JMOVE是在关节角坐标系中的直接插补指令,LMOVE是在作业坐标系(通常为三维直角坐标系)中的直接插补指令。在AL语言中,通过with语句可以描述力控制和沿着轴的控制,不过这种功能应用的例子很少。6.4机器人编程2)数据结构及其运算功能6.4.2机器人语言的功能一般说来,通用的数据结构有字符串和数组(最多为二维)。机器人语言应该增加专用数据结构,通常如坐标变换矩阵,三维向量、点数据(位置和姿态)、点数据列等。向量的运算包含加减、内积等。3)程序控制功能在面向顺序处理的通用程序语言中,为了能够选择下一步处理,或者执行反复处理,设计了程序控制语句。但是在生产现场常用的指令级语言中,只需要采用基本汇编语句、GOTO语句、计数器控制语句等即可控制程序流程。现有的机器人语言中,多数具有主程序和子程序,能对过程、子程序等进行说明。4)数值运算功能与通用程序语言相比,机器人语言的数值运算功能和BASIC语言几乎具有同等水平。不过,机器人语言往往追加一些频繁使用的特殊功能,反之又去除了一些高级数学运算功能(如对数、阶乘等)。6.4机器人编程5)输入输出和中断功能6.4.2机器人语言的功能在顺序控制的程序中,与外部传感器信息的输人输出交互和中断处理是最为重要的功能,每一种机器人语言都在这方面下了不少工夫。机器人与周边装置的连接点很多,因此机器人都具有现成的数字输人输出接口,连接能力从16点到512点。机器人一般还备有标准RS-232串行口和以太网接口。虽然中断功能十分必要,但从实际使用的情况看,工业机器人通常都按照顺序重复作业。中断功能至多能处理子程序的分支和返回,而且屏蔽性较低。多数工业机器人还设1—4点可组态定时器。6)文件管理功能机器人语言应处理的文件包括程序本体和位置姿态数据集。为了使处理机器人语言的计算机能在工厂恶劣的环境下可靠运行,文件应该尽量简单。许多机器人语言都有程序读出、写人、示教数据集(示教点群)的编辑功能。6.4机器人编程7)其他功能6.4.2机器人语言的功能机器人语言的其他功能还有:①工具变换、基本坐标设定和系统的初始化。②作业条件(例如,焊接条件)的设置。③图像的处理。④力传感器的管理等。这些功能虽然很重要,但不同机器人语言的表示方法和功能结构不尽相同。6.5控制系统中的通信机器人控制器的结构发展到分布式这一阶段,是以网络通信技术为支撑的。各种通信方式除了应用于控制器的不同处理模块之间,还应用于机器人之间、机器人和其他设备之间、机器人和人的交互这些场景。因此,本小节介绍一下机器人控制器及其应用系统中目前常用的一些通信方式。6.5控制系统中的通信RS-232是美国电子工业联盟(EIA)制定的串行数据通信的接口标准,原始编号全称是EIA-RS-232。在PC机上的COM1、COM2接口,就是RS-232C接口。RS-232对电气特性、逻辑电平和各种信号线功能都作了规定。6.5.1RS-232在RS-232标准中,字符是以一串行的位串方式传输,优点是传输线少,配线简单,发送距离可以较远。最常用的编码格式是图6.9所示的异步起停(asynchronousstart-stop)格式,它使用一个起始位后面紧跟8个数据位,然后是可选的奇偶校验位,最后是一或两个停止位。所以发送一个字符至少需要10比特,带来的方便是发送信号的速率以10划分。图6.9RS232的帧格式6.5控制系统中的通信在RS-232标准中定义了逻辑1和逻辑0电压级数,以及标准的传输速率和连接器类型。RS-232的电平以信号地为基准,规定接近零的电平是无效的。逻辑1为负电平,逻辑0为正电平。电平有效范围在±3至±15伏之间。根据设备供电电源的不同,正负电平的取值可能为±5、±10、±12和±15这样的电平。6.5.1RS-2326.5控制系统中的通信RS-232通信的接口标准有图6.10所示的25针的DB25和9针的DB9.比较常用的是DB9形式。DB9的引脚定义如下:6.5.1RS-2321DCD载波检测2RXD接收数据3TXD发送数据4DTR数据终端准备好5SGND信号地线6DSR数据准备好7RTS请求发送8CTS清除发送9RI振铃提示图6.10DB9接口6.5控制系统中的通信RS-232使用时比较常用的是2、3、5几个信号(图6.11a)。RS-232接口可以实现点对点的通信方式,但这种方式不能实现联网功能。于是,为了解决这个问题,一个新的标准RS-485(图6.11b)产生了。RS-485的数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B。通常情况下,发送驱动器A、B之间的正电平在+2~+6V,是一个逻辑状态,负电平在-2~-6V,是另一个逻辑状态。6.5.1RS-232另一种标准RS-422(图6.11c)的电气性能与RS-485完全一样。主要的区别在于:RS-422有4根信号线:两根发送、两根接收。由于RS-422的收与发是分开的所以可以同时收和发(全双工),也正因为全双工要求收发要有单独的信道,所以RS-422适用于两个站之间通信、星型网、环网,不可用于总线网;RS-485只有2根信号线,所以只能工作在半双工模式,常用于总线网。(a)
(b)
(c)图6.11RS-232、RS-422和RS-4856.5控制系统中的通信传输速率方面:RS-232波特率可以达到115.2kb/s;RS-485和RS-422最大传输速率为10Mb/s,最大的通信距离约为1200米,传输速率与传输距离成反比,在100kb/S的传输速率下,才可以达到最大的通信距离。6.5.1RS-2326.5控制系统中的通信USB(UniversalSerialBus)全称通用串口总线,是为解决即插即用需求而诞生,支持热插拔。USB协议版本有USB1.0、USB1.1、USB2.0、USB3.1等。USB是由Compaq,DEC,IBM,Intel,Mi-crosoft,NEC,Northen-telecom等7家公司开发和制定,结成USBImplementorsForum并予以普及。6.5.2USBUSB的一个核心设计理念就是,为PC机上各种各样的接口提供一种统一的解决方案。在早期的PC机上,有串口、并口,就连鼠标键盘、游戏手柄都有特定的接口。而且这些接口都不支持热插拔,必须在PC机开机之前插入设备才可以正常使用。此外,这些不同的接口还需要占用宝贵的CPU资源(比如硬件中断、DMA通道等)。已经普及的USB协议淘汰了传统计算机上的串口、并口,也为各种外设提供了一种支持热插拔的接口方式,是目前计算机最常用的外设扩展方式之一,它也成为了目前键盘鼠标手柄的默认连接方式。在USB2.0的年代,有低速(LowSpeed)、全速(FullSpeed)和高速(HighSpeed)三种设备。其中低速和全速设备是在USB1.0和USB1.1中就已经定义的设备,传输速率分别为1.5Mbit/s和12Mbit/s,USB2.0做到了向下兼容,定义了高速设备,速度可以达到480Mbit/s。为了满足对通信速率日益增长的需求,在2008年USB-IF推出了USB3.0的标准,可以达到5Gbit/s的速率。6.5控制系统中的通信标准的USB2.0接口和线缆都是4线的,如图6.12所示。其中VBUS和GND分别是电源线和地线,用于给一些USB设备供电。VBUS通常提供的是5V的电压。D+和D-则是一对差分双绞线,用于传送数据,这与RS-485串口类似,只是线上的电压不一样。低速和全速输出的低电平电压0~0.3V;输出高电平电压2.8V~3.6V;高速输出的差分低电平电压-10~+10mV;输出差分高电平电压360~440mV。USB的传输距离比较短,一般是3-5米。如果需要长距离传输,需要专用的信号增强装置。6.5.2USB图6.12USB的接口和连接器6.5控制系统中的通信以太网(Ethernet)是一种计算机局域网技术。IEEE组织的IEEE802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问控制的内容。以太网是目前应用最普遍的局域网技术。以太网的标准拓扑结构为总线型拓扑,但目前的快速以太网(100BASE-T、1000BASE-T标准)为了减少冲突,将能提高的网络速度和使用效率最大化,使用交换机(Switchhub)进行网络连接和组织。如此一来,以太网的拓扑结构就成了星型;但在逻辑上,以太网仍然使用总线型拓扑和CSMA/CD(CarrierSenseMultipleAccess/CollisionDetection,即载波多重访问/碰撞侦测)的总线技术。6.5.3Ethernet6.5控制系统中的通信国际标准化机构制定的网络结构的模型把以太网的通信功能被分为如图6.13所示的七层,各层都定义了标准功能模块。其中第一层(物理层)是为把数据传送到通信线路进行电气变换和机械作业的层。针脚的形状以及电缆的特性等也在第一层里规定。第二层(数据链路层)确保与通信对象的物理通信线路,校验通信线路中传送数据的错误。第三层(网络层)选择数据达到对方所经过的通信线路,以及线路内部地址的管理。第四层(传送层)进行数据压缩、错误订正和再发送控制,以便使数据正确且高效地传送到对方。第五层(对话层)负责通信程序彼此发送和接收数据的假想通路的建立和释放。第六层(表示层)把从第五层接手的数据变成用户容易理解的形式,并把第七层送来的数据变成适合通信的形式。第七层(应用层)把利用数据通信的各种服务提供给其他程序。6.5.3Ethernet图6.13以太网的分层6.5控制系统中的通信WiFi是无线保真的缩写,它的全称是WirelessFidelity。WiFi是无线局域网联盟的一个商标,该商标仅保障使用该商标的商品互相之间可以合作,与标准本身实际上没有关系,但因为WiFi
主要采用802.11b协议,因此人们逐渐习惯用WiFi来称呼802.11b协议。它的最大优点就是传输速度较高,可以达到11Mbps,也已有的各种802.11DSSS设备兼容。Wifi有效距离也很长,商用设备的传输距离可以达到300米;家庭设备的传输距离一般为10~50米左右。6.5.4WiFiWLAN是无线局域网络的简称,全称为WirelessLocalAreaNetworks,是一种利用无线技术进行数据传输的系统。该技术的出现能够弥补有线局域网络的不足,以达到网络延伸的目的。从包含关系上来说,WiFi是WLAN的一个标准,WiFi包含于WLAN中,属于采用WLAN协议中的一项新技术。WiFi与蓝牙技术一样,同属于在办公室和家庭中使用的短距离无线技术。同蓝牙技术相比,它具备更高的传输速率,更远的传播距离,已经广泛应用于笔记本、手机、汽车等广大领域中。6.5控制系统中的通信IEEE802.11是针对WiFi技术制定的一系列标准,第一个版本发表于1997年,其中定义了介质访问接入控制层和物理层。物理层定义了工作在2.4GHz的ISM频段上的两种无线调频方式和一种红外传输的方式,总数据传输速率设计为2Mbps。1999年加上了两个补充版本:802.11a定义了一个在5GHzISM频段上的数据传输速率可达54Mbps的物理层,802.11b定义了一个在2.4GHz的ISM频段上但数据传输速率高达11Mbps的物理层。802.11g在2003年7月被通过,其载波的频率为2.4GHz(跟802.11b相同),传输速率达54Mbps。802.11g的设备向下与802.11b兼容。其后有些无线路由器厂商因应市场需要而在IEEE802.11g的标准上另行开发新标准,并将理论传输速度提升至108Mbit/s或125Mbit/s。IEEE802.11n是2004年1月时IEEE宣布组成一个新的单位来发展的新的802.11标准,于2009年9月正式批准,最大传输速度理论值为600Mbps,并且能够传输更远的距离。IEEE802.11ac是一个正在发展中的802.11无线计算机网络通信标准,它通过5GHz频带进行无线局域网(WLAN)通信,在理论上,它能够提供高达1Gbps的传输速率,进行多站式无线局域网(WLAN)通信。6.5.4WiFi6.5控制系统中的通信除了上述的标准,另外有一个被称为IEEE802.11b+的技术,通过PBCC(PacketBinaryConvolutionalCode)技术在IEEE802.11b(2.4GHz频段)基础上提供22Mbps的数据传输速率。但这事实上并不是一个IEEE的公开标准,而是一项产权私有的技术,产权属于德州仪器。IEEE的一个工作组TGad与无线千兆比特联盟联合提出802.11ad的标准,即在60GHz的频段上面使用大约2GHz的频谱带宽,实现近距离范围内高达7Gbps的传输速率。6.5.4WiFi为了尽量减少数据的传输碰撞和重试发送,防止各站点无序地争用信道,无线局域网中采用了载波监听多路访问/冲突避免协议(CSMA/CA)。CSMA/CA通信方式将时间域的划分与帧格式紧密联系起来,保证某一时刻只有一个站点发送,实现了网络系统的集中控制。送出数据前,监听媒体状态,等没有人使用媒体,维持一段时间后,再等待一段随机的时间后依然没有人使用,才送出数据。由于每个设备采用的随机时间不同,所以可以减少冲突的机会。WiFi是由无线接入点AP(AccessPoint)、站点(Station)等组成的无线网络。AP一般称为网络桥接器或接入点,它是当作传统的有线局域网络与无线局域网络之间的桥梁,因此任何一台装有无线网卡的PC均可透过AP去分享有线局域网络甚至广域网络的资源。它的工作原理相当于一个内置无线发射器的HUB或路由,而无线网卡则是负责接收由AP所发射信号的客户端设备。6.5控制系统中的通信蓝牙这个名称来自于第十世纪的一位丹麦国王哈拉尔蓝牙王,因为国王喜欢吃蓝莓,吃到牙齿都是蓝色的所以叫蓝牙。后来人们就用它的名字命名一种无线通讯技术,就是我们现在使用的蓝牙。6.5.5蓝牙蓝牙由阿里新公司研发,目前其发展主要由BluetoothSIG控制,该组织现在有200多家联盟成员公司以及约6000家应用成员企业。6.5控制系统中的通信蓝牙的主要技术特性介绍如下:6.5.5蓝牙工作频段:2.4GHz的工科医(ISM)频段,无需申请许可证。大多数国家使用79个频点,载频为(2402+k)MHz(k=0,1,2…78),载频间隔1MHz。采用时分双工方式。传输速率为1Mb/s。采用跳频技术,跳频速率为1600跳/秒,在建链时(包括寻呼和查询)提高为3200跳/秒。蓝牙通过快跳频和短分组技术减少同频干扰,保证传输的可靠性。支持电路交换和分组交换业务:蓝牙支持实时的同步定向联接(SCO链路)和非实时的异步不定向联接(ACL链路)。前者主要传送语音等实时性强的信息,后者以数据包为主。语音和数据可以单独或同时传输。蓝牙支持一个异步数据通道,或三个并发的同步话音通道,或同时传送异步数据和同步话音的通道。每个话音通道支持64kbps的同步话音;异步通道支持723.2/57.6kbps的非对称双工通信或433.9kbps的对称全双工通信。支持点对点及点对多点通信:蓝牙设备按特定方式可组成两种网络:微微网(Piconet)和分布式网络(Scatternet),其中微微网的建立由两台设备的连接开始,最多可由八台设备组成。在一个微微网中,只有一台为主设备(Master),其它均为从设备(Slave),不同的主从设备对可以采用不同的链接方式,在一次通信中,链接方式也可以任意改变。几个相互独立的微微网以特定方式链接在一起便构成了分布式网络。所有的蓝牙设备都是对等的,所以在蓝牙中没有基站的概念。6.5控制系统中的通信6.5.5蓝牙工作距离:蓝牙设备分为三个功率等级,分别是:100mW(20dBm)、2.5mW(4dBm)和1mW(0dBm),相应的有效工作范围为:100米、10米和1米。蓝牙系统由射频单元、基带资源管理器、链路管理器和主机组成。射频层:负责数据和语音的发送和接收,特点是短距离、低功耗。蓝牙天线一般体积小、重量轻,属于微带天线。基带层:进行射频信号与数字或语音信号的相互转化,实现基带协议和其它的底层连接规程。链路管理层:负责管理蓝牙设备之间的通信,实现链路的建立、验证、链路配置等操作。协议的实现代码称为协议栈,主机运行蓝牙协议栈。6.5控制系统中的通信6.5.6IrDAIrDA(InfraredDataAssociation)是1993年,由50多个公司共同推进制定的红外数据传输协议。红外通信是利用950nm近红外波段的红外线作为传递信息的媒体。发送端采用脉位调制(PPM)方式,将二进制数字信号调制成某一频率的脉冲序列,并驱动红外发射管以光脉冲的形式发送出去;接收端将接收到的光脉转换成电信号,再经过放大、滤波等处理后送给解调电路进行解调,还原为二进制数字信号后输出。红外数据通信容易受到外界的干扰,只有符合一定格式的数据才是正确的数据。为此,IrDA标准指定三个基本的规范和协议,包括:物理层规范(PhysicalLayerLinkSpecification),连接建立协议(LinkAccessProtocol:IrLAP)和连接管理协议(LinkManagementProtocol:IrLMP)。物理层规范制定了红外通信硬件设计上的目标和要求,IrLAP和IrLMP为两个软件层,负责对连接进行设置、管理和维护。在IrLAP和IrLMP基础上,针对一些特定的红外通信应用领域,IrDA还陆续发布了一些更高级别的红外协议,如TinyTP、IrOBEX、IrCOMM、IrLAN、IrTran-P等。IrDA的规格共有3种:1.0版的通信距离lm,最大速度115.2Kbit/s。1.1版的通信距离小于lm,最大速度4Mbit/s。1.2版(低耗电版)的通信距离小于0.2m,最大速度115.2Kbit/s。6.5控制系统中的通信6.5.7CANCAN是ControllerAreaNetwork的缩写,是ISO国际标准化的串行通信协议。在汽车产业中,出于对安全性、舒适性、方便性、低功耗、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986年德国电气商博世公司开发出面向汽车的CAN通信协议。此后,CAN通过ISO11898及ISO11519进行了标准化,在工业控制领域广泛应用。CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。采用这种方法的优点可使网络内的节点个数在理论上不受限制。数据块的标识符可由11位或29位二进制数组成。这种按数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。数据段长度最多为8个字节,不会占用总线时间过长,从而保证了通信的实时性;还可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。6.5控制系统中的通信6.5.7CAN上述设计行程CAN总线特点:(1)数据通信没有主从之分,任意一个节点可以向任何其他(一个或多个)节点发起数据通信,靠各个节点信息优先级先后顺序来决定通信次序,高优先级节点信息在134μs通信。
(2)
多个节点同时发起通信时,优先级低的避让优先级高的,不会对通信线路造成拥塞。
(3)
通信距离最远可达10km(速率低于5Kbps)速率可达到1Mbps(通信距离小于40m)。(4)CAN总线传输介质可以是双绞线,同轴电缆。CAN总线适用于大数据量短距离通信或者长距离小数据量,实时性要求比较高,多主多从或者各个节点平等的现场中使用。6.5控制系统中的通信6.5.7CANCAN协议中的一个重要概念是位仲裁。CAN总线报文的优先级结合在11位标识符中,具有最低二进制数的标识符有最高的优先级。这种优先级一旦在系统设计时被确立后就不能更改。总线读取中的冲突可通过位仲裁解决。例如标识符0111111、0100100、0100111发生位仲裁时,0100100报文将会被跟踪,而其余报文会被丢弃。具体过程为:当几个站同时发送报文时,站1的报文标识符为0111111,站2的报文标识符为0100100,站3的报文标识符为0100111,所有标识符都有相同的两位01,直到第3位进行比较时,站1的报文被丢弃,因为它的第3位为高,而其它两个站的报文第3位为低。站2和站3报文的3、4、5位相同,直到第7位时,站3的报文才被丢弃。仲裁过程持续跟踪最后获得总线读取权的站的报文。在此例中,站2的报文被跟踪。这种非破坏性位仲裁方法的优点在于,在网络最终确定哪一个站的报文被传送以前,报文的起始部分已经在网络上传送了。所有未获得总线读取权的站都成为具有最高优先权报文的接收站,并且不会在总线再次空闲前发送报文。第六章思考题1、每一个工业机器人都有一个控制器。查找资料,简要介绍一款目前六自由度工业机械臂的控制器的主要结构和功能?能不能分析一下该控制器中实现的关于机器人控制的主要算法?2、对于本章“关节空间规划例题”所介绍的规划任务,请编写程序实现该功能。进一步改进程序,采用三次曲线的方式,怎么能够实现机械臂运动轨迹的连续控制?3、结合机器人运动中正、逆解的相关知识,阐述拖动示教在机器人控制程序中的实现过程?4、用一种机器人编程语言写一段程序:在货架上拿取零件,如果货架上没有零件则等待;拿取零件后,放置在加工中心的上料区位置,如果上料区已经有零件,则等待。机器人不断重复这个过程。5、机器人控制系统的通信,包括控制系统和内部传感器、驱动器的通信,还包括控制系统和机器人外部的通信(比如和外部的调度系统、外部的传感器)。如果你设计控制器并选择通信方式,有哪些需要通信的接口?这些接口你会选择那种通信协议?THANKS!机器人工程基础7.1概述7.2ROS入门7.3进一步理解ROS中的概念和机制第七章机器人操作系统7.4ROS的编程应用机器人的开发平台包括硬件平台和软件平台。机器人硬件平台随机器人产品的功能不同而各有差异,很难统一,给机器人的开发和应用带来了麻烦。因此,开发者希望机器人软件平台能够对机器人应用中使用的硬件进行抽象化。从目前机器人发展的水平来看,这种抽象化包括机器人工程中常用的传感、识别、实时自定位、绘图(SLAM)、导航(Navigation)和机械臂控制(Manipulation)等功能,还包含功能包管理、开发环境所需的库、多种开发/调试工具等。经过这样的软件抽象后,即使没有硬件专业知识,也可以用软件平台来开发机器人应用程序。机器人操作系统就是这样的一个软件平台。7.1概述机器人操作系统ROS(RobotOperatingSystem)是一种应用于机器人及相关领域的开源元级操作系统。如图7.1所示,ROS是一个应用程序和分布式计算资源之间的虚拟化层,它运用分布式计算资源执行调度、加载、监视、错误处理等任务。它并不是像Windows、Linux和嵌入式操作系统一样的计算机硬件和应用软件之间的平台,它是类似于Player,YARP,Orocos,CARMEN,Orca,MOOS和MicrosoftRoboticsStudio等软件的一种“机器人架构”。它提供类似操作系统所提供的功能,包含硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间的消息传递、程序发行包管理。它还提供一些工具程序和库,用于获取、建立、编写和运行多机整合的程序。图7.1作为元操作系统的ROSROS是一些包、软件工具的集合。使用ROS前需要先安装诸如Ubuntu的Linux发行版操作系统,以使用进程管理系统、文件系统、用户界面、编译器、线程模型等。ROS是基于传统的操作系统,通过硬件抽象概念支持用户开发机器人应用程序。它的体系架构是跨机器通信的,提供了系统实时数据分析、编程语言独立等功能。ROS开发和管理基于元操作系统的各种应用功能包,并拥有一个负责分享用户所开发的功能包的生态系统(Ecosystem)。7.1概述7.1.1为什么使用机器人操作系统机器人操作系统ROS的一个显著特点不需要完全重新开发已有的系统和程序,而是通过加入一些标准化的代码就能对已有的非ROS程序进行ROS化的转化。并且ROS提供很多通用的工具和软件,开发者可以专注于自己感兴趣的部分,可以节省开发和维护所需的时间。ROS广泛应用可以归结为下述五方面的优点。7.1概述第一,程序的可重用性。随着机器人研究的发展,诞生了一批解决导航、路径规划、建图等通用任务的算法。ROS用功能包的方式支持这些算法应用于新的领域,且不必重复开发。相应的,开发者可以将自己开发出来的程序和其他人分享使用。比如,美国的NASA为了控制宇宙空间站里使用的Robonaout2机器人,除了使用自行开发的程序,还结合了ROS中提供的各种算法资源,得以在宇宙中执行任务。第二,基于通信机制,支持分布式计算。机器人控制需要在同一个框架里编写很多程序:传感器或舵机的硬件驱动,传感和识别处理,动作控制等,即影响了程序的重用,也给程序的调试造成困难。ROS采用通信的方法,把不同的程序模块划分为最小执行单元节点,节点之间发送和接收数据。这样的结构方便支持分布式计算。机器人往往需要多个计算机同时运行多个进程,例如:一些机器人搭载多台计算机,每台计算机用于控制机器人的部分驱动器或传感器;即使只有一台计算机,通常将程序划分为独立运行且相互协作的小模块来完成复杂的控制任务;多个机器人协同完成一个任务时,需要互相通信来支撑任务的完成;用户通过台式机、笔记本或者移动设备发送指令控制机器人,这种人机交互接口可以认为是机器人软件的一部分。ROS采用相对简单、完备的机制实现了单计算机或者多计算机不同进程间的通信。7.1.1为什么使用机器人操作系统7.1概述第三,提供开发工具,方便快速开发测试。为了管理复杂的软件框架,ROS利用了大量的小工具去编译和运行多种多样的组件,而不是构建一个庞大的开发和运行环境。
这些工具担任了各种各样的任务,例如,组织源代码的结构,获取和设置配置参数,形象化端对端的拓扑连接,生动的描绘信息数据,自动生成文档等等。ROS通过为机器人开发提供必要的软件工具,使开发的便利性达到最大化。ROS提供调试相关2维绘图和3维视觉化工具RViz。在机器人开发中,通过遵守规定的信息格式,可以直接实现机器人的模型。工具提供的3D仿真器,方便实现空间模型的仿真实验。ROS另外提供了一种简单的方法,可以在调试过程中记录传感器数据及其他类型的消息数据,并在试验后按时间戳回放。通过这种方式,每次运行机器人可以获得更多的测试机会。第四,活跃的开发者社区。ROS所有的源代码都是公开发布的,ROS以分布式的关系遵循着BSD许可,也就是说允许各种商业和非商业的工程使用源码开发。较为封闭机器人学界和机器人业界都因为ROS的推广应用,开始重视互相之间的合作。到2017年自愿开发和共享的功能包数量超过了5,000个,而解释如何使用它的wiki页面超过1.7万个,这些都由用户自愿参与的。在社区中非常重要的问题和答案已有超过24,000个,用户们通过建立互惠互利的开发者社区推动机器人开发资源的共享。7.1.1为什么使用机器人操作系统7.1概述第五,生态系统的形成。智能手机平台革命是由Android和iOS等软件平台创造的生态系统推进的。个人计算机领域也曾有各种各样的硬件制造商,而将他们结合在一起的是微软的Windows操作系统和免费的Linux。这个过程和自然界的生态系统的发展类似,这一趋势在机器人领域延续。起初,各种硬件技术泛滥,却没有能整合它们的操作系统。在ROS正在形成的生态系统里,机器人硬件领域的开发者、ROS开发运营团队、应用软件开发者以及用户也能像机器人公司和传感器公司一样从中受益。随着逐渐增多的用户数量和机器人公司,以及急剧增加的相关工具和库,不久的将来将会形成一个圆满的生态系统(图7.2)。图7.2ROS的开发生态7.1.2ROS的特点7.1概述正如上一小节所述的优点,ROS的目标是“建立一个在全球范围内协作开发机器人软件的环境”。ROS致力于将机器人研究和开发中的代码重用做到最大化,而不是做所谓的机器人软件平台、中间件和框架。为了支持这个目标,ROS具有以下主要特征:(1)ROS的运行架构是一种使用通信实现模块间P2P的松耦合网络连接的处理架构。它执行若干类型的通讯,包括基于服务的同步RPC(远程过程调用)通讯、基于Topic的异步数据流通讯,还有参数服务器上的数据存储。但是ROS本身并没有实时性。ROS底层的通信是通过HTTP完成的,因此ROS内核本质上是一个HTTP服务器,它的地址一般是
,即本机的11311端口。当需要连接到另一台计算机上运行的ROS时,只要连上该机的11311端口即可。(2)ROS运行机制。ROS内核(roscore)是ROS运行的基础,它里面有参数服务器(parameterserver)。一个运行中的ROS有且仅有一个ROS内核,ROS上的一切都依赖于这个内核。内核的主要功能是通信机制的管理和调度。7.1.2ROS的特点7.1概述(3)分布式进程。
如图7.3所示,一个使用ROS系统的程序包括一系列进程,这些进程在运行过程中通过端对端的结构联系。它以可执行进程的最小单位(节点,Node)的形式编程,每个进程独立运行,并有机地通过通信收发数据。
ROS的点对点设计以及服务和节点管理器等机制可以分散由计算机视觉和语音识别等功能带来的实时计算压力,能够适应多机器人协作遇到的挑战。图7.3ROS节点结构7.1.2ROS的特点7.1概述(4)支持多种编程语言。ROS设计成了语言中立性的框架结构,端对端的连接和配置利用XML-RPC机制实现,XML-RPC也包含了大多数主要语言的合理实现描述,支持许多种不同的语言。它可以用于JAVA、C#、Lua和Ruby等语言,也可以用于机器人中常用的编程语言,如Python、C++和Lisp。为了支持交叉语言,ROS利用了简单的、语言无关的接口定义语言去描述模块之间的消息传送。这种支持使得在全球范围开发机器人软件的合作成为可能,并且机器人研究和开发过程中的代码重用变得越来越普遍。(5)功能包管理。ROS以功能包的形式管理着多个进程,开发和使用起来很方便,并且很容易共享、修改和重新发布。ROS建立的系统具有模块化的特点,各模块中的代码可以单独编译,而且编译使用的CMake工具使它实现精简的理念。ROS基本将复杂的代码封装在库里,只是创建了一些小的应用程序为ROS显示库的功能,就允许了对简单的代码超越原型进行移植和重新使用。ROS利用了很多现在已经存在的开源项目的代码,比如说从Player项目中借鉴了驱动、运动控制和仿真方面的代码,从OpenCV中借鉴了视觉算法方面的代码,从OpenRAVE借鉴了规划算法的内容。在每一个实例中,ROS实现了多种多样的配置选项以及和各软件之间的数据通信,也同时对它们进行微小的包装和改动。ROS可以不断的从社区维护中升级,包括从其他的软件库、应用补丁中升级ROS的源代码。7.1.3ROS的版本7.1概述WillowGarage在2007年承接了斯坦福大学人工智能研究所以Switchyard开始的机器人软件框架之后,以ROS(RobotOperatingSystem)的名称延续了开发工作。第六次发布版ROSGroovyGalapagos是WillowGarage的最后的版本。WillowGarage在2013年进入商业服务机器人领域之后,遇到诸多困难并分解为多个创业公司。ROS被转让给开源机器人工程基金会(OSRF,OpenSourceRoboticsFoundation)。之后OSRF继续发布了4个新版本。从2017年5月开始OSRF更名为OpenRobotics(图7.4),开发、运营和管理ROS。在最近的2018年5月23日发布了ROS的第十二版ROSMelodicMorenia。2020年五月发布最新版的ROSNoeticNinjemys。ROS的每个版本的名称的首字母是按照英文字母的顺序来制定的,并将乌龟(Turtle)作为图标(图7.5)。ROS的版本图7.4OSRF和OpenRobotics的标志图7.5ROS的历代版本7.2ROS入门ROS是运行在PC上的一套便于机器人开发的机制,它通常用作上位机控制机器人,也可以搭载在机器人上作为主控(例如Turtlebot机器人使用了搭载ROS的笔记本电脑作为主控)。ROS的运行依赖于宿主系统,这个宿主系统通常是Ubuntu。因为它在Ubuntu有现成的软件仓库,但是事实上只要是Linux/Unix都可以从源代码编译安装。ROS系统代码主要有两大部分,一部分是核心部分,一般称为main,主要是WillowGarage公司和一些开发者设计与维护。它们提供一些分布式计算的基本工具,以及整个ROS系统核心部分的程序编写。这部分内容被存储在计算机的安装文件中。另外一部分是全球范围的代码,被称为universe,是各种库的代码,如OpenCV、PCL等,由不同国家的ROS社区组织开发和维护。7.2ROS入门理解ROS要分为如图7.6所示的三个层次:(1)计算图,ROS作为一个程序,首先得运行起来,所以就要先考虑程序如何运行的。计算图就是表示系统运行的结构,这就是第一个层次。(2)文件系统,程序运行后,进一步要考虑程序的管理。所以要考虑程序是如何构建的,这就是第二个层次。(3)开源社区,ROS强调分享和复用,鼓励将大家的研究成果分享到开源社区,也是ROS的维护管理机制,这就是第三个层次。图7.6ROS的理解层次7.2.1计算图7.2ROS入门ROS的程序功能以节点为单位独立运行,可以分布于多个相同或不同的计算机中。节点之间通过消息通讯。这种运行机制通过可视化工具显示出来,更加直观,也方便调试。计算图是广泛应用的一种可视化模型。如图7.7所示,计算图中描述了ROS的下述信息:
计算图的概述图7.7计算图级(1)节点(Node)
——软件模块。执行任务的一个个单独的进程。(2)节点管理器(ROSMaster)——控制中心,提供参数管理。统筹管理多个节点,记录每一个节点的注册信息,帮助节点之间相互查找,相互连接,是一种集权化的管理机制。7.2.1计算图7.2ROS入门(3)话题(Topic)——如图7.8所示,是节点间传输消息(Message)的异步通信机制,从发布者到订阅者的单向数据传输。
计算图的概述图7.8话题模型(发布/订阅)(4)服务(Service)——如图7.9所示,是节点间双向同步通讯机制,传输请求/应答数据。图7.9服务模型(请求/应答)7.2.1计算图7.2ROS入门(1)话题通信机制
初识节点间的通信ROS节点之间
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《守护健康热爱生命》课件
- 《区域发展不平衡》课件
- 《尿道插管护理教程》课件
- 《全球著名建筑概述》课件
- 新质生产力政策方向
- 西南财经大学《专业法语》2023-2024学年第一学期期末试卷
- 人教部编九年级上册历史第21课《马克思主义的诞生和国际工人运动的兴起》教学设计
- 苏州市吴中区市级名校2025年初三开学摸底联考语文试题含解析
- 山东省青岛市崂山区部分中学2025届初三下学期开学测试英语试题含答案
- 2025年中国摩托车前叉油封市场调查研究报告
- 舞蹈疗法在儿童精神疾病康复中的应用-洞察分析
- 2025年春新人教版语文一年级下册教学课件 18 棉花姑娘
- 工贸企业负责人安全培训
- 《陪诊从业人员能力培训标准》
- 《氢气输送管道工程设计规范》
- 管网工程施工重难点分析及对应措施
- 2024ESC心房颤动管理指南解读-完整版
- 《基于Spring Boot的学生信息管理系统的设计与实现》
- 砂石场生产线承包合同
- DB51T 2943-2022 四川省一体化政务服务平台系统接入规范
- 飞机空气动力学课件:翼型的空气动力特性
评论
0/150
提交评论