Map the running Gazebo command boundary—without sending a Twist.
This observer is pinned to Ishan's public warehouse mobile-robot source. It inspects the existing ROS graph and reads one odometry message; it never publishes /cmd_vel or starts the simulation.
Updated · RLSOK
Download the Gazebo observerUse the command path already defined by the project
At portable-path PR commit ec909071f6d9275661372bba196ba47857f7bea8, ROS /cmd_vel uses geometry_msgs/msg/Twist and enters Gazebo through ros_gz_bridge. The DiffDrive plugin returns nav_msgs/msg/Odometry on /odom.
The companion upstream PR removes the author's absolute model path, makes the world plugins consistent with the existing Humble/Fortress launch, repairs the RViz configuration and documents this exact boundary. Review that PR separately; the observer does not modify the simulation.
Download and capture once
The v5 ZIP is 26,388 bytes. Its SHA-256 is 1e8d7b529f1b41419c8be7fa093fc2f7eadce8e73f4a06b08e0ed6ac02ed5acb. It records the actual checkout commit, dirty state and origin. Version 5 no longer trusts a display-formatted Fast DDS placeholder as the bridge identity: when ROS cannot expose a node name, it requires the unique /cmd_vel subscriber and /odom publisher to share the same DDS participant GID prefix. The downloaded release passed its focused offline checks; a fresh result from Ishan's running simulation is still pending and is not claimed here.
curl -fLO https://github.com/realitywarden/rlsok/releases/download/ishan-gazebo-shadow-observer-v5/rlsok-ishan-gazebo-shadow-observer-v5.zip curl -fLO https://github.com/realitywarden/rlsok/releases/download/ishan-gazebo-shadow-observer-v5/rlsok-ishan-gazebo-shadow-observer-v5.zip.sha256 sha256sum -c rlsok-ishan-gazebo-shadow-observer-v5.zip.sha256 unzip rlsok-ishan-gazebo-shadow-observer-v5.zip cd rlsok-ishan-gazebo-shadow-observer-v5/experimental/composable-shadow source /opt/ros/humble/setup.bash source /path/to/ros_mobile_robot/install/setup.bash python3 ishan_gazebo_status.py --version python3 ishan_gazebo_status.py --source-root /path/to/ros_mobile_robot --output ishan-gazebo-status.json
What a result establishes
- One unique subscriber to /cmd_vel with the selected Twist type, with its raw node namespace/name preserved.
- One unique publisher on /odom with the selected Odometry type; unknown-name endpoints must share the same 12-byte DDS participant GID prefix.
- The ROS distro, RMW, domain, endpoint GIDs, frames, pose, velocity, source commit and observation digest.
- Zero publishers and zero commands created by the observer.
Keep simulation and physical evidence separate
A passing file demonstrates a source-selected simulation graph and the zero-dispatch Shadow observation flow. It does not authenticate Gazebo, prove that another node sent no commands, connect a physical robot, install a hardware gate, establish motion safety or authorize reuse of the model configuration on hardware.
Sources and verification scope
Source code and guides describe implementation and setup. Release notes identify reported checks and their limits. Publication alone does not establish customer use or physical-robot validation.
Frequently asked questions
Can this observer move the simulated robot?
No. It creates only one /odom subscription and has no publisher or service-client surface.
Does the JSON count as a real-robot connection?
No. The selected project is Gazebo-only; the result must remain labelled as simulation evidence.
Continue with the relevant guide
Try the local example without an application. For setup or integration help, you can also contact us.