Python bindings for libfranka - Control Franka robots with Python
Project description
pylibfranka Installation and Usage Guide
This document provides comprehensive instructions for installing and using pylibfranka, a Python binding for libfranka that enables control of Franka Robotics robots.
Table of Contents
Installation
From PyPI (Recommended)
The easiest way to install pylibfranka is via pip. Pre-built wheels include all necessary dependencies.
pip install pylibfranka
Platform Compatibility
| Ubuntu Version | Supported Python Versions |
|---|---|
| 20.04 (Focal) | Python 3.9 only |
| 22.04 (Jammy) | Python 3.9, 3.10, 3.11, 3.12 |
| 24.04 (Noble) | Python 3.9, 3.10, 3.11, 3.12 |
Note: Ubuntu 20.04 users must use Python 3.9 due to glibc compatibility requirements.
From Source
If you need to build from source (e.g., for development or unsupported platforms):
Prerequisites
- Python 3.9 or newer
- CMake 3.16 or newer
- C++ compiler with C++17 support
- Eigen3 development headers
- Poco development headers
Disclaimer: If you are using the provided devcontainer, you can skip the prerequisites installation as they are already included in the container.
Installing Prerequisites on Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y build-essential cmake libeigen3-dev libpoco-dev python3-dev
Build and Install
From the root folder, you can install pylibfranka using pip:
pip install .
This will install pylibfranka in your current Python environment.
Examples
pylibfranka comes with three example scripts that demonstrate how to use the library to control a Franka robot.
Joint Position Example
This example demonstrates how to use an external control loop with pylibfranka to move the robot joints.
To run the example:
cd examples
python3 joint_position_example.py --ip <robot_ip>
Where <robot_ip> is the IP address of your Franka robot. If not specified, it defaults to "localhost".
The active control example:
- Sets collision behavior parameters
- Starts joint position control with CartesianImpedance controller mode
- Moves the robot using an external control loop
- Performs a simple motion of selected joints
Print Robot State Example
This example shows how to read and display the complete state of the robot.
To run the example:
cd examples
python3 print_robot_state.py --ip <robot_ip> [--rate <rate>] [--count <count>]
Where:
--ipis the robot's IP address (defaults to "localhost")--rateis the frequency at which to print the state in Hz (defaults to 0.5)--countis the number of state readings to print (defaults to 1, use 0 for continuous)
The print robot state example:
- Connects to the robot
- Reads the complete robot state
- Prints detailed information about:
- Joint positions, velocities, and torques
- End effector pose and velocities
- External forces and torques
- Robot mode and error states
- Mass and inertia properties
Joint Impedance Control Example
This example demonstrates how to implement a joint impedance controller that renders a spring-damper system to move the robot through a sequence of target joint configurations.
To run the example:
cd examples
python3 joint_impedance_example.py --ip <robot_ip>
Where --ip is the robot's IP address (defaults to "localhost").
The joint impedance example:
- Implements a minimum jerk trajectory generator for smooth joint motion
- Uses a spring-damper system for compliant control
- Moves through a sequence of predefined joint configurations:
- Home position (slightly bent arm)
- Extended arm pointing forward
- Arm pointing to the right
- Arm pointing to the left
- Return to home position
- Includes position holding with dwell time between movements
- Compensates for Coriolis effects
And more control examples
There are more control examples to discover. All of them can be executed in a similar way:
cd examples
python3 other_example.py --ip <robot_ip>
Gripper Control Example
This example demonstrates how to control the Franka gripper, including homing, grasping, and reading gripper state.
To run the example:
cd examples
python3 move_gripper.py --robot_ip <robot_ip> [--width <width>] [--homing <0|1>] [--speed <speed>] [--force <force>]
Where:
--robot_ipis the robot's IP address (required)--widthis the object width to grasp in meters (defaults to 0.005)--homingenables/disables gripper homing (0 or 1, defaults to 1)--speedis the gripper speed (defaults to 0.1)--forceis the gripper force in N (defaults to 60)
The gripper example:
- Connects to the gripper
- Performs homing to estimate maximum grasping width
- Reads and displays gripper state including:
- Current width
- Maximum width
- Grasp status
- Temperature
- Timestamp
- Attempts to grasp an object with specified parameters
- Verifies successful grasping
- Releases the object
Async Joint Position Control Example
You can also use the async API to control the robot in a low-rate fashion, e.g. 50Hz. This allows you to specify joint position setpoints without the need for a blocking loop.
cd examples
python3 async_position_control.py --ip <robot_ip>
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pylibfranka-0.21.2.tar.gz.
File metadata
- Download URL: pylibfranka-0.21.2.tar.gz
- Upload date:
- Size: 16.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
806881f08258636cd890f3722d923621fe7e5454f4a980ef7bd51d7a4a7cfabf
|
|
| MD5 |
116bb6c937de8f051305dc4b4065188f
|
|
| BLAKE2b-256 |
4f059a5c83923ea7f71ed84b1e3f8de825ce76fdc6949c38796d90b750c4c4f8
|
Provenance
The following attestation bundles were made for pylibfranka-0.21.2.tar.gz:
Publisher:
pylibfranka-wheels.yml on frankarobotics/libfranka
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pylibfranka-0.21.2.tar.gz -
Subject digest:
806881f08258636cd890f3722d923621fe7e5454f4a980ef7bd51d7a4a7cfabf - Sigstore transparency entry: 1437324691
- Sigstore integration time:
-
Permalink:
frankarobotics/libfranka@9f9304ec0ac897eff3219a67f612b959948535e2 -
Branch / Tag:
refs/tags/0.21.2 - Owner: https://github.com/frankarobotics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pylibfranka-wheels.yml@9f9304ec0ac897eff3219a67f612b959948535e2 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pylibfranka-0.21.2-cp312-cp312-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: pylibfranka-0.21.2-cp312-cp312-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 4.2 MB
- Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
841bcac90305fa3411659168718c67ba79c5e3677715fa87cc21ecd0f02c727f
|
|
| MD5 |
a1aaa02e815630d0e2a36539c302389c
|
|
| BLAKE2b-256 |
16f6824d85b6fdaa7ae0a90d8f754eed788c1c70871d961bc8cde16c46514c94
|
Provenance
The following attestation bundles were made for pylibfranka-0.21.2-cp312-cp312-manylinux_2_34_x86_64.whl:
Publisher:
pylibfranka-wheels.yml on frankarobotics/libfranka
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pylibfranka-0.21.2-cp312-cp312-manylinux_2_34_x86_64.whl -
Subject digest:
841bcac90305fa3411659168718c67ba79c5e3677715fa87cc21ecd0f02c727f - Sigstore transparency entry: 1437324697
- Sigstore integration time:
-
Permalink:
frankarobotics/libfranka@9f9304ec0ac897eff3219a67f612b959948535e2 -
Branch / Tag:
refs/tags/0.21.2 - Owner: https://github.com/frankarobotics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pylibfranka-wheels.yml@9f9304ec0ac897eff3219a67f612b959948535e2 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pylibfranka-0.21.2-cp311-cp311-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: pylibfranka-0.21.2-cp311-cp311-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 4.2 MB
- Tags: CPython 3.11, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e3824043aad56f0b7d42acc5d2064621323d442200b4a8eddeb4f4bad18d4ac8
|
|
| MD5 |
2d3a7bf5997b039ad1bed89424a16760
|
|
| BLAKE2b-256 |
a4ad9ab7bd929d9c1ec4ebe54267a3ed4fbe1a5878ac9a941baf3bd7c99f7c92
|
Provenance
The following attestation bundles were made for pylibfranka-0.21.2-cp311-cp311-manylinux_2_34_x86_64.whl:
Publisher:
pylibfranka-wheels.yml on frankarobotics/libfranka
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pylibfranka-0.21.2-cp311-cp311-manylinux_2_34_x86_64.whl -
Subject digest:
e3824043aad56f0b7d42acc5d2064621323d442200b4a8eddeb4f4bad18d4ac8 - Sigstore transparency entry: 1437324700
- Sigstore integration time:
-
Permalink:
frankarobotics/libfranka@9f9304ec0ac897eff3219a67f612b959948535e2 -
Branch / Tag:
refs/tags/0.21.2 - Owner: https://github.com/frankarobotics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pylibfranka-wheels.yml@9f9304ec0ac897eff3219a67f612b959948535e2 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pylibfranka-0.21.2-cp310-cp310-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: pylibfranka-0.21.2-cp310-cp310-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 4.2 MB
- Tags: CPython 3.10, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a308f87e5873f77b2a12884c9fe374aa7b219a2e3fa29e04ddd617225cda9073
|
|
| MD5 |
46a591ad443e4d85f58380a95f5c54be
|
|
| BLAKE2b-256 |
af34a69d40f093dd2e4701e391c922edbbdf1284281836d51e7bf9d6002ab1a4
|
Provenance
The following attestation bundles were made for pylibfranka-0.21.2-cp310-cp310-manylinux_2_34_x86_64.whl:
Publisher:
pylibfranka-wheels.yml on frankarobotics/libfranka
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pylibfranka-0.21.2-cp310-cp310-manylinux_2_34_x86_64.whl -
Subject digest:
a308f87e5873f77b2a12884c9fe374aa7b219a2e3fa29e04ddd617225cda9073 - Sigstore transparency entry: 1437324699
- Sigstore integration time:
-
Permalink:
frankarobotics/libfranka@9f9304ec0ac897eff3219a67f612b959948535e2 -
Branch / Tag:
refs/tags/0.21.2 - Owner: https://github.com/frankarobotics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pylibfranka-wheels.yml@9f9304ec0ac897eff3219a67f612b959948535e2 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pylibfranka-0.21.2-cp39-cp39-manylinux_2_31_x86_64.whl.
File metadata
- Download URL: pylibfranka-0.21.2-cp39-cp39-manylinux_2_31_x86_64.whl
- Upload date:
- Size: 4.4 MB
- Tags: CPython 3.9, manylinux: glibc 2.31+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6fcb23396ba6f4500517f02ded405e534b79a022223375faa958aab9b37c8227
|
|
| MD5 |
9aeed32c2fa9b65ba1295e5eef482bda
|
|
| BLAKE2b-256 |
89be689c83af79eee736380c46792ea57fdca75d94b849cbbd1a49456404e4ad
|
Provenance
The following attestation bundles were made for pylibfranka-0.21.2-cp39-cp39-manylinux_2_31_x86_64.whl:
Publisher:
pylibfranka-wheels.yml on frankarobotics/libfranka
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pylibfranka-0.21.2-cp39-cp39-manylinux_2_31_x86_64.whl -
Subject digest:
6fcb23396ba6f4500517f02ded405e534b79a022223375faa958aab9b37c8227 - Sigstore transparency entry: 1437324696
- Sigstore integration time:
-
Permalink:
frankarobotics/libfranka@9f9304ec0ac897eff3219a67f612b959948535e2 -
Branch / Tag:
refs/tags/0.21.2 - Owner: https://github.com/frankarobotics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pylibfranka-wheels.yml@9f9304ec0ac897eff3219a67f612b959948535e2 -
Trigger Event:
push
-
Statement type: