Skip to content

Carla 0.9.15 and Autoware Universe Humble adapted for microAutoware

License

Notifications You must be signed in to change notification settings

LMA-FEM-UNICAMP/Carla-Autoware-Bridge

 
 

Repository files navigation

CARLA-Autoware-Bridge - Enables the use of CARLA for Testing and Development of Autoware Core/Universe

Linux Docker ROS2humble

Introduction

The CARLA-Autoware-Bridge is a package to connect the CARLA simulator to Autoware Core/Universe with the help of the CARLA-ROS-Bridge. Currently the latest Autoware Core/Universe and CARLA 0.9.15 is supported.

Youtube Demo Video + Quickstart

Demo Quickstart
IMAGE ALT TEXT HERE IMAGE ALT TEXT HERE

Paper

If you use this or the other associated repos, please cite our Paper:

CARLA-Autoware-Bridge: Facilitating Autonomous Driving Research with a Unified Framework for Simulation and Module Development
Gemb Kaljavesi, Tobias Kerbl, Tobias Betz, Kirill Mitkovskii, Frank Diermeyer [PDF]

@inproceedings{carla_aw_bridge24,
  title = {CARLA-Autoware-Bridge: Facilitating Autonomous Driving Research
with a Unified Framework for Simulation and Module Development,
  author = {Kaljavesi, Gemb and Kerbl, Tobias and Betz, Tobias and Mitkovskii, Kirill and Diermeyer, Frank},
  year = {2024}
}

The Paper is currently under review and only published as preprint.

Overview

The simulation framework around the CARLA-Autoware-Bridge consists of the components:

  • carla-autoware-bridge: This repository holding the CARLA-Autoware-Bridge.
  • ros-bridge: Fork of the ros-bridge with our changes needed for the CARLA-Autoware-Bridge.
  • carla-t2: Vehicle model and sensor kit packages of the CARLA T2 2021 Vehicle for Autoware.
  • carla-ros-msgs: Fork of the carla-ros-msg with our changes needed for the CARLA-Autoware-Bridge.

How to Build and Install the Bridge

The easiest way to use the CARLA-Autoware-Bridge is to use our prebuilt docker image or to build the docker image by yourself. Bu we also provide a tutorial for local usage.

Docker Workflow(Recommended)

You can build the docker image by yourself or use the image from our github registry.

# Pull our latest docker image
docker pull tumgeka/carla-autoware-bridge:latest

# Alternatively build it yourself by running our build_docker.sh
./docker/build_docker.sh

Local Workflow

Comming Soon. Until then, take a look at our Dockerfile.

Maps

Autoware needs the maps in a special lanelet2 format, we will upload all converted maps in the future under the following link: carla-autoware-bridge/maps

General Installation and Usage

The installation and usage of the CARLA-Autoware-Bridge is described in the following tutourial. In order to function properly the packages should be started in the order CARLA --> CARLA-Autoware-Bridge --> Autoware.

1) CARLA

We recommended to use the dockerized version of CARLA 0.9.15. To pull and start CARLA for usage with the CARLA-Autoware-Bridge follow the steps below.

# Pull CARLA 0.9.15
docker pull carlasim/carla:0.9.15
# Start CARLA
docker run --privileged --gpus all --net=host -e DISPLAY=$DISPLAY carlasim/carla:0.9.15 /bin/bash ./CarlaUE4.sh -carla-rpc-port=1403 

Additional information:

  • -prefernvidia - use NVIDIA GPU for hardware acceleration
  • -carla-rpc-port=3000 - use other than default port (2000) for RPC service's port
  • -quality-level=Low - use low quality level mode for a minimal video memory consumption

2) CARLA-Autoware-Bridge

Run the carla-autoware-bridge

# If you are using a docker start the docker first
docker run -it -e RMW_IMPLEMENTATION=rmw_cyclonedds_cpp --network host tumgeka/carla-autoware-bridge:latest

# Launch the bridge
ros2 launch carla_autoware_bridge carla_aw_bridge.launch.py port:=1403 town:=Town10HD

Additional information:

  • -port:=3000 to switch to a different CARLA port for it's RPC port
  • -timeout:=10 to increase waiting time of loading a CARLA town before raising error
  • -view:=true to show third-person-view window
  • -town:=Town10HD to set the town
  • -traffic_manager=False to turn off traffic manager server (True by default)
  • -tm_port=8000 to switch the traffic manager server port to a different one (8000 by default)

If you want to spawn traffic run the following script inside the docker:

python3 src/carla_autoware_bridge/utils/generate_traffic.py -p 1403

3) Autoware

To use Autoware some minor adjustments are required. Additionally you will need our sensorkit and vehicle model.

git clone https://github.com/TUMFTM/Carla_t2.git

Launch autoware

ros2 launch autoware_launch e2e_simulator.launch.xml vehicle_model:=carla_t2_vehicle sensor_model:=carla_t2_sensor_kit map_path:=<path to /wsp/map>

Autoware changes often, for a reproducible behaviour we recommend you to use a tagged autoware version: https://github.com/autowarefoundation/autoware/tree/2024.01

docker pull ghcr.io/autowarefoundation/autoware:humble-2024.01-cuda-amd64

rocker --network=host -e RMW_IMPLEMENTATION=rmw_cyclonedds_cpp -e LIBGL_ALWAYS_SOFTWARE=1 --x11 --nvidia --volume /path/to/code -- ghcr.io/autowarefoundation/autoware-universe:humble-2024.01-cuda-amd64

Limitations and Future Work

  • We are currently working on making traffic light detection possible, at least for Town10HD
  • Autoware is a map-based approach and some maps may not allow some positions to be reached or some lane changes may not be possible. We are continuously trying to improve our map conversion
  • We aim to enhance future efficiency by ensuring that the bridge is Python-free, utilizing native DDS connection with the CARLA simulator

About

Carla 0.9.15 and Autoware Universe Humble adapted for microAutoware

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 90.9%
  • Dockerfile 4.9%
  • Shell 4.2%