C++17 physics library with Python bindings for kinematics, dynamics and contact simulation of articulated robots and animated characters.
frankarobotics/libfranka
C++ client library for real-time low-level control of Franka Robotics research robots, with Python bindings via pylibfranka.
- Stars
- 463
- Forks
- 258
- Open issues
- 2
- Last commit
- 2 months ago
What is it?
libfranka is a C++ library for low-level, real-time control of Franka Robotics research robots. It communicates with the robot over the network and exposes motion control and robot state access for applications that need direct control of the arm, rather than the higher-level interfaces of the robot's own software.
The library is distributed as Debian packages for Ubuntu 20.04, 22.04, 24.04 and 26.04 LTS, and can also be built from source or in a Docker-based development environment using CMake. Real-time operation is intended to run on a Linux kernel with the PREEMPT_RT patch. Each libfranka release targets specific robot system versions, which are listed in a compatibility matrix.
pylibfranka provides Python bindings for the same library and can be installed from PyPI, with wheels for several Python versions tied to Ubuntu releases. The repository also includes example programs for joint position and impedance control, printing robot state, and operating the gripper.
Key features
- 01Low-level, real-time motion control of Franka research robots.
- 02Network communication with the robot for reading state and sending commands.
- 03Python bindings (pylibfranka) installable from PyPI.
- 04Debian packages and source builds for Ubuntu 20.04 through 26.04 LTS.
- 05Example programs for joint impedance control, robot state printing and gripper operation.
Use cases
- Research projects that need direct real-time control of a Franka arm.
- Writing custom controllers such as impedance or joint position control in C++ or Python.
- Integrating Franka robots with external control loops or research software stacks.
- Operating the Franka gripper from custom applications.
Quick start
- 1
Download the libfranka Debian package for your Ubuntu version from the GitHub releases page
wget https://github.com/frankarobotics/libfranka/releases/download/0.19.0/libfranka_0.19.0_jammy_amd64.deb - 2
Verify the package checksum
sha256sum -c libfranka_0.19.0_jammy_amd64.deb.sha256 - 3
Install the package
sudo dpkg -i libfranka_0.19.0_jammy_amd64.deb
Things to know
- Targets Franka Robotics research robots with the FCI feature installed; it is not useful without that hardware.
- Officially supports Ubuntu Linux only, with a PREEMPT_RT kernel recommended for real-time control.
In collections
Topics
FAQ
- What is libfranka?
- C++ client library for real-time low-level control of Franka Robotics research robots, with Python bindings via pylibfranka. libfranka is a C++ library for low-level, real-time control of Franka Robotics research robots. It communicates with the robot over the network and exposes motion control and robot state access for applications that need direct control of the arm, rather than the higher-level interfaces of the robot's own software.
- Is libfranka free to use? What license does it have?
- libfranka is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is libfranka still maintained?
- Updated within 6 months. The last commit to libfranka was on Sep 7, 2026.
- What can I use libfranka for?
- Research projects that need direct real-time control of a Franka arm. Writing custom controllers such as impedance or joint position control in C++ or Python. Integrating Franka robots with external control loops or research software stacks. Operating the Franka gripper from custom applications.
- How do I install libfranka?
- Download the libfranka Debian package for your Ubuntu version from the GitHub releases page: wget https://github.com/frankarobotics/libfranka/releases/download/0.19.0/libfranka_0.19.0_jammy_amd64.deb Verify the package checksum: sha256sum -c libfranka_0.19.0_jammy_amd64.deb.sha256 Install the package: sudo dpkg -i libfranka_0.19.0_jammy_amd64.deb
- Where can I get libfranka?
- The source code and installation instructions are on GitHub: https://github.com/frankarobotics/libfranka
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
LinuxCNC is open-source software for controlling CNC machines such as mills, lathes, 3D printers, laser and plasma cutters, and robot arms.
A ROS 2 Humble integration for the Franka Emika Panda arm that runs the same ros2_control controllers on real robots and in MuJoCo simulation.
Open-source 3D-printable designs and parts lists for the SO-100/SO-101 low-cost robot arms, built to work with the LeRobot library.
Open-source leader and follower robot arm kit with 5 DOF plus a gripper, 3D-printable parts, and LeRobot-compatible joint layout for teleoperation and imitation learning.
An open-source C++ library for physically-based fluid simulation using Smoothed Particle Hydrodynamics (SPH), with a Python binding and CLI.