compas_fab icon indicating copy to clipboard operation
compas_fab copied to clipboard

Improve cartesian planning options

Open gonzalocasas opened this issue 4 years ago • 9 comments

We should integrate more and better cartesian planners/industrial planners. In particular, the focus would be (in this order:

  • [ ] PyChoreo (integration already in progress by @yijiangh)
  • [ ] Pilz Industrial Planner (pilz_industrial_motion)
  • [ ] Tesseract
  • [ ] Descartes (Maybe not relevant anymore?)

gonzalocasas avatar Jan 12 '20 20:01 gonzalocasas

Tesseract

Descartes was surpassed by tesseract, which recently got python bindings. Pilz project is also looking really promising. Are you thinking of a generic planner interface, sort of how moveit integrates these?

jf--- avatar Jan 13 '20 09:01 jf---

yep, we're splitting up all these features (FK, IK, planning, etc) into pluggable BackendFeature implementations (see https://github.com/compas-dev/compas_fab/issues/99 for a placeholder issue of that work) with the idea of having generic interfaces for these things (also closely related to your comment of the kdl solver ;) )

gonzalocasas avatar Jan 13 '20 10:01 gonzalocasas

Hi @gonzalocasas great project, I have just started looking around but have experience with ROS. What are your current strategies for cartesian velocity objectives (cutting, extruding etc.)? Have you found workarounds for MoveIt's limitations?

Both Descartes and Pilz have MoveIt plug-ins so can work with compas fab as is. TrajOpt / Tesseract is defiantly the new and exciting kid on the block also with a WIP MoveIt plugin.

I have found that Pilz is all I need most of the time for cartesian planning, unless I need to free up an axis for tight environments. It has its own action server and python helper library beyond that of MoveIt which adds features like blend_radius. It would be great to expose this in compas fab. Implementing MoveIt's set_pose_targets function could be a quick win as is can be used with the LIN planner.

garyedwards avatar Aug 27 '20 17:08 garyedwards

@garyedwards thanks! Cartesian planning is still an open point in our roadmap before 1.0 release; for now, we're mostly ignoring the timing information of MoveIt planner and use a different driver for our ABB robots that gives some more control about cartesian velocity, but the goal is to integrate more cartesian planners soon: Descartes, Tesseract, PyChoreo, and Pilz are all in the wish list for integration! :)

Regarding Pilz in particular, I'm also very keen on integrating it deeper, as it seems to be a very mature project that is tackling the same problems we're facing.

gonzalocasas avatar Sep 05 '20 20:09 gonzalocasas

Hi @gonzalocasas now that Pilz is in master extending the compas ROS backed to support the MoveGroupSequenceAction action server and MotionSequenceRequest message should give us access to PTP LIN and CIRC sequences. I need to find some time to look into the compas code further in the new year. Do you have any pointer or words of warning to avoid any abortive work? The project seems to be moving fast at the moment.

https://ros-planning.github.io/moveit_tutorials/doc/pilz_industrial_motion_planner/pilz_industrial_motion_planner.html#user-interface-sequence-capability

garyedwards avatar Dec 04 '20 11:12 garyedwards

Awesome! The first step towards this would be to prepare a Docker image building master with Pilz (since I believe it's not yet released). Once that is done, probably the best is to implement a new "Backend feature" (Backend features are little classes that add functionality that depends on a Backend, we have a bunch of them in compas_fab for MoveIt, pybullet and creo already as reference)

gonzalocasas avatar Dec 04 '20 11:12 gonzalocasas

Perfect I have been playing with my robot in a master branch container for a while with the native ROS tools so that ready for action. Do you think a new feature or extend the move_it_plan_motion.py existing feature? I guess a move_it_plan_sequence_motion.py would be appropriate if new. It looks like a few new ROS message types also need adding. I will have a play and share any progress.

garyedwards avatar Dec 04 '20 11:12 garyedwards

If it's exposed over a different ROS service, I would probably lean towards a new move_it_plan_sequence_motion.py instead of extending the current plan motion one. @beverlylytle what do you think?

It looks like a few new ROS message types also need adding. I will have a play and share any progress.

Cool 👍

gonzalocasas avatar Dec 04 '20 12:12 gonzalocasas

I agree. move_it_plan_sequence_motion.py ftw!

beverlylytle avatar Dec 04 '20 13:12 beverlylytle