Skip to content

feat(autoware_carla_interface): do not spawn cameras while rendering is off - #13450

Merged
Max-Bin merged 2 commits into
autowarefoundation:mainfrom
hakuturu583:feat/carla-interface-reject-cameras-without-renderer
Oct 1, 2026
Merged

Max-Bin merged 2 commits into
autowarefoundation:mainfrom
hakuturu583:feat/carla-interface-reject-cameras-without-renderer

Conversation

@hakuturu583

@hakuturu583 hakuturu583 commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Description

no_rendering_mode turns the scene rendering off, yet the camera sensors in the sensor mapping
were still spawned in CARLA, where they can only ever return an empty image.

Worse, the same flag describes the case that actually matters: a CARLA server started without
a renderer
(CarlaUnreal.sh -nullrhi) segfaults as soon as a camera sensor is spawned on
it
. Every call the bridge makes afterwards fails with an opaque RuntimeError: std::exception,
so the logs point at whatever RPC came next rather than at the camera — in one run here it
surfaced 20 s later (the client's RPC timeout) as a complaint about the ego vehicle's light
state, and the process eventually aborted with exit -6.

The ray-cast LiDAR, by contrast, needs no renderer and keeps producing points, which makes a
renderer-less server a practical way to run LiDAR-only closed-loop tests without a display. The
camera crash is the only thing standing in the way.

A client cannot detect such a server. Dumping everything visible from the client side on a
-nullrhi server and on a -RenderOffScreen one — world settings, blueprint library, every
sensor.camera.rgb attribute, get_names_of_all_objects, get_environment_objects,
get_level_bbs, weather, the whole world API — produces identical output. Probing by
spawning a test camera is self-defeating, since that is the thing that kills the server.

Fix

Follow no_rendering_mode and leave the cameras out of the CARLA spawn list, naming the skipped
sensors once in a warning:

[WARN] no_rendering_mode is set, so the camera sensors in the mapping (CAM_FRONT,
CAM_FRONT_LEFT, CAM_FRONT_RIGHT, CAM_BACK, CAM_BACK_LEFT, CAM_BACK_RIGHT) are not spawned in
CARLA: without rendering they can produce no image, and on a server started without a renderer
(CarlaUnreal.sh -nullrhi) spawning one crashes the server. Their topics stay silent.
  • No new parameter and no camera-free sensor mapping to maintain: the same mapping works with
    and without rendering
    , and no_rendering_mode is already forwarded by
    autoware_launch's e2e_simulator.launch.xml.
  • Every sensor that works without rendering (LiDAR, IMU, GNSS) is spawned as before. The skipped
    cameras keep their topics advertised, just silent.
  • The filter runs over the sensors still bound for CARLA, so cameras handed to an external
    renderer earlier are untouched.
  • With rendering on, the behaviour is unchanged.
  • Unit tests cover the pass-through, the filtering, the warning and the camera-free case.

Verification

On CARLA 0.10 started with CarlaUnreal.sh -nullrhi, using the full 9-sensor mapping (6 RGB
cameras)
, no_rendering_mode:=True:

Result
The six cameras Named in the warning and not spawned; /sensing/camera/CAM_FRONT/image_raw stays silent
LiDAR / IMU / GNSS Spawned as usual; LiDAR publishes at 10.0 Hz
Ego Spawns, bridge ticks for 70 s
CARLA server Stays up — previously it segfaulted (exit 139)

Plus pytest simulator/autoware_carla_interface/test — 27 passed.

🤖 Generated with Claude Code

@github-actions github-actions Bot added type:documentation Creating or refining documentation. (auto-assigned) component:simulation Virtual environment setups and simulations. (auto-assigned) labels Oct 1, 2026
@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown

Thank you for contributing to the Autoware project!

🚧 If your pull request is in progress, switch it to draft mode.

Please ensure:

@hakuturu583
hakuturu583 force-pushed the feat/carla-interface-reject-cameras-without-renderer branch from ee4d59f to 92636b2 Compare October 1, 2026 02:25
@hakuturu583 hakuturu583 added the run:build-and-test-differential Mark to enable build-and-test-differential workflow. (used-by-ci) label Oct 1, 2026
@codecov

codecov Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 37.44%. Comparing base (859fc2d) to head (1bbc50b).

Additional details and impacted files
@@           Coverage Diff           @@
##             main   #13450   +/-   ##
=======================================
  Coverage   37.44%   37.44%           
=======================================
  Files        2030     2030           
  Lines      142134   142134           
=======================================
  Hits        53217    53217           
  Misses      88917    88917           
Flag Coverage Δ *Carryforward flag
daily ?
full-suite 37.44% <ø> (ø) Carriedforward from 70cee6d

*This pull request uses carry forward flags. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@hakuturu583
hakuturu583 force-pushed the feat/carla-interface-reject-cameras-without-renderer branch from 92636b2 to 2197707 Compare October 1, 2026 02:47
@hakuturu583 hakuturu583 changed the title feat(autoware_carla_interface): reject cameras on renderer-less CARLA servers feat(autoware_carla_interface): do not spawn cameras while rendering is off Oct 1, 2026
…is off

`no_rendering_mode` turns the scene rendering off, yet the camera sensors in the sensor
mapping were still spawned in CARLA, where they can only ever return an empty image.

Worse, the same flag describes the case that matters: a CARLA server started without a
renderer (`CarlaUnreal.sh -nullrhi`) **segfaults as soon as a camera sensor is spawned on
it**. Every call the bridge makes afterwards fails with an opaque
`RuntimeError: std::exception`, so the logs point at whatever RPC came next rather than at
the camera. The ray-cast LiDAR needs no renderer and keeps producing points, which makes
such a server otherwise useful for headless LiDAR-only closed-loop runs.

A client cannot detect a renderer-less server: its world settings, blueprint library and
sensor attributes are byte-for-byte identical to a rendering one (verified by diffing a full
client-side dump of both), and probing by spawning a test camera is what kills it.

So follow `no_rendering_mode` and leave the cameras out of the CARLA spawn list, naming the
skipped sensors once in a warning. Every sensor that works without rendering is spawned as
before, the same sensor mapping now works with and without rendering, and the behaviour with
rendering on is unchanged.

Verified on CARLA 0.10 `-nullrhi` with the full 9-sensor mapping (6 RGB cameras) and
`no_rendering_mode:=True`: all six cameras are named in the warning and skipped, the ego
spawns, LiDAR publishes at 10.0 Hz, the camera topics stay silent, and the CARLA server
stays up - where previously it segfaulted (exit 139).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
@hakuturu583
hakuturu583 force-pushed the feat/carla-interface-reject-cameras-without-renderer branch from 2197707 to 970adf1 Compare October 1, 2026 02:52

@Max-Bin Max-Bin left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Max-Bin
Max-Bin enabled auto-merge (squash) October 1, 2026 09:53
@Max-Bin
Max-Bin merged commit 675d302 into autowarefoundation:main Oct 1, 2026
30 checks passed
paulsohn-github-app Bot pushed a commit to paulsohn/autoware_universe_planning_2 that referenced this pull request Oct 1, 2026
…is off (autowarefoundation/autoware_universe#13450)

`no_rendering_mode` turns the scene rendering off, yet the camera sensors in the sensor
mapping were still spawned in CARLA, where they can only ever return an empty image.

Worse, the same flag describes the case that matters: a CARLA server started without a
renderer (`CarlaUnreal.sh -nullrhi`) **segfaults as soon as a camera sensor is spawned on
it**. Every call the bridge makes afterwards fails with an opaque
`RuntimeError: std::exception`, so the logs point at whatever RPC came next rather than at
the camera. The ray-cast LiDAR needs no renderer and keeps producing points, which makes
such a server otherwise useful for headless LiDAR-only closed-loop runs.

A client cannot detect a renderer-less server: its world settings, blueprint library and
sensor attributes are byte-for-byte identical to a rendering one (verified by diffing a full
client-side dump of both), and probing by spawning a test camera is what kills it.

So follow `no_rendering_mode` and leave the cameras out of the CARLA spawn list, naming the
skipped sensors once in a warning. Every sensor that works without rendering is spawned as
before, the same sensor mapping now works with and without rendering, and the behaviour with
rendering on is unchanged.

Verified on CARLA 0.10 `-nullrhi` with the full 9-sensor mapping (6 RGB cameras) and
`no_rendering_mode:=True`: all six cameras are named in the warning and skipped, the ego
spawns, LiDAR publishes at 10.0 Hz, the camera topics stay silent, and the CARLA server
stays up - where previously it segfaulted (exit 139).

Signed-off-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Max-Bin <vborisw@gmail.com>
shmpwk pushed a commit to tier4/pilot_auto_system that referenced this pull request Oct 5, 2026
…is off (autowarefoundation/autoware_universe#13450)

`no_rendering_mode` turns the scene rendering off, yet the camera sensors in the sensor
mapping were still spawned in CARLA, where they can only ever return an empty image.

Worse, the same flag describes the case that matters: a CARLA server started without a
renderer (`CarlaUnreal.sh -nullrhi`) **segfaults as soon as a camera sensor is spawned on
it**. Every call the bridge makes afterwards fails with an opaque
`RuntimeError: std::exception`, so the logs point at whatever RPC came next rather than at
the camera. The ray-cast LiDAR needs no renderer and keeps producing points, which makes
such a server otherwise useful for headless LiDAR-only closed-loop runs.

A client cannot detect a renderer-less server: its world settings, blueprint library and
sensor attributes are byte-for-byte identical to a rendering one (verified by diffing a full
client-side dump of both), and probing by spawning a test camera is what kills it.

So follow `no_rendering_mode` and leave the cameras out of the CARLA spawn list, naming the
skipped sensors once in a warning. Every sensor that works without rendering is spawned as
before, the same sensor mapping now works with and without rendering, and the behaviour with
rendering on is unchanged.

Verified on CARLA 0.10 `-nullrhi` with the full 9-sensor mapping (6 RGB cameras) and
`no_rendering_mode:=True`: all six cameras are named in the warning and skipped, the ego
spawns, LiDAR publishes at 10.0 Hz, the camera topics stay silent, and the CARLA server
stays up - where previously it segfaulted (exit 139).

Signed-off-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Max-Bin <vborisw@gmail.com>
shmpwk pushed a commit to tier4/pilot_auto_localization_map that referenced this pull request Oct 14, 2026
…is off (autowarefoundation/autoware_universe#13450)

`no_rendering_mode` turns the scene rendering off, yet the camera sensors in the sensor
mapping were still spawned in CARLA, where they can only ever return an empty image.

Worse, the same flag describes the case that matters: a CARLA server started without a
renderer (`CarlaUnreal.sh -nullrhi`) **segfaults as soon as a camera sensor is spawned on
it**. Every call the bridge makes afterwards fails with an opaque
`RuntimeError: std::exception`, so the logs point at whatever RPC came next rather than at
the camera. The ray-cast LiDAR needs no renderer and keeps producing points, which makes
such a server otherwise useful for headless LiDAR-only closed-loop runs.

A client cannot detect a renderer-less server: its world settings, blueprint library and
sensor attributes are byte-for-byte identical to a rendering one (verified by diffing a full
client-side dump of both), and probing by spawning a test camera is what kills it.

So follow `no_rendering_mode` and leave the cameras out of the CARLA spawn list, naming the
skipped sensors once in a warning. Every sensor that works without rendering is spawned as
before, the same sensor mapping now works with and without rendering, and the behaviour with
rendering on is unchanged.

Verified on CARLA 0.10 `-nullrhi` with the full 9-sensor mapping (6 RGB cameras) and
`no_rendering_mode:=True`: all six cameras are named in the warning and skipped, the ego
spawns, LiDAR publishes at 10.0 Hz, the camera topics stay silent, and the CARLA server
stays up - where previously it segfaulted (exit 139).

Signed-off-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Max-Bin <vborisw@gmail.com>
shmpwk pushed a commit to tier4/pilot_auto_localization_map that referenced this pull request Oct 14, 2026
…is off (autowarefoundation/autoware_universe#13450)

`no_rendering_mode` turns the scene rendering off, yet the camera sensors in the sensor
mapping were still spawned in CARLA, where they can only ever return an empty image.

Worse, the same flag describes the case that matters: a CARLA server started without a
renderer (`CarlaUnreal.sh -nullrhi`) **segfaults as soon as a camera sensor is spawned on
it**. Every call the bridge makes afterwards fails with an opaque
`RuntimeError: std::exception`, so the logs point at whatever RPC came next rather than at
the camera. The ray-cast LiDAR needs no renderer and keeps producing points, which makes
such a server otherwise useful for headless LiDAR-only closed-loop runs.

A client cannot detect a renderer-less server: its world settings, blueprint library and
sensor attributes are byte-for-byte identical to a rendering one (verified by diffing a full
client-side dump of both), and probing by spawning a test camera is what kills it.

So follow `no_rendering_mode` and leave the cameras out of the CARLA spawn list, naming the
skipped sensors once in a warning. Every sensor that works without rendering is spawned as
before, the same sensor mapping now works with and without rendering, and the behaviour with
rendering on is unchanged.

Verified on CARLA 0.10 `-nullrhi` with the full 9-sensor mapping (6 RGB cameras) and
`no_rendering_mode:=True`: all six cameras are named in the warning and skipped, the ego
spawns, LiDAR publishes at 10.0 Hz, the camera topics stay silent, and the CARLA server
stays up - where previously it segfaulted (exit 139).

Signed-off-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Max-Bin <vborisw@gmail.com>
shmpwk pushed a commit to tier4/pilot_auto_localization_map that referenced this pull request Oct 14, 2026
…is off (autowarefoundation/autoware_universe#13450)

`no_rendering_mode` turns the scene rendering off, yet the camera sensors in the sensor
mapping were still spawned in CARLA, where they can only ever return an empty image.

Worse, the same flag describes the case that matters: a CARLA server started without a
renderer (`CarlaUnreal.sh -nullrhi`) **segfaults as soon as a camera sensor is spawned on
it**. Every call the bridge makes afterwards fails with an opaque
`RuntimeError: std::exception`, so the logs point at whatever RPC came next rather than at
the camera. The ray-cast LiDAR needs no renderer and keeps producing points, which makes
such a server otherwise useful for headless LiDAR-only closed-loop runs.

A client cannot detect a renderer-less server: its world settings, blueprint library and
sensor attributes are byte-for-byte identical to a rendering one (verified by diffing a full
client-side dump of both), and probing by spawning a test camera is what kills it.

So follow `no_rendering_mode` and leave the cameras out of the CARLA spawn list, naming the
skipped sensors once in a warning. Every sensor that works without rendering is spawned as
before, the same sensor mapping now works with and without rendering, and the behaviour with
rendering on is unchanged.

Verified on CARLA 0.10 `-nullrhi` with the full 9-sensor mapping (6 RGB cameras) and
`no_rendering_mode:=True`: all six cameras are named in the warning and skipped, the ego
spawns, LiDAR publishes at 10.0 Hz, the camera topics stay silent, and the CARLA server
stays up - where previously it segfaulted (exit 139).

Signed-off-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Max-Bin <vborisw@gmail.com>
shmpwk pushed a commit to tier4/pilot_auto_common that referenced this pull request Oct 14, 2026
…is off (autowarefoundation/autoware_universe#13450)

`no_rendering_mode` turns the scene rendering off, yet the camera sensors in the sensor
mapping were still spawned in CARLA, where they can only ever return an empty image.

Worse, the same flag describes the case that matters: a CARLA server started without a
renderer (`CarlaUnreal.sh -nullrhi`) **segfaults as soon as a camera sensor is spawned on
it**. Every call the bridge makes afterwards fails with an opaque
`RuntimeError: std::exception`, so the logs point at whatever RPC came next rather than at
the camera. The ray-cast LiDAR needs no renderer and keeps producing points, which makes
such a server otherwise useful for headless LiDAR-only closed-loop runs.

A client cannot detect a renderer-less server: its world settings, blueprint library and
sensor attributes are byte-for-byte identical to a rendering one (verified by diffing a full
client-side dump of both), and probing by spawning a test camera is what kills it.

So follow `no_rendering_mode` and leave the cameras out of the CARLA spawn list, naming the
skipped sensors once in a warning. Every sensor that works without rendering is spawned as
before, the same sensor mapping now works with and without rendering, and the behaviour with
rendering on is unchanged.

Verified on CARLA 0.10 `-nullrhi` with the full 9-sensor mapping (6 RGB cameras) and
`no_rendering_mode:=True`: all six cameras are named in the warning and skipped, the ego
spawns, LiDAR publishes at 10.0 Hz, the camera topics stay silent, and the CARLA server
stays up - where previously it segfaulted (exit 139).

Signed-off-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Max-Bin <vborisw@gmail.com>
shmpwk pushed a commit to tier4/pilot_auto_vehicle that referenced this pull request Oct 14, 2026
…is off (autowarefoundation/autoware_universe#13450)

`no_rendering_mode` turns the scene rendering off, yet the camera sensors in the sensor
mapping were still spawned in CARLA, where they can only ever return an empty image.

Worse, the same flag describes the case that matters: a CARLA server started without a
renderer (`CarlaUnreal.sh -nullrhi`) **segfaults as soon as a camera sensor is spawned on
it**. Every call the bridge makes afterwards fails with an opaque
`RuntimeError: std::exception`, so the logs point at whatever RPC came next rather than at
the camera. The ray-cast LiDAR needs no renderer and keeps producing points, which makes
such a server otherwise useful for headless LiDAR-only closed-loop runs.

A client cannot detect a renderer-less server: its world settings, blueprint library and
sensor attributes are byte-for-byte identical to a rendering one (verified by diffing a full
client-side dump of both), and probing by spawning a test camera is what kills it.

So follow `no_rendering_mode` and leave the cameras out of the CARLA spawn list, naming the
skipped sensors once in a warning. Every sensor that works without rendering is spawned as
before, the same sensor mapping now works with and without rendering, and the behaviour with
rendering on is unchanged.

Verified on CARLA 0.10 `-nullrhi` with the full 9-sensor mapping (6 RGB cameras) and
`no_rendering_mode:=True`: all six cameras are named in the warning and skipped, the ego
spawns, LiDAR publishes at 10.0 Hz, the camera topics stay silent, and the CARLA server
stays up - where previously it segfaulted (exit 139).

Signed-off-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Max-Bin <vborisw@gmail.com>
shmpwk pushed a commit to tier4/pilot_auto_vehicle that referenced this pull request Oct 14, 2026
…is off (autowarefoundation/autoware_universe#13450)

`no_rendering_mode` turns the scene rendering off, yet the camera sensors in the sensor
mapping were still spawned in CARLA, where they can only ever return an empty image.

Worse, the same flag describes the case that matters: a CARLA server started without a
renderer (`CarlaUnreal.sh -nullrhi`) **segfaults as soon as a camera sensor is spawned on
it**. Every call the bridge makes afterwards fails with an opaque
`RuntimeError: std::exception`, so the logs point at whatever RPC came next rather than at
the camera. The ray-cast LiDAR needs no renderer and keeps producing points, which makes
such a server otherwise useful for headless LiDAR-only closed-loop runs.

A client cannot detect a renderer-less server: its world settings, blueprint library and
sensor attributes are byte-for-byte identical to a rendering one (verified by diffing a full
client-side dump of both), and probing by spawning a test camera is what kills it.

So follow `no_rendering_mode` and leave the cameras out of the CARLA spawn list, naming the
skipped sensors once in a warning. Every sensor that works without rendering is spawned as
before, the same sensor mapping now works with and without rendering, and the behaviour with
rendering on is unchanged.

Verified on CARLA 0.10 `-nullrhi` with the full 9-sensor mapping (6 RGB cameras) and
`no_rendering_mode:=True`: all six cameras are named in the warning and skipped, the ego
spawns, LiDAR publishes at 10.0 Hz, the camera topics stay silent, and the CARLA server
stays up - where previously it segfaulted (exit 139).

Signed-off-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Max-Bin <vborisw@gmail.com>
shmpwk pushed a commit to tier4/pilot_auto_visualization that referenced this pull request Oct 14, 2026
…is off (autowarefoundation/autoware_universe#13450)

`no_rendering_mode` turns the scene rendering off, yet the camera sensors in the sensor
mapping were still spawned in CARLA, where they can only ever return an empty image.

Worse, the same flag describes the case that matters: a CARLA server started without a
renderer (`CarlaUnreal.sh -nullrhi`) **segfaults as soon as a camera sensor is spawned on
it**. Every call the bridge makes afterwards fails with an opaque
`RuntimeError: std::exception`, so the logs point at whatever RPC came next rather than at
the camera. The ray-cast LiDAR needs no renderer and keeps producing points, which makes
such a server otherwise useful for headless LiDAR-only closed-loop runs.

A client cannot detect a renderer-less server: its world settings, blueprint library and
sensor attributes are byte-for-byte identical to a rendering one (verified by diffing a full
client-side dump of both), and probing by spawning a test camera is what kills it.

So follow `no_rendering_mode` and leave the cameras out of the CARLA spawn list, naming the
skipped sensors once in a warning. Every sensor that works without rendering is spawned as
before, the same sensor mapping now works with and without rendering, and the behaviour with
rendering on is unchanged.

Verified on CARLA 0.10 `-nullrhi` with the full 9-sensor mapping (6 RGB cameras) and
`no_rendering_mode:=True`: all six cameras are named in the warning and skipped, the ego
spawns, LiDAR publishes at 10.0 Hz, the camera topics stay silent, and the CARLA server
stays up - where previously it segfaulted (exit 139).

Signed-off-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Max-Bin <vborisw@gmail.com>
shmpwk pushed a commit to tier4/pilot_auto_simulation that referenced this pull request Oct 14, 2026
…is off (autowarefoundation/autoware_universe#13450)

`no_rendering_mode` turns the scene rendering off, yet the camera sensors in the sensor
mapping were still spawned in CARLA, where they can only ever return an empty image.

Worse, the same flag describes the case that matters: a CARLA server started without a
renderer (`CarlaUnreal.sh -nullrhi`) **segfaults as soon as a camera sensor is spawned on
it**. Every call the bridge makes afterwards fails with an opaque
`RuntimeError: std::exception`, so the logs point at whatever RPC came next rather than at
the camera. The ray-cast LiDAR needs no renderer and keeps producing points, which makes
such a server otherwise useful for headless LiDAR-only closed-loop runs.

A client cannot detect a renderer-less server: its world settings, blueprint library and
sensor attributes are byte-for-byte identical to a rendering one (verified by diffing a full
client-side dump of both), and probing by spawning a test camera is what kills it.

So follow `no_rendering_mode` and leave the cameras out of the CARLA spawn list, naming the
skipped sensors once in a warning. Every sensor that works without rendering is spawned as
before, the same sensor mapping now works with and without rendering, and the behaviour with
rendering on is unchanged.

Verified on CARLA 0.10 `-nullrhi` with the full 9-sensor mapping (6 RGB cameras) and
`no_rendering_mode:=True`: all six cameras are named in the warning and skipped, the ego
spawns, LiDAR publishes at 10.0 Hz, the camera topics stay silent, and the CARLA server
stays up - where previously it segfaulted (exit 139).

Signed-off-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Max-Bin <vborisw@gmail.com>
shmpwk pushed a commit to tier4/pilot_auto_evaluation that referenced this pull request Oct 14, 2026
…is off (autowarefoundation/autoware_universe#13450)

`no_rendering_mode` turns the scene rendering off, yet the camera sensors in the sensor
mapping were still spawned in CARLA, where they can only ever return an empty image.

Worse, the same flag describes the case that matters: a CARLA server started without a
renderer (`CarlaUnreal.sh -nullrhi`) **segfaults as soon as a camera sensor is spawned on
it**. Every call the bridge makes afterwards fails with an opaque
`RuntimeError: std::exception`, so the logs point at whatever RPC came next rather than at
the camera. The ray-cast LiDAR needs no renderer and keeps producing points, which makes
such a server otherwise useful for headless LiDAR-only closed-loop runs.

A client cannot detect a renderer-less server: its world settings, blueprint library and
sensor attributes are byte-for-byte identical to a rendering one (verified by diffing a full
client-side dump of both), and probing by spawning a test camera is what kills it.

So follow `no_rendering_mode` and leave the cameras out of the CARLA spawn list, naming the
skipped sensors once in a warning. Every sensor that works without rendering is spawned as
before, the same sensor mapping now works with and without rendering, and the behaviour with
rendering on is unchanged.

Verified on CARLA 0.10 `-nullrhi` with the full 9-sensor mapping (6 RGB cameras) and
`no_rendering_mode:=True`: all six cameras are named in the warning and skipped, the ego
spawns, LiDAR publishes at 10.0 Hz, the camera topics stay silent, and the CARLA server
stays up - where previously it segfaulted (exit 139).

Signed-off-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Max-Bin <vborisw@gmail.com>
shmpwk pushed a commit to tier4/pilot_auto_autoware_api that referenced this pull request Oct 14, 2026
…is off (autowarefoundation/autoware_universe#13450)

`no_rendering_mode` turns the scene rendering off, yet the camera sensors in the sensor
mapping were still spawned in CARLA, where they can only ever return an empty image.

Worse, the same flag describes the case that matters: a CARLA server started without a
renderer (`CarlaUnreal.sh -nullrhi`) **segfaults as soon as a camera sensor is spawned on
it**. Every call the bridge makes afterwards fails with an opaque
`RuntimeError: std::exception`, so the logs point at whatever RPC came next rather than at
the camera. The ray-cast LiDAR needs no renderer and keeps producing points, which makes
such a server otherwise useful for headless LiDAR-only closed-loop runs.

A client cannot detect a renderer-less server: its world settings, blueprint library and
sensor attributes are byte-for-byte identical to a rendering one (verified by diffing a full
client-side dump of both), and probing by spawning a test camera is what kills it.

So follow `no_rendering_mode` and leave the cameras out of the CARLA spawn list, naming the
skipped sensors once in a warning. Every sensor that works without rendering is spawned as
before, the same sensor mapping now works with and without rendering, and the behaviour with
rendering on is unchanged.

Verified on CARLA 0.10 `-nullrhi` with the full 9-sensor mapping (6 RGB cameras) and
`no_rendering_mode:=True`: all six cameras are named in the warning and skipped, the ego
spawns, LiDAR publishes at 10.0 Hz, the camera topics stay silent, and the CARLA server
stays up - where previously it segfaulted (exit 139).

Signed-off-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Max-Bin <vborisw@gmail.com>
shmpwk pushed a commit to tier4/pilot_auto_autoware_api that referenced this pull request Oct 14, 2026
…is off (autowarefoundation/autoware_universe#13450)

`no_rendering_mode` turns the scene rendering off, yet the camera sensors in the sensor
mapping were still spawned in CARLA, where they can only ever return an empty image.

Worse, the same flag describes the case that matters: a CARLA server started without a
renderer (`CarlaUnreal.sh -nullrhi`) **segfaults as soon as a camera sensor is spawned on
it**. Every call the bridge makes afterwards fails with an opaque
`RuntimeError: std::exception`, so the logs point at whatever RPC came next rather than at
the camera. The ray-cast LiDAR needs no renderer and keeps producing points, which makes
such a server otherwise useful for headless LiDAR-only closed-loop runs.

A client cannot detect a renderer-less server: its world settings, blueprint library and
sensor attributes are byte-for-byte identical to a rendering one (verified by diffing a full
client-side dump of both), and probing by spawning a test camera is what kills it.

So follow `no_rendering_mode` and leave the cameras out of the CARLA spawn list, naming the
skipped sensors once in a warning. Every sensor that works without rendering is spawned as
before, the same sensor mapping now works with and without rendering, and the behaviour with
rendering on is unchanged.

Verified on CARLA 0.10 `-nullrhi` with the full 9-sensor mapping (6 RGB cameras) and
`no_rendering_mode:=True`: all six cameras are named in the warning and skipped, the ego
spawns, LiDAR publishes at 10.0 Hz, the camera topics stay silent, and the CARLA server
stays up - where previously it segfaulted (exit 139).

Signed-off-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Max-Bin <vborisw@gmail.com>
shmpwk pushed a commit to tier4/pilot_auto_planning that referenced this pull request Oct 14, 2026
…is off (autowarefoundation/autoware_universe#13450)

`no_rendering_mode` turns the scene rendering off, yet the camera sensors in the sensor
mapping were still spawned in CARLA, where they can only ever return an empty image.

Worse, the same flag describes the case that matters: a CARLA server started without a
renderer (`CarlaUnreal.sh -nullrhi`) **segfaults as soon as a camera sensor is spawned on
it**. Every call the bridge makes afterwards fails with an opaque
`RuntimeError: std::exception`, so the logs point at whatever RPC came next rather than at
the camera. The ray-cast LiDAR needs no renderer and keeps producing points, which makes
such a server otherwise useful for headless LiDAR-only closed-loop runs.

A client cannot detect a renderer-less server: its world settings, blueprint library and
sensor attributes are byte-for-byte identical to a rendering one (verified by diffing a full
client-side dump of both), and probing by spawning a test camera is what kills it.

So follow `no_rendering_mode` and leave the cameras out of the CARLA spawn list, naming the
skipped sensors once in a warning. Every sensor that works without rendering is spawned as
before, the same sensor mapping now works with and without rendering, and the behaviour with
rendering on is unchanged.

Verified on CARLA 0.10 `-nullrhi` with the full 9-sensor mapping (6 RGB cameras) and
`no_rendering_mode:=True`: all six cameras are named in the warning and skipped, the ego
spawns, LiDAR publishes at 10.0 Hz, the camera topics stay silent, and the CARLA server
stays up - where previously it segfaulted (exit 139).

Signed-off-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Max-Bin <vborisw@gmail.com>
isamu-takagi pushed a commit to tier4/pilot_auto_system that referenced this pull request Nov 6, 2026
…is off (autowarefoundation/autoware_universe#13450)

`no_rendering_mode` turns the scene rendering off, yet the camera sensors in the sensor
mapping were still spawned in CARLA, where they can only ever return an empty image.

Worse, the same flag describes the case that matters: a CARLA server started without a
renderer (`CarlaUnreal.sh -nullrhi`) **segfaults as soon as a camera sensor is spawned on
it**. Every call the bridge makes afterwards fails with an opaque
`RuntimeError: std::exception`, so the logs point at whatever RPC came next rather than at
the camera. The ray-cast LiDAR needs no renderer and keeps producing points, which makes
such a server otherwise useful for headless LiDAR-only closed-loop runs.

A client cannot detect a renderer-less server: its world settings, blueprint library and
sensor attributes are byte-for-byte identical to a rendering one (verified by diffing a full
client-side dump of both), and probing by spawning a test camera is what kills it.

So follow `no_rendering_mode` and leave the cameras out of the CARLA spawn list, naming the
skipped sensors once in a warning. Every sensor that works without rendering is spawned as
before, the same sensor mapping now works with and without rendering, and the behaviour with
rendering on is unchanged.

Verified on CARLA 0.10 `-nullrhi` with the full 9-sensor mapping (6 RGB cameras) and
`no_rendering_mode:=True`: all six cameras are named in the warning and skipped, the ego
spawns, LiDAR publishes at 10.0 Hz, the camera topics stay silent, and the CARLA server
stays up - where previously it segfaulted (exit 139).

Signed-off-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Masaya Kataoka <cld-masaya.kataoka@tier4.jp>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Max-Bin <vborisw@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component:simulation Virtual environment setups and simulations. (auto-assigned) run:build-and-test-differential Mark to enable build-and-test-differential workflow. (used-by-ci) type:documentation Creating or refining documentation. (auto-assigned)

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

2 participants