Skip to content

Add configurable Cartesian teleoperation and a simulator lab - #5

Merged
PCrnjak merged 4 commits into
mainfrom
codex/generic-teleoperation
Nov 6, 2026
Merged

PCrnjak merged 4 commits into
mainfrom
codex/generic-teleoperation

Conversation

@PCrnjak

@PCrnjak PCrnjak commented Nov 5, 2026 •

Copy link
Copy Markdown
Collaborator

Adds a robot-independent relative Cartesian control engine, an explicit adapter contract, and a browser lab that sends targets to a simulated Cartesian arm. Applications supply their own robot reference, workspace, speed limits, capabilities, and SDK callbacks; joint-only robots supply kinematics in their adapter.

Behavior:

  • Starts disarmed. Explicit calibration anchors the selected hand to robot feedback or an explicit reference. Clutch holds output; resume re-anchors on a fresh frame without emitting a jump target.
  • Hand loss/identity changes, stale frames, timing/clock gaps, and device changes latch loss and invoke adapter hold. Returning frames do not rearm. Adapter failures preserve their cause and latch a fault; close releases resources even when hold fails.
  • Supports signed axes, arbitrary quaternion frame alignment, independent gains/axis locks, time-based smoothing/deadband, Cartesian speed/workspace bounds, optional relative rotation/angular limits, and normalized grab/pinch gripper mapping.
  • Includes CallbackAdapter and SimulatedArm with immediate Cartesian feedback, strict TOML settings, typed command/session metadata, and a runnable SDK-boundary example.
  • source-leap teleop --demo opens the packaged local lab; removing --demo uses the Leap controller with the same simulated output. The viewer shows tool pose/path, gripper, tracking health, and arm/clutch/disarm controls. Headless and recorded-input modes are also available. No web framework, robot SDK, numerical dependency, or JavaScript build is required for users.

Validation:

  • The installed wheel passed 180 tests on each Windows CPython 3.10.11, 3.11.9, 3.12.10, 3.13.17, 3.14.10, and 3.15.2, with live reads in both tracking modes and dependency checks.
  • Each version processed the existing 1,047-frame real recording containing 50 complete left-hand samples. A clutch/resume cycle generated 18 simulated targets within workspace/speed bounds; no commands followed hand loss.
  • Deterministic behavioral tests cover no-output states, loss/rearm, clutch continuity, a 500-frame bounded trajectory, quaternion composition/frame alignment, smoothing/gripper/rate limits, capabilities, callback faults and cleanup, packaged viewer assets/actions, and CLI telemetry.
  • Ruff, strict Twine metadata, wheel/sdist builds, artifact-content checks, JavaScript syntax, a runnable callback example, and Chrome UI checks passed locally. Platform CI runs on this PR.

This branch builds on the latest-frame API in #4. Source version is 0.1.0b3 development; no b3 publication is requested here. The engine/runtime download is unchanged. The lab has no joint/dynamics model, and no physical robot was commanded. Clean-Windows driver installation and Linux/macOS controller hardware remain external validation work. See docs/TELEOPERATION.md.

The local viewer uses an exclusive Windows listener. A regression test rejects a second lab on the same port, preventing competing sessions from sharing an address.

@PCrnjak
PCrnjak changed the base branch from codex/latest-frame-health to main November 5, 2026 23:27
@PCrnjak
PCrnjak merged commit 5b000bc into main Nov 6, 2026
@PCrnjak
PCrnjak deleted the codex/generic-teleoperation branch November 10, 2026 12:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant