Physical-robot observation

Record the running TRIK state path—without touching its command path.

When the owner already has TRIK running for normal maintenance, this observer subscribes to the wheel joint state and odometry topics and writes one digested JSON file. It never connects to the brick TCP server, publishes cmd_vel, calls controller services or activates a controller.

Updated · RLSOK

Download the TRIK observer
01

Why it does not open a second brick connection

The public TRIK socket server is not a passive identity endpoint. Accepting a client starts its sensor loop and repeatedly applies the current left and right motor power, initially zero. A separate probe would therefore cross the strict read-only boundary even if it never sent a velocity command.

This observer stays on the ROS side and runs only when the owner's normal bringup is already active. Do not power, launch or connect the robot solely to produce this file.

02

Download and capture once

Download the v2 source bundle and checksum. Source the same ROS 2 Jazzy workspace that already sees the running TRIK graph and pass the actual checkout root. The observer records its commit, dirty state and origin. The 25,232-byte ZIP has SHA-256 d4fd8dc1dbeb6e32cb2ac8f67564d3068a812eb558784c9d5368c0e67ae64523.

curl -fLO https://github.com/realitywarden/rlsok/releases/download/trik-status-observer-v2/rlsok-trik-status-observer-v2.zip
curl -fLO https://github.com/realitywarden/rlsok/releases/download/trik-status-observer-v2/rlsok-trik-status-observer-v2.zip.sha256
sha256sum -c rlsok-trik-status-observer-v2.zip.sha256
unzip rlsok-trik-status-observer-v2.zip
cd rlsok-trik-status-observer-v2/experimental/composable-shadow
source /opt/ros/jazzy/setup.bash
source /path/to/trik_ws/install/setup.bash
python3 trik_status.py   --source-root /path/to/trik_ros2_control   --output trik-status.json
03

What the file records

  • The ROS distribution, RMW implementation and domain ID visible to the observer.
  • Exactly one publisher for /joint_states and one for /diff_drive_controller/odom, with their message types and endpoint GIDs.
  • The positions and velocities of base_left_wheel_joint and base_right_wheel_joint.
  • The odometry/body frames, message stamps, pose and twist, plus a SHA-256 digest of the complete observation.
04

What it cannot prove

A ROS publisher and changing wheel state do not authenticate the physical TRIK brick, flashed Python script, motor and encoder wiring, wheel signs, calibration or firmware. Endpoint GIDs are capture context, not stable robot identity. The file is not permission to move.

Use the separate read-only controller export when the selected controller and claimed interfaces also need review. Keep source mapping, controller state and this owner-run topic observation distinct.

05

What to return for the first real result

Return trik-status.json with the exact TRIK checkout commit and the controller export collected during the same normal maintenance session. State whether the robot was physically present and whether the observed wheel/odometry values came from the normal TCP bridge rather than mock hardware.

That evidence can establish an owner-run read-only ROS path. It still does not establish authenticated brick identity, safe motion or customer acceptance.

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

Does this connect RLSOK directly to the TRIK brick?

No. It deliberately avoids the brick TCP server and subscribes only to two state topics already present in the owner's running ROS 2 graph.

Can it publish cmd_vel or activate the drive controller?

No. The reader has no publisher, service client or TCP socket surface. It only creates subscriptions.

Is a returned file a real-robot result?

Only when the owner confirms it was captured from the actual TRIK environment during a normal session. The JSON alone cannot distinguish physical hardware from a mock graph or authenticate the brick.

Continue with the relevant guide

Try the local example without an application. For setup or integration help, you can also contact us.