Skip to main content
Plays the robot’s side of a custom policy session against a running endpoint, such as one started with almond_axol.policy.serve(). It needs no robot, cameras or CAN. It uses the same scheduler as run-policy on a virtual clock:
  • Requests go out every request_interval ticks.
  • Each reply is adopted delay_steps ticks after its request, at the row that’s due by then.
  • A reply later than max_adoption_offset_steps triggers recovery, as it would on the robot.
Frames are mid-grey, and the simulated arm tracks its commands perfectly.
The report lists:
  • requests sent and replies adopted;
  • every recovery and its reason (a late reply, or a plan that ran out of rows);
  • the endpoint’s real round-trip time, against the time between requests;
  • the largest per-tick jumps where one plan hands over to the next, next to the largest steps within a plan.
A policy that continues the motion in progress shows switch jumps no larger than its within-plan steps. The command exits 1 if the endpoint refuses the session or fails a request, and 2 if any recovery happened. From Python, check_policy() returns the same report as a CheckReport for unit tests.