https://github.com/mahyaret/gym-panda
An OpenAI Gym Env for Panda
https://github.com/mahyaret/gym-panda
gym-environment openai-gym pybullet reinforcement-learning robotics
Last synced: about 1 month ago
JSON representation
An OpenAI Gym Env for Panda
- Host: GitHub
- URL: https://github.com/mahyaret/gym-panda
- Owner: mahyaret
- License: mit
- Created: 2020-04-17T15:13:38.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-07-08T12:28:55.000Z (over 5 years ago)
- Last Synced: 2025-07-09T20:43:02.556Z (3 months ago)
- Topics: gym-environment, openai-gym, pybullet, reinforcement-learning, robotics
- Language: Python
- Homepage:
- Size: 8.57 MB
- Stars: 77
- Watchers: 3
- Forks: 17
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# gym-panda
[](https://travis-ci.org/mahyaret/gym-panda)
[](https://pepy.tech/project/gym-panda)
[](https://badge.fury.io/py/gym-panda)OpenaAI Gym Franka Emika Panda robot grasping environment implemented with PyBullet

## Links
- GitHub: [https://github.com/mahyaret/gym-panda](https://github.com/mahyaret/gym-panda)
- PyPI: [https://pypi.org/project/gym-panda/](https://pypi.org/project/gym-panda/)
- Documentation: [https://www.etedal.net/2020/04/pybullet-panda_2.html](https://www.etedal.net/2020/04/pybullet-panda_2.html)
- Issue Tracker:[https://github.com/mahyaret/gym-panda/issues](https://github.com/mahyaret/gym-panda/issues)
- Download: [https://pypi.org/project/gym-panda/#files](https://pypi.org/project/gym-panda/#files)## Install
Install with `pip`:
pip install gym-panda
Or, install from source:git clone https://github.com/mahyaret/gym-panda.git
cd gym-panda
pip install .## Basic Usage
Running an environment:
```python
import gym
import gym_panda
env = gym.make('panda-v0')
env.reset()
for _ in range(100):
env.render()
obs, reward, done, info = env.step(
env.action_space.sample()) # take a random action
env.close()
```
Running a PD control HACK!
```python
import gym
import gym_pandaenv = gym.make('panda-v0')
observation = env.reset()
done = False
error = 0.01
fingers = 1
object_position = [0.7, 0, 0.1]k_p = 10
k_d = 1
dt = 1./240. # the default timestep in pybullet is 240 Hz
t = 0for i_episode in range(20):
observation = env.reset()
fingers = 1
for t in range(100):
env.render()
print(observation)
dx = object_position[0]-observation[0]
dy = object_position[1]-observation[1]
target_z = object_position[2]
if abs(dx) < error and abs(dy) < error and abs(dz) < error:
fingers = 0
if (observation[3]+observation[4])