GithubHelp home page GithubHelp logo

vvarma / ecal Goto Github PK

View Code? Open in Web Editor NEW

This project forked from eclipse-ecal/ecal

0.0 1.0 0.0 27.67 MB

eCAL - enhanced Communication Abstraction Layer. A fast publish-subscribe cross-plattform middleware using Shared Memory and UDP.

Home Page: http://ecal.io

License: Apache License 2.0

CMake 3.87% C++ 91.84% C 3.10% Batchfile 0.06% Python 0.84% C# 0.11% Inno Setup 0.12% PowerShell 0.01% Makefile 0.02% Dockerfile 0.03%

ecal's Introduction

eCAL - enhanced Communication Abstraction Layer

Build Windows Server 2019 Build Ubuntu 18.04 Build Ubuntu 20.04 Build Ubuntu 20.04 (Iceoryx) Build macOS Catalina 10.15

License

The enhanced Communication Abstraction Layer (eCAL) is a middleware that enables scalable, high performance interprocess communication on a single computer node or between different nodes in a computer network. eCAL uses a publish - subscribe pattern to automatically connect different nodes in the network.

eCAL automatically chooses the best available data transport mechanism for each link:

  • Shared memory for local communication (incredible fast!)
  • UDP for network communication

Visit the eCAL Documentation at 🌐 http://ecal.io for more information.

Facts about eCAL

  • eCAL is fast (1 - 10 GB/s, depends on payload size. Check the measured performance here)

  • eCAL provides both publish-subscribe and server-client patterns

  • eCAL is brokerless

  • eCAL provides a C++ and C interface for easy integration into other languages (like python, csharp or rust)

  • eCAL can be used in conjunction with Matlab Simulink as eCAL Simulink Toolbox for simulation and prototyping

  • eCAL has powerful tools for recording, replay and monitoring all your data flows - decentralized

  • eCAL is simple and zero-conf. No complex configuration for communication details and QOS settings are needed

  • eCAL is message protocol agnostic. You choose the message protocol that fits to your needs like Google Protobuf, CapnProto, Flatbuffers...

  • eCAL uses the standardized recording format HDF5

  • eCAL integrates gently into your ROS2 environment with the eCAL RMW

  • eCAL supports Intel and arm platforms

  • eCAL runs on a wide variety of operating systems:

    • Windows (stable)
    • Linux (stable)
    • QNX (stable)
    • MacOS (experimental)
    • FreeBSD (experimental)

Installation

We provide binary installers for Windows and Ubuntu. If you need further help installing and configuring eCAL, please refer to the documentation.

Windows

Download the latest eCAL Installer and follow the Setup Wizard

eCAL Setup

We only support 64bit Windows 7 / 10

Ubuntu

Install eCAL from our PPA:

sudo add-apt-repository ppa:ecal/ecal-latest
sudo apt-get update
sudo apt-get install ecal

This PPA will always upgrade you to the latest eCAL Release (-> Rolling Release PPA). If you intend to stay on an specific release, check out other PPAs here.

Ubuntu 16.04, 18.04, 20.04, 20.10, 21.04 for CPU architectures i386, x64, armhf, arm64 are supported at the time of writing.

Example

Using eCAL in your project to exchange data is simple. After you have downloaded eCAL and installed CMake, you are good to go.

Check out the Hello World example from the eCAL documentation for further details.

#include <ecal/ecal.h>
#include <ecal/msg/string/publisher.h>

#include <thread>

int main(int argc, char** argv)
{
  // Initialize eCAL. The name of our process will be "Hello World Publisher"
  eCAL::Initialize(argc, argv, "Hello World Publisher");

  // Create a String Publisher that publishes on the topic "hello_world_topic"
  eCAL::string::CPublisher<std::string> publisher("hello_world_topic");

  // Infinite loop
  while (eCAL::Ok())
  {
    // Publish a "Hello World" message
    publisher.Send("Hello World");

    std::this_thread::sleep_for(std::chrono::milliseconds(500));
  }

  // finalize eCAL API
  eCAL::Finalize();
}

Tools from the eCAL ecosystem

eCAL comes with a set of read-to-use tools that will help you with developing, testing and debugging your software. Command line interface versions and easy to use GUI applications are available.

  • The eCAL Monitor to visualize the data flow and inspect messages sent between publishers and subscribers

  • The eCAL Recorder to record the data sent between your eCAL nodes

  • The eCAL Player to replay the eCAL recordings later on

  • eCAL Sys to define your system configuration and monitor your applications

eCAL Mon

Related projects

License

eCAL is licensed under Apache License 2.0. You are free to

  • Use eCAL commercially
  • Modify eCAL
  • Distribute eCAL

eCAL is provided on an β€œas is” basis without warranties or conditions of any kind.

ecal's People

Contributors

blutkoete avatar brakmic-aleksandar avatar bsirang avatar christopherbate avatar dependabot[bot] avatar florianreimold avatar gavanderhoorn avatar hannemn avatar imgeorgiev avatar johngladp avatar joshfrankfurth avatar kerstin-keller avatar kerstinkeller avatar newproggie avatar pablorcum avatar phongt avatar rex-schilasky avatar software-natives-docker avatar vvarma avatar

Watchers

 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.