• v0.3.1 3b941e722e

    v0.3.1 — smooth jogging
    validate / validate (push) Successful in 58m41s
    validate / test (push) Successful in 58m50s
    validate / markdownlint (push) Successful in 58m42s
    Stable

    cristhian released this 2026-09-16 17:29:45 +00:00 | 0 commits to main since this release

    Jogging a real Lite6 moved the arm in discrete steps rather than travelling. This release
    makes it smooth.

    The fix

    set_cartesian_velocity passed duration=velocity_command_ttl_s on every message. That
    parameter is a maximum — the SDK documents it as "over this time will automatically set
    the speed to 0" — so each message re-armed a half-second timed segment and the controller
    re-planned the same motion again.

    Sending less often does not help: re-arming four times a second steps just as much as
    twenty. So the velocity is now set with duration=0 ("always effective, will not stop
    automatically") and an unchanged velocity is not sent to the arm at all. One command
    stands until a different one replaces it.

    Behaviour change worth knowing about

    duration was also the controller-side deadman, and _expire_jog was relying on it — it
    reported ready without commanding anything, because the controller's own timer had
    already stopped the arm.

    VELOCITY_COMMAND_TTL_S is now enforced by this node rather than by the controller.
    Same name, same default (0.5 s), same meaning to a caller: a jog sender that goes quiet
    for longer than this gets the arm stopped. What changed is who stops it. _expire_jog
    now commands the stop itself instead of assuming the controller already did.

    Nothing to change in a dataflow. jog behaves as before from the outside.

    Tests

    86 → 92. Adds tests/test_driver.py: the driver had no direct coverage, because FakeArm
    replaces it everywhere else — which is why this was invisible to the suite.

    Known gap

    The new _expire_jog stop path is covered by unit tests but has not been exercised on
    hardware
    . The smooth-jogging half was confirmed on a real arm; killing a sender mid-jog
    to watch the stop fire was not. Worth doing before relying on it.

    Full detail: liria/dora-ulite6#4

    Downloads