GithubHelp home page GithubHelp logo

naonaoyh / iceoryx Goto Github PK

View Code? Open in Web Editor NEW

This project forked from eclipse-iceoryx/iceoryx

0.0 0.0 0.0 21.96 MB

Eclipse iceoryx™ - true zero-copy inter-process-communication

Home Page: https://iceoryx.io

License: Apache License 2.0

Shell 1.39% C++ 91.55% Python 1.15% C 2.55% PowerShell 0.05% CMake 2.35% Dockerfile 0.03% Starlark 0.94%

iceoryx's Introduction

Build & Test Integrationtests Cirrus CI Gitter License Codecov Sanitize

iceoryx - true zero-copy inter-process-communication

  1. Introduction
    1. Supported Platforms
    2. Where is Eclipse iceoryx used
  2. Build and install
  3. Examples
  4. Build and run in a Docker environment
  5. Documentation
  6. Quality levels and platforms
  7. Contribute
  8. Planned features
  9. Bindings and innovations enabled by iceoryx
  10. Frequently Asked Questions
  11. Commercial Support
  12. Governance and maintainers

Introduction

Great that you've made it to this neat Eclipse project! Let's get you started by providing a quick background tour, introducing the project scope and all you need for installation and a first running example.

So first off: What is iceoryx?

iceoryx is an inter-process-communication (IPC) middleware for various operating systems (currently we support Linux, macOS, QNX, FreeBSD and Windows 10). It has its origins in the automotive industry, where large amounts of data have to be transferred between different processes when it comes to driver assistance or automated driving systems. However, the efficient communication mechanisms can also be applied to a wider range of use cases, e.g. in the field of robotics or game development.

iceoryx uses a true zero-copy, shared memory approach that allows to transfer data from publishers to subscribers without a single copy. This ensures data transmissions with constant latency, regardless of the size of the payload. For more information have a look at the 1000 words iceoryx introduction.

You're right, middleware is a cluttered term and can somehow be all or nothing. To get a better impression what this means for iceoryx, please have a look at our goals and non-goals.

Don't get too frightened of the API when strolling through the examples. Think of the untyped C++ and the C API as a "plumbing" one ("plumbing" as defined in Git, which means low-level). We're not using the "plumbing" APIs ourselves, but instead the typed C++ API. The normal use case is that iceoryx is integrated as high-performance IPC transport layer in a bigger framework with additional API layers. An example for such a "porcelain" API would be ROS 2.

You can find the full API documentation on 🌐 https://iceoryx.io.

Supported Platforms

Modification or addition of new platforms is described in the custom iceoryx platforms article.

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

In general unix platforms should work with iceoryx but we only test FreeBSD on our CI.

Where is Eclipse iceoryx used

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

Build and install

You can find the build and installation guidelines here.

Examples

After you've built all the necessary things, you can continue playing around with the examples.

Build and run in a Docker environment

If you want to avoid installing anything on your host machine but you have Docker installed, it is possible to use it to build and run iceoryx applications.

Please see the dedicated README.md for information on how to do this.

Documentation

Quality levels and platforms

Quality level are 5 to 1+, where 1+ is the highest level.

Please see the Quality Declaration for details of the quality measures according to ROS 2 guidelines.

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_binding_c 2 2 2
iceoryx_examples 5 4 4
iceoryx_introspection 5 4 4
iceoryx_meta 5 5 5

Is something missing or you've got ideas for other nifty examples? Jump right away to the next section!

Contribute

Please refer to the CONTRIBUTING.md for a quick read-up about what to consider if you want to contribute.

Planned features

Get to know the upcoming features and the project scope in PLANNED_FEATURES.md.

Bindings and innovations enabled by 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

Frequently Asked Questions

FAQ.md

Commercial Support

ekxide IO GmbH
[email protected]
  • commercial extensions and tooling
  • custom feature development
  • training and consulting
  • integration support
  • engineering services around the iceoryx ecosystem

Governance and maintainers

Please have a look at the GOVERNANCE.md.

iceoryx's People

Contributors

bishibashib avatar budrus avatar chiranjeevimaddi avatar dennis40816 avatar dkroenke avatar elboberido avatar elfenpiff avatar enkeyz avatar ferdinandspitzschnueffler avatar georgemathewjerrin avatar ibrhmkuru avatar jakubsosnovec avatar jimmybch avatar jpsamper2009 avatar karsten1987 avatar kwallner avatar lygstate avatar manel94 avatar marthtz avatar matthiaskillat avatar mossmaurice avatar orecham avatar oschuene avatar patdhlk avatar phongt avatar prasannabhat avatar roehling avatar saif-at-github avatar shankar-in avatar zmostafa avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.