CARLA integrates the C++ Library for Responsibility Sensitive Safety in the client library. This feature allows users to investigate behaviours of RSS without having to implement anything. CARLA will take care of providing the input, and applying the output to the AD systems on the fly.
!!! Important This feature is a work in progress. Right now, it is only available for the Linux build.
The RSS library implements a mathematical model for safety assurance. It receives sensor information, and provides restrictions to the controllers of a vehicle. To sum up, the RSS module uses the sensor data to define situations. A situation describes the state of the ego vehicle with an element of the environment. For each situation, safety checks are made, and a proper response is calculated. The overall response is the result of all of the combined. For specific information on the library, read the documentation, especially the Background section.
This is implemented in CARLA using two elements.
- RssSensor is in charge of the situation analysis, and response generation using the ad-rss-lib.
- RssRestrictor applies the response by restricting the commands of the vehicle.
The following image sketches the integration of RSS into the CARLA architecture.
1. The server.
- Sends a camera image to the client. (Only if the client needs visualization).
- Provides the RssSensor with world data.
- Sends a physics model of the vehicle to the RssRestrictor. (Only if the default values are overwritten).
2. The client.
- Provides the RssSensor with some parameters to be considered.
- Sends to the RssResrictor an initial carla.VehicleControl.
3. The RssSensor.
- Uses the ad-rss-lib to extract situations, do safety checks, and generate a response.
- Sends the RssRestrictor a response containing the proper response and aceleration restrictions to be applied.
- Asks the server to do some debug drawings to visualize the results of the calculations.
4. The RssRestrictor
- If the client asks for it, applies the response to the carla.VehicleControl, and returns the resulting one.
!!! Important Debug drawings can delay the RSS response, so they should be disabled during automated RSS evaluations. Use carla.RssVisualizationMode to change the visualization settings.
The RSS integration has to be built aside from the rest of CARLA. The ad-rss-lib comes with an LGPL-2.1 open-source license that creates conflict. It has to be linked statically into libCarla.
As a reminder, the feature is only available for the Linux build so far.
There are additional prerequisites required for building RSS and its dependencies. Take a look at the official documentation) to know more about this.
Dependencies provided by Ubunutu (>= 16.04).
sudo apt-get install libgtest-dev libpython-dev libpugixml-dev libproj-dev libtbb-dev
The dependencies are built using colcon, so it has to be installed.
pip3 install --user -U colcon-common-extensions
There are some additional dependencies for the Python bindings.
sudo apt-get install castxml
pip install --user pygccxml
pip install --user https://bitbucket.org/ompl/pyplusplus/get/1.8.1.zip
Once this is done, the full set of dependencies and RSS components can be built.
- Compile LibCarla to work with RSS.
make LibCarla.client.rss
- Compile the PythonAPI to include the RSS feature.
make PythonAPI.rss
- As an alternative, a package can be built directly.
make package.rss
carla.RssSensor supports ad-rss-lib v3.0.0 feature set completely, including intersections and stay on road support.
So far, the server provides the sensor with ground truth data of the surroundings that includes the state of other vehicles and traffic lights. Future improvements of this feature will add to the equation pedestrians, and more information of the OpenDRIVE map among others.
When the client calls for it, the carla.RssRestrictor will modify the vehicle controller to best reach the desired accelerations or decelerations by a given response.
Due to the stucture of carla.VehicleControl objects, the restrictions applied have certain limitations. These controllers include throttle
, brake
and streering
values. However, due to car physics and the simple control options these might not be met. The restriction intervenes in lateral direction simply by counter steering towards the parallel lane direction. The brake will be activated if deceleration requested by RSS. This depends on vehicle mass and brake torques provided by the carla.Vehicle.
!!! Note In an automated vehicle controller it might be possible to adapt the planned trajectory to the restrictions. A fast control loop (>1KHz) can be used to ensure these are followed.
That sets the basics regarding the RSS sensor in CARLA. Find out more about the specific attributes and parameters in the sensor reference.
Open CARLA and mess around for a while. If there are any doubts, feel free to post these in the forum.