Skip to main content

franka-node-client

Python client for franka-node, the Zenoh node in front of franka-rs's target control. Drive a node-served Franka arm from a laptop, a workstation or a notebook, on Linux, macOS or Windows, without a byte offset, a sequence number, a timestamp or a lease token in your own code.

python -m pip install franka-node-client     # the same version as the node

From a checkout of the node's revision: python -m pip install ./crates/franka-node/python.

import franka_node

node = franka_node.Node("tcp/<node-host>:7447")         # or Node(session=my_zenoh_session)
with node.arm("fr3") as arm:                              # lease token + acquire, release on exit
    with arm.cartesian_targets() as t:                    # enable; stop on exit
        t.move_by([0.0, 0.0, 0.05])                       # +5 cm z, relative to the goal
        state = t.wait(timeout=5.0)                       # until the arm is there
        print(state.position, state.quaternion, state.refused)
    arm.gripper.move(0.04)

The verbs and conventions are those of the franka Python bindings: quaternions (x, y, z, w), rotation vectors in the base frame, O_T_EE as a (4, 4) matrix, robot mode names such as "move" and "user_stopped".

API

  • Node(connect=None, *, session=None): close(), context manager, client_id, status(name=None, timeout=2.0) -> dict, arm(name) -> Arm. A borrowed session is used as it is configured and never closed.
  • Arm: state(timeout=1.0) -> ArmState, on_state(callback) -> Subscription, acquire(timeout=3.0), release(), context manager, home(speed=0.2, *, episode=None, timeout=90.0), stop(timeout=10.0), recover(timeout=10.0), gripper, cartesian_targets(*, episode=None, max_velocity=0.1, max_angular_velocity=0.3, lead=0.03, angular_lead=0.15, rate=50.0) and joint_targets(*, episode=None, max_velocity=0.5, lead=0.15, rate=50.0).
  • CartesianTargets / JointTargets: move_to, move_by, follow(chunk, dt), target(), state(), wait(timeout=None, ...), stop(), context manager.
  • Gripper: move(width, *, wait=True, timeout=10.0), grasp(width, force, *, wait=True, timeout=10.0), homing(timeout=40.0), stop(), state(timeout=1.0) -> GripperState.
  • franka_node.rotated(quaternion, rotation_vector).
  • Errors: NodeError, and under it Refused (the node's reason verbatim), NodeTimeout, SessionEnded and ProtocolError.

What the client does for you (the lease, the keepalive, pacing under the node's max_step and max_lead, the anchor flag, wait, SessionEnded) is described on the book page Serve arms over Zenoh.

Tuning panel

The client installs franka-tuning-panel, a browser page for the live parameters of a running Cartesian impedance session: franka-tuning-panel --connect tcp/<node-host>:7447. It opens a Zenoh client session (--mode peer if you need a peer, which --listen requires), queries it with a --timeout of 1.0 s by default, and binds to loopback, reachable from another machine through an ssh tunnel. --expose-to-network (with --host 0.0.0.0) serves it on the network instead, which has no authentication of any kind: anyone who can reach the port can change any live parameter of a moving robot. See Tune a running controller for the tunnel, exposure, presets and limits.

The package version is the franka-rs workspace version. Apache-2.0.

Metadata

Release files for franka-node-client 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for franka-node-client 0.4.0
File Size Uploaded
franka_node_client-0.4.0.tar.gz 102.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for franka-node-client 0.4.0
File Interpreter ABI Platform
franka_node_client-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 171.9 kB

Release files / franka_node_client-0.4.0.tar.gz

Download URL franka_node_client-0.4.0.tar.gz
Size 102.1 kB
Tags Source
SHA-256 checksum
How to use checksums
77a3682f97bfe86c053bd790b0266a5dec19fa7a0201edfb29917edeb3c13f6d
BLAKE2b-256 checksum
How to use checksums
a8306ae474f5d563ba6519b21719d5c6c307f5c4ce5421372328b9c308d99b5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / franka_node_client-0.4.0-py3-none-any.whl

Download URL franka_node_client-0.4.0-py3-none-any.whl
Size 69.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
43542b2b001521572e90f00c90c55ed0123b4c70c24b070bc381b2464fc67571
BLAKE2b-256 checksum
How to use checksums
fcba84028629e03f5b459e9649e9d55c7051f1e80a70c800dd93c4ac411303d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page