compas-dev / compas_fab

Robotic fabrication package for the COMPAS Framework.
https://compas.dev/compas_fab/
MIT License
109 stars 32 forks source link

Improve cartesian planning options #98

Open gonzalocasas opened 4 years ago

gonzalocasas commented 4 years ago

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

jf--- commented 4 years ago

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?

gonzalocasas commented 4 years ago

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 ;) )

garyedwards commented 4 years ago

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.

gonzalocasas commented 4 years ago

@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.

garyedwards commented 3 years ago

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

gonzalocasas commented 3 years ago

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)

garyedwards commented 3 years ago

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.

gonzalocasas commented 3 years ago

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 👍

beverlylytle commented 3 years ago

I agree. move_it_plan_sequence_motion.py ftw!