Skip to content

autoware_carla_interface in the pre-built humble Docker image is missing the modules Python subpackage and calibration map CSVs #13173

Description

@Chelvy

Checklist

  • I've read the contribution guidelines.
  • I've searched other issues and no duplicate issues were found.
  • I'm convinced that this is not my fault but a bug.

Description

In the pre-built Docker image ghcr.io/autowarefoundation/autoware:latest-humble-autoware-universe-cuda-amd64 (pulled 2026-08-12), the installed autoware_carla_interface package is broken in two independent ways:

  1. The entire autoware_carla_interface.modules Python subpackage is missing from /opt/autoware/lib/python3.10/site-packages/autoware_carla_interface/. Only the top-level modules (carla_autoware.py, carla_ros.py, etc.) are installed; the modules/ directory (carla_data_provider.py, carla_utils.py, carla_wrapper.py, sensor_manager.py, …) is absent. Launching the interface fails immediately with ModuleNotFoundError: No module named 'autoware_carla_interface.modules'.

  2. The calibration map CSVs are missing from /opt/autoware/share/autoware_carla_interface/. The shipped config/raw_vehicle_cmd_converter.param.yaml references

    csv_path_accel_map: $(find-pkg-share autoware_carla_interface)/accel_map.csv
    csv_path_brake_map: $(find-pkg-share autoware_carla_interface)/brake_map.csv
    csv_path_steer_map: $(find-pkg-share autoware_carla_interface)/steer_map.csv

    but none of the three CSVs (from calibration_maps/ in the source tree) are present in the image, so the raw_vehicle_cmd_converter node dies at startup with Accel map is invalid.

Notably, the rest of the package is installed: the launch file, the config YAMLs, and the top-level Python files are all there, and the package is registered in the ament index. So the omissions look like a packaging/pipeline artifact rather than a missing package.

Expected behavior

ros2 launch autoware_carla_interface autoware_carla_interface.launch.xml starts inside the container using only the files shipped in the image:

  • python3 -c "import autoware_carla_interface.modules.carla_wrapper" succeeds.
  • accel_map.csv, brake_map.csv, steer_map.csv exist in $(ros2 pkg prefix --share autoware_carla_interface)/, so raw_vehicle_cmd_converter can load them.

This matches what the source tree's CMakeLists.txt installs at both main and humble (ament_python_install_package(${PROJECT_NAME} PACKAGE_DIR src/${PROJECT_NAME}) and install(DIRECTORY calibration_maps/ DESTINATION share/${PROJECT_NAME}/)), so a from-source build does not have this problem — only the pre-built image does.

Actual behavior

  1. Launch fails immediately:

    ModuleNotFoundError: No module named 'autoware_carla_interface.modules'
    

    and indeed:

    $ ls /opt/autoware/lib/python3.10/site-packages/autoware_carla_interface/
    __init__.py  carla_autoware.py  carla_ros.py  multi_camera_combiner_node.py  ...
    # no modules/ directory
    
  2. After working around (1) by bind-mounting modules/ from a source checkout, the pipeline gets further but raw_vehicle_cmd_converter exits with:

    Accel map is invalid.
    

    and indeed:

    $ ls /opt/autoware/share/autoware_carla_interface/
    config  launch  package.xml ...
    # no accel_map.csv / brake_map.csv / steer_map.csv
    

Steps to reproduce

Observed via Apptainer/Singularity on an HPC cluster, but the missing files are in the image itself, so Docker shows the same thing.

  1. docker pull ghcr.io/autowarefoundation/autoware:latest-humble-autoware-universe-cuda-amd64 (or apptainer pull the same reference).

  2. Inspect the installed package — both checks fail:

    docker run --rm ghcr.io/autowarefoundation/autoware:latest-humble-autoware-universe-cuda-amd64 \
      ls /opt/autoware/lib/python3.10/site-packages/autoware_carla_interface/modules
    docker run --rm ghcr.io/autowarefoundation/autoware:latest-humble-autoware-universe-cuda-amd64 \
      ls /opt/autoware/share/autoware_carla_interface/accel_map.csv
  3. Or reproduce at launch time (CARLA server not required to hit the first error — the import fails before anything connects):

    apptainer exec <image>.sif bash -c \
      "source /opt/autoware/setup.bash && ros2 launch autoware_carla_interface autoware_carla_interface.launch.xml"
    # -> ModuleNotFoundError: No module named 'autoware_carla_interface.modules'
  4. Bind-mount simulator/autoware_carla_interface/src/autoware_carla_interface/modules from an autoware_universe checkout into the site-packages path and relaunch (with a CARLA 0.9.15 server up) → raw_vehicle_cmd_converter dies with Accel map is invalid.

Versions

  • OS: Ubuntu 22.04 (container); host: Rocky Linux HPC node via Apptainer
  • ROS 2: Humble
  • Autoware: ghcr.io/autowarefoundation/autoware:latest-humble-autoware-universe-cuda-amd64, pulled 2026-08-12

Possible causes

The package source is fine: at both main and humble, simulator/autoware_carla_interface/CMakeLists.txt installs the Python package recursively and the calibration maps, and src/autoware_carla_interface/modules/__init__.py exists. So the loss appears to happen in the image build/packaging pipeline that produces /opt/autoware, not in the package itself.

One observation that may help: the package migrated from build_type: ament_python to ament_cmake in #11706 (Feb 2026). The old ament_python setup.py used find_packages() + build-time glob("calibration_maps/*.csv") for its data files. If the image pipeline still builds (or caches) the package via the old setup.py path — or was built from a snapshot mid-migration — that would produce exactly this partial install (top-level modules and launch/config present, modules/ subpackage and CSVs absent).

If this actually belongs in the autowarefoundation/autoware repo (where the Docker images are built), feel free to transfer it.

Additional context

Workaround that makes the shipped image usable without modifying it — bind-mount the missing files from a source checkout of autoware_universe (simulator/autoware_carla_interface/):

  • src/autoware_carla_interface/modules/opt/autoware/lib/python3.10/site-packages/autoware_carla_interface/modules
  • calibration_maps/accel_map.csv, brake_map.csv, steer_map.csv/opt/autoware/share/autoware_carla_interface/

With those two mounts (plus a carla==0.9.15 client on PYTHONPATH), the interface launches and exchanges sensor/vehicle topics with a CARLA 0.9.15 server normally.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions