TimSchneider42/franky

High-Level Control Library for Franka Robots with Python and C++ Support

What it solves

Controlling Franka robots typically requires strict real-time programming at 1 kHz, which is difficult to achieve in non-real-time environments like Python. franky removes this barrier by providing a high-level control interface that handles the real-time requirements internally, allowing users to control robots without needing ROS or complex real-time setups.

How it works

Instead of requiring low-level commands, the library accepts high-level position or velocity targets. It uses the Ruckig library to plan time-optimal trajectories in real-time, respecting limits for velocity, acceleration, and jerk. It also includes a reaction system to handle unexpected events (like environmental contact) by updating motion commands dynamically and allows for the preemption of motions to re-plan trajectories on the fly.

Who it’s for

Developers and researchers working with Franka robots who want a simpler way to implement robot control using Python or C++ without the overhead of ROS or the complexity of low-level real-time programming.

Highlights

  • Multi-modal Control: Supports Cartesian and joint position/velocity control, as well as direct torque and impedance control.
  • No ROS Required: Can be installed via pip and used directly in Python.
  • Reactive System: Ability to define real-time reactions to unexpected events and use non-blocking callbacks for monitoring.
  • Full API Access: Provides Python access to most of the libfranka API, including gripper control and robot state reading.
  • Simulation Support: Compatible with franky-sim for testing code before deploying to physical hardware.

Related

  • Project
  • Project
  • Project
  • Project
  • Project