A repository of PyBullet utility functions for robotic motion planning, manipulation planning, and task and motion planning (TAMP). This repository was originally developed for the PDDLStream (previously named STRIPStream) approach to TAMP.
With the help of Yijiang Huang, a stable and documented fork of pybullet-planning named pybullet_planning is available through PyPI. However, new features will continue to be introduced first through pybullet-planning.
Caelan Reed Garrett. PyBullet Planning. https://pypi.org/project/pybullet-planning/. 2018.
Install for macOS or Linux using:
$ git clone --recurse-submodules https://github.com/caelan/pybullet-planning.git
pybullet-planning$ cd pybullet-planning
pybullet-planning$ git pull --init --recurse-submodules
pybullet-planning$ pip install -r requirements.txt
pybullet-planning is intended to have ongoing support for both python2.7 and python3.*
Make sure to recursively update pybullet-planning's submodules when pulling new commits.
pybullet-planning$ git pull --recurse-submodules
We recommend using IKFast, an analytical inverse kinematics solver, instead of PyBullet's damped least squares solver. IKFast bindings are included for the following robots:
- Franka Panda -
$ cd pybullet-pybullet/pybullet_tools/ikfast/franka_panda; python setup.py
- MOVO -
$ cd pybullet-pybullet/pybullet_tools/ikfast/movo; python setup.py
- PR2 -
$ cd pybullet-pybullet/pybullet_tools/ikfast/pr2; python setup.py
To create IKFast bindings for a new robot, following the instructions in ikfast_pybind.
- Test pybullet -
python -c 'import pybullet'
test_turtlebot - $ python -m examples.test_turtlebot
Heavily annotated simple example that demonstrates:
- Creating a PyBullet simulation
- Waiting for user input (useful on macOS)
- Programmatically creating objects
- Getting/setting object base poses
- Loading a robot URDF
- Getting/setting robot joint positions
- Looking up named robot links and joints
- Computing an object's current Axis-Aligned Bounding Box (AABB)
- Drawing coordinate frames and bounding boxes
- Checking collisions between two objects
- Temporarily disabling rendering for efficiency purposes
- Kuka IIWA pick motion planning -
$ python -m examples.test_kuka_pick
- TutleBot base motion planning -
$ python -m examples.test_turtlebot_motion
- PR2 base & arm motion planning -
$ python -m examples.test_pr2_motion
- Franka Panda workspace planning -
$ python -m examples.test_franka
- Kinova MOVO workspace planning -
$ python -m examples.test_movo
- Cylinder SE(3) motion planning -
$ python -m examples.test_se3
- PR2 teleoperation -
$ python -m examples.teleop_pr2
- TAMP environments -
$ python -m examples.test_json
- TAMP benchmarks -
$ python -m examples.test_tamp_xml
- Gripper side grasps -
$ python -m examples.gripper.test_side
- Gripper top grasps -
$ python -m examples.gripper.test_top
- Dropping particles -
$ python -m examples.test_water
- PR2 cloning -
$ python -m examples.test_clone
See the following examples: https://github.com/caelan/pddlstream/tree/master/examples/pybullet
- https://github.com/yijiangh/pybullet_planning
- https://github.com/rachelholladay/pb_robot
- https://github.com/mike-n-7/pb_robot
- https://github.com/carismoses/pb_robot
- PDDLStream for TAMP - https://github.com/caelan/pddlstream
- Online TAMP under Partial Observability - https://github.com/caelan/SS-Replan
- Automated Construction - https://github.com/caelan/pb-construction
- Learning + TAMP (LTAMP) - https://github.com/caelan/LTAMP
- PyPI - https://pypi.python.org/pypi/pybullet
- Quickstart - https://docs.google.com/document/d/10sXEhzFRSnvFcl3XxNGhnD4N2SedqwdAvK3dsihxVUA/
- Forum - https://pybullet.org/Bullet/phpBB3/
- Wordpress - https://pybullet.org/wordpress/
- Examples - https://github.com/bulletphysics/bullet3/tree/master/examples/pybullet/examples
- Bindings - https://github.com/bulletphysics/bullet3/blob/master/examples/pybullet/pybullet.c