GB/T 33264-2016 面向多核处理器的机器人实时操作系统应用框架
- 名 称:GB/T 33264-2016 面向多核处理器的机器人实时操作系统应用框架 - 下载地址1
- 下载地址:[下载地址1]
- 提 取 码:
- 浏览次数:3
发表评论
加入收藏夹
错误报告
目录| 新闻评论(共有 0 条评论) |
资料介绍
ICS 25. 040.30 J 28
中 华 人 民 共 和 国 国 家 标 准
GB/T 33264—2016
面向多核处理器的机器人
实时操作系统应用框架
Framework ofreal-timerobotoperatingsystem on multi-coreprocessor
2016-12-13发布 2017-07-01实施
中华人民共和国国家质量监督检验检疫总局中 国 国 家 标 准 化 管 理 委 员 会
发
布
GB/T 33264—2016
GB/T 33264—2016
前 言
本标准按照 GB/T 1. 1—2009给出的规则起草 。
本标准由中国机械工业联合会提出 。
本标准由全国 自动化系统与集成标准化技术委员会(SAC/TC159)归 口 。
本标准主要起草单位 :北京航空航天大学 、首都师范大学 、北京化工大学 、北京机械工业自动化研究所 、中机生产力促进中心 。
本标准主要起草人 :邵振洲 、魏洪兴 、谈金东 、关永 、张杰 、陈友东 、黄真 、邹莹 、王瑞 、施智平 、王振丽 。
面向多核处理器的机器人
实时操作系统应用框架
1 范围
本标准规定了面向多核处理器的机器人实时操作系统的应用程序框架及其设计原则 。
本标准适用于机器人实时操作系统开发者 、机器人应用软件开发者及机器人操作系统使用者 。
2 术语和定义
下列术语和定义适用于本文件 。
2. 1
机器人操作系统 robotoperatingsystem
由底层操作系统层和软件应用层组成 ,为机器人提供硬件抽象描述 、底层驱动程序管理和程序间的消息传递等类操作系统功能 , 以及定位绘图 ,任务规划 ,感知与导航等上层应用功能 。
注 : 具体应用功能术语参照 GB/T 12643—2013。
2.2
多核处理器 multi-coreprocessor
在一个处理器中集成两个或多个完整的计算引擎(内核) , 每个执行内核是独立的逻辑处理器 ,并占用相应的执行资源 。
2.3
机器人实时操作系统 real-timerobotoperatingsystem
保证机器人在规定的时间内完成特定任务 ,并能够协调所有实时任务的操作系统 。
2.4
中断请求 interruptrequest
向 CPU发出命令请求 ,让 CPU暂停正在执行的程序 ,保护现场后去执行相应的处理程序 ,处理完成后再继续执行之前的程序 。
2.5
消息告知中断 message-signaled interrupt
在系统特定内存地址写入中断数据 ,通知 CPU 中断 。
2.6
节点 node
直接执行运算任务的进程 。
2.7
消息 message
一种用于节点间通信的数据结构 。
2. 8
主题 topic
用于发布/订阅消息内容的特定标识 。
GB/T 33264—2016
2.9
服务 service
节点间的通信方式 , 由一个消息对组成 ,包括请求消息和回复消息 。
2. 10
节点管理器 nodemaster
为节点存储主题和服务的注册信息 ,用于管理节点间的消息交换和调用服务 。
2. 11
包 package
组织机器人操作系统软件的主要形式 ,包括节点 、独立于机器人操作系统的库 、数据集 、相关配置文件以及第三方软件等 。
2. 12
堆 stack
包的集合 ,能够提供一个完整的功能 。
2. 13
传输控制协议/因特网互联协议 transmission controlprotocol/internetprotocol
因特网最基本的协议 , 由传输层的 TCP协议和网络层的 IP协议组成 。
2. 14
用户数据报协议 userdatagram protocol
一种无连接的传输层协议 ,提供面向事务的简单不可靠信息传送服务 。
2. 15
可扩展标记语言 extensiblemarkup language
用于标记电子文件使其具有结构性的标记语言 。
2. 16
XML远程过程调用 XML remoteprocedurecall
使用 XML格式来传输命令和数据,使用 HTTP作为传输机制。
2. 17
虚拟网络 virtualnetwork
一种不包含物理连接 ,通过网络虚拟化实现的计算机网络 。
3 缩略语
下列缩略语适用于本文件 。
GPOS:通用操作系统平台(GeneralPlatform for Operating System )
IRQ:中断请求(InterruptRequest)
MSI:消息告知中断(Message-signaled Interrupt)
ROS:机器人操作系统(RobotOperating System)
RTOS:实时操作系统(Real-time Operating System)
RGMP:混合操作系统软件框架(RTOS and GPOS on Multi-core Processor)
TCP/IP:传输控制协议/因特网互联协议(Transmission ControlProtocol/InternetProtocol) UDP:用户数据报协议(UserDatagram Protocol)
VNET:虚拟网络(VirtualNetwork)
XML:可扩展标记语言(Extensible Markup Language)
XML-RPC:XML远程过程调用(XML Remote Procedure Call)
4 机器人实时操作系统的应用框架设计原则
4. 1 概述
面向多核处理器的机器人实时操作系统的应用框架设计遵循以下原则 :跨平台原则 、结构分离原则 、功能模块化设计原则 、多核分布式管理原则和可扩展原则 。
4.2 跨平台原则
跨平台原则指的是机器人操作系统支持不同的硬件架构 , 如 Arm 和 X86等 。 在不同的硬件架构下 ,机器人实时操作系统可以稳定运行 。
4.3 结构分离原则
从机器人操作系统运行平台(如 Arm 和 X86等) 角度 ,结构分离原则考虑的是非实时和实时操作系统运行内核的分离 , 为非实时和实时节点提供不同的运行环境 , 便于节点管理 , 并提高节点运 行 的效率 。
4.4 功能模块化设计原则
节点按照功能划分进行模块化设计 ,每个节点具有独立的与平台无关的功能 ,提供机器人应用软件复用性的支持 。
4.5 多核分布式管理原则
具有独立功能的节点采用拓扑分布式的管理模式 ,便于操作系统应用软件层的集成和扩展 。 多核分布式管理原则包括两方面 :核间的节点分布和单个内核上的节点分布 。
4.6 可扩展原则
可扩展原则是指机器人操作系统通过集成第三方(如机器人操作系统应用软件开发者或操作系统无关的第三方库)的功能 ,快速改进或增加现有软件应用功能 。功能模块化设计原则和多核分布式管理原则是可扩展原则实现的前提 。
5 机器人实时操作系统的应用框架
5. 1 概述
机器人实时操作系统的应用框架反映的是面向多核处理器的操作系统各组件的功能划分和相互之间的关系 。 如 图 1 所 示 , 机 器 人 实 时 操 作 系 统 是 一 种 Linux与 RTOS相 结 合 的 混 杂 操 作 系 统 , 称 为RGMP(RTOS and GPOS on Multi-core Processor) 。
图 1 机器人实时操作系统的应用框架 RGMP
机器人实时操作系统的应用框架为层次化结构模型 , 自下而上分别为 :
— 硬件层 :主要是多核处理器运算内核 ,为操作系统提供一个稳定的硬件平台 ,是 RGMP正常运行的基础层 。
— 底层操作系统层 :在一个多核处理器的不同核上同时运行 Linux和 RTOS,为上层应用软件提供底层的运行环境 。其中一个核运行 RTOS,用于运行实时节点 ,其他核运行通用 Linux。
— 设备 驱 动 层 : 主 要 提 供 操 作 系 统 支 持 下 的 硬 件 设 备 驱 动 程 序 、设 备 协 议 程 序 和 设 备 服 务 程序等 。
— 网络接口层 :为 Linux和 RTOS提供一个快速稳定的通信接 口 ,传递节点运行必要的信息 、系统运行状态信息等 。
— 软件应用层 :软件应用以实时节点与非实时节点的形式运行 ,通过协调组织各应用软件功能构件 ,实现机器人感知 、行动 、思维 、人机交互等基本功能 。
在层次化结构模型下 ,机器人实时操作系统应用框架规定了机器人操作系统研究和开发过程中中断管理 、分布式运行 、通信接口 、应用编程接口以及节点通信自定义消息等相关内容 。
5.2 中断管理
中断管理的原则是让不同类型的操作系统各自运行在不同的 CPU 核中 ,互不影响 , 即不同的 CPU享有各自独立的外部设备以及外部中断 , 当几个外部设备共享一条 IRQ 总线的时候 ,RGMP 会针对不同的情况有着各自的策略 ,具体如下 :
— 所有外部设备都是 非 实 时 设 备 : RGMP 在 运 行 实 时 操 作 系 统 的 CPU 屏 蔽 该 IRQ 中 断 , 让Linux完全接管整条中断线 。
— 所有外部设备都是实时设备 : RGMP对 I/O APIC进行配置 ,采用静态分发的方式将此 IRQ静态发送到实时操作系统所使用的 CPU 中 ,最大限度地提高实时操作系统的响应速度 。
— 一条 IRQ线上同时有实时与非实时中断 :如果实时设备不支持 MSI, 为了提高系统整体的实时性 ,无论是实时系统还是非实时系统 ,RGMP让一条总线上的 IRQ全部路由到同一个操作系统使用的 CPU 中 。
5.3 分布式运行
在 RGMP应用框架中同时运行实时节点和非实时节点 。如图 2 所示 ,节点的运行采用 分 布 式 架构 ,各个实时与非实时节点之间的功能都是彼此独立的 ,便于复杂系统中节点的管理 ,便于根据机器人应用场合的不同更改节点程序 ,实现对机器人的控制 ,提高机器人对不同外设的兼容性 ,并利用 ROS丰富的软件资源 ,扩展机器人的功能 。另外 ,根据不同的控制场合 ,所有存在于非实时节点上的功能节点可以被安装于远程计算机中 ,远程计算机通过以太网与本地机器人控制器相连接 ,实现对机器人的远程控制 。
节点部署的原则是实时节点拥有相 对 较 高 的 任 务 优 先 级 与 中 断 优 先 级 , 运 行 在 RTOS操 作 系 统上 ,非实时节点的运行方式与普通 Linux程序相同 ,运行在 Linux上 。如图 2 所示 ,实时性要求高的节点运行在 RTOS上 , 主要负责对机器人的各个关节进行闭环控制外加部分运动学解算 , 而非实时节点的主要功能包括机器人的三维动态仿真 、人机交互 、运动学解算等 。
图 2 分布式应用软件框架
5.4 通信接口
通信接口规定了三种不同类型 ,包括实时节点与非实时节点之间 、ROS节点之间和实时 ROS节点之间通信 :
— 实时节点与非实时节点之间 :使用标准的 ROS节点通信传输协议 。在实时与非实时节点之间创建一个以虚拟网络为接 口 , 以提高通信效率同时保持程序的可移植性 。底层用共享内存的方式实现的虚拟网桥“VNET”。在系统运行时 , 实时节点与任何种类的节点通信都首先要通过 VNET虚拟网桥 。
—ROS节点间的通信 :建立在 TCP/IP标准协议之上 ,节点之间通过在网络层发送标准的 TCP或者 UDP包进行通信 。通信协议封装成 Topic与 Message两种形式 ,便于使用 ROS提供的标准 C++接口函数实现节点间的数据收发 。
— 实时 ROS节点之间的通信 :使用 XML-RPC协议 。所有的消息在发送前以符合 XML-RPC消息格式的方式进行打包 。在接受消息的时候以相同的协议进行解包 。这样的流程在分布式系统中便于节点间的数据通信的管理 , 降低应用程序开发人员的负担 ,增加程序的可移植性 。在
实时节点通信的网络层 ,使用标准的 TCP 网络通信协议 。
5.5 应用编程接口
应用编程接口规定实时操作系统级函数接口 、非实时节点 、实时节点的应用编程接口规范 , 为机器人实时操作系统提供一个统一的标准规范 。
5.6 实时操作系统的函数接口
机器人实时操作系统作为混合系统软件框架 ,为实时操作系统提供了良好的函数接 口 。 为了方便用户开发 ,它提供满足操作系统基本功能的链接库 librgmp. a和与移植相关的头文件 rtos.h。用户要移植实时操作系统 ,不需要再考虑实时操作系统对于 CPU 模式转换 、CPU 初始化等问题 ,甚至不需要再编写与实时操作系统启动相关的汇编代码 ,就可以实现对于实时操作系统的移植 。 实时系统需要移植的关键函数与变量的相关功能参见附录 A表 A. 1。
5.7 非实时节点的应用编程接口
非实时节 点 运 行 以 机 器 人 操 作 系 统 ROS平 台 上 , 所 有 ROS 的 Node 节 点 都 是 由 不 同 ROS 的Packages经过编译产生的 。根据面向对象编程的特点 ,ROS节点能够通过继承不同的 Packages让系统拥有各种 复 杂 功 能 。 所 有 的 ROS 节 点 都 需 要 继 承 几 个 ROS 核 心 功 能 包 , 如 roscore, roscpp, roslang等 。
编写 ROS功能节点程序就必须调用 ROS的相关资源库 ,ROS所使用的库除了 Linux的标准系统调用以外 ,还有一些与 C++相关的模板库和与节点通信相关的函数库 , 主要包括 :Boost, Libc,XML- RPC,Math等 。具体非实时节点的应用编程接口参见 B. 1~B. 11所示 。
5. 8 实时节点的应用编程接口
在实时系统上开发 ROS实时节点的软件框架 ,其代码与操作系统无关 , 以应用程序的形式存在于实时系统当中 。在标准 ROS中 ,依赖 C++语 言 的 ROS功 能 节 点 都 是 基 于 ROSCPP 核 心 节 点 包 和XML-RPC通信协议栈 。考虑到 ROS实时节点的可移植性 ,将 XML-RPC功能与 ROSCPP 的核心功能统一封装在一个与系统无关的 ROS功能节点包 RTroscpp中 。利用 RTroscpp提供的基本接口开发与 ROS系统函数库无关但是符合 ROS标准通信协议的 ROS功能节点 。
5.9 节点通信自定义消息
在实时操作系统 RTOS中 ,用户要编写自己的 ROS节点 ,还需要定义相关的消息头文件 。在标准ROS中 , 自定义 ROS消息需要通过标准 ROS 的 msg_ gen工具生成关于 自定义消息的相关 C++与Python头文件 。在头文件中 ,节点消息是以类的方式呈现的 , 它继承 ROS标准消息类 ,类中包含有针对自定义消息的打包函数 。 以下是 ROS消息在传输过程中的要素 :
— callerid:发送消息的节点名字 ;
— topic:接收消息的节点接收的话题名字 ;
— service:客户端节点请求的服务名字 ;
— md5sum:针对此消息类型的 md5sum 值 ;
— type:消息所包含的数据类型 ;
— message_definition:完整的消息定义(基于 C++或者是 Python 语言) ;
— error:在链接错误时的错误消息 ;
—persistent:由客户端节点发往服务器节点的字段 ,用于处理多重数据请求 ;
— tcp_nodelay:从消息接收端发往发送端的消息 。
针对不同的消息定义 , 以上的大部分元素都是不同的 ,特别是 md5sum 校验码 。 由于在实时操作系统中没有相关的 msg_gen工具 ,但是程序员可以把标准 ROS 中生成的消息头文件放置到实时节点头文件中 ,就可以使用相关的自定义节点 。 图 3 中是数据消息的格式 。
图 3 ROS 自定义消息的转换
附 录 A
(资料性附录)
实时系统需要移植的关键函数和变量的相关功能
机器人实时操作系统为实时操作系统提供了良好的函数接 口 ,便于用户移植实时操作系统 。 实时系统需要移植的关键函数与变量的相关功能如表 A. 1所示 。
表 A. 1 实时系统需要移植的关键函数和变量的相关功能
附 录 B
(资料性附录)
非实时节点应用编程接口
ROS所使用的库除了 Linux的标准系统调用以外 ,还有一些与 C++相关的模板库和与节点通信相关的函数库 ,为非实时节点的应用提供了丰富的接 口 。
B. 1 roscpp. ROS应用接口
为用户提供库 ,使 C++用户可以很快地链接到 ROS的 topics,services和参数 ,如表 B. 1所示 。
表 B. 1 关于应用接口的 C+ +接口类型及说明
B.2 common_msgs. 基本数据类型接口
基本数据类型接口包含了 ROS功能包广泛用到的消息类型 ,如表 B. 2所示 。
表 B.2 关于基本数据类型接口的消息类型及说明
表 B.2 (续)
B.3 message_filters.操作信息接口
根据过滤器的条件 ,输入和输出所对应的消息 ,如表 B. 3所示 。
表 B.3 关于操作信息接口的 C+ +接口类型及说明
B.4 drivers.驱动接口
驱动接口包含了常用的驱动类型 ,如表 B. 4所示 。
表 B.4 关于驱动接口的 C+ +接口类型及说明
B.5 3D processing.3D数据处理编程接口
3D数据处理编程接口包含了常用的 3D处理编程库 ,如表 B. 5所示 。
表 B.5 关于 3D数据处理编程接口的 C+ +接口类型及说明
B.6 image_common. 基本图像处理编程接口
基本图像处理编程接口包含了 ROS里的基本图像处理功能 ,如表 B. 6所示 。
表 B.6 关于基本图像处理编程接口的功能包类型及说明
B.7 image_pipeline. 图像传递编程接口
为原始图像数据提供中间处理 , 以用于最终高水平的处理 ,如表 B. 7所示 。
表 B.7 关于图像传递编程接口的主题类型及说明
B. 8 vision_opencv.OpenCV编程接口
链接 ROS与 OpenCV 的功能包 ,提供处理计算机实时图像的函数库 ,如表 B. 8所示 。
表 B. 8 关于 OpenCV编程接口的功能包类型及说明
B.9 Transforms/Coordinates.坐标转换接口
坐标转换接口包含了对机器人姿态和坐标转换的功能包 ,如表 B. 9所示 。
表 B.9 关于坐标转换接口的功能包类型及说明
B. 10 simulator_gazebo.3D仿真编程接口
利用 ROS为机器人提供 3D仿真环境 ,如表 B. 10所示 。
表 B. 10 关于 3D仿真编程接口的主题类型及说明
B. 11 move_arm. 机器人运动规划编程接口
对机械臂实现点到点的运行控制 ,并规划关节的运动轨迹 ,具体说明如表 B. 11~表 B. 15所示 。
表 B. 11 ROS参数名称、参数类型及说明
表 B. 12 订阅主题名称、主题类型及说明
表 B. 13 发布主题名称、主题类型及说明
表 B. 14 服务名称、主题类型及说明
表 B. 15 可视化主题名称、主题类型及说明
参 考 文 献
[1] GB/T 5271. 11—2000 信息技术 词汇 第 11部分 :处理器
[2] GB/T 12643—2013 机器人与机器人装备 词汇
[3] GB/T 14246. 1—1993 信 息 技 术 可 移 植 操 作 系 统 界 面 第 一 部 分 : 系 统 应 用 程 序 界 面(POSIX. 1)
[4] GB/T 16264. 4—2008 信息技术 开放系统互连 目录 第 4部分 :分布式操作规程
[5] GB/T 17173. 3—1997 信息技术 开放系统互连 分布式事务处理 第 3 部分 :协议规范
[6] GB/T 18759. 3—2009 机械电气设备 开放式数控系统 第 3 部分 : 总线接口与通信协议
[7] GB/T 19582. 3—2008 基于 Modbus协议的工业自动化网络规范 第 3 部分 :Modbus协议在 TCP/IP上的实现指南
[8] GB/Z 21025—2007 XML使用指南
[9] ISO/IEC 9594-4: 2014 Information technology—Open Systems Interconnection—The Di- rectory—Part4:Procedures for distributed operation
[10] ISO/IEC 10021-6: 2003 Information technology—Message Handling Systems (MHS) : Protocol specifications
[11] ISO/IEC10746-4:1998 Information technology—Open DistributedProcessing—ReferenceModel: Architecturalsemantics
[12] ISO 14915-1: 2002 Software ergonomics for multimedia user interfaces—Part1: Design principles and framework
[13] ISO/IEC 18092:2013 Information technology—Telecommunications and information ex- change between systems—Near FieldCommunication—Interface and Protocol (NFCIP-1)
[14] ISO/IEC 19503:2005 Information technology—XML Metadata Interchange (XMI)
[15] ISO/IEC 24793-2:2010 Information technology—Mobile multicastcommunications:Pro- tocolover native IP multicastnetworks
相关推荐
- GB/T 3211-2023 金属铬
- GB/T 29711-2023 清晰版 焊缝无损检测 超声检测 焊缝内部不连续的特征
- GB/T 41515-2022 涂布机术语
- GB/T 5023.4-2008 额定电压450∕750V及以下聚氯乙烯绝缘电缆 第4部分:固定布线用护套电缆
- GB 55037-2022 建筑防火通用规范
- GB 51270-2017 镁冶炼厂工艺设计标准 清晰版
- GB/T 28807.2-2017 轨道交通 机车车辆和列车检测系统的兼容性 第2部分:与轨道电路的兼容性
- GB/T 29716.1-2013 机械振动与冲击 信号处理 第1部分:引论
- GB/T 10479-2009 铝制铁道罐车
- GB 55006-2021 钢结构通用规范

