All projects

Personal project / Data

Robotics Telemetry Validation

Inspect deterministic joint-state position and timestamp checks without a live robot or wall-clock sleeps.

Active developmentPython · ROS 2 Humble · Unit testing · Telemetry validation

What I built

I built an independent Python joint-state validator and a ROS 2 diagnostics wrapper. The validator checks sample structure, configured joint position limits, timestamp freshness, and timestamp ordering against explicit inputs.

Keeping the validation core independent of ROS lets me reproduce missing joints, stale samples, and out-of-range positions without connecting to hardware. The wrapper observes joint states and publishes diagnostics; it does not command actuators.

Explore the telemetry walkthrough

The browser walkthrough shows three prepared results from the pinned validator: a sample at the inclusive freshness boundary, a stale sample, and combined joint and timestamp faults. Each example exposes its supplied time, checks, and ordered issue codes.

These synthetic examples do not execute Python or connect to a live ROS 2 graph. The example position limits are placeholders, not calibrated hardware limits.

Architecture and decisions

  • Pass time explicitly. The core receives sample, reference, and previous timestamps instead of reading a clock, making boundary and ordering tests repeatable.
  • Keep reports deterministic. Stable issue codes and ordering make compound faults inspectable without hiding later findings behind the first failure.
  • Separate validation from transport. Pure-Python checks run on the host; the ROS 2 wrapper converts reports into diagnostics and tracks the latest finite timestamp.
  • Keep hardware assumptions visible. Configured joint limits are explicit placeholders; host tests do not establish safe operation of a physical arm.

My contribution

I defined the telemetry contracts, test cases, and separation between the validator and ROS integration, using the AI-assisted process described on the About page.

Scope and verification

At revision 701a1b8, 18 host unit tests and seven repository contract groups passed, with one ROS-dependent test skipped. The browser results are generated from that pinned source; they are prepared examples rather than a live execution environment. Container execution and physical hardware remain unverified.

Source availability

The reviewed implementation is not publicly available yet. Source publication will follow a separate review; use the synthetic browser walkthrough above in the meantime.

Source snapshot 701a1b8 · Reviewed 2026-10-26. This case study describes that revision; development may continue separately.