Home

Awesome

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.

<!--![Alt text](images/test.png?raw=true "Title")--> <!--img src="images/pr2.png" height="300">&emsp;<img src="images/kuka.png" height="300"--> <!-- ## PyBullet Planning -->

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:

<!-- `pybullet-planning$ git clone --recursive git@github.com:caelan/pybullet-planning.git` -->
$ git clone --recurse-submodules https://github.com/caelan/pybullet-planning.git
$ cd pybullet-planning
pybullet-planning$ pip install -r requirements.txt
<!-- Install PyBullet on OS X or Linux using: ``` $ pip install numpy pybullet $ git clone --recurse-submodules https://github.com/caelan/ss-pybullet.git $ cd ss-pybullet $ git pull --recurse-submodules ``` -->

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
<!-- `pybullet-planning$ git submodule update --init --recursive` -->

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:

<!-- `pybullet-planning$ ./setup_ikfast.sh` --> <!-- https://stackoverflow.com/questions/10382141/temporarily-change-current-working-directory-in-bash-to-run-a-command -->

To create IKFast bindings for a new robot, following the instructions in ikfast_pybind.

<!-- https://pypi.org/project/ikfast-pybind/ -->

Tests

  1. Test PyBullet - pybullet-planning$ python -c 'import pybullet'

Tutorial

test_turtlebot - $ python -m examples.test_turtlebot

<img src="images/turtlebot.png" height="150"> <!--img src="images/turtlebot2.png" height="150"-->

Heavily annotated simple example that demonstrates:

Planning Examples

<!--img src="images/movo.png" height="150"-->

<img src="images/kuka_pick.png" height="150"><img src="images/turtlebot_motion.png" height="150"><img src="images/pr2_motion.png" height="150">

<img src="images/franka.png" height="150"><img src="images/movo2.png" height="150"><img src="images/se3.png" height="150">

Debug Examples

<img src="images/json.png" height="150"><img src="images/tamp_xml.png" height="150"><img src="images/water.png" height="150">

<!--&emsp;<img src="images/test_side.png" height="150"> &emsp;<img src="images/test_top.png" height="150"--> <!-- * [OpenRAVE bodies](examples/test_kinbody.py) - ```pybullet-planning$ python -m examples.test_kinbody``` * [Kiva shelves](examples/test_kiva.py) - ```pybullet-planning$ python -m examples.test_kiva``` * [LIS/YCB models](examples/test_models.py) - ```pybullet-planning$ python -m examples.test_models``` * [PR2 visibility](examples/test_visibility.py) - ```pybullet-planning$ python -m examples.test_visibility``` * [TurtleBot collisions](examples/test_turtlebot.py) - ```pybullet-planning$ python -m examples.test_turtlebot``` -->

PDDLStream Examples

See the following examples: https://github.com/caelan/pddlstream/tree/master/examples/pybullet

<img src="https://img.youtube.com/vi/3HJrkgIGK7c/0.jpg" height="200"> <img src="https://img.youtube.com/vi/oWr6m12nXcM/0.jpg" height="200">

Forks

Gallery

PyBullet Resources

Bullet Resources