{"id":40917520,"url":"https://github.com/rticommunity/rticonnextdds-usecases-automotive","last_synced_at":"2026-01-22T03:17:48.089Z","repository":{"id":22203924,"uuid":"93182427","full_name":"rticommunity/rticonnextdds-usecases-automotive","owner":"rticommunity","description":"This use case shows how Connext DDS can be used by Autonomous Vehicle developers to leverage RTI’s extensive experience with autonomous robotics, safety-critical systems and state-of-the-art architectures to simplify development, design and integration.","archived":false,"fork":false,"pushed_at":"2024-07-18T08:30:28.000Z","size":15847,"stargazers_count":15,"open_issues_count":4,"forks_count":16,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-07-18T10:46:51.042Z","etag":null,"topics":["automotive","examplecode","lidar","rti-connext-dds"],"latest_commit_sha":null,"homepage":"https://www.rti.com/resources/usecases/automotive","language":"CMake","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"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":null,"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}},"created_at":"2017-06-02T16:05:25.000Z","updated_at":"2024-07-18T08:30:33.000Z","dependencies_parsed_at":"2024-07-18T10:28:47.830Z","dependency_job_id":"7c903083-ddf8-4233-9102-868ddf6526cb","html_url":"https://github.com/rticommunity/rticonnextdds-usecases-automotive","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rticommunity/rticonnextdds-usecases-automotive","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rticommunity%2Frticonnextdds-usecases-automotive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rticommunity%2Frticonnextdds-usecases-automotive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rticommunity%2Frticonnextdds-usecases-automotive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rticommunity%2Frticonnextdds-usecases-automotive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rticommunity","download_url":"https://codeload.github.com/rticommunity/rticonnextdds-usecases-automotive/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rticommunity%2Frticonnextdds-usecases-automotive/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28652094,"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":["automotive","examplecode","lidar","rti-connext-dds"],"created_at":"2026-01-22T03:17:47.487Z","updated_at":"2026-01-22T03:17:48.084Z","avatar_url":"https://github.com/rticommunity.png","language":"CMake","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Connext Drive Automotive Examples\nAutomotive examples using RTI Connext Drive.\n\nThis is a growing set of automotive architectural examples using RTI Connext Drive DDS APIs: Professional, Micro or Cert.\nboth are included in [Connext Drive 2.0](https://www.rti.com/drive) or available separately ( \n[Connext Pro](https://www.rti.com/products/connext-dds-professional) or \n[Connext Micro Cert](https://www.rti.com/products/connext-dds-cert)).  \nConnext Drive / Micro Cert is [TUV SUD-certified to ASIL-D](https://www.rti.com/hubfs/_Products/Connext%20Drive/TUV_SUD_2022_26262_Certificate-Full.png) \nto meet the safety lifecycle requirements set forth by ISO 26262.\n\nThese examples create a working system architecture of independent applications, \ninterconnected using high-performance data topics with Connext DDS (Pro or Cert).\nThe applications themselves are skeletal and do not contain any application logic\nother than publishing topic data once per second, and printing a status message\nwhen topic data is received.\n\nExample systems of pre-written applications are provided, and the user is free to design\nand create their own multi-application system using the included system code generator.\n\nThis example is divided into 3 sections which are to be built in the following order:\n\n 1. `datatypes`: Data type definitions used in the examples, buildable as a type support library.  This uses the RTI code generator to convert IDL data type definition files into source code to support each data type.  Build support is included for Connext Pro and Micro, in Debug and Release configurations, \n and for C++11, C++, C, and C-Cert language options.\n 2. `appsrcgen`: Whole-system application source code generation.  This creates the source and build files for an entire system of multiple Connext applications, as directed by a system description file.  **NOTE** that this step can be skipped if building the pre-generated systems in the `./examples` folders.\n 3. `\u003cgenerated system\u003e`: The buildable examples resulting from step 2 above, ready-to-build using CMake, and ready to be customized with your application logic.  **NOTE** that if building the pre-generated example systems, these will be in either the `./examples/pro_cpp11` (for Connext Pro, C++11, Release build), or the `./examples/micro_cert` (for Connext Micro Cert, C, Release build).\n \nREADME files with detailed instructions can be found in the `datatypes` and `appsrcgen` directories.\n\n## Example Overview\n\n### Connext Pro, Connext Micro 2, or both?\n\nThis example supports creating multi-app systems using Connext Pro or Connext Micro 2:\n\n- Connext Pro is a full-featured DDS implementation.  This example supports C, C++, or C++11 languages.\n- Connext Micro 2 is a reduced footprint / safety-certifiable DDS.  This example supports C-cert, C, or C++ languages.\n\nNote that the type support libraries in the `datatypes` directory *must be built first* to support Pro and/or \nMicro 2, in `Debug` and/or `Release` build configurations.\n\n### Build the Data Type Support Libraries\n\nSee the `datatypes/README.md` file for detailed instructions.  \nThis results in datatype support libraries for selected data types from RTI, COVESA, ROS and more.\n\n### Generate the Source Code and Build Files for a Complete System.\n\nSee the `appsrcgen/README.md` file for detailed instructions.  \nThis is a python3 utility that generates the buildable source code and build files for the multi-app system\nselected from the `appsrcgen/examples` directory, or created by the user for a custom solution.\n\nAs an example, the file `appsrcgen/examples/ces2023demo.json` will create an 8-application system that interfaces\nwith the [CARLA autonomous vehicle simulator](http://carla.org/) and reports status of key vehicle signals using \n[COVESA](https://www.covesa.global/) VSS data types.   This system was demonstrated by RTI at CES 2023.\n\nOther examples will create different system configurations, from other Next-Gen E/E configurations down to\nsimple 'Hello, World' pub/sub systems.   With the large collection of data types, the user is encouraged\nto explore and create systems that exactly match their needs -- in minutes, without a steep learning curve.\n\n### Build and Customize the System\n\nThe generated system source and cmake files will be in a ready-to-build configuration, resulting in a \nsystem of applications communicating on the DDS framework, and ready for you to add your own application logic.\n\n\n## Quick Start Instructions\n\nAfter cloning this repo:\n\n**Build the Connext Micro Cert Library**\n\nNOTE: if using this example with Connext Drive EVAL edition, skip ahead to the next step.\nThe EVAL edition has pre-built `Release` libraries for Connext Micro Cert, these are located\nin the `rti_connext_dds_micro-2.4.14/lib` directories as `*target*_certprofile`, where each\ntarget directory contains one library file ( `librti_mez.a` ).\n\nFor those with a non-EVAL installation of Connext Micro Cert, build the libraries with\n`Release` build type, `RTIME_CERT=1`, and name the target using a `_certprofile` suffix,\nas in: `x64Linux4gcc7.3.0_certprofile`.  \nComplete build instructions are in the Connext Micro documentation.\n\n\n**Build the Data Types Library**\n\n- Open a terminal in the `datatypes` directory.\n- Set up the environment to build for Connext (Pro or Micro).  For example: Connext Micro v2 Cert:\n    - `export RTIMEHOME=\u003cinstall-location-for-connext-micro2\u003e`\n- Set the target name as an environment variable, such as:\n    - x64Linux:\n        - `export RTIME_TARGET_NAME=x64Linux4gcc7.3.0_certprofile`\n    - armv8Linux:\n        - `export RTIME_TARGET_NAME=armv8Linux4gcc7.3.0_certprofile`\n\n- If cross-compiling to a different CPU architecture (such as building ARMv8 on an x64 host PC), ensure that the correct toolchain is available.  For example:\n    - armv8Linux:\n        - `export CC=\"/usr/bin/aarch64-linux-gnu-gcc\"`\n        - `export CXX=\"/usr/bin/aarch64-linux-gnu-g++\"`\n\n- Run the build generator to create a build script for your target, such as:\n    - x64Linux:\n        - `./bin/build-gen.sh micro2cert x64Linux4gcc7.3.0_certprofile Release`\n    - armv8Linux:\n        - `./bin/build-gen.sh micro2cert armv8Linux4gcc7.3.0_certprofile Release`\n    - Note: change the above to match your target platform if not listed\n    - Note: if building on a Windows host, use the `./bin/build-gen.bat` script.\n\n- Run the generated script to build the library, for example:\n    - x64Linux:\n        - `build/micro2cert-x64Linux4gcc7.3.0_certprofile-Release.sh`\n    - armv8Linux:\n        - `build/micro2cert-armv8Linux4gcc7.3.0_certprofile-Release.sh`\n    - Note: this step will generate and build the typesupport header files and library.\n\n\n**Build the Example Applications**\n\n*If building for Connext Micro (C-cert)*:\n\n- Open a terminal in the `examples/micro_cert` directory.\n\n- Set up the environment for Connext Micro v2:\n    - `export RTIMEHOME=\u003cinstall-location-for-connext-micro2\u003e`\n\n- Set the target name as an environment variable, such as:\n    - x64Linux:\n        - `export RTIME_TARGET_NAME=x64Linux4gcc7.3.0_certprofile`\n    - armv8Linux:\n        - `export RTIME_TARGET_NAME=armv8Linux4gcc7.3.0_certprofile`\n\n- If cross-compiling to a different CPU architecture (such as building ARMv8 on an x64 host PC), ensure that the correct toolchain is available.  For example:\n    - armv8Linux:\n        - `export CC=\"/usr/bin/aarch64-linux-gnu-gcc\"`\n\n- Create a build directory:\n    - `mkdir build`\n    - `cd build`\n\n- Use CMake to create the makefile for a `Release` build:\n    - `cmake -DCMAKE_BUILD_TYPE=Release ..`\n\n- Run 'make' to build the applications:\n    - `make`\n\n\n*If building for Connext Pro (C++11):*\n\n- Open a terminal in the `examples/pro_cpp11` directory.\n\n- Set up the environment for Connext Pro:\n    - `export NDDSHOME=\u003cinstall-location-for-connext-pro\u003e`\n\n- If cross-compiling to a different CPU architecture (such as building ARMv8 on an x64 host PC), ensure that the correct toolchain is available.  For example:\n    - armv8Linux:\n        - `export CC=\"/usr/bin/aarch64-linux-gnu-gcc\"`\n\n- Create a build directory:\n    - `mkdir build`\n    - `cd build`\n\n- Use CMake to create the makefile for a `Release` build:\n    - `cmake -DCMAKE_BUILD_TYPE=Release ..`\n\n- Run 'make' to build the applications:\n    - `make`\n\n\n\n**Run the Example Applications**\n\nRUN ON LINUX BUILD PC (Native):  \nIf running this example in-place as native apps, a launcher script is available at `examples/run-demo.sh`,\nthis can be used to launch all applications in the example in separate GNOME terminal tabs:\n\n```\n    ./run-demo.sh\n```\nA series of terminal tabs will open (1 for each application in the example), \nand messages should appear in each terminal to indicate successful communications.  \nApplications can be individually exited using ctrl-C.\n\nRUN ON LINUX REMOTE TARGET (No desktop GUI):  \nTo run on a remote target such as an Automotive SoC platform running ARMv8 Linux:  \n\n- Copy the resulting executables from the `build/\u003ctarget\u003e' directory to the remote target.\n- Launch all 5 applications to run the example system\n\n\n**Results**\n\nEach application will print a message when it publishes a topic sample, and when a \nsubscribed message sample is received.   At startup, status messages will also be \nprinted to the terminal when connection to a publisher or subscriber has been established.  \nThe results should be similar to (for Connext Micro):\n\n```\n    Matched a ObjectsDetected subscriber\n    Matched a Lidar publisher\n    Matched a Camera publisher\n    Matched a MapData publisher\n    Matched a Pose3D publisher\n    Matched a ObjectsDetected subscriber\n    Matched a Trajectory publisher\n    Matched a ObjectsDetected subscriber\n    Valid Lidar_sample received\n    Valid Camera_sample received\n    Valid MapData_sample received\n    Valid Trajectory_sample received\n    Valid Pose3D_sample received\n    Written ObjectsDetected sample 2\n     Subscriber sleeping for 1000 msec...\n    Valid Lidar_sample received\n```\n\n**Going Further**  \nYou now have a buildable, working, high-performance system of distributed applications\nbuilt to use the safety-certifiable Connext Cert framework.\nThis is an ideal starting point for building next-gen E/E vehicle architectures;\njust add your own application logic to each module and take full advantage of the\ncommunications framework that is already in place.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frticommunity%2Frticonnextdds-usecases-automotive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frticommunity%2Frticonnextdds-usecases-automotive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frticommunity%2Frticonnextdds-usecases-automotive/lists"}