{"id":40917398,"url":"https://github.com/rticommunity/connextauto-bus","last_synced_at":"2026-01-22T03:17:25.135Z","repository":{"id":248578057,"uuid":"571828615","full_name":"rticommunity/connextauto-bus","owner":"rticommunity","description":"Common Data Architecture : Data Model + Component Interfaces using DDS","archived":false,"fork":false,"pushed_at":"2025-05-23T05:48:47.000Z","size":237,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-23T06:53:32.588Z","etag":null,"topics":["autonomous-driving","autonomous-vehicles","autonomy","connextdds","data-centric","data-oriented","databus","datamodel","dataspace","datatypes","dds","microservice","omg-dds","qos","rti-connext-dds","software-architecture","software-defined-vehicle"],"latest_commit_sha":null,"homepage":"","language":"CMake","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rticommunity.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-11-29T01:02:33.000Z","updated_at":"2025-05-23T05:48:46.000Z","dependencies_parsed_at":"2025-02-28T04:33:58.424Z","dependency_job_id":"bab735c9-27bd-4f69-b37f-05f57ffdcf66","html_url":"https://github.com/rticommunity/connextauto-bus","commit_stats":null,"previous_names":["rticommunity/connextauto-bus"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/rticommunity/connextauto-bus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rticommunity%2Fconnextauto-bus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rticommunity%2Fconnextauto-bus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rticommunity%2Fconnextauto-bus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rticommunity%2Fconnextauto-bus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rticommunity","download_url":"https://codeload.github.com/rticommunity/connextauto-bus/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rticommunity%2Fconnextauto-bus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28652074,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T01:17:37.254Z","status":"online","status_checked_at":"2026-01-22T02:00:07.137Z","response_time":144,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autonomous-driving","autonomous-vehicles","autonomy","connextdds","data-centric","data-oriented","databus","datamodel","dataspace","datatypes","dds","microservice","omg-dds","qos","rti-connext-dds","software-architecture","software-defined-vehicle"],"created_at":"2026-01-22T03:17:24.463Z","updated_at":"2026-01-22T03:17:25.130Z","avatar_url":"https://github.com/rticommunity.png","language":"CMake","readme":"# Common Data Architecture\n\n- [Introduction](#introduction)\n- [Getting Started](#getting-started)\n- [Usage](#usage)\n- [Data Architecture Emulation](#data-architecture-emulation)\n- [Exploring Further](#exploring-further)\n- [References](#references)\n\n## Introduction\n\nThe *common data architecture* repo defines a [software databus](https://github.com/rajive/doma-skel/blob/master/doc/doma/Bus.md) comprising of:\n\n- A **common [Data Model](https://github.com/rajive/doma-skel/blob/master/doc/doma/DataModel.md)** using the [DDS](https://www.dds-foundation.org/omg-dds-standard/) standard\n-  Component **[Data Interfaces](https://github.com/rajive/doma-skel/blob/master/doc/doma/Interface.md)**\n  that use the common data model\n\nThese can be opened and edited in the [RTI System Designer](https://community.rti.com/documentation#doc_tools) or using a code editor with XML completion.\n\nIn addition, the repo provides:\n  - A launcher (`run`) utility, that sets up the correct runtime environment for launching components\n  - An emulation of the software system architecture **functional blocks** and **data flows** for software system architects maintainting this repo\n- An OPTIONAL **[common build system](doc/Build.md)** for building the interfaces and components for the convenience of application developers\n\nThe repo showcases an approach for rapidly building large distibuted software systems, with components developed by multiple independent teams. The common data architecture serves as the *lingua franca* for **software system integration**.\n\nA component *data interface* is an executable contract that a **software system architecture team** can share with an **application development team** for implementing a component. Each application devleopment team can work independently, with the assurance that their component implementation would be easily and quickly integrated into the software system.  The system software architecture team can independently evolve the data models and data interfaces consistently across application development teams, to support rapid and agile software development.\n\nThe common data model can be used to define many component data interfaces. The component data interfaces defined in this repo should be regarded as examples of  possible functional decomposition of a software system architecture using the common data model. For each component data interface, many implementations are possible. Components implement component data data interfaces defined in this repo.\n\nComponent implementations may be written in any supported programming language of choice with any RTI Connext DDS Software Development Kit (SDK) such as *RTI Connext Professional* or *RTI Connext Micro*. Component implementations could also be written using a scipting language such as Python, Lua, or JavaScript---especially useful for generating test data, prototyping, or emulation.\n\nComponents implementations are provided by **component specific project repositories *defined elsewhere*** (see [Usage](#usage)). This repo provides a **common build system** for application developers, to build generated datatypes and data interfaces into a common library that can be linked to by component implementations. The *common build system* is intended to be used by component repositories that use this repo. Thus, this repo would be a dependency (prerequisite) for building independent standalone components using the provided *common data model, data interfaces, and build system*.\n\nHowever, this repo provides a way to emulate and visualize the *software system architecture functional blocks and data flows* for system software architects. Each component data interface is emulated using  *[RTI Prototyper with Lua](https://community.rti.com/static/documentation/connext-dds/6.1.0/doc/manuals/connext_dds_professional/tools/prototyper/index.htm#prototyper/LuaComponentProgModel.htm%3FTocPath%3D7.%2520Lua%2520Component%2520Programming%2520Model%7C_____0)*. The data flows and the component data interfaces can be visualized using *[RTI Admin Console](https://www.rti.com/gettingstarted/adminconsole)*. Thus, changes to the data model data interfaces can be quickly visualized and validated at the software system architecture level.\n\n\n## Prerequisites\n\nPlease ensure that the following are installed on your development host:\n\n- [CMake](https://cmake.org/): 3.20 or later\n- A [RTI Connext SDK](https://community.rti.com/documentation/), i.e. one or both of the following:\n  - RTI Connext DDS Professional: 7.3 LTS or later\n  - RTI Connext DDS Micro: 2.4.14.2 or later\n\n\nCurrently this repo and the common build system had been verified on the following development hosts:\n\n- OCI Containers (docker)\n- Linux\n- macOS\n- Windows\n\n\n## Getting Started\n### Get this repo\n\n- Clone (or fork and clone) this repo under a directory named `connextauto`. Later we shall clone other component repositories ([`connextauto-swc-*`](https://github.com/orgs/rticommunity/repositories?q=connextauto)) into the `connextauto/` directory.\n\n      mkdir connextauto\n      cd connextauto/\n\n      git clone \u003cgit_url_to_this_repository\u003e\n\n### Setup the environnment variables\n\n- Setup the [DATABUSHOME](doc/DATABUSHOME.md) environment variable to point to [this repo](./)\n\n      # created by git clone above\n      cd \u003c/path/to/connextauto/connextauto-bus/\u003e\n\n      # /path/to/this/repo\n      export DATABUSHOME=$(pwd -P)\n\n- Setup environment variables for at least one RTI Connext SDK:\n  - If you want to build for *RTI Connext DDS Professional*, setup `NDDSHOME`\n\n        export NDDSHOME=/path/to/\u003crti_connext_dds-x.y.z\u003e\n\n  - If you want to build for *RTI Connext DDS Micro*, setup `RTIMEHOME`\n\n        export RTIMEHOME=/path/to/\u003crti_connext_dds_micro-x.y.z\u003e\n\n  - Setup both `NDDSHOME` and `RTIMEHOME` if you want to build for **both SDKs**.\n\n- Setup environment variables for your architecture. Example:\n\n      export RTI_ARCH=x64Linux4gcc7.3.0\n\n### Generate the build system for at least one RTI Connext SDK\n\nFrom the repo's top-level directory:\n\n- To generate the build system for *RTI Connext DDS Professional*, e.g.\n\n      $DATABUSHOME/bin/build-gen.sh pro $RTI_ARCH Debug\n\n- To generate the build system for *RTI Connext DDS Micro*, e.g.\n\n      $DATABUSHOME/bin/build-gen.sh micro $RTI_ARCH Debug\n\nThis step creates a `build/` directory in the project top-level directory. The `build/` directory contains a shell script to build for the specified target platform and build kind.\n\nFor more details, please refer to the documentation on the [common build system](doc/Build.md).\n\n### Build the datatypes for at least one RTI Connext SDK\n\nFrom this git repo's top-level directory, run the generated build script to build the datatypes:\n\n- To build for *RTI Connext DDS Professional*, e.g.:\n\n      ./build/pro-$RTI_ARCH-Debug.sh\n\n- To build for *RTI Connext DDS Micro*, e.g.:\n\n      ./build/micro-$RTI_ARCH-Debug.sh\n\nThis step generates the equivalent XML representations of the datatypes in the [res/types/](res/types/) directory tree. It also ensures that the code generated from the IDL datatype definitions in this repo are buildable for the selected target platform.\n\nThe generated XML datatype representations are now ready for use by the emulators, tools, and infrastruture services, and components that use dynamic datatypes.\n\nRepeat this step everytime a source *IDL* or *XML App Creation* file is updated.\n\nFor more details, please refer to the documentation on the [common build system](doc/Build.md).\n\n\n## Usage\n\nBrowse and Edit the Data Architecture:\n\n  - Use [RTI System Designer](https://community.rti.com/static/documentation/connext-dds/current/doc/manuals/connext_dds_professional/tools/system_designer/index.html) to browse and edit the Data Architecture in *this* repo\n    -  Launch [RTI System Designer](https://community.rti.com/static/documentation/connext-dds/current/doc/manuals/connext_dds_professional/tools/system_designer/index.html)\n    - Open the `connextauto.rtisdproj`\n  - Alternatively, use a code editor with XML completion to browse and edit the Data Architecture in *this* repo\n  - Rebuld *this* repo if you modify the data architeture, following the [Getting Started](#getting-started) steps.\n\nUse the [connextauto-swc-template](https://github.com/rticommunity/connextauto-swc-template) to create a new software component repo\n\n- Follow the [Getting Started](https://github.com/rticommunity/connextauto-swc-template?tab=readme-ov-file#getting-started) in README of the new software component repo\n\n- Populate the [`CMakeLists.txt`](Mhttps://github.com/rticommunity/connextauto-swc-template/blob/master/CMakeLists.txt) in the new software component repo with list of executables to build, the source files, the SDKs to build for, and the libraries to link.\n\n- To include datatypes, use the paths to the datatype files (`.idl`) **relative** to the `$DATABUSHOME` top-level directory. For example, in C or C++:\n\n      #include \"res/types/data/sensing/Camera_t.h\"\n      #include \"res/types/data/sensing/Camera_tSupport.h\"\n\n- You are free to organize and implement the new component repo as it befits the implementation. Take a look a other [`connextauto-swc-*/`](https://github.com/orgs/rticommunity/repositories?q=connextauto) repositories for ideas.\n\n\n## Data Architecture Emulation\n\nThe open *data architecture* defined in this repo can be quickly emulated and visualized without the need for implementing new components in code. The technique is useful for software system architects as new datatypes, qos profiles, and data interfaces are added to the repo and architectue considerations are being evaluated.\n\nSelected examples of data architecture emulation are descibed below.\n- [Shapes](doc/Shapes.md) : DDS Shapes Demo\n- [Drive](doc/Drive.md) : Automated and Assisted Driving (AD)\n\n*NOTE: The data interface emulation currently relies on Lua scripting provided by the\n[RTI Prototyper](https://community.rti.com/documentation/rti-connext-dds-612#doc_tools),\nand that was deprecated after RTI Connext 6.1.2 LTS. The examples below\nuse the [rtiddsprototyper](https://community.rti.com/static/documentation/connext-dds/6.1.2/doc/manuals/connext_dds_professional/tools/prototyper/index.htm#prototyper/LuaComponentProgModel.htm%3FTocPath%3D7.%2520Lua%2520Component%2520Programming%2520Model%7C_____0)\nfrom RTI Connext 6.1.2, by simply overriding the NDDSHOME environment variable, as shown below.*\n\n      env NDDSHOME=/path/to/rti_connext_dds-6.1.2\n      $DATABUSHOME/bin/run \u003cenv_name\u003e ./bin/\u003cscript\u003e [\u003cargs\u003e]\n\n### Run the *Shapes* emulation\n\nFrom this git repo's top-level directory, run an emulation of the [Shapes](https://www.rti.com/products/tools/shapes-demo) data interfaces as follows:\n\n      env NDDSHOME=/path/to/rti_connext_dds-6.1.2 \\\n      $DATABUSHOME/bin/run Shapes ./bin/Shapes [domainId]\n\nwhere the [bin/Shapes](bin/Shapes) component emulates the Shapes data interfaces using *RTI Prototyper with Lua*.\n\n- For more details on running components, please refer to the documentation on the [common component launcher](doc/Run.md) utility.\n- Use the [RTI Admin Console](https://www.rti.com/gettingstarted/adminconsole) to visualize the data flows and the emulated component data interfaces.\n- Use [rtiddsspy](https://community.rti.com/static/documentation/connext-dds/7.0.0/doc/manuals/connext_dds_professional/tools/rti_dds_spy/index.html) to view the data.\n\nTo stop the shapes data flow emulator, press `^C` (Control-C)\n\nFor more details, please refer to the documentation on\n[Shapes](doc/Shapes.md) data architecture.\n\n### Run the *Drive* emulation\n\nFrom the git repo's top-level directory, run an emulation of the *Drive* interfaces as follows:\n\n      env NDDSHOME=/path/to/rti_connext_dds-6.1.2 \\\n      $DATABUSHOME/bin/run Drive ./bin/Drive [domainId]\n\nwhere the [bin/Drive](bin/Drive) component emulates the Drive data interfaces using *RTI Prototyper with Lua*.\n\n- For more details on running components, please refer to the documentation on the [common component launcher](doc/Run.md) utility.\n- Use the [RTI Admin Console](https://www.rti.com/gettingstarted/adminconsole) to visualize the data flows and the emulated component data interfaces.\n- Use [rtiddsspy](https://community.rti.com/static/documentation/connext-dds/7.0.0/doc/manuals/connext_dds_professional/tools/rti_dds_spy/index.html) to view the data.\n\nTo stop the drive data flow emulator, press `^C` (Control-C)\n\nFor more details, please refer to the documentation on the\n[Drive](doc/Drive.md) data architecture.\n\n## Exploring Further\n\n- Common Data Model\n  - [data types](res/types/data/) (structure)\n  - [qos of service](res/qos/data/) (behavior)\n- Component Data Interfaces\n  - [Shapes](doc/Shapes.md) : DDS Shapes Demo\n  - [Drive](doc/Drive.md) : Automated and Assisted Driving (AD)\n- [Data-Oriented Micro-Services Architecture (DOMA)](https://github.com/rajive/doma-skel) : an approach to data-centric system software architecture repository organization that supports independent lifecycles for artifacts that need to be maintained by system software architects and by applicaton developers.\n  -  Databus repository : this repository, maintained by system architects, that defines the data flows and [component data interfaces](if/) declaratively\n  - Component repositories : downstream component repositories, maintained by application developers, that implement [component data interfaces](if/) defined in this repository using the [common build system](doc/Build.md)\n- [Common Component Launcher](doc/Run.md) utility\n- [Common Build System Generator](doc/Build.md) utility\n\nComponent implementations are independently **defined elsewhere in other project repositories**. Those component implementation repositories depend on this repository for the common data model, the component data interfaces, the common build system, and the common component launcher.\n\nThe component implementations defined elsewhere can be mixed and matched with the emulated components defined in this repository. Such an approach allows a software system to be built and tested incrementally, where some data interfaces are emulated, while others are being fully implemented.\n\n## References\n\n- [TR-005 Data-Oriented Communication Architecture for Automated and Assisted Driving Systems](https://avcc.org/tr005/)\n- [TR-001 Conceptual Architecture for Automated and Assisted Driving Systems](https://avcc.org/tr001/)\n- [Data-Oriented Architecture: A Loosely-Coupled Real-Time SOA](https://community.rti.com/archive/data-oriented-architecture-loosely-coupled-real-time-soa)\n\n---\n(C) Copyright 2020-2025 Real-Time Innovations, Inc.  All rights reserved.\n\nThe use of this software is governed by the terms specified in the RTI Labs License Agreement, available at https://www.rti.com/terms/RTILabs.\n\nBy accessing, downloading, or otherwise using this software, you agree to be bound by those terms.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frticommunity%2Fconnextauto-bus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frticommunity%2Fconnextauto-bus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frticommunity%2Fconnextauto-bus/lists"}