开放源代码机器人控制软件

开放机器人控制软件(Open RObot COntrol Software,OROCOS)是为了开始开放源代码机器人控制软件项目所作的努力。我们开展了广泛的讨论,涉及的问题有可以重用其它项目的哪些经验代码和工具,应该在项目中集成哪些开放标准,还有什么样的组织结构最适合这个项目。该项目的目的是按以下要求开发机器人控制软件,如下所示:

·      在开放源代码和/或自由软件的许可下

·      尽量模块化

·      质量最好(从技术和软件工程两种角度)

·      独立于(但兼容)商业机器人生产厂商

·      用于各类机器人设备和计算机平台

·      为所有编程语言本地化

·      以运动学、动力学、计划、传感、控制和硬件接口等方面的可配置的软件组件为特点。

项目的目的不只是要复制现存的商业机器人控制器或机器人模拟/编程软件包。OROCOS 项目希望开发可共享的库、独立组件(有时候被称为软件代理程序)和一个可以消除和控制所有分布式机器人系统的可配置的运行时环境。这类项目在以下几种情况有用处:

·      重用代码

·      作为一个独立的子系统使用

·      复制其组织结构

·      从管理一个开放源代码项目的经验中学习

·      设计和开发可扩展和可重用的软件

开放源代码矩阵库
下面是满足上面提到的要求的开放源代码矩阵库。我们推荐 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 的信息。

实时内核
实时 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 的详细信息。

实用程序和工具
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 站点(请参阅参考资料)。

控制器
任务控制体系: 任务控制体系(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 是一个免费的机器人模拟和自动化设计开放源代码工具包。它的特性是众多的模拟功能和一个改良的运算法则,该法则能够自动地综合和优化机器人设计,使其符合任务特定的性能目标。

语言
RoboML(机器人标记语言): RoboML 用于与机器人技术相关的数据的标准化表达。其设计的意图是既支持机器人为主的进程之间和接口进程之间的通信语言,也支持人- 机器人接口代理之间的通信语言,并提供了一种人 -机器人接口代理使用的归档数据的格式。

ROSSUM: 一种移动机器人的编程和模拟环境。Rossum 项目试图帮助收集、开发和分发机器人应用程序软件。Rossum 项目希望将类似的协作扩展到机器人软件的开发。

XRCL(可扩展机器人控制语言,Extensible Robot Control Language): XRCL(发音为 zircle)是个相对简单、现代的编程语言和环境,设计成让机器人技术研究人员可以通过共享代码来共享他们的想法。它是一个开放源代码项目,受 GNU Copyleft 的保护。

自动化系统内部控制的开放系统体系(Open System Architecture for Controls within Automation Systems,OSACA): OSACA 是一个合作的欧洲项目,旨在增进机器工具和控制系统生产厂商在世界市场中的竞争性。项目的主要目标是规定独立于生产厂商的开放控制系统的系统体系

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ROS(机器人操作系统)是一个灵活、分布式的框架,用于开发机器人应用程序。它提供了一系列工具和库,用于帮助开发人员构建机器人的不同功能模块,并使它们能够相互通信和协调工作。 在ROS中,许多功能模块都以“软件包”形式存在,每个软件包都包含了一个特定功能的源代码和配置文件。这些软件包的源代码可以通过ROS的官方网站或其他开发者提供的资源来获取。 ROS的开发实践主要涉及以下几个方面的源代码: 1. 订阅者(Subscriber)和发布者(Publisher):ROS使用消息传递机制来实现模块之间的通信。订阅者从指定的主题(Topic)接收消息,发布者将消息发布到特定的主题。源代码中的订阅者和发布者使用ROS提供的API来创建和配置。 2. 服务(Service)和客户端(Client):ROS还提供了服务和客户端机制,用于实现请求-响应式通信。服务端提供一个特定的服务,客户端向其发送请求并接收响应。源代码中的服务端和客户端也使用ROS API来实现。 3. 动作(Action)和动作服务器(Action Server):动作是一种高层次的通信机制,可用于实现复杂的行为。动作服务器为客户端提供了一个异步的、长期运行的操作,客户端可以查询进度和取消操作。源代码中的动作服务器和客户端也是通过ROS API来实现的。 除了这些基本的通信机制,ROS还提供了许多其他功能,如参数服务器、TF变换、导航堆栈等,它们都有相应的源代码和配置。开发者可以根据项目需求选择适当的软件包,并创建自己的功能模块或修改现有的模块。 总之,ROS机器人开发实践的源代码包括了订阅者、发布者、服务、客户端、动作、参数服务器等各种通信机制的实现。开发者可以根据需要选择和使用这些源代码,以构建功能齐全、高效的机器人应用程序。 ### 回答2: ROS(Robot Operating System)是一种用于机器人开发的开源软件平台。它提供了一系列的工具和库,方便开发者构建机器人应用程序。 ROS的源代码是以开源的方式发布的,因此任何人都可以自由地访问、修改和分发它。ROS的源代码包括了ROS核心功能的实现,例如通信机制、节点管理、消息传递、服务调用等。 在ROS开发实践中,首先需要搭建ROS环境,安装ROS的源代码以及相关的库和依赖项。然后,可以使用命令行工具或者图形化界面工具创建一个ROS工作空间,并在该空间下创建项目。 在项目中,可以编写C++或者Python等代码来实现所需的功能。在ROS中,通常使用ROS的核心概念,例如节点(Node)、话题(Topic)、服务(Service)和参数(Parameter)来开发应用程序。 通过编写节点节点之间可以通过发布(publish)和订阅(subscribe)的方式进行通信,其中发布者将消息发布到特定的话题上,而订阅者则从该话题上接收消息。 此外,还可以使用ROS提供的工具和库来快速实现一些常见的机器人功能,例如导航、感知、SLAM(同步定位与地图构建)等。这些功能的实现往往依赖于ROS提供的源代码和算法。 总之,ROS机器人开发的源代码开放的,任何人都可以访问和利用它。通过使用ROS提供的工具和库,开发者可以快速构建机器人应用程序,并实践各种功能和算法。 ### 回答3: ROS(机器人操作系统)是一种开源机器人开发平台,用于构建灵活、可扩展的机器人应用程序。ROS提供了一系列的工具、库和软件包,开发者可以使用这些工具来快速开发机器人程序。 在ROS开发实践中,源代码是非常重要的一部分。开发者可以通过编写和修改源代码来实现自己的机器人应用程序。 首先,ROS提供了一套用于创建和组织源代码的标准结构。一个典型的ROS源代码包含一个包描述文件(package.xml)和一个CMakeList.txt文件,这两个文件用于指定源代码包的依赖关系、编译选项等。 其次,在ROS中,源代码以节点(node)的形式组织。一个节点是一个执行特定任务的程序,可以通过ROS的消息传递机制和其他节点进行通信。开发者可以编写自己的节点源代码,并使用ROS提供的通信机制实现节点间的信息传递。 此外,ROS还提供了一系列的开发工具和库,用于编写常见的机器人任务代码。例如,ROS提供了用于控制运动的库(move_base)、用于感知和处理传感器数据的库(sensor_msgs)等。开发者可以找到适合自己需求的源代码,并根据需要进行修改和扩展。 最后,ROS社区是一个活跃的开发者社区,开发者可以在ROS社区中分享自己的源代码、跟踪和参与他人的开源项目。这有助于加快机器人开发的速度,并促进协作和共享。 总之,ROS机器人开发实践中的源代码是关键的一环。开发者可以借助ROS提供的工具、库和社区支持,编写、共享和修改源代码,以实现各种机器人应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值