Pick and Place Moving Objects

asked 2021-02-19 16:58:09 -0600

fruitbot gravatar image


I am using a UR3e and custom vacuum gripper for a pick and place demo. I want to integrate a conveyor belt, but am having trouble figuring out exactly how grasping a moving object will work.

There are two main ways to do this that I have seen suggestions for online:

  1. Detect object position, move to that position, detect new object position (because it has moved), move to that position, (continue until contact is made between gripper and target object).
  2. Detect object position and trajectory and send the end effector to a "rendezvous" point.

Both of these scenarios seem that they would need some way to tell the motion planner not only where the target position for the end effector is, but also at what time it needs to be in that position.

Another prospective solution (that I also am not quite sure is feasible, software wise)

  1. Have the gripper hovering above the belt. As the object is detected below, send the gripper along a linear trajectory at the same speed as the conveyor belt (aka hovering above the moving object). As the gripper "hovers" above the moving object, it dips down to make contact and grasp. In this case, the gripper isn't just moving vertically downward, but making an upside down arc. This video shows the motion I am trying to describe: https://www.youtube.com/watch?v=oFPo7...

So far I have used MoveIt for my motion planning. I have used waypoints to ensure the end effector follows a specific path, but is there a way to also ensure that this path is followed at a specific speed?

In summary, does anyone have any suggestions on how to grasp a moving object with a robotic arm? Can this be facilitated with MoveIT?

edit retag flag offensive close merge delete


With MoveIt this is likely going to be difficult -- right now, as there is work in this direction.

You could take a look at fzi-forschungszentrum-informatik/cartesian_controllers, that package provides controllers which should be able to do this.

Be sure to watch the video linked in the readme.

Note: this does not do any planning (or at least: not like MoveIt does). This is pure Cartesian control of manipulators (so "dumb" interpolation). But that is what "conveyor tracking" essentially is. MoveIt does much more.

gvdhoorn gravatar image gvdhoorn  ( 2021-02-20 01:21:08 -0600 )edit

So just to make sure I understand whats going on:

Cartesian planning with MoveIT uses "motion planing to interpolate between individual Cartesian poses" - meaning a bunch of poses are defined but there is no guarantee in regard to velocity/timing. MoveIT allows velocity configuration for specific joints, but not for end effector position.

The cartesian_controllers package uses "Cartesian pose tracking." I am not necessarily sure how this differs from interpolating "between individual Cartesian poses," but I see that the package has "VelocityJointInterfaces" - so it seems that velocity control is available.

Is this right?

fruitbot gravatar image fruitbot  ( 2021-02-22 15:10:26 -0600 )edit

I believe a more accurate description of the difference would be: the former assumes a static scene, while the latter allows to track -- as part of the control algorithm -- a moving frame (see the conveyor tracking application shown in the FZI videos).

Both certainly perform interpolation.

And it's not about velocity vs position.

Note: I did not suggest the FZI controllers are a complete replacement for MoveIt. If they were, I would've posted an answer.

MoveIt cannot be compared to a "simple" Cartesian pose controller.

But in its current implementation, and with the interfaces you are using, MoveIt (implicitly) assumes a (semi)static scene. Conveyor tracking immediately violates that. So then you require work-arounds, which FZI's controllers might be able to offer.

Alternatively: exploit any form of conveyor tracking your OEM robot controller offers and execute MoveIt trajectories relative to that -- but that would also require custom solutions.

gvdhoorn gravatar image gvdhoorn  ( 2021-02-23 03:02:54 -0600 )edit

Thank you again for your help and pointing me in the direction of the cartesian_controller package!

fruitbot gravatar image fruitbot  ( 2021-02-23 11:21:08 -0600 )edit