This library intends to provide a C++ implementation of the Responsibility Sensitive Safety model (RSS) for Autonomous Vehicles.
RSS is described in the following papers. 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.
The 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.
This library contains a stand-alone C++ implementation of the RSS module.
The 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 an autonomous driving system. Users of this library are strongly encouraged to read this documentation prior to integration of the library.
When 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 available within the system. The ad_rss_map_integration library provides a C++ implementation for integrating RSS with automated driving maps.
If you use ad-rss-lib for any publication, please cite the IV'2019 paper:
@INPROCEEDINGS{
title={Towards Standardization of AV Safety: C++ Library for Responsibility Sensitive Safety}
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}
booktitle={2019 IEEE Intelligent Vehicles Symposium (IV)}
year={2019}
}
Starting with Release v1.6, it is possible to use the ad-rss-lib library also with Python. Please see the Documentation on the Python binding for ad_rss or ad_rss_map_integration_python for further information.
This library can be used together with the open-source driving simulator CARLA to investigate the behavior of RSS. A first version is shown in the following video sequence:
In addition, the library is already integrated and used in Baidu's Apollo Open Platform stack:
This software library is provided under the LGPL-2.1 open-source license: https://opensource.org/licenses/LGPL-2.1.
In addition, the terms in the following apply: RELEASE NOTES AND DISCLAIMERS.
Visit the project's GitHub page to access the online version of the full documentation of this library. This includes:
If you have any additional question not answered therein, you might find more in the FAQ
General release notes and changes can be found in the Changelog
These releases improve the 2.x version capabilities on scene creation.
These releases extend the 1.x version with map integration for extended usability.
The 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 autonomous driving scenarios, described below. Scenarios other than this subset cannot be handled.
This release implements the RSS calculations and rules corresponding to the following scenarios:
The following parts of RSS are NOT implemented in this release of the library software:
Note: 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.
Currently, the focused operating system is Ubuntu 16.04. Nevertheless, the library should work in a similar way for any other Linux OS. To install the dependencies for Ubuntu 16.04 execute the following command:
user$> sudo apt-get install git build-essential cmake
If you want to use doxygen for API documentation, please also install:
user$> sudo apt-get install doxygen graphviz
To download the library, you may run:
user$> git clone https://github.com/intel/ad-rss-lib.git
user$> cd ad-rss-lib
Development systems are Ubuntu 16.04 and Ubuntu 18.04. Following compiler combinations are tested continously:
Ubuntu 16.04 | Ubuntu 18.04 | |
---|---|---|
Clang 5.0 | x | |
Clang 6.0 | x | |
Clang 7 | x | |
Clang 8 | x | |
GCC 5 | x | |
GCC 6 | x | |
GCC 7 | x | |
GCC 8 | x | |
GCC 9 | x |
Important: cmake is required to be at least version 3.5!
See the detailed Build instructions.
Contibutions are very welcome!
Before submitting a pull request, please ensure that your code compiles successfully and that the tests run successfully. Please also check that your code formatting complies to the provided clang style. To do so, you can run:
ad_rss$> sudo apt-get install clang-format-3.9
ad_rss$> find -iname *.cpp -o -iname *.hpp | xargs clang-format-3.9 -style=file -i
This command will automatically update the code formatting to be compliant with our style.
In addition, please perform a static code analysis, if possible.
ad_rss$> sudo apt-get install clang-tidy
ad_rss$> cmake -DBUILD_STATIC_ANALYSIS=ON
ad_rss$> make clang-tidy
This may provide a list of possible improvements that you would like to consider in your pull request.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。