pybullet-planning (previously ss-pybullet)
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.
Citation
Caelan Reed Garrett. PyBullet Planning. https://pypi.org/project/pybullet-planning/. 2018.
Installation
Install for macOS or Linux using:
$ git clone --recurse-submodules https://github.com/caelan/pybullet-planning.git
$ cd pybullet-planning
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
IKFast Compilation
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 -
pybullet-planning$ (cd pybullet_tools/ikfast/franka_panda; python setup.py)
- MOVO -
pybullet-planning$ (cd pybullet_tools/ikfast/movo; python setup.py)
- PR2 -
pybullet-planning$ (cd pybullet_tools/ikfast/pr2; python setup.py)
To create IKFast bindings for a new robot, following the instructions in ikfast_pybind.
Tests
- Test PyBullet -
pybullet-planning$ python -c 'import pybullet'
Tutorial
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
Planning Examples
- Kuka IIWA pick motion planning -
pybullet-planning$ python -m examples.test_kuka_pick
- TutleBot base motion planning -
pybullet-planning$ python -m examples.test_turtlebot_motion
- PR2 base & arm motion planning -
pybullet-planning$ python -m examples.test_pr2_motion
- Franka Panda workspace planning -
pybullet-planning$ python -m examples.test_franka
- Kinova MOVO workspace planning -
pybullet-planning$ python -m examples.test_movo
- Cylinder SE(3) motion planning -
pybullet-planning$ python -m examples.test_se3
- PR2 teleoperation -
pybullet-planning$ python -m examples.teleop_pr2
Debug Examples
- TAMP environments -
pybullet-planning$ python -m examples.test_json
- TAMP benchmarks -
pybullet-planning$ python -m examples.test_tamp_xml
- Gripper side grasps -
pybullet-planning$ python -m examples.gripper.test_side
- Gripper top grasps -
pybullet-planning$ python -m examples.gripper.test_top
- Dropping particles -
pybullet-planning$ python -m examples.test_water
- PR2 cloning -
pybullet-planning$ python -m examples.test_clone
PDDLStream Examples
See the following examples: https://github.com/caelan/pddlstream/tree/master/examples/pybullet
Forks
- 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
Gallery
- 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
PyBullet Resources
- 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