Skip to content

Empty-world simulation provides no useful /scan evidence, limiting sensor-oracle coverage #101

Description

@147258369ymc

Robot Model

Turtlebot4 Standard

ROS distro

Jazzy

Networking Configuration

Simple Discovery

OS

Ubuntu 24.04

Built from source or installed?

Installed

Package version

ros-jazzy-turtlebot4-simulator: 2.0.2-1noble.20260616.091643
ros-jazzy-turtlebot4-gz-bringup: 2.0.2-1noble.20260616.085653
ros-jazzy-turtlebot4-gz-toolbox: 2.0.2-1noble.20260615.145933
ros-jazzy-ros-gz: 1.0.22-1noble.20260616.074726
Gazebo: Harmonic / gz

Expected behaviour

For TurtleBot4 simulation tests that declare `/scan` as a watched topic, either:

1. useful `sensor_msgs/msg/LaserScan` samples should be recorded, or
2. the launch/test profile should explicitly mark scan coverage as disabled/unavailable for empty-world runs.

This would distinguish motion-control campaigns, where scan may be irrelevant, from sensor/hazard campaigns, where scan evidence is required.

Actual behaviour

In empty/minimal-world headless campaigns, the motion-control findings were valid, but `/scan` did not provide useful evidence for sensor or obstacle-related checks.

The previous 1000-round report observed:

```text
All 941 saved error rosbags were parseable and had complete /odom plus /wheel_vels observations.
/scan was absent in all error rosbags because the campaign used the empty world;
this is not a motion-control bug signal.

The latest report similarly concluded:

Empty-world scan false positive: not applicable to the reported acceleration bugs.
Scan absence or no returns are not the triggering oracle class here.

So this is not a motion-control bug. It is an observability/test-profile issue: empty-world simulation can make /scan unavailable or uninformative while users may still assume scan-based behavior is being exercised.



### Error messages

```bash
No terminal crash. Observed analysis result:
/scan was absent in empty-world error rosbags; scan was not the triggering oracle class.

To Reproduce

1. Start TurtleBot4 Standard simulation in an empty/minimal world.
2. Record `/scan`, `/odom`, `/cmd_vel`, and `/clock`.
3. Run a short motion command sequence or motion-control fuzz run.
4. Inspect the rosbag for `/scan` samples and useful finite scan ranges.
5. Observe that motion-control topics are present, while `/scan` may be absent or not useful for scan/hazard checks.

Other notes

This should probably be handled as documentation/profile behavior rather than a controller bug. A useful improvement would be to document two explicit modes:

1. motion-control mode: empty/minimal world, `/scan` optional or marked unavailable
2. sensor/hazard mode: obstacle world, `/scan` required with useful finite ranges

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions