https://github.com/eclipse-ecal/ecal Skip to content Navigation Menu Toggle navigation Sign in * Product + GitHub Copilot Write better code with AI + Security Find and fix vulnerabilities + Actions Automate any workflow + Codespaces Instant dev environments + Issues Plan and track work + Code Review Manage code changes + Discussions Collaborate outside of code + Code Search Find more, search less Explore + All features + Documentation + GitHub Skills + Blog * Solutions By company size + Enterprises + Small and medium teams + Startups By use case + DevSecOps + DevOps + CI/CD + View all use cases By industry + Healthcare + Financial services + Manufacturing + Government + View all industries View all solutions * Resources Topics + AI + DevOps + Security + Software Development + View all Explore + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners + Executive Insights * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Enterprise + Enterprise platform AI-powered developer platform Available add-ons + Advanced Security Enterprise-grade security features + GitHub Copilot Enterprise-grade AI features + Premium Support Enterprise-grade 24/7 support * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up Reseting focus You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} eclipse-ecal / ecal Public * Notifications You must be signed in to change notification settings * Fork 178 * Star 857 eCAL - enhanced Communication Abstraction Layer. A high performance publish-subscribe, client-server cross-plattform middleware. ecal.io License Apache-2.0 license 857 stars 178 forks Branches Tags Activity Star Notifications You must be signed in to change notification settings * Code * Issues 95 * Pull requests 5 * Discussions * Actions * Projects 0 * Wiki * Security * Insights Additional navigation options * Code * Issues * Pull requests * Discussions * Actions * Projects * Wiki * Security * Insights eclipse-ecal/ecal support/v5.13 BranchesTags [ ] Go to file Code Folders and files Last Last Name Name commit commit message date Latest commit History 1,010 Commits .github .github app app build_linux/clang-tidy build_linux/clang-tidy build_win build_win cmake cmake contrib contrib cpack cpack doc doc ecal ecal gfx gfx lang lang lib lib licenses licenses logo logo samples samples testing testing thirdparty thirdparty .clang-tidy .clang-tidy .clang-tidy-for-the-future .clang-tidy-for-the-future .gitignore .gitignore .gitmodules .gitmodules CMakeLists.txt CMakeLists.txt CMakePresets.json CMakePresets.json CMakeSettings.json CMakeSettings.json CODE_OF_CONDUCT.md CODE_OF_CONDUCT.md CONTRIBUTING.md CONTRIBUTING.md LICENSE.txt LICENSE.txt NOTICE.md NOTICE.md NOTICE.txt NOTICE.txt PVSSettings.xml PVSSettings.xml README.md README.md colcon.pkg colcon.pkg conanfile.py conanfile.py package.xml package.xml scan-dependencies-with-dash.py scan-dependencies-with-dash.py View all files Repository files navigation * README * Code of conduct * Apache-2.0 license eCAL - enhanced Communication Abstraction Layer Build Windows Server 2019 Build Ubuntu 20.04 Build Ubuntu 22.04 Build macOS 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 provides publish - subscribe and server - client pattern to connect different nodes in the network with almost no configuration required. eCAL automatically chooses the best available data transport mechanism for each link, it supports: * Shared memory for local communication (incredibly fast!) * UDP and TCP for network communication Visit the eCAL Documentation at https://ecal.io for more information. Architecture eCAL Architecture Facts about eCAL * eCAL is fast (1 - 20 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 (experimental) + 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 10 / 11 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 18.04, 20.04, 22.04, 24.04 for CPU architectures amd64, armhf, arm64 are supported at the time of writing. Non-LTS versions of Ubuntu are usually supported, too. 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 #include #include 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 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 eCAL eco system tools / utilities / interfaces * ecal-toolbox - Mathworks simulink toolbox for eCAL * ecal-mongraph - Simple graph visualization for eCAL * ecal-gpsd-client - eCAL gpsd client eCAL & Foxglove * ecal-foxglove-bridge - Visualize eCAL messages with Foxglove Studio * ecal-mcap-tools - Interoperability tools between eCAL HDF5 and MCAP measurement format eCAL & ROS * rmw_ecal - eCAL / ROS2 middleware layer * rosidl_typesupport_protobuf - Protobuf based rosidl typesupport Other projects related to eCAL * fineftp-server - FTP functionality to collect distributed measurement artifacts over network * tcp_pubsub - Additional TCP transport layer for higher reliability for publication/subscription over network * udpcap - Npcap based UDP-socket emulation to increase the eCAL performance on MS Windows * docker-ecal - Inoffical dockerfiles for eCAL * golang-ecal - eCAL go language binding * ecal-rs - eCAL rust language binding * nodejs-ecal - eCAL wrapped for Nodejs * trellis - General purpose middleware framework for distributed applications * ADMA2eCAL - Software gateway for connection to ADMA hardware from GeneSys Elekronik GmbH 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. Contributors [6874747073] About eCAL - enhanced Communication Abstraction Layer. A high performance publish-subscribe, client-server cross-plattform middleware. ecal.io Topics middleware ipc client-server publish-subscribe shared-memory autonomous-driving interprocess-communication message-protocol google-protobuf ecal Resources Readme License Apache-2.0 license Code of conduct Code of conduct Activity Custom properties Stars 857 stars Watchers 36 watching Forks 178 forks Report repository Releases 81 v5.13.3 Latest Oct 24, 2024 + 80 releases Contributors 49 * * * * * * * * * * * * * * + 35 contributors Languages * C++ 91.2% * CMake 4.0% * C 3.2% * Python 1.0% * Shell 0.3% * C# 0.1% * Other 0.2% Footer (c) 2024 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact * Manage cookies * Do not share my personal information You can't perform that action at this time.