Skip to content

Commit

Permalink
Update map dependency to v2.3.0 (#85)
Browse files Browse the repository at this point in the history
  • Loading branch information
berndgassmann authored Oct 5, 2020
1 parent 9437549 commit 4fa723b
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 23 deletions.
23 changes: 11 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,25 +23,24 @@


## Introduction <a name="introduction"></a>
This library intends to provide a C++ implementation of the Responsibility Sensitive Safety model (RSS) for Autonomous Vehicles.
This library intends to provide a C++ implementation of the Responsibility Sensitive Safety model (RSS) for Automated 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.
RSS 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.

* 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)
* Implementing the RSS Model on NHTSA Pre-Crash Scenarios, Mobileye, July 2018, [https://www.mobileye.com/responsibility-sensitive-safety/rss_on_nhtsa.pdf](https://www.mobileye.com/responsibility-sensitive-safety/rss_on_nhtsa.pdf)

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 ad_rss library contains a stand-alone C++ implementation of the RSS module.

* Conversion of AV sensor data to the input object list required by the RSS module is outside the scope of this library. This includes conversion of object location and motion in a Cartesian world coordinate system into a situation based coordinate system.
* Conversion of the output 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.
* 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.
* 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.

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.
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 a automated driving system. Users of this library are strongly encouraged to read this documentation prior to integration of the library.

### Integrating RSS with automated driving maps
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*](https://intel.github.io/ad-rss-lib/ad_rss_map_integration/Main/) library provides a C++ implementation
available 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
for integrating RSS with automated driving maps.

### Usage of ad-rss-lib
Expand Down Expand Up @@ -91,13 +90,13 @@ General release notes and changes can be found in the [Changelog](https://intel.
These releases extends the 3.x version with handling of unstructured roads and pedestrians.

#### Release 3.x.x <a name="release_3"></a>
These releases improve the 2.x version capabilities on scene creation.
These releases improve the 2.x version capabilities on constellation creation.

#### Release 2.x.x <a name="release_2"></a>
These releases extend the 1.x version with map integration for extended usability.

#### Release 1.x.x <a name="release_1"></a>
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.
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 automated driving scenarios, described below. Scenarios other than this subset cannot be handled.

##### Features & Limitations
This release implements the RSS calculations and rules corresponding to the following scenarios:
Expand All @@ -117,8 +116,8 @@ Note: The RSS module in this library does not initiate evasive manuevers. At the
## Getting started <a name="started"></a>

#### Installation of dependencies
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:
Currently, the focused operating systems are Ubuntu 16.04 and Ubuntu 18.04. Nevertheless, the library should work in a similar way for any other Linux OS.
To install the basic dependencies for Ubuntu 16.04/18.04 execute the following command:
```bash
user$> sudo apt-get install git build-essential cmake libboost-dev
```
Expand Down
1 change: 1 addition & 0 deletions cmake/python-binding.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ function(find_python_binding_packages)
if ("${PYTHON_BINDING_VERSIONS}" STREQUAL "")
set(PYTHON_BINDING_VERSIONS 2.7 3.5 3.6 3.7 3.8)
endif()
set(REPORT_FIND_PACKAGE_ERROR 0)
foreach(PYTHON_VERSION_SEARCH ${PYTHON_BINDING_VERSIONS})
unset(PYTHON_INCLUDE_DIR)
unset(PYTHON_INCLUDE_DIR CACHE)
Expand Down
2 changes: 1 addition & 1 deletion dependencies/map
12 changes: 8 additions & 4 deletions doc/BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ The components within this repository have some dependencies:
- **ad_rss**:
- ad_physics: <https://github.com/carla-simulator/map.git>
- spdlog: <https://github.com/gabime/spdlog.git>
- Boost
- **ad_rss_python** (if Python binding build enabled):
- Python lib
- castxml, pygccxml and py++
Expand All @@ -26,12 +27,14 @@ The components within this repository have some dependencies:

Dependencies provided by Ubunutu (>= 16.04):

- Boost
- pugixml
- gtest
- libpython-dev

Those can be installed by calling:
```bash
$> sudo apt-get install libgtest-dev libpython-dev
$> sudo apt-get install libboost-all-dev libpugixml-dev libgtest-dev libpython-dev
```

Additional dependencies for the python bindings:
Expand All @@ -40,9 +43,10 @@ $> sudo apt-get install castxml
$> pip install --user pygccxml pyplusplus xmlrunner
```

Remaining dependencies:
Remaining dependencies are present as GIT submodules; also to fix the version of these:

- ad_map_access
- ad_map_opendrive_reader
- ad_physics
- spdlog
- proj
Expand Down Expand Up @@ -73,7 +77,7 @@ When activating the Unit tests, they all can be executed with:
ad_rss$> colcon test
```

The python bindings are disable by default. To integrate them into the build you can make use of the prepared
The python bindings are disabled by default. To integrate them into the build you can make use of the prepared
colcon meta file:
```bash
ad_rss$> colcon build --metas colcon_python.meta
Expand All @@ -92,7 +96,7 @@ Therefore, a full list of step by step calls could look like e.g.:
ad_rss$> cd build/proj
ad_rss/build/proj$> cmake ../../dependencies/PROJ -DCMAKE_INSTALL_PREFIX=../../install/proj -DCMAKE_POSITION_INDEPENDENT_CODE=ON
ad_rss/build/proj$> make install
ad_rss$> cd build/spdlog
ad_rss/build/proj$> cd ../spdlog
ad_rss/build/spdlog$> cmake ../../dependencies/spdlog -DCMAKE_INSTALL_PREFIX=../../install/spdlog -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DSPDLOG_BUILD_TESTS=OFF -DSPDLOG_BUILD_EXAMPLE=Off
ad_rss/build/spdlog$> make install
ad_rss/build/spdlog$> cd ../ad_physics
Expand Down
3 changes: 2 additions & 1 deletion doc/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@
## Release 4.2.0

#### :ghost: Maintenance
* Update unstructured trajectory set calculation for pedestrians
* Improved user interface of python binding
* Updated ad_map_access to v2.3.0
* Update unstructured trajectory set calculation for pedestrians
* Suppressed python code generation build output

## Release 4.1.0
Expand Down
10 changes: 5 additions & 5 deletions doc/ad_rss/Appendix-ParameterDiscussion.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,8 @@ more likely than for deceleration.

##### Restricting velocity to the current speed limit

| ![](../images/accelSafety.svg) |
|:--:|
| ![](../images/accelSafety.svg) |
|:--:|
| *Required safety distance for cars driving at 50 km/h (city speed) in same direction with $\alpha_{brake,min} = 4m/s^2$ and $\alpha_{brake,max} = 8m/s^2$ and $\rho_{ego} = \rho_{other} = 2s$* |

The assumption that a car can always accelerate at $\alpha_{accel,max}$
Expand Down Expand Up @@ -143,8 +143,8 @@ between the border of the car and the adjacent lane is bigger than the distance
that the vehicle will cover when accelerating laterally at maximum during its
response time and then decelerating to zero lateral velocity.

| ![](../images/accelLat.svg) |
|:--:|
| ![](../images/accelLat.svg) |
|:--:|
| *Distance a vehicle will cover when applying the "Stated Braking Pattern" with $\rho_{vehicle} = 2s$* |

The figure above shows the required safety distance, without
Expand Down Expand Up @@ -178,7 +178,7 @@ fluctuations, but will not have a big impact on the safety distance.


!!! note
As a starting point the values are set to:
As a conservative starting point the values can be set to:

| Parameter | Value |
|:-------------------------------:|:-------------:|
Expand Down

0 comments on commit 4fa723b

Please sign in to comment.