franky
AdvancedA high-level Franka control library: you give targets, and Ruckig plans the trajectory in real time.
franky is a high-level control library for Franka arms with Python and C++ APIs, maintained by Tim Schneider of TU Darmstadt and collaborators. It grew out of frankx, written by Ruckig author Lars Berscheid, which has had no new commits since May 2022. Using libfranka directly means writing your own real-time callback that runs every millisecond; franky wraps that layer. You give it target positions or velocities, and Ruckig computes a time-optimal trajectory within velocity, acceleration and jerk limits on the fly, while the 1 kHz control loop runs in its own thread, so an ordinary Python script can drive the arm. You can change the target mid-motion and it replans from the current state, and you can attach reactions, such as backing off when the end-effector force passes a threshold. It also supports torque control, impedance control, the gripper and the Desk interface. Install it with pip install franky-control, no ROS needed; both Panda and FR3 are supported, with the package picked by the robot's server version. The computer running it still needs a real-time kernel.
ExampleConnect with robot = Robot("172.16.0.2"), set relative_dynamics_factor = 0.05 to scale velocity, acceleration and jerk limits down to 5%, then call robot.move(CartesianMotion(Affine([0.2, 0, 0]), ReferenceType.Relative)) to move the end effector 20 cm along its own x-axis.
- Also called
- franky-control, frankx
- Related
- libfranka / Franka Control Interface (FCI) · Ruckig · Jerk · S-Curve Velocity Profile · Franka Emika Panda / Franka Research 3 · panda-py
- Sources
- TimSchneider42/franky (GitHub)
franky documentation: Installation
pantor/frankx (GitHub) - As of
- 2026-10