Smooth Pick Motion for Delta Robot

Typically: "How do I... ", "How can I... " questions
Post Reply
sock1214
Posts: 8
Joined: 25 Mar 2025, 05:28

Smooth Pick Motion for Delta Robot

Post by sock1214 »

I’m working on a simulation using the IRB360 delta robot with a vacuum gripper to pick up objects.

Currently, the pick motion logic is structured like this (Lua code):

Code: Select all

-- horizontal move above the object
pos = {x, y, z + pickupheight}
sim.moveToPosition(end_effector, -1, pos, nil, linearVelocity, linearAccel)

-- vertical descent to pick the object
pos = {x, y, z}
sim.moveToPosition(end_effector, -1, pos, nil, linearVelocity, linearAccel)

-- move back up
pos = {x, y, z + pickupheight}
sim.moveToPosition(end_effector, -1, pos, nil, linearVelocity, linearAccel)
( Although sim.moveToPosition is a deprecated or legacy command, I’m intentionally using it for simplicity and it suits my current purpose. )

This sequence works, but each move is strictly linear and segmented.

What I would like to do is make the vertical descent blend smoothly with the previous horizontal move, so that the overall motion is more natural and similar to a real delta robot trajectory.

Specifically:

After moving above the target horizontally, I'd like the robot to automatically follow a smooth trajectory down (instead of stopping and then moving straight down).

Ideally, the trajectory would be calculated dynamically, possibly using a motion planner or smoother.

My questions are:
Is there a recommended way to create such smooth, blended trajectories in CoppeliaSim?

Are there built-in libraries or plugins (like OMPL, Reflexxes, etc.) that would be appropriate for this case?

Would it be better to manually generate the waypoints (e.g., arc or spline) or use something like sim.followPath?

Any best practices when simulating delta robot kinematics for pick-and-place tasks?

Any tips or suggestions would be really appreciated!
coppelia
Site Admin
Posts: 10747
Joined: 14 Dec 2012, 00:25

Re: Smooth Pick Motion for Delta Robot

Post by coppelia »

Hello,

you have at least 2 possibilities:
  • You can use a combination of sim.ruckigPos and sim.ruckigVel, to track your path. In that case you can't know in advance how the trajectory will look like, but you have a very dynamic behavior
  • You can use the TOPPRA library with the function sim.generateTimeOptimalTrajectory. Have a look at the demo scenes scenes/trajectoryAndMotion/pathToTrajectory.ttt or scenes/pathPlanning/simpleManipulatorPathPlanning.ttt
Cheers
Post Reply