Package: pybullet-planning
pybullet_planningis a suite of utility functions to facilitate robotic planning related research on
thepybulletphysics simulation engine.
Planning research made easy.Main featureseasy-to-use functions to connect with pybullet, tailored for task and motion planning researchbuilt-in implementations of standard motion planners, including PRM, RRT, biRRT, A* etc.Getting Startedpybullet_planningcan be installed usingpip:pip install pybullet_planningNoteOn Windows, you may need to installMicrosoft Visual C++ 14.0, if pybullet installation fails.Once the installation is completed, you can verify your setup.
Start Python from the command prompt and run the following:>>> import pybullet_planning as ppFirst StepsDocumentationExamples can be found at theunit tests.
You will be need to installpytestto run these tests (pip install pytest).Then, individual tests can be run by using theirpytest markersby:pytest -s -m collision_fn --viewer
pytest -s -m motion_planning_2D --viewerAdditional pytest-free examples can be found atpybullet_planning_tutorials.ContributingCheck theContributor’s Guidefor more details.PyBullet ResourcesGithub -https://github.com/bulletphysics/bullet3Quickstart -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/examplesBindings -https://github.com/bulletphysics/bullet3/blob/master/examples/pybullet/pybullet.cPredecessors -pybullet-planning,motion-planners.CreditsCaelan Reed Garrett. PyBullet Planning.https://pypi.org/project/pybullet-planning/. 2020.This package was initiated and maintained by Caelan Garrett@caelanand othercontributors.HistoryThis repo is a stable and documented fork of Caelan’spybullet-planning(previously calledss-pybullet) andmotion-planners.
New features will continue to be introduced first through these separate repos, and integrated into the current package later.ChangelogAll notable changes to this project will be documented in this file.The format is based onKeep a Changelogand this project adheres toSemantic Versioning.UnreleasedAddedChangedFixedDeprecatedRemovedKnown Unresolved Issuesget_body_collision_verticesdoes not support cloned body now. We don’t have a good way to do catch-throw for this now.Cloning body from an already cloned body introduces unexpected result (visual or collision data erased etc).0.6.0Added- Addeddistance_thresholdtopairwise_link_collision_infoandpairwise_link_collisionto allow collision checking given a penetration threshold
- Addedsweep_collision_fntobirrtto allow sweep collision check in edge expansion
- Addedcoarse_waypointsto thesmooth_pathfunction to give options for use refined shortcut to ensure collision-free results.
-LOGGERintroduced to replaceprint- Addedget_data_filename_and_heightto include cached mesh filename and scale fromget_model_info- AddedCreateVisualArrayandCreateCollisionArrayforvisual_shape_from_dataandvisual_shape_from_data. We use the newget_data_filename_and_heightwhen file_name isUNKNOWN_FILE.
- Addedload_pybulletsupport forstlfiles bycreate_obj.
- Addedget_body_collision_verticesfor getting body collision vertices in its current configuration.Changed- ApplyHideOutputto pybullet IK error printouts ininverse_kinematics_helper-motion_plannersmodule up-to-date with commite6f23053e.
- Changed the mesh reading procedure invertices_from_datafrompp.read_objtomeshio.read. This fixes #9.
-smooth_path’smax_iterationsargument changed tomax_smooth_iterations- ‘set_color’ defaulted to set the color of all the links of body.
-vertices_from_dataget filename andscalefrom cachedINFO_FROM_BODY(throughget_data_filename_and_height) if the data’s filename does not end with.urdfFixed- Fixedread_objreturns empty dict if obj file does not start with objects (o object_name)
- Fixedget_extend_fn(q1,q2)to includeq1in its output path. This bug was causing incorrect planning result in birrt, because the two trees will have a gap in the middle that is unchecked.
- Fixed a minor mesh vertex scaling bug invertices_from_data- catchget_num_joints(body) == 0when a rigid body without joint and link are passed toclone_body- clearINFO_FROM_DATAwhendisconnectorreset_simulation0.5.1Added- Addedcurrent_confto as the single-node ladder in the ladder graph Cartesian planningplan_cartesian_motion_lgChanged- ChangedAttachment.from_datato construct parent and child bodies from body name data
- ChangedEdgeBuilderfrom usingupper_tmandjoint_vel_limitsto directly usingjump_threshold0.5.0ChangedChanged doc theme to sphinx-rtd-theme, doc hosted on readthedocsChangedmotion_plannersto keep updated withhttps://github.com/caelan/motion-plannersAddedAddedSE3floating body motion planningAdded ladder graph cartesian plannerRemovedRemovedrequirments.txt, moved dependencies intosetup.py0.1.1FixedFixed Windows OS “Display not in os.environ” issue inconnect0.1.0Addeddiagnosis collision checking function to help visualizing the collision bodies’ informationaddworkspace_bodiesto theget_collision_fnto check collisions with the obstacles specified in a URDF file.moveik_interfacemodule from application side to this repo, since it’s “universal” for fixed-end robot. Might need to add a separete one for robots with moving base later.enable travis ci unit test, collision_fn well testedget_floating_body_collision_fnto check a body without joints’s collision. Associated test added.Addedsnap_solstokinematics.ik_utilsChangedaddextra_disabled_collisionsparameter toget_collision_fn,plan_joint_motionChangedget_nameto return name without index if name is not‘’Removedget_collision_diagnosis_fnremoved, integrated into theget_collision_fnFixedutils.numeric_sample.randomize:random.shufflecannot operate on arangein py 3.x. Enforced conversion tolistto fix it.Fixedget_collision_fnto ignore checking between bodies both specified in attachment and obstacles (prioritize its role as attachment)DeprecatedTODOadd body name for bodies fromcreate_objRequested featuresclone_bodywork for bodies fromcreate_obj0.0.1AddedInitial versionDivide the originalutils.pyfile into separate modulesModules cycle dependency resolved.