Skip to main content

A high-fidelity simulation server that implements the Franka robot network protocol, enabling seamless switching between simulation and hardware.

Project description

Franka Simulation Server

A high-fidelity Genesis simulation server that communicates with the Franka robot's network protocol, enabling seamless switching between simulation and hardware.

Overview

The Franka Simulation Server provides a drop-in replacement for the real Franka robot, implementing the complete libfranka network protocol. This allows developers to:

  • Test and debug robot controllers in simulation before deployment
  • Develop applications that work identically on both simulation and hardware
  • Validate error handling and safety features
  • Experiment with different control strategies risk-free

Related Projects

Preview Video

  • Native libfranka control

Libfranka Native Control

  • With Python

With Python

Architecture

Architecture

In this repository, we only provide the simulation server backend with Genesis connection.

The libfranka python bindings will become available in a separate repository.

The system consists of several key components:

  1. libfranka Interface Layer

    • Implements the standard Franka robot network protocol
    • Handles TCP command interface and UDP state updates
    • Maintains protocol compatibility all libfranka versions
  2. Genesis Simulation Backend

    • Physics-based robot simulation using the Genesis engine
    • Real-time joint state computation and dynamics
  3. State Management

    • Complete robot state tracking and synchronization
    • Accurate error reporting and status updates
    • Real-time state transmission (1kHz update rate)
  4. Control Modes

    • Joint Position Control
    • Joint Velocity Control
    • Joint Torque Control
    • Supports seamless switching between modes

Key Features

  • Protocol Compatibility: Full implementation of the Franka robot network protocol
  • Real-time Simulation: High-frequency state updates and control (1kHz)
  • Multiple Control Modes: Supports position, velocity, and torque control
  • Error Handling: Replicates real robot error states and recovery

Getting Started

Prerequisites

  • Python 3.9+
  • genesis-world==0.2.1
  • numpy==1.26.4
  • numba==0.60.0

Installation

Option 1: Install from PyPI (Recommended)

The package is available on PyPI and can be installed with pip:

pip install franka-sim

Option 2: Install from Source

# Clone the repository
git clone git@github.com:BarisYazici/libfranka-sim.git

# Install the package
cd libfranka-sim/simulation
pip install -e .

Basic Usage

After installation, you can run the server using the command-line executable:

# Start the server without visualization
run-franka-sim-server

# Start the server with visualization
run-franka-sim-server -v

Alternatively, if you installed from source, you can use:

# Start the simulation server
python -m franka_sim.run_server -v

In your application, use standard libfranka commands. The simulation will respond exactly like the real robot.

Troubleshooting

If you encounter issues related to missing asset files, make sure you have the correct version of genesis-world installed:

pip install genesis-world==0.2.1

The simulator now automatically uses the assets provided by the Genesis package, so no additional asset files are needed.

Configuration

Switching Between Simulation and Hardware

To switch between simulation and hardware:

  1. Update the robot IP address in your application:

    • Use localhost or 127.0.0.1 for simulation
    • Use the real robot's IP for hardware
  2. No other changes needed - your application code remains identical

Development Status

The simulation server currently implements all major features of the Franka robot:

  • Complete network protocol implementation
  • All joint interfaces
  • Real-time state updates
  • Visualization support
  • Genesis connection
  • libfranka python bindings
  • Advanced collision detection (in progress)
  • Error handling and recovery (planned)
  • Cartesian interfaces (planned)
  • Return mass, coriolis, gravity, and inverse dynamics (Robot models) (planned)
  • Gripper simulation (planned)

Contributing

Contributions are welcome! Please read our contributing guidelines and submit pull requests to our repository.

License

This project is licensed under the Apache License Version 2.0 - see the LICENSE file for details.

Acknowledgments

  • Franka Robotics GmbH for the original libfranka implementation
  • The Genesis Simulator team for the physics engine

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

franka_sim-0.1.12.tar.gz (5.6 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

franka_sim-0.1.12-cp311-cp311-manylinux2014_x86_64.whl (24.2 kB view details)

Uploaded CPython 3.11

franka_sim-0.1.12-cp311-cp311-macosx_11_0_universal2.whl (24.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ universal2 (ARM64, x86-64)

franka_sim-0.1.12-cp310-cp310-manylinux2014_x86_64.whl (24.2 kB view details)

Uploaded CPython 3.10

franka_sim-0.1.12-cp310-cp310-macosx_11_0_universal2.whl (24.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ universal2 (ARM64, x86-64)

franka_sim-0.1.12-cp39-cp39-manylinux2014_x86_64.whl (24.2 kB view details)

Uploaded CPython 3.9

File details

Details for the file franka_sim-0.1.12.tar.gz.

File metadata

  • Download URL: franka_sim-0.1.12.tar.gz
  • Upload date:
  • Size: 5.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for franka_sim-0.1.12.tar.gz
Algorithm Hash digest
SHA256 7108e07a524968f2ff47cfb31df62605ad9ee2d2f3c5df9534c253b50d338243
MD5 3379ee1592cde964b308c9707d6d1fc8
BLAKE2b-256 3bd60beeef4735ceb030e230af0940ff8b0b3cbec0d6c0c47204f0d60be5f00d

See more details on using hashes here.

File details

Details for the file franka_sim-0.1.12-cp311-cp311-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for franka_sim-0.1.12-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 20f457806012ae65b2b13ee3b251ef2dad6f342eff53b40c8732c19767b55a8b
MD5 25260fbbd596c68d00dfaefc0be72cfd
BLAKE2b-256 6a51efc7836da916056e58dd4771562e1d716475f401afa6a9ca777ce8dd0597

See more details on using hashes here.

File details

Details for the file franka_sim-0.1.12-cp311-cp311-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for franka_sim-0.1.12-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 07baf44afc57f6ac3ef8ae74f4e0c1313a1c9f6501f7cd644665a4e900656c7c
MD5 bc02872181606b48a16bc695dfab8012
BLAKE2b-256 483d8512227131247ed43493ebc68f297d2c47a3b3465592db618c7a9062dd4d

See more details on using hashes here.

File details

Details for the file franka_sim-0.1.12-cp310-cp310-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for franka_sim-0.1.12-cp310-cp310-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4590c879b7e794912b966a66400f35d46e74cd0f6f2e0eb3b5d691d12f94bab0
MD5 6440d3f71e0da737f2d14a5756db5acb
BLAKE2b-256 7634fce6b2d105ff6e5f0d70e9d49bd03c541efb42e6d0e8c7ed14fcc0fd605a

See more details on using hashes here.

File details

Details for the file franka_sim-0.1.12-cp310-cp310-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for franka_sim-0.1.12-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 3b888d928154b2566187b68bcaf53ebe4faec1632086c619fa1b00ffcc4e8256
MD5 d33b0eb800ecec99a62bd07084c6bbff
BLAKE2b-256 60dffbde45fb03c16813f6792a46f332810558b88779b95b0362b540861bc5dc

See more details on using hashes here.

File details

Details for the file franka_sim-0.1.12-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for franka_sim-0.1.12-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7330b4842ee930494c2f0b088c96a7d64251006538659126ffc7ed3ea5c0f625
MD5 81744a2853b0ac643ca83848af4ef8e3
BLAKE2b-256 c6c2351f5b5c2d98f6509f9504b5dd6f94bec03f775d74a983e5e705af9d756a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page