开源机器人控制软件OROCOS
转载:http://blog.csdn.net/linuxarmsummary/article/details/18698589一.Orocos是什么?“Orocos”是“Open Robot Control Software”计划里各词的首字所拼成的。这个计划的目的是要开发一种通用的,免费的模块化架构,用于机器人控制。Orocos计划用四个C++库组
一.Orocos是什么?
“Orocos”是“Open Robot Control Software”计划里各词的首字所拼成的。这个计划的目的是要开发一种通用的,免费的模块化架构,用于机器人控制。Orocos计划用四个C++库组成:实时工具集,运动学与动力学算法集,贝叶斯过滤库及 Orocos组件库。
时实工具集(RTT)不仅是一个应用程序,还提供了基础机能来支持使用C++来构建机器人应用。善长在实时,在线交互与基于组件式的应用。
Orocos组件库(OCL)提供了一些现成的控制模块。如硬件接口模块,控制模块 及 模块的管理功能组件。
运动与动力学组件(KDL)是一个C++的函数库。提供了时实的动力学约束计算。
贝叶斯过滤库(BFL)提供了一种特别的应用。他是由动态贝叶斯网络理论所推导出的。这个理论可以做递归信息处理及基于贝叶斯规则的算法评估,例如卡尔曼滤波,粒子滤波算法等。
Orocos 是一个免费软件开发计划,因此这个计划的代码与文档是在免费软件协议下发布。
二.面向对象
普通意义上的机器人控制是个非常广泛的概念。很多机器人学家对其所做的研究方向有着非常不同。像处理不同复杂度,解决时实控制的难题,用户交互等。因此,正因为机器人社区的研究方向的多样化,Orocos的目标是针对四类开发者。
1.架构级构建者
这类开发者并不是工作在一个具体的应用领域,他们提供底层的代码来支持应用的开发。这个提供底层代码支持的层面是经常在机器人软件计划中被忽略的。因为在这些针对具体(非常受限的)领域所进行的独立的软件计划中,花费大量精力去进行通用性的平台开发经常被认为是很不值的,有时根本就不会去考虑。然尔面对更广泛领域的Orocos计划,底层支持代码得到了很多的关注。所希望的是这项工作将会促进其它层面的构建者的开发。时实工具集,运动与动力学算法集及贝叶斯过滤库都是基于这个架构所创建的。
2,组件级构建者
组件是在一个应用中提供一种服务。一个组件构建者可以使用下层架构来描述一个服务的接口并提供一个或多个的实现。例如,一个运动学组件可以设计成服务于不同的动力学算法集。其它的例子,如放问硬件设备的组件,诊断功能组件,安全保护功能组件及仿真功能组件。OCL是由组件构建者开发的。
3,应用级构建者
这类开发者使用底层架构及组件,并整合应用到一个特殊的应用中去。这意味着他们创建一个特别的,针对具体应用的布置:组件经由配置相连在一起形成了一个应用。
4,最终用户
这类用户使用由应用级构建者所创建的产品。对己做好的产品编程并执行特定的任务。
最终用户不直接是这个计划所面向的人群。因为这个计划的工作是在通用架构层面,不依赖于任何应用。为最终用户解决问题是应用层构建者的事情。
三.构建Orocos应用的方法
Orocos应用是由组件组成。这些组件形成一个针对应用的特别的网络。当使用Orocos,你可以选择己经由社区开发好的组件,也可以使用时实工具集来开发自己的组件。接下来分别介绍这两种方法。
1.应用模板
一个应用模板是一组定义好的组件。如一个运动控制模板包含路径规划组件,位置控制组件,硬件访问组件,数据报告组件。这些所选组件的接口是兼容的。
一个应用模板也许会很简单以至任务Orocos用户都可以选择并修改。因此成了新用户面临的第一件任务。一个应用模板可以用一张纸上的一个解说图来解释清楚。
注:这里的应用模板与C++模板没有任何关系。
2,控制组件
应用是由Orocos的控制组件所构成的。一个可分配的实体都有一个面向控制的接口。
一个单一组件可能有很好的能力来控制整个机器,或仅仅是整个组件网络中的一个很小的部件。如一个分类器组件或动力学组件。组件是可以使时实工具集构建,也可以选用任何其它库(像视觉工具集或动力学工具集)。大部分用户是通过属性接口(XML方式)或方法接口来配置组件的。
有五种截然不同的方式,使Orocos组件可以被连接上:通过属性,事件,方法,命令与数据流端口。这些都是可选择的。接口类型及使用目的是在组件构建者的文档是写明的。每个组件的文档都说明了他的接口。为了更好理解这些接口的意义,这有一些典型的接口示例:
a,数据流端口:是个线程安全的传输机制,与组件间有缓存或无缓存的数据通信。如点动接口,前馈组件。
b,属性:运行时可修改的参数,存在XML文件中。如动力学算法,控制参数,原点位置,工具类型等。
c,方法:可由其它组件调用,并能立即得出运算结果,类似C语言的函数。如得跟踪错误号,松开夹手,写数据等
d,命令:由其它组件以发送方式给接受者,用命令的方式让接收都达到某种要求。如移动到(位置,速度),回零等。一般来说一个命令不能立即执行完毕,因此发送命令的组件不能因等待命令执行完成而阻塞。但命令组件是可以提供所有的机能让发送命令的组件知道这个命令执行的进度。
e,事件:当系统中发生某种变化时触发一些功能的执行。如达到位置,紧急停车,目标己抓住。
除了定义上述的通信机制,Orocos允许组件或应用构建者可以用这些元素编写有等级的状态机。这是Orocos定义你的应用逻辑的方式。状态机可以在运行时由组件加载或卸载。
四,与Orocos相关的计划
Orocos酿育了大量的独立的软件计划。现在读到的是关于实时控制的说明是在Orocos.org网页上的。其它非实时的计划有
在KTH Stockholm,数个发布己经产生了基于组件的机器人控制系统,并且这个计划己经命名为Orca。
虽然并不是计划的基础开发伙伴,FH Ulm 维护着免费的CORBA通信机制,可参见Orocos::SmartSoft。
这篇文章是针对工业机人及时实控制的。
英文源文:
</div>
更多推荐
所有评论(0)