{"id":13723402,"url":"https://github.com/intel/ad-rss-lib","last_synced_at":"2025-05-07T16:32:57.992Z","repository":{"id":36175761,"uuid":"170410523","full_name":"intel/ad-rss-lib","owner":"intel","description":"Library implementing the Responsibility Sensitive Safety model (RSS) for Autonomous Vehicles","archived":false,"fork":false,"pushed_at":"2025-02-25T08:59:14.000Z","size":310717,"stargazers_count":342,"open_issues_count":4,"forks_count":138,"subscribers_count":29,"default_branch":"main","last_synced_at":"2025-02-25T09:31:26.410Z","etag":null,"topics":["autonomous-vehicles","rss","safety"],"latest_commit_sha":null,"homepage":"https://intel.github.io/ad-rss-lib/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/intel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-13T00:02:25.000Z","updated_at":"2025-02-25T08:54:00.000Z","dependencies_parsed_at":"2024-06-26T10:20:09.233Z","dependency_job_id":"1c7c44c6-e274-44a5-92a4-bc80e78981f2","html_url":"https://github.com/intel/ad-rss-lib","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intel%2Fad-rss-lib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intel%2Fad-rss-lib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intel%2Fad-rss-lib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intel%2Fad-rss-lib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/intel","download_url":"https://codeload.github.com/intel/ad-rss-lib/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252915564,"owners_count":21824598,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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-vehicles","rss","safety"],"created_at":"2024-08-03T01:01:40.801Z","updated_at":"2025-05-07T16:32:52.980Z","avatar_url":"https://github.com/intel.png","language":"C++","readme":"﻿C++ Library for Responsibility Sensitive Safety\n=====\n\n[![License](https://img.shields.io/badge/License-LGPL%202.1--Clause-blue.svg)](https://opensource.org/licenses/LGPL-2.1)\n[![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/intel/ad-rss-lib.svg)](https://github.com/intel/ad-rss-lib/releases/latest)\n[![Build Status](https://github.com/intel/ad-rss-lib/actions/workflows/build_test.yml/badge.svg?branch=main)](https://github.com/intel/ad-rss-lib/actions/workflows/build_test.yml/badge.svg?branch=main)\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/8374/badge)](https://www.bestpractices.dev/projects/8374)\n[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/intel/ad-rss-lib/badge)](https://securityscorecards.dev/viewer/?uri=github.com/intel/ad-rss-lib)\n\n\n# Table of contents\n1. [Introduction](#introduction)\n2. [License](#license)\n3. [Documentation](#documentation)\n4. [Releases](#releases)\n   1. [Release 4.x](#release_4)\n   2. [Release 3.x](#release_3)\n   3. [Release 2.x](#release_2)\n   4. [Release 1.x](#release_1)\n5. [Getting Started](#started)\n   1. [Supported Systems](#systems)\n6. [Building the library](#building)\n7. [Contributing](#contributing)\n\n\n## Introduction \u003ca name=\"introduction\"\u003e\u003c/a\u003e\nThis library intends to provide a C++ implementation of the Responsibility Sensitive Safety model (RSS) for Automated Vehicles.\n\nRSS is described in the following paper. Potential users of this C++ library are encouraged to read these papers in order to become familiar with the concepts and functions provided by the library.\n\n* On a Formal Model of Safe and Scalable Self-driving Cars, S. Shalev-Shwartz, S. Shammah, A. Shashua, Mobileye, arXiv:1708.06374, [https://arxiv.org/abs/1708.06374](https://arxiv.org/abs/1708.06374)\n\nThe RSS module in this library receives (processed) sensor information as input and provides actuator command restrictions as output. The input to the RSS module is an object list, with information about all objects (road agents) in the surrounding environment of the ego vehicle. For each object, the RSS module creates a description of the object-ego vehicle pair and their properties, called a \"situation\". For each situation, the relevant RSS safety checks are performed and a proper response is calculated. Finally, one overall response is obtained by combining the responses calculated for each object-ego vehicle situation. The resulting actuation command restrictions, in the form of longitudinal and lateral limits on acceleration are provided as output.\n\nThe ad_rss library contains a stand-alone C++ implementation of the RSS module.\n\n* Conversion of AV sensor data to the input object list required by the RSS module is outside the scope of the ad_rss library. This includes conversion of object location and motion in a Cartesian world coordinate system into a constellation based coordinate system.\n* Conversion of the output proper response and acceleration restrictions to real AV actuation commands (enforcing the restrictions) is outside the scope of this library. This conversion depends strongly on the software and hardware setup of the actual (or simulated) vehicle.\n\nThe scope, design and architecture of this C++ library for RSS is described in more detail in the following document packaged with this release. This documentation includes guidance on the usage of the RSS library and its integration into a automated driving system. Users of this library are strongly encouraged to read this documentation prior to integration of the library.\n\n### Integrating RSS with automated driving maps\nWhen RSS is to be integrated into a larger system it is usually up to the user implementation to provide the required input into RSS based on the environment information\navailable within the system. The [*ad_rss_map_integration*](https://intel.github.io/ad-rss-lib/ad_rss_map_integration/Main/) library provides an example C++ implementation\nfor integrating RSS with automated driving maps.\n\n### Usage of ad-rss-lib\nIf you use ad-rss-lib for any publication, please cite the IV'2019 paper:\n```\n@INPROCEEDINGS{\n   title={Towards Standardization of AV Safety: C++ Library for Responsibility Sensitive Safety}\n   author={Gassmann, Bernd and Oboril, Fabian and Buerkle, Cornelius and Liu, Shuang and Yan, Shoumeng and Elli, Maria Soledad and Alvarez, Ignacio and Aerrabotu, Naveen and Jaber, Suhel and van Beek, Peter and Iyer, Darshan and Weast, Jack}\n   booktitle={2019 IEEE Intelligent Vehicles Symposium (IV)}\n   year={2019}\n}\n```\n\n#### Usage with Python\nStarting with Release v1.6, it is possible to use the ad-rss-lib library also with Python.\nPlease see the [Documentation on the Python binding for ad_rss](https://intel.github.io/ad-rss-lib/ad_rss/ad_rss_python/index.html) or [ad_rss_map_integration_python](https://intel.github.io/ad-rss-lib/ad_rss_map_integration/ad_rss_map_integration_python/index.html) for further information.\n\n#### Usage within CARLA\nThis library can be used together with the open-source driving simulator [CARLA](https://github.com/carla-simulator/carla) to investigate the behavior of RSS. A first version is shown in the following video sequence:\n[![RSS safety sensor in CARLA](https://raw.githubusercontent.com/intel/ad-rss-lib/main/doc/images/carla_integration.png)](https://www.youtube.com/watch?v=UxKPXPT2T8Q)\n\n#### Usage within Baidu Apollo\nIn addition, the library is already integrated and used in Baidu's [Apollo Open Platform stack](https://github.com/ApolloAuto/apollo):\n\n![RSS integration in Apollo](https://raw.githubusercontent.com/intel/ad-rss-lib/main/doc/images/apollo_integration.png)\n\n\n## License \u003ca name=\"license\"\u003e\u003c/a\u003e\nThis software library is provided under the LGPL-2.1 open-source license: https://opensource.org/licenses/LGPL-2.1.\n\nIn addition, the terms in the following apply:\n[RELEASE NOTES AND DISCLAIMERS](./RELEASE_NOTES_AND_DISCLAIMERS.md).\n\n## Documentation\nVisit the project's [GitHub page](https://intel.github.io/ad-rss-lib/) to access the online version of the full documentation of this library. This includes:\n\n* [Doxygen](https://intel.github.io/ad-rss-lib/doxygen/ad_rss/index.html)\n* [Background documentation](https://intel.github.io/ad-rss-lib/ad_rss/Overview/).\n* [Integrate RSS with AD map data](https://intel.github.io/ad-rss-lib/ad_rss_map_integration/Main/) and respective [Doxygen](https://intel.github.io/ad-rss-lib/doxygen/ad_rss_map_integration/index.html).\n\nIf you have any additional question not answered therein, you might find more in the [FAQ](https://intel.github.io/ad-rss-lib/FAQ/index.html)\n\n## Releases \u003ca name=\"releases\"\u003e\u003c/a\u003e\nGeneral release notes and changes can be found in the [Changelog](https://intel.github.io/ad-rss-lib/CHANGELOG/index.html)\n\n#### Release 4.x.x \u003ca name=\"release_4\"\u003e\u003c/a\u003e\nThese releases extends the 3.x version with handling of unstructured roads and pedestrians.\n\n#### Release 3.x.x \u003ca name=\"release_3\"\u003e\u003c/a\u003e\nThese releases improve the 2.x version capabilities on constellation creation.\n\n#### Release 2.x.x \u003ca name=\"release_2\"\u003e\u003c/a\u003e\nThese releases extend the 1.x version with map integration for extended usability.\n\n#### Release 1.x.x \u003ca name=\"release_1\"\u003e\u003c/a\u003e\nThe initial release of the C++ software library for RSS implements a subset of the rules and calculations specified in the published RSS paper. This means that this release handles a subset of automated driving scenarios, described below. Scenarios other than this subset cannot be handled.\n\n##### Features \u0026 Limitations\nThis release implements the RSS calculations and rules corresponding to the following scenarios:\n\n* Multi-lane roads, i.e. longitudinal and lateral safe distance and proper response determination; and\n* Intersections, i.e. two or more routes of different geometry, rules for intersections of routes, with priority/right of way, and longitudinal and lateral proper response determination. However, in the case of intersections, it is assumed that there is always a lateral conflict; and\n* Unstructured roads and pedestrians.\n\nThe following parts of RSS are NOT implemented in this release of the library software:\n\n* Occlusions;\n* Longitudinal or lateral evasive maneuvers as defined by RSS; and\n* Intersections without a lateral conflict.\n\nNote: The RSS module in this library does not initiate evasive manuevers. At the same time, it would not hinder an evasive manuever being executed by the AV driving policy and planning modules, as long as it is compliant with the required RSS proper response.\n\n## Getting started \u003ca name=\"started\"\u003e\u003c/a\u003e\n\n#### Installation of dependencies\nCurrently, the focused operating systems are Ubuntu 20.04 and Ubuntu 22.04. Nevertheless, the library should work in a similar way for any other Linux OS.\nTo install the basic dependencies for Ubuntu 20.04/22.04 execute the following command:\n```bash\n user$\u003e sudo apt-get install git build-essential cmake libboost-dev libpugixml-dev libgtest-dev libpython-dev libproj-dev\n```\n\nIf you want to use doxygen for API documentation, please also install:\n```bash\n user$\u003e sudo apt-get install doxygen graphviz\n```\n\n#### Get the library\nTo download the library, you may run:\n```bash\n user$\u003e git clone https://github.com/intel/ad-rss-lib.git\n user$\u003e cd ad-rss-lib\n```\n\n#### Supported systems \u003ca name=\"systems\"\u003e\u003c/a\u003e\nDevelopment systems are Ubuntu 20.04 and Ubuntu 22.04\nFollowing compiler and Python combinations are [tested continously](https://github.com/intel/ad-rss-lib/blob/main/.github/workflows/build_test.yml):\n\n|                 | Ubuntu 20.04 | Ubuntu 22.04 |\n|:---------------:|:------------:|:------------:|\n|   GCC 9         |       x      |              |\n|  Clang 10       |       x      |              |\n|   GCC 11        |              |       x      |\n|  Clang 14       |              |       x      |\n|  Python 3.8     |       x      |              |\n|  Python 3.10    |       x      |       x      |\n\nImportant: cmake is required to be at least version 3.5!\n\n## Building the library \u003ca name=\"building\"\u003e\u003c/a\u003e\nSee the detailed [Build instructions](https://intel.github.io/ad-rss-lib/BUILDING/index.html).\n\n## Contributing \u003ca name=\"contributing\"\u003e\u003c/a\u003e\nContibutions are very welcome!\n\nBefore submitting a pull request, please ensure that your code compiles successfully and that the tests run successfully.\nIn case new functionality is added, please also take care on adding appropriate unit tests. The reported code coverage should not fall below 80%.\n\nPlease also check that your code formatting complies to the provided clang style. To do so, you can run:\n```bash\nad-rss-lib$\u003e sudo apt-get install clang-format-14\nad-rss-lib$\u003e find -iname *.cpp -o -iname *.hpp | xargs clang-format-14 -style=file -i\n```\nThis command will automatically update the code formatting to be compliant with our style.\n\nIn addition, please perform a static code analysis, if possible.\n```bash\nad-rss-lib$\u003e sudo apt-get install clang-tidy\nad-rss-lib$\u003e cmake -DBUILD_STATIC_ANALYSIS=ON\nad-rss-lib$\u003e make clang-tidy\n```\nThis may provide a list of possible improvements that you would like to consider in your pull request.\n","funding_links":[],"categories":["Behavior and Decision","C++"],"sub_categories":["Vector Map"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintel%2Fad-rss-lib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fintel%2Fad-rss-lib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintel%2Fad-rss-lib/lists"}