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.10.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.10-cp311-cp311-manylinux2014_x86_64.whl (24.2 kB view details)

Uploaded CPython 3.11

franka_sim-0.1.10-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.10-cp310-cp310-manylinux2014_x86_64.whl (24.2 kB view details)

Uploaded CPython 3.10

franka_sim-0.1.10-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.10-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.10.tar.gz.

File metadata

  • Download URL: franka_sim-0.1.10.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.10.tar.gz
Algorithm Hash digest
SHA256 8cb9d587cacc0510118f94b50b459de305795a2dd6671a19c395d54285c3fe32
MD5 6d9c061866a6b65f93694dc7b86361a5
BLAKE2b-256 54982ab8f916a8a6a823c62fe69e9372f8b0596deae1128f423cf7e06f345934

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for franka_sim-0.1.10-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e20be6f1518afd2d1eb4120991dcd36db25b0f9af47ddecf29454fc9e95d21df
MD5 2353a9a32ec151dea89d4ec410d170d4
BLAKE2b-256 1f2fb3336b9deb2cf81d7bc7625bb37bdfddb58cb84cbd43636c63f6e5146313

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for franka_sim-0.1.10-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 4b0689878960436f4d97c20bdf08446c8164d15014fc655a60d82f32108802ee
MD5 110e7857d98f52479c53a649170d9906
BLAKE2b-256 ae70309f7e9616dadd94fa60984cd5d930463dc60e8cabf2dbcb3ff041f42999

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for franka_sim-0.1.10-cp310-cp310-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ec853ebf9ecb1eb56a3b3e34e4c1c1e87d45a36253fda55c956804f8a98ea9f6
MD5 6bf572126565c369ba78d649b68013ff
BLAKE2b-256 1217c71b1b7d14b48332fd25557f8188bb3a4015a62cd714380d0ed21a2962c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for franka_sim-0.1.10-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 4b5136f4926a296c2761729d3f20496016f1d067dd4ebc2d44b06595878f39ea
MD5 73d6af52d4736a0b124b8c3612f0839b
BLAKE2b-256 015fa261eabc08d4ef8c2b7dddb539cf7c1b86d1dd2797cb759390c95d6eb22b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for franka_sim-0.1.10-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2e945fbd992905dbf87869624855e37d457ccbf207f3a373b44481592d53ab94
MD5 6aa820584c20412fea72aebf491bd65b
BLAKE2b-256 ea3382eca1badaafb86e31fccbc9046faa65f254a153c075adc22faf7ba9290c

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