This package contains ROS2 nodes to convert and exchange data between the native ROS2 interface of CARLA (version 0.10.0) and ADORe. It allows to control a vehicle with ADORe inside the CARLA simulation.
Note: The ADORe CARLA bridge is experimental.
The system requirements and the prerequisites of ADORe need to be fulfilled first. Additionally, the CARLA Unreal Engine 5 requires NVIDIA RTX driver release 550 or later and an NVIDIA RTX 3000 series GPU as a minimum with at least 16 Gb of VRAM (source: CARLA quick start guide). As the ADORe CARLA bridge builds upon the official docker image of CARLA, the NVIDIA Container Toolkit needs to be installed on the host system.
In order to make the map that CARLA is using in the simple example available for adore, make copy_map
can be run in this directory. Executing the command docker compose up carla_bridge
starts two containers. The first container is the CARLA container in which the CARLA instance is running. Second, the Python script carla_bridge_example.py is executed in the carla_bridge container. This script spawns a vehicle in CARLA and connects it to ROS2. The conversion between the CARLA topics and the ADORe topics is carried out by the nodes of this package. These nodes can be started in the ADORe CLI contianer, e.g. by executing the file carla_bridge_example.py. In order to allow the communication between the ROS2 Jazzy nodes of ADORe and the native ROS2 communication interface of CARLA, the middleware settings need to be adjusted. This can be achieved by prefixing the respective ROS2 command, e.g.:
FASTRTPS_DEFAULT_PROFILES_FILE=./fastrtps-profile.xml RMW_FASTRTPS_USE_QOS_FROM_XML=1 RMW_IMPLEMENTATION=rmw_fastrtps_cpp ros2 launch carla_bridge_example.py
The package currently contains the following two nodes.
This node converts the control command of ADORe containing the reference acceleration and steering angle and publishes the CarlaEgoVehicleControl message of the ros-carla-msgs package.
This node converts the data of the GNSS and IMU sensors and publishes VehicleStateDynamic messages used by ADORe as well as the respective transformations.
The bridge can easily be extended to exchange other data. For this, the stack.json and the ros2.py files can be adjusted accordingly. Further information on this can be found in the documentation of the PythonAPI of CARLA. In order to ensure compatibility between the ROS2 jazzy nodes of ADORe and the native ROS2 interface of CARLA, the middleware settings for communication must be adjusted as specified in the file fastrtps-profile.xml.