This guide outlines what Chrono is, how to use it in CARLA, and the limitations involved in the integration.
Project Chrono is an open-source, multi-physics simulation engine that provides highly realistic vehicle dynamics using a template-based approach. The integration in CARLA allows users to utilize Chrono templates to simulate vehicle dynamics while navigating a map.
Using Chrono on CARLA
To use the Chrono integration, you must first configure the server with a tag on startup and then use the PythonAPI to enable it on a spawned vehicle. Read on for more details.
Configuring the server
Chrono will only work if the CARLA server is compiled with the Chrono tag.
In the build from source version of CARLA, run the following command to start the server:
make launch ARGS="--chrono"
Enabling Chrono physics
Chrono physics is enabled using the
enable_chrono_physics method available through the Actor class. As well as values for substeps and substep delta time, it requires three template files and a base path to locate those files:
base_path: Path of the directory which contains the template files. This is necessary to ensure that auxiliary files referenced from the template files have a common base path from which to search.
vehicle_json: Path of the vehicle template file relative to the
tire_json: Path of the tire template file relative to the
powertrain_json: Path of the powertrain template file relative to the
Double-check your paths. Incorrect or missing paths can cause Unreal Engine to crash.
There are a variety of example template files for different vehicles available in
Build/chrono-install/share/chrono/data/vehicle. Read the Project Chrono documentation to find out more about their vehicle examples and how to create templates.
See below for an example of how to enable Chrono physics:
# Spawn your vehicle vehicle = world.spawn_actor(bp, spawn_point) # Set the base path base_path = "/path/to/carla/Build/chrono-install/share/chrono/data/vehicle/" # Set the template files vehicle_json = "sedan/vehicle/Sedan_Vehicle.json" powertrain_json = "sedan/powertrain/Sedan_SimpleMapPowertrain.json" tire_json = "sedan/tire/Sedan_TMeasyTire.json" # Enable Chrono physics vehicle.enable_chrono_physics(5000, 0.002, vehicle_json, powertrain_json, tire_json, base_path)
You can try the Chrono physics integration using the example script
manual_control_chrono.py found in
PythonAPI/examples. After running the script, press
Ctrl + o to enable Chrono.
This integration does not support collisions. When a collision occurs, the vehicle will revert to CARLA default physics.