{"id":30957273,"url":"https://github.com/mahyaret/gym-panda","last_synced_at":"2025-09-11T13:45:15.559Z","repository":{"id":57436475,"uuid":"256537139","full_name":"mahyaret/gym-panda","owner":"mahyaret","description":"An OpenAI Gym Env for Panda","archived":false,"fork":false,"pushed_at":"2020-07-08T12:28:55.000Z","size":8984,"stargazers_count":77,"open_issues_count":5,"forks_count":17,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-09T20:43:02.556Z","etag":null,"topics":["gym-environment","openai-gym","pybullet","reinforcement-learning","robotics"],"latest_commit_sha":null,"homepage":"","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/mahyaret.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}},"created_at":"2020-04-17T15:13:38.000Z","updated_at":"2025-06-30T12:31:18.000Z","dependencies_parsed_at":"2022-09-09T20:32:08.615Z","dependency_job_id":null,"html_url":"https://github.com/mahyaret/gym-panda","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mahyaret/gym-panda","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mahyaret%2Fgym-panda","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mahyaret%2Fgym-panda/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mahyaret%2Fgym-panda/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mahyaret%2Fgym-panda/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mahyaret","download_url":"https://codeload.github.com/mahyaret/gym-panda/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mahyaret%2Fgym-panda/sbom","scorecard":{"id":612531,"data":{"date":"2025-08-11","repo":{"name":"github.com/mahyaret/gym-panda","commit":"92c769fcd4d910b5913f99f96aa7cb1231a9d069"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","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":"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":"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":"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":"Code-Review","score":0,"reason":"Found 1/23 approved changesets -- score normalized to 0","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":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"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":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"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":"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":"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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"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":"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 2 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-21T02:59:11.459Z","repository_id":57436475,"created_at":"2025-08-21T02:59:11.459Z","updated_at":"2025-08-21T02:59:11.459Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274648319,"owners_count":25324299,"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-11T02:00:13.660Z","response_time":74,"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":["gym-environment","openai-gym","pybullet","reinforcement-learning","robotics"],"created_at":"2025-09-11T13:45:10.521Z","updated_at":"2025-09-11T13:45:15.541Z","avatar_url":"https://github.com/mahyaret.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gym-panda\n\n[![Build Status](https://travis-ci.org/mahyaret/gym-panda.svg?branch=master)](https://travis-ci.org/mahyaret/gym-panda)\n[![Downloads](https://pepy.tech/badge/gym-panda)](https://pepy.tech/project/gym-panda)\n[![PyPI version](https://badge.fury.io/py/gym-panda.svg)](https://badge.fury.io/py/gym-panda)\n\n\nOpenaAI Gym Franka Emika Panda robot grasping environment implemented with PyBullet\n\n\n![](https://www.etedal.net/img/twenty/panda.gif)\n\n## Links\n\n- GitHub: [https://github.com/mahyaret/gym-panda](https://github.com/mahyaret/gym-panda)\n- PyPI: [https://pypi.org/project/gym-panda/](https://pypi.org/project/gym-panda/)\n- Documentation: [https://www.etedal.net/2020/04/pybullet-panda_2.html](https://www.etedal.net/2020/04/pybullet-panda_2.html)\n- Issue Tracker:[https://github.com/mahyaret/gym-panda/issues](https://github.com/mahyaret/gym-panda/issues)\n- Download: [https://pypi.org/project/gym-panda/#files](https://pypi.org/project/gym-panda/#files)\n\n\n## Install\n\nInstall with `pip`:\n\n    pip install gym-panda\n    \nOr, install from source:\n\n    git clone https://github.com/mahyaret/gym-panda.git\n    cd gym-panda\n    pip install .\n\n## Basic Usage\n\nRunning an environment:\n\n```python\nimport gym\nimport gym_panda\nenv = gym.make('panda-v0')\nenv.reset()\nfor _ in range(100):\n    env.render()\n    obs, reward, done, info = env.step(\n        env.action_space.sample()) # take a random action\nenv.close()\n ```\n \n Running a PD control HACK!\n \n ```python\nimport gym\nimport gym_panda\n\nenv = gym.make('panda-v0')\nobservation = env.reset()\ndone = False\nerror = 0.01\nfingers = 1\nobject_position = [0.7, 0, 0.1]\n\nk_p = 10\nk_d = 1\ndt = 1./240. # the default timestep in pybullet is 240 Hz  \nt = 0\n\nfor i_episode in range(20):\n    observation = env.reset()\n    fingers = 1\n    for t in range(100):\n        env.render()\n        print(observation)\n        dx = object_position[0]-observation[0]\n        dy = object_position[1]-observation[1]\n        target_z = object_position[2] \n        if abs(dx) \u003c error and abs(dy) \u003c error and abs(dz) \u003c error:\n            fingers = 0\n        if (observation[3]+observation[4])\u003cerror+0.02 and fingers==0:\n            target_z = 0.5\n        dz = target_z-observation[2]\n        pd_x = k_p*dx + k_d*dx/dt\n        pd_y = k_p*dy + k_d*dy/dt\n        pd_z = k_p*dz + k_d*dz/dt\n        action = [pd_x,pd_y,pd_z,fingers]\n        observation, reward, done, info = env.step(action)\n        object_position = info['object_position']\n        if done:\n            print(\"Episode finished after {} timesteps\".format(t+1))\n            break\nenv.close()\n ```\n\n## Development\n\n- clone the repo:\n```bash\ngit clone https://github.com/mahyaret/gym-panda.git\ncd gym-panda\n```\n    \n- Create/activate the virtual environment:\n```bash\npipenv shell --python=python3.6\n```\n\n- Install development dependencies:\n```bash\npipenv install --dev\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmahyaret%2Fgym-panda","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmahyaret%2Fgym-panda","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmahyaret%2Fgym-panda/lists"}