Eclipse iceoryx™ - 真正的零拷贝进程间通信

1 序言

        通过一个快速的背景教程,介绍项目范围和安装所需的所有内容以及第一个运行示例。

        首先:什么是冰羚?

        iceoryx是一个用于各种操作系统的进程间通信(IPC)中间件(目前我们支持Linux、macOS、QNX、FreeBSD和Windows 10)。它起源于汽车行业,在汽车行业,当涉及到驾驶员辅助或自动驾驶系统时,必须在不同的进程之间传输大量数据。然而,高效的通信机制也可以应用于更广泛的用例,例如在机器人或游戏开发领域。

        iceoryx使用一种真正的零拷贝共享内存方法,允许在没有单个拷贝的情况下将数据从发布者传输到订阅者。这确保了数据传输具有恒定的延迟constant latency,而不管有效负载的大小。有关更多信息,请查看1000字的iceoryx简介。

        中间件是一个混乱的术语,可能是全部,也可能什么都没有。为了更好地了解这对iceoryx意味着什么,请看看我们的目标和非目标。

        将非类型化的C++和C API想象成一个“管道”(“管道”在Git中定义,意思是低级)。我们自己并不使用“管道”API,而是使用类型化的C++API。通常的使用情况是,iceoryx作为高性能IPC传输层集成在一个更大的框架中,并具有额外的API层。这种“美瓷”API的一个例子是ROS 2。

        您可以在上找到完整的API文档🌐 https://iceoryx.io.

2 支持的平台

        自定义iceoryx平台文章中描述了对新平台的修改或添加。

Operating System

操作系统

Compiler

编译器

supports access rights for shared memory

支持共享内存的访问权限

command line parsing

命令行解析

Linux

gcc/clang

yes

yes

QNX

gcc

yes

yes

MacOS

clang

no, not planned for implementation

yes

Windows 10

msvc

no, not planned for implementation

will be implemented

FreeBSD (Unix)

clang

no, not planned for implementation

yes

        一般来说,unix平台应该使用iceoryx,但我们只在CI上测试FreeBSD。

3 Eclipse iceoryx在哪里使用?

Framework

Description

ROS 2

Eclipse iceoryx can be used inside the Robot Operating System with rmw_iceoryx

Eclipse eCAL

Open-source framework from Continental AG supporting pub/sub and various message protocols

RTA-VRTE

AUTOSAR Adaptive Platform software framework for vehicle computer from ETAS GmbH

Cyclone DDS

Performant and robust open-source DDS implementation maintained by ZettaScale Technology

Apex.Ida from Apex.AI

Safe and certified middleware for autonomous mobility systems from Apex.AI

AVIN AGNOSAR Adaptive Platform

AUTOSAR Adaptive Platform Product from AVIN Systems

4 编译和安装

        您可以在此处找到构建和安装指南。

5 例子

        在你构建了所有必要的东西之后,你可以继续使用这些例子。

6 在Docker环境中构建和运行

        如果你想避免在主机上安装任何东西,但你已经安装了Docker,那么可以使用它来构建和运行iceoryx应用程序。

        有关如何做到这一点的信息,请参阅专用的README.md。

7 质量水平和平台

        质量级别为5到1+,其中1+是最高级别。

        请参阅质量声明,了解根据ROS 2指南的质量措施的详细信息。

CMake project/target

Current Level

Target Level QNX

Target Level 
Linux, Windows, macOS

iceoryx_hoofs

2

1+

1

iceoryx_posh

2

1+, 2

1

iceoryx_dust

2

2

2

iceoryx_binding_c

2

2

2

iceoryx_examples

5

4

4

iceoryx_introspection

5

4

4

iceoryx_meta

5

5

5

7 计划中的功能

        了解PLANNED_features.md中即将推出的功能和项目范围。

8 iceoryx实现的绑定和创新

Name

Description

Technologies

iceoryx-rs

Rust binding for iceoryx

Rust

iceoryx-automotive-soa

Binding for automotive frameworks like AUTOSAR Adaptive ara::com

C++

iceoryx-gateway-dds

Gateway for Cyclone DDS

DDS

iceray

An iceoryx introspection client written in Rust

Rust

Larry.Robotics

An iceoryx demonstrator for tinker, thinker and toddler

Demonstrator

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/127121.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

掌握 BERT:自然语言处理 (NLP) 从初级到高级的综合指南(1)

简介 BERT(来自 Transformers 的双向编码器表示)是 Google 开发的革命性自然语言处理 (NLP) 模型。它改变了语言理解任务的格局,使机器能够理解语言的上下文和细微差别。在本文[1]中,我们将带您踏上从 BERT 基础知识到高级概念的旅…

【单元测试】如何使用 JUnit5 框架?

JUnit5 单元测试框架使用教程 一、Junit5 是什么? Junit5是一个用于在Java平台上进行单元测试的框架。JUnit 5 框架主要由三部分组成:JUnit Platform、JUnit Jupiter 和 JUnit Vintage。 JUnit Platform:定义了测试引擎的 API,是…

No168.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

【Python从入门到进阶】38、selenium关于Chrome handless的基本使用

接上篇《37、selenium关于phantomjs的基本使用》 上一篇我们介绍了有关phantomjs的相关知识,但由于selenium已经放弃PhantomJS,本篇我们来学习Chrome的无头版浏览器Chrome Handless的使用。 一、Chrome Headless简介 Chrome Headless是一个无界面的浏览…

基于支持向量机SVM和MLP多层感知神经网络的数据预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 一、支持向量机(SVM) 二、多层感知器(MLP) 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .…

mysql面试题25:数据库自增主键可能会遇到什么问题?应该怎么解决呢?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:数据库自增主键可能会遇到什么问题? 数据库自增主键可能遇到的问题: 冲突问题:自增主键是通过自动递增生成的唯一标识符,但在某些情况下可能会…

AI产品经理-能力模型

一、概况 AI产品经理/助理(需求工程师):大多数入门的AI产品经理应该都在这里,顾名思义,就是在整体产品规划中帮助大PD实现部分产品功能的助理或者需求工程师,需要具备比较强的AI知识框架与理解能力以保障各…

【Spring Cloud系统】- Zookeer特性与使用场景

【Spring Cloud系统】- Zookeer特性与使用场景 一、概述 Zookeeper是一个分布式服务框架,是Apache Hadoop的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题。如:统一命名服务、状态同步服务、集群管理、分布式应用配置…

【FISCO-BCOS】十六、多群组部署

目录 一、星形拓扑和并行多组 二、多群组部署(星形拓扑) 1、ipconf文件的编写 2、指定文件部署 3、检查节点共识 一、星形拓扑和并行多组 这是区块链应用中使用较广泛的两种组网方式 星形拓扑:中心机构节点同时属于多个群组,…

ping使用

使用shell ping一个网段 #!/bin/shfor ib in $(seq 1 254); doip"192.168.1.$ib"(if ping -c3 "$ip" >> 1.txt; thenecho "$ip is alive"fi) &done wait在每次循环的最后,使用 & 将子 shell 放入后台执行&#xff0c…

设计模式 - 七大软件设计原则

目录 一、设计模式 1.1、软件设计原则 1.1.1、开闭原则 1.2.2、单一职责原则 1.2.3、里氏替换原则 1.2.4、迪米特原则 1.2.5、接口隔离原则 1.2.6、依赖倒转原则 1.2.7、合成/聚合复用原则 一、设计模式 1.1、软件设计原则 1.1.1、开闭原则 开闭原则:对扩…

【微服务】七. http客户端Feign

7.1 基于Feign远程调用 RestTimeplate方式调用存在的问题 先来看以前利用RestTemplate发起远程调用的代码: String url "http://userservice/user"order.getUserId(); User user restTemplate.getForObject(url,User.class);存在下面的问题&#xf…