{"id":37240201,"url":"https://github.com/stepjam/PyRep","last_synced_at":"2026-01-22T11:01:36.683Z","repository":{"id":41555479,"uuid":"193898092","full_name":"stepjam/PyRep","owner":"stepjam","description":"A toolkit for robot learning research.","archived":false,"fork":false,"pushed_at":"2024-08-16T12:54:08.000Z","size":156085,"stargazers_count":744,"open_issues_count":2,"forks_count":172,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-10-25T02:44:02.333Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stepjam.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}},"created_at":"2019-06-26T12:15:58.000Z","updated_at":"2025-10-19T19:05:24.000Z","dependencies_parsed_at":"2024-06-11T09:34:16.928Z","dependency_job_id":"371c673b-8075-45fa-88fe-48516a57a53c","html_url":"https://github.com/stepjam/PyRep","commit_stats":{"total_commits":149,"total_committers":20,"mean_commits":7.45,"dds":0.4697986577181208,"last_synced_commit":"8f420be8064b1970aae18a9cfbc978dfb15747ef"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/stepjam/PyRep","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stepjam%2FPyRep","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stepjam%2FPyRep/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stepjam%2FPyRep/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stepjam%2FPyRep/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stepjam","download_url":"https://codeload.github.com/stepjam/PyRep/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stepjam%2FPyRep/sbom","scorecard":{"id":851832,"data":{"date":"2025-08-11","repo":{"name":"github.com/stepjam/PyRep","commit":"8f420be8064b1970aae18a9cfbc978dfb15747ef"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.2,"checks":[{"name":"Code-Review","score":4,"reason":"Found 12/30 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/stepjam/PyRep/build.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:42","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:43","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:44","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":3,"reason":"7 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 12 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T22:44:34.221Z","repository_id":41555479,"created_at":"2025-08-23T22:44:34.221Z","updated_at":"2025-08-23T22:44:34.221Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28661882,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T01:17:37.254Z","status":"online","status_checked_at":"2026-01-22T02:00:07.137Z","response_time":144,"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":[],"created_at":"2026-01-15T07:00:29.135Z","updated_at":"2026-01-22T11:01:36.677Z","avatar_url":"https://github.com/stepjam.png","language":"Python","readme":"# PyRep [![Build Status](https://github.com/stepjam/PyRep/workflows/Build/badge.svg)](https://github.com/stepjam/PyRep/actions) [![Discord](https://img.shields.io/discord/694945313638842378.svg?label=\u0026logo=discord\u0026logoColor=ffffff\u0026color=7389D8\u0026labelColor=6A7EC2)](https://discord.gg/eTMsa5Y)\n\n\n__PyRep is a toolkit for robot learning research, built on top of [CoppeliaSim](http://www.coppeliarobotics.com/) (previously called V-REP).__\n\n\n- [Install](#install)\n- [Running Headless](#running-headless)\n- [Getting Started](#getting-started)\n- [Usage](#usage)\n- [Supported Robots](#supported-robots)\n- [Adding Robots](#adding-robots)\n- [Contributing](#contributing)\n- [Projects Using PyRep](#projects-using-pyrep)\n- [What Happened to V-REP?](#what-happened-to-v-rep)\n- [Citation](#citation)\n\n\n## Install\n\nPyRep requires version **4.1** of CoppeliaSim. Download: \n- [Ubuntu 16.04](https://www.coppeliarobotics.com/files/V4_1_0/CoppeliaSim_Edu_V4_1_0_Ubuntu16_04.tar.xz)\n- [Ubuntu 18.04](https://www.coppeliarobotics.com/files/V4_1_0/CoppeliaSim_Edu_V4_1_0_Ubuntu18_04.tar.xz)\n- [Ubuntu 20.04](https://www.coppeliarobotics.com/files/V4_1_0/CoppeliaSim_Edu_V4_1_0_Ubuntu20_04.tar.xz)\n\nOnce you have downloaded CoppeliaSim, you can pull PyRep from git:\n\n```bash\ngit clone https://github.com/stepjam/PyRep.git\ncd PyRep\n```\n\nAdd the following to your *~/.bashrc* file: (__NOTE__: the 'EDIT ME' in the first line)\n\n```bash\nexport COPPELIASIM_ROOT=EDIT/ME/PATH/TO/COPPELIASIM/INSTALL/DIR\nexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$COPPELIASIM_ROOT\nexport QT_QPA_PLATFORM_PLUGIN_PATH=$COPPELIASIM_ROOT\n```\n\n__Remember to source your bashrc (`source ~/.bashrc`) or \nzshrc (`source ~/.zshrc`) after this.\n\nFinally install the python library:\n\n```bash\npip3 install -r requirements.txt\npip3 install .\n```\n\nYou should be good to go!\nTry running one of the examples in the *examples/* folder.\n\n_Although you can use CoppeliaSim on any platform, communication via PyRep is currently only supported on Linux._\n\n#### Troubleshooting\n\nBelow are some problems you may encounter during installation. If none of these solve your problem, please raise an issue.\n\n- ModuleNotFoundError: No module named 'pyrep.backend._v_rep_cffi'\n  - If you are getting this error, then please check that you are not running the interpreter from the project root. If you are, then your Python interpreter will try to import those files rather the installed files.\n- error: command 'x86_64-linux-gnu-gcc' failed\n  - You may be missing packages needed for building python extensions. Try: `sudo apt-get install python3-dev`, and then re-run the installation.\n\n## Running Headless\n\nYou can run PyRep/CoppeliaSim headlessly with VirtualGL. VirtualGL is an open source toolkit that gives any Unix or Linux remote display software the ability to run OpenGL applications **with full 3D hardware acceleration**.\nFirst insure that you have the nVidia proprietary driver installed. I.e. you should get an output when running `nvidia-smi`. Now run the following commands:\n```bash\nsudo apt-get install xorg libxcb-randr0-dev libxrender-dev libxkbcommon-dev libxkbcommon-x11-0 libavcodec-dev libavformat-dev libswscale-dev\nsudo nvidia-xconfig -a --use-display-device=None --virtual=1280x1024\n# Install VirtualGL\nwget https://sourceforge.net/projects/virtualgl/files/2.5.2/virtualgl_2.5.2_amd64.deb/download -O virtualgl_2.5.2_amd64.deb\nsudo dpkg -i virtualgl*.deb\nrm virtualgl*.deb\n```\nYou will now need to reboot, and then start the X server:\n```bash\nsudo reboot\nnohup sudo X \u0026\n```\nNow we are good to go! To render the application with the first GPU, you can do the following:\n```bash\nexport DISPLAY=:0.0\npython my_pyrep_app.py\n```\nTo render with the second GPU, you will insetad set display as: `export DISPLAY=:0.1`, and so on.\n\n**Acknowledgement**: Special thanks to Boyuan Chen (UC Berkeley) for bringing VirtualGL to my attention!\n\n## Getting Started\n\n1. First take a look at [Usage](#usage) and the examples in the *examples/* folder to see if PyRep might be able to accelerate your research.\n2. Take a look at the CoppeliaSim [tutorials](http://www.coppeliarobotics.com/helpFiles/en/tutorials.htm).\n\n## Usage\n\nThe best way to see how PyRep can help in your research is to look at the examples in the *examples/* folder!\n\n#### Launching the simulation\n\n```python\nfrom pyrep import PyRep\n\npr = PyRep()\n# Launch the application with a scene file in headless mode\npr.launch('scene.ttt', headless=True) \npr.start()  # Start the simulation\n\n# Do some stuff\n\npr.stop()  # Stop the simulation\npr.shutdown()  # Close the application\n```\n\n\n#### Modifying the Scene\n\n```python\nfrom pyrep.objects.shape import Shape\nfrom pyrep.const import PrimitiveShape\n\nobject = Shape.create(type=PrimitiveShape.CYLINDER, \n                      color=[r,g,b], size=[w, h, d],\n                      position=[x, y, z])\nobject.set_color([r, g, b])\nobject.set_position([x, y, z])\n```\n\n#### Using Robots\n\nRobots are designed to be modular; arms are treated separately to grippers.\n\nUse the robot ttm files defined in robots/ttms. These have been altered slightly from the original ones shipped with CoppeliaSim to allow them to be used with motional planning out of the box. \nThe 'tip' of the robot may not be where you want it, so feel free to play around with this.\n\n```python\nfrom pyrep import PyRep\nfrom pyrep.robots.arms.panda import Panda\nfrom pyrep.robots.end_effectors.panda_gripper import PandaGripper\n\npr = PyRep()\n# Launch the application with a scene file that contains a robot\npr.launch('scene_with_panda.ttt') \npr.start()  # Start the simulation\n\narm = Panda()  # Get the panda from the scene\ngripper = PandaGripper()  # Get the panda gripper from the scene\n\nvelocities = [.1, .2, .3, .4, .5, .6, .7]\narm.set_joint_target_velocities(velocities)\npr.step()  # Step physics simulation\n\ndone = False\n# Open the gripper halfway at a velocity of 0.04.\nwhile not done:\n    done = gripper.actuate(0.5, velocity=0.04)\n    pr.step()\n    \npr.stop()  # Stop the simulation\npr.shutdown()  # Close the application\n```\n\nWe recommend constructing your robot in a dictionary or a small structure, e.g.\n\n\n```python\nclass MyRobot(object):\n  def __init__(self, arm, gripper):\n    self.arm = arm\n    self.gripper = gripper\n\narm = Panda()  # Get the panda from the scene\ngripper = PandaGripper()  # Get the panda gripper from the scene\n\n# Create robot structure\nmy_robot_1 = MyRobot(arm, gripper)\n# OR\nmy_robot_2 = {\n  'arm': arm,\n  'gripper': gripper\n}\n```\n\n#### Running Multiple PyRep Instances\n\nEach PyRep instance needs its own process. This can be achieved using Pythons [multiprocessing](https://docs.python.org/3.6/library/multiprocessing.html) module. Here is a simple example:\n\n```python\nfrom multiprocessing import Process\n\nPROCESSES = 10\n\ndef run():\n  pr = PyRep()\n  pr.launch('my_scene.ttt', headless=True)\n  pr.start()\n  # Do stuff...\n  pr.stop()\n  pr.shutdown()\n\nprocesses = [Process(target=run, args=()) for i in range(PROCESSES)]\n[p.start() for p in processes]\n[p.join() for p in processes]\n```\n\n## Supported Robots\n\nHere is a list of robots currently supported by PyRep:\n\n#### Arms\n\n- Kinova Mico\n- Kinova Jaco\n- Rethink Baxter\n- Rethink Sawyer\n- Franka Emika Panda\n- Kuka LBR iiwa 7 R800\n- Kuka LBR iiwa 14 R820\n- Universal Robots UR3\n- Universal Robots UR5\n- Universal Robots UR10\n\n#### Grippers\n\n- Kinova Mico Hand\n- Kinova Jaco Hand\n- Rethink Baxter Gripper\n- Franka Emika Panda Gripper\n\n#### Mobile Robots\n\n- Kuka YouBot\n- Turtle Bot\n- Line Tracer\n\nFeel free to send pull requests for new robots!\n\n## Adding Robots\n\nIf the robot you want is not currently supported, then why not add it in!\n\n[Here is a tutorial for adding robots.](tutorials/adding_robots.md)\n\n## Contributing\n\nWe want to make PyRep the best tool for rapid robot learning research. If you would like to get involved, then please [get in contact](https://www.doc.ic.ac.uk/~slj12/)!\n\nPull requests welcome for bug fixes!\n\n## Projects Using PyRep\n\nIf you use PyRep in your work, then get in contact and we can add you to the list!\n\n- [RLBench: The Robot Learning Benchmark \u0026 Learning Environment, arxiv 2019](https://arxiv.org/abs/1909.12271)\n- [Learning One-Shot Imitation from Humans without Humans, arxiv 2019](https://arxiv.org/abs/1911.01103)\n- [Task-Embedded Control Networks for Few-Shot Imitation Learning, CoRL 2018](https://arxiv.org/abs/1810.03237)\n- [Transferring End-to-End Visuomotor Control from Simulation to Real World for a Multi-Stage Task\n, CoRL 2017](https://arxiv.org/abs/1707.02267)\n\n## Acknowledgements\n\n- Georges Nomicos (Imperial College London) for the addition of mobile platforms.\n- Boyuan Chen (UC Berkeley) for bringing VirtualGL to my attention.\n\n## What Happened to V-REP?\n\nCoppelia Robotics discontinued development of __V-REP__. Instead, they now focus\ntheir efforts on __CoppeliaSim__. CoppeliaSim is 100% compatible with V-REP.\nSee more information [here](http://coppeliarobotics.com/helpFiles/en/versionInfo.htm#coppeliaSim4.0.0).\n\nPyRep is fully compatible with both V-REP and CoppeliaSim.\n\n\n## Citation\n\n```\n@article{james2019pyrep,\n  title={PyRep: Bringing V-REP to Deep Robot Learning},\n  author={James, Stephen and Freese, Marc and Davison, Andrew J.},\n  journal={arXiv preprint arXiv:1906.11176},\n  year={2019}\n}\n```\n","funding_links":[],"categories":["📚 فهرست"],"sub_categories":["رباتیک"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstepjam%2FPyRep","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstepjam%2FPyRep","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstepjam%2FPyRep/lists"}