• 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
  • v0.3.0 f29265a860

    v0.3.0 — a dora 1.0 service node
    validate / validate (push) Successful in 58m48s
    validate / test (push) Successful in 58m53s
    validate / markdownlint (push) Successful in 58m43s
    Stable

    cristhian released this 2026-09-15 21:26:59 +00:00 | 3 commits to main since this release

    The tag README.md and dora-node.yml have been advertising. Until now a consumer
    following either got an unresolvable ref.

    What this is

    The node speaks dora's service pattern: one request, one response, correlated by the
    request_id dora puts in the message metadata. Eleven services, Arrow struct payloads,
    and a jog input taking a base-frame velocity.

    The FastAPI REST server and web UI are gone — this is a dataflow node and nothing else.
    Both remain reachable at v0.1.2.

    Not drop-in from v0.1.x

    command/status → request/response; JSON strings → Arrow structs; action →
    service; vacuum_on/vacuum_off → grasp/release; jog is its own input; no
    started message. README.md carries the full migration notes, including the v0.1.x ones
    (web UI removal, DEFAULT_UNITS, tool-tip poses).

    Verified

    86 tests with no robot, dataflow or daemon; dora validate clean under strict_types;
    ruff and markdownlint clean; CI green on this commit.

    Not verified — no hardware was connected

    • That emergency_stop() followed by clear() leaves the controller accepting the next
      motion. First thing to check on real hardware.
    • That the xArm controller keeps executing a queued motion when the TCP connection drops.
      The shutdown-halts-the-arm behaviour assumes it does.

    Usage

      - id: ulite6
        git: ssh://git@gitea.liria.cl:5001/liria/dora-ulite6.git
        tag: v0.3.0
        build: pip install .
        path: dora-ulite6
    
    Downloads
  • v0.1.3 a5f05ddc6f

    v0.1.3 Stable

    cristhian released this 2026-04-09 13:00:45 +00:00 | 14 commits to main since this release

    Changes

    • Fix markdownlint config and README lint errors
    • Fix AGENTS.md line-length lint errors
    Downloads
  • v0.1.2 b7aa1dd3aa

    v0.1.2 Stable

    cristhian released this 2026-04-02 17:07:28 +00:00 | 16 commits to main since this release

    Changes

    • Add TOOL_TYPE env var (none, vacuum, gripper) to apply tool Z-offset to tcp_pose
    • Add TOOL_OFFSET_MM env var for fine-tuning on top of the preset
    • Default presets for standard UFactory Lite6 accessories: vacuum = 61 mm, gripper = 65 mm
    • /api/pose and Dora tcp_pose output now reflect tool tip position when a tool is configured
    • /api/config exposes tool_type and tool_offset_mm
    • Web UI TCP pose card title updates to show the active tool
    Downloads
  • v0.1.1 4174d566e9

    v0.1.1 Stable

    cristhian released this 2026-04-02 16:27:05 +00:00 | 17 commits to main since this release

    Fixes

    • Refactor dataflow.yml to run from local path (remove git/git_checkout fields)
    • Pin dora-rs == 0.5.0 to match dora-cli 0.5.0 message format
    • Bump requires-python to >=3.12 to satisfy scipy >= 1.14.0
    Downloads