{"id":27195598,"url":"https://github.com/barisyazici/libfranka-sim","last_synced_at":"2025-09-03T06:34:42.822Z","repository":{"id":282968060,"uuid":"928509008","full_name":"BarisYazici/libfranka-sim","owner":"BarisYazici","description":"A high-fidelity simulation backend for Franka robots that implements the complete libfranka API. Develop and test your robot control applications with identical code for both simulation and hardware. Supports all joint control modes (position, velocity, torque) with realistic physics powered by the Genesis engine.","archived":false,"fork":false,"pushed_at":"2025-03-26T06:15:55.000Z","size":5490,"stargazers_count":67,"open_issues_count":2,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-06-01T07:38:47.683Z","etag":null,"topics":["franka","genesis","gymnasium-robotics","open-ai-gym","python3","robotics","simulation"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BarisYazici.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-06T18:46:38.000Z","updated_at":"2025-05-28T23:07:43.000Z","dependencies_parsed_at":"2025-03-17T23:23:22.424Z","dependency_job_id":"1a321353-0106-42a5-8273-985bdd6b2797","html_url":"https://github.com/BarisYazici/libfranka-sim","commit_stats":null,"previous_names":["barisyazici/libfranka-sim"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/BarisYazici/libfranka-sim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BarisYazici%2Flibfranka-sim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BarisYazici%2Flibfranka-sim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BarisYazici%2Flibfranka-sim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BarisYazici%2Flibfranka-sim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BarisYazici","download_url":"https://codeload.github.com/BarisYazici/libfranka-sim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BarisYazici%2Flibfranka-sim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273403937,"owners_count":25099299,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-03T02:00:09.631Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["franka","genesis","gymnasium-robotics","open-ai-gym","python3","robotics","simulation"],"created_at":"2025-04-09T19:47:10.422Z","updated_at":"2025-09-03T06:34:42.794Z","avatar_url":"https://github.com/BarisYazici.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Franka Simulation Server\n\nA high-fidelity Genesis simulation server that communicates with the Franka robot's network protocol, enabling seamless switching between simulation and hardware.\n\n## Overview\n\nThe Franka Simulation Server provides a drop-in replacement for the real Franka robot, implementing the complete libfranka network protocol. This allows developers to:\n\n- Test and debug robot controllers in simulation before deployment\n- Develop applications that work identically on both simulation and hardware\n- Validate error handling and safety features\n- Experiment with different control strategies risk-free\n\n## Related Projects\n\n- [libfranka-python](https://github.com/BarisYazici/libfranka-python) - Python bindings for libfranka\n- [franka-gym](https://github.com/BarisYazici/franka-gym) - Franka gym implementation\n\n## Preview Video\n\n- Native libfranka control\n\n![Libfranka Native Control](./assets/direct_libfranka_control.gif)\n\n- With Python\n\n![With Python](./assets/libfranka_python_bindings_control.gif)\n\n\n## Architecture\n\n![Architecture](./assets/libfranka_sim.svg)\n\nIn this repository, we only provide the simulation server backend with Genesis connection.\n\nThe libfranka python bindings will become available in a separate repository.\n\nThe system consists of several key components:\n\n1. **libfranka Interface Layer**\n   - Implements the standard Franka robot network protocol\n   - Handles TCP command interface and UDP state updates\n   - Maintains protocol compatibility all libfranka versions\n\n2. **Genesis Simulation Backend**\n   - Physics-based robot simulation using the Genesis engine\n   - Real-time joint state computation and dynamics\n\n3. **State Management**\n   - Complete robot state tracking and synchronization\n   - Accurate error reporting and status updates\n   - Real-time state transmission (1kHz update rate)\n\n4. **Control Modes**\n   - Joint Position Control\n   - Joint Velocity Control\n   - Joint Torque Control\n   - Supports seamless switching between modes\n\n## Key Features\n\n- **Protocol Compatibility**: Full implementation of the Franka robot network protocol\n- **Real-time Simulation**: High-frequency state updates and control (1kHz)\n- **Multiple Control Modes**: Supports position, velocity, and torque control\n- **Error Handling**: Replicates real robot error states and recovery\n\n## Getting Started\n\n### Prerequisites\n- Python 3.9+\n- genesis-world==0.2.1\n- numpy==1.26.4\n- numba==0.60.0\n\n### Installation\n\n#### Option 1: Install from PyPI (Recommended)\n\nThe package is available on PyPI and can be installed with pip:\n\n```bash\npip install franka-sim\n```\n\n#### Option 2: Install from Source\n\n```bash\n# Clone the repository\ngit clone git@github.com:BarisYazici/libfranka-sim.git\n\n# Install the package\ncd libfranka-sim/simulation\npip install -e .\n```\n\n### Basic Usage\n\nAfter installation, you can run the server using the command-line executable:\n\n```bash\n# Start the server without visualization\nrun-franka-sim-server\n\n# Start the server with visualization\nrun-franka-sim-server -v\n```\n\nAlternatively, if you installed from source, you can use:\n\n```bash\n# Start the simulation server\npython -m franka_sim.run_server -v\n```\n\nIn your application, use standard libfranka commands. The simulation will respond exactly like the real robot.\n\n### Troubleshooting\n\nIf you encounter issues related to missing asset files, make sure you have the correct version of `genesis-world` installed:\n\n```bash\npip install genesis-world==0.2.1\n```\n\nThe simulator now automatically uses the assets provided by the Genesis package, so no additional asset files are needed.\n\n## Configuration\n\n## Switching Between Simulation and Hardware\n\nTo switch between simulation and hardware:\n\n1. Update the robot IP address in your application:\n   - Use `localhost` or `127.0.0.1` for simulation\n   - Use the real robot's IP for hardware\n\n2. No other changes needed - your application code remains identical\n\n## Development Status\n\nThe simulation server currently implements all major features of the Franka robot:\n\n- [x] Complete network protocol implementation\n- [x] All joint interfaces\n- [x] Real-time state updates\n- [x] Visualization support\n- [x] Genesis connection\n- [x] libfranka python bindings\n- [ ] Advanced collision detection (in progress)\n- [ ] Error handling and recovery (planned)\n- [ ] Cartesian interfaces (planned)\n- [ ] Return mass, coriolis, gravity, and inverse dynamics (Robot models) (planned)\n- [ ] Gripper simulation (planned)\n\n\n\n## Contributing\n\nContributions are welcome! Please read our contributing guidelines and submit pull requests to our repository.\n\n## License\n\nThis project is licensed under the Apache License Version 2.0 - see the LICENSE file for details.\n\n## Acknowledgments\n\n- Franka Robotics GmbH for the original libfranka implementation\n- The Genesis Simulator team for the physics engine\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarisyazici%2Flibfranka-sim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbarisyazici%2Flibfranka-sim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarisyazici%2Flibfranka-sim/lists"}