Skip to main content

libfrankapy

PyPI version Python 3.9+ CI License Documentation

libfrankapy is a Python binding project for the libfranka library, designed to provide high-level Python interfaces for Franka robotic arms while maintaining the performance advantages of low-level C++ real-time control.

✨ Features

  • 🚀 Real-time Performance Guarantee: C++ control loop maintains 1kHz real-time performance, Python does not participate in real-time loops
  • 🐍 Python Friendly: Provides intuitive Python API with complete type hints
  • ⚡ Efficient Communication: Uses shared memory and atomic operations for Python-C++ data exchange
  • 🛡️ Safety Control: Complete safety limits, error handling, and emergency stop functionality

📋 System Requirements

Hardware Requirements:

  • Franka Robotics robotic arm (with FCI functionality)
  • Computer with PREEMPT_RT real-time kernel

Software Requirements:

  • Operating System: Ubuntu 22.04+ with PREEMPT_RT real-time kernel
  • Python: 3.9+
  • C++ Compiler: GCC 7+ or Clang 6+
  • CMake: 3.16+

🚀 Installation

Before installing libfrankapy, make sure you have installed libfranka following the libfranka repository.

Install from source

First, clone the repository:

git clone https://github.com/han-xudong/libfrankapy.git
cd libfrankapy

It's recommended to create a virtual environment (venv or conda):

python -m venv venv
source venv/bin/activate

Next, build and install the package:

pip install -e .

Install from PyPI

pip install libfrankapy

🎯 Quick Start

Here is a brief example to get you started:

import libfrankapy as fp
import numpy as np

# Connect to robot
robot = fp.FrankaRobot("192.168.1.100")  # Replace with your robot IP
robot.connect()
robot.start_control()

try:
    # Get current state
    state = robot.get_robot_state()
    print(f"Current joint positions: {state.joint_state.positions}")
    print(f"Current end-effector pose: {state.cartesian_pose.position}")

    # Joint space motion
    target_joints = [0.0, -0.785, 0.0, -2.356, 0.0, 1.571, 0.785]
    robot.move_to_joint(target_joints, speed_factor=0.1)

    # Cartesian space motion
    target_pose = [0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 1.0]  # [x, y, z, qx, qy, qz, qw]
    robot.move_to_pose(target_pose, speed_factor=0.1)

finally:
    # Disconnect
    robot.disconnect()

See the examples/ directory for more usage examples:

  • basic_control.py - Basic control example
  • trajectory_control.py - Trajectory control example
  • state_monitoring.py - Real-time state monitoring example

Note: When using this library to control robotic arms, please ensure you follow all safety protocols and test in a controlled environment.

🏗️ Architecture Design

libfrankapy adopts a hybrid architecture of C++ real-time environment + Python high-level interface:

graph TD
    A[Python Application Layer] --> B[libfrankapy Python API]
    B --> C[Pybind11 Binding Layer]
    C --> D[C++ Control Manager]
    D --> E[Shared Memory Communication]
    E --> F[Real-time Control Thread]
    F --> G[LibFranka C++ Library]
    G --> H[Franka Robotic Arm Hardware]
    E --> I[Shared Memory Reader]
    I --> B
    J[RealtimeConfig] --> D

    style A fill:#e1f5fe
    style B fill:#f3e5f5
    style C fill:#fff3e0
    style D fill:#e8f5e8
    style E fill:#fff9c4
    style F fill:#ffebee
    style G fill:#f1f8e9
    style H fill:#fce4ec
    style I fill:#e8eaf6
    style J fill:#f3e5f5

🤝 Contributing

We welcome community contributions! Please see CONTRIBUTING.md for details on how to participate in project development.

Development Environment Setup

# Clone repository
git clone https://github.com/han-xudong/libfrankapy.git
cd libfrankapy

# Create development environment
python3 -m venv venv
source venv/bin/activate

# Install development dependencies
pip install -e ".[dev]"

# Install pre-commit hooks
pre-commit install

📄 License

This project is licensed under the Apache License 2.0.

🙏 Acknowledgments

  • Franka Robotics for providing excellent robotic arm hardware and the libfranka library
  • pybind11 for providing excellent Python-C++ binding tools
  • All developers who have contributed to this project

📞 Support

Metadata

Release files for libfrankapy 0.1.1

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

Source distribution (sdist)

Source distribution for libfrankapy 0.1.1
File Size Uploaded
libfrankapy-0.1.1.tar.gz 119.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for libfrankapy 0.1.1
File Interpreter ABI Platform
libfrankapy-0.1.1-cp311-cp311-manylinux1_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.5+ x86-64 Details
libfrankapy-0.1.1-cp310-cp310-manylinux1_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.5+ x86-64 Details
libfrankapy-0.1.1-cp39-cp39-manylinux1_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.5+ x86-64 Details

Total release size: 660.9 kB

Release files / libfrankapy-0.1.1.tar.gz

Download URL libfrankapy-0.1.1.tar.gz
Size 119.8 kB
Tags Source
SHA-256 checksum
How to use checksums
cbcb502f30451aecd32ecc0a2bb6d9949e1c9fa778af2e2b091fc0a0aa5c8eed
BLAKE2b-256 checksum
How to use checksums
b1423ead3a957f50ca06d0b357c3bcce9b051f7ca72bf333411951468c10fb33
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 27, 2025.

Transparency log

Release files / libfrankapy-0.1.1-cp311-cp311-manylinux1_x86_64.whl

Download URL libfrankapy-0.1.1-cp311-cp311-manylinux1_x86_64.whl
Size 180.2 kB
Tags CPython 3.11 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
95366504e13341b66999b81a4b0ef1c7462954594161ea25f91dd772383a072a
BLAKE2b-256 checksum
How to use checksums
08652cc9efaf8fdb30547c3fa5dd1e01b7bfb381abf7440eb2fbc834d98d5ec1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 27, 2025.

Transparency log

Release files / libfrankapy-0.1.1-cp310-cp310-manylinux1_x86_64.whl

Download URL libfrankapy-0.1.1-cp310-cp310-manylinux1_x86_64.whl
Size 178.6 kB
Tags CPython 3.10 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
d500773d889dd0ffe7f0375f6654c63e8c4d6795c36980f8c2273e25f6f3447c
BLAKE2b-256 checksum
How to use checksums
f654695904c7eac596c7da9c6a6b1c20f2d0e4467c5a098a5fb1089919b91124
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 27, 2025.

Transparency log

Release files / libfrankapy-0.1.1-cp39-cp39-manylinux1_x86_64.whl

Download URL libfrankapy-0.1.1-cp39-cp39-manylinux1_x86_64.whl
Size 182.3 kB
Tags CPython 3.9 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
0a18ad6b5ded74c8e9241ae9412a897f0d7a6981f5ad5bf192b522711f9c08c1
BLAKE2b-256 checksum
How to use checksums
652c44ba46104d0adc852cae12384ca4bf2833587edc300ea7bb5c8bbad13d81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 27, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

4 release files

0.1.0

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