转载: http://blog.csdn.net/linuxarmsummary/article/details/18698589

一.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。

这篇文章是针对工业机人及时实控制的。

英文源文:

http://www.orocos.org/orocos/whatis

                </div>

开源机器人控制软件OROCOS相关推荐

  1. 开放机器人控制软件Orocos

    开放机器人控制软件Orocos 鱼香ROS介绍: 鱼香ROS是由机器人爱好者共同组成的社区,欢迎一起参与机器人技术交流. 进群加V:fishros2048 文章信息: 标题:开放机器人控制软件Oroc ...

  2. 开源机器人库orocos KDL 学习笔记(四):Forward Kinematric

    上一篇主要讲述了KDL中运动链的建立方式,以及与其相关的段(Segment)和关节(Joint)的概念,这些是串联机械臂运动学的基础.本篇主要讲述KDL中正运动学解的实现方式及其使用. 1. puma ...

  3. 开源机器人库orocos KDL 学习笔记(五):Inverse Kinematric

    上一篇主要讲述KDL中正运动学解的实现方式及其使用.本篇主要讲述KDL中逆运动学解的实现方式及其使用. 1. puma560的逆运动学解 首先还是以puma560作为例子,来看一下如何调用KDL的逆运 ...

  4. 十一大开源机器人平台

    本文介绍了一些最受用户欢迎的开源机器人技术,包括ROS,Gazebo,Poppy Humanoid,iCub及Jasmine等. ROS ROS(Robot Operating System)是一组开 ...

  5. ROS系统玩转自主移动机器人(3)-- 开源机器人结构介绍

    ROS系统玩转自主移动机器人(3)-- 开源机器人结构介绍 本机器人机械结构设计相关的所有设计文件下载地址为:传送门  其中包含:三维造型设计文件(所有零件+装配效果)(tips:基于Solidwor ...

  6. 开源机器人操作系统—ros_九美元计算机,机器人操作系统和更多开源新闻

    开源机器人操作系统-ros 在本周的开放源代码新闻摘要中,我们介绍了9美元的计算机,Snappy Ubuntu,机器人操作系统等! 开源新闻:2015年5月9日至15日 开源新闻:2015年5月9日至 ...

  7. drupal 多语言_小小的开源机器人,Drupal的创造者,应对我们不断变化的经济,以及更多

    drupal 多语言 开源新闻让您阅读愉快. 2014年9月6日至12日 在本周的开源新闻综述中,我们将探讨Drupal的创建者Dries Buytaert如何认为我们的经济正在发生变化,新的诱因诱因 ...

  8. Actin机器人控制软件,专注于机器人路径规划

    Actin机器人控制软件,专注于机器人路径规划 Energid Technologies是一家重点解决具有挑战性问题的机器人和机械视觉工程学的公司.客户包括机器人制造商,美国国防部多个分机构,以及美国 ...

  9. 里奥机器人控制app_Cruzr(机器人控制软件)

    Cruzr客户端是一款专用于智能云平台商用服务机器人Cruzr的配套软件,开启机器人智能服务新时代,多台设备,一键多控,接下来小编就给大家带来这款软件的具体介绍,感兴趣的小伙伴们速来看看吧~~ 软件特 ...

最新文章

  1. 曾被无视多年,却成就19世纪最伟大的一场革命,影响了整个世界!
  2. Gartner:2019年十大数据与分析技术趋势
  3. 基于网络音频的Android播放程序简单示例
  4. 在Sql2005中,向表中插入数据时遇到uniqueidentifier列,如何插入数据?
  5. php转盘抽奖源码yii2,yii2实现 上一篇,下一篇 功能的代码实例
  6. .NET Core IdentityServer4实战 第二章-OpenID Connect添加用户认证
  7. MySQL last_insert_id()函数
  8. (C++)浅谈using namespace std
  9. [MySQL]SQL
  10. 一文搞懂 CPU、GPU 和 TPU
  11. HCNA 认证课程笔记(1)
  12. 读书笔记:吉檀迦利:致我们无处安放的心灵
  13. 基于微信小程序的兼职发布接单系统
  14. hexo+gitHub 个人博客搭建及更换主题历程(特适合入门小白)
  15. 苹果微信分身版ios_苹果手机怎么下载微信分身
  16. 阿里云一键登录(对接移动端) PHP
  17. BT下载到底是什么意思啊?
  18. vmware tool下载安装
  19. 使用 Flutter 开发 Github 客户端及学习历程的小结
  20. 另眼看iPad发布。

热门文章

  1. 机器学习数学知识(一) 自然数e
  2. npm ERR! code E404 npm ERR! 404 no such package available : xxx
  3. c语言中signal函数详细说明--举例
  4. GitWeb服务器搭建
  5. Lotus Notes 常见错误
  6. 58同城|TEG技术工程平台群-闪电面试专场内推(12月7日)
  7. 基于ROS的qbo机器人
  8. 偏安一隅的SaaS客服机会在哪,难点又在哪?
  9. 微信公众号开发之分享接口实现
  10. win10/11上一键切换全拼/双拼