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

Uploaded CPython 3.11

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

Uploaded CPython 3.10

franka_sim-0.1.13-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.13-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.13.tar.gz.

File metadata

  • Download URL: franka_sim-0.1.13.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.13.tar.gz
Algorithm Hash digest
SHA256 49cb898ec2d8f8f4f6323e83fbb4314428bec2bbc00146af4c78d74416bd237b
MD5 ec5f8877503224024f28376e8a17e41b
BLAKE2b-256 05a8c1716cb79121117e79dc25f1d191a1b8a7f1d4c76b75d8d1f51478595e6a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for franka_sim-0.1.13-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 666c8e8b8eb8fd04a1975f287f8b7d245fa82410620f6b38583d22ccaa1425ca
MD5 88e3b8b588403c213ffd720741066280
BLAKE2b-256 b686ef5eeb0515bf5ecd00de69e817cd44e4c4672f117c80524faeedea884daf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for franka_sim-0.1.13-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 8b8e599790be89a209f75e996f9d07496c206ed5c0784029c0823dd733c7d19a
MD5 5e88f489745f45c74de0b10336d9dffc
BLAKE2b-256 3fd6b95d6e997cc4a7a24fa9c208d4eb16af891f1d709739064b02f0213dceb1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for franka_sim-0.1.13-cp310-cp310-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e216eae6126e2bdf2b2b39a7d787b22892e5a5c1cfce643c13605d2ff126d3bf
MD5 1c5bd93f2dd5766bad4dc1214c38e6c7
BLAKE2b-256 30bde61e9ec786aeb38250caddc809194b8c8f527d6e9ab5bc938db10306424b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for franka_sim-0.1.13-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 e5c14bb7ed988cbc9fc1f130cc3a264a7375d1fc33d6f87cf957f3c2b59ea481
MD5 a398e8107c23dba3c69eb4d780ec38ec
BLAKE2b-256 a1d2e6c15540aeda167db089a7106c3d826145a82d7541c7634249fff20f5297

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for franka_sim-0.1.13-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 79086e8af3606d2eab6210366933fb176f798964cc6e784a790d52013cc41c7a
MD5 d209d163bd4699dbec1520550abf3fd6
BLAKE2b-256 3c913c13a9116174c0709f29fbfe5b2edc98965b699ef807837abbabe787295f

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