本文主要是介绍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 |
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 |
这篇关于Eclipse iceoryx™ - 真正的零拷贝进程间通信的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!