Ask Your Question

Using ROS for a Delta Robot

asked 2011-02-14 16:21:57 -0600

Tully gravatar image

At the moment i'm involved in a project where we are trying to built a Delta Robot. So i start reading the docs and tutorials and i've a few questions.

The kinematic model for the Delta Robot has already been developed; a inverse and forward model is available to me.

I'm trying to find out if i'm heading the right way. I've found a page on the ROS wiki named 'Running arm navigation on non-PR2 arm' []

Is it right to say that if i implement the functions mentioned in the article above that i can have a working Delta Robot (kinematic model, that is)? Is there perhaps a better way?

We are probably going with the Trio Whistle from ElmoMC for controlling the motors. I think it's best to start with developing the kinematic model and then implement packages for communication with the controller. Any tips or ideas on this? I've already found a package with CANopen support for the Elmo Harmonica [] (basically the same as a whistler)...

edit retag flag offensive close merge delete

7 Answers

Sort by ยป oldest newest most voted

answered 2011-02-16 06:47:19 -0600

Sachin Chitta gravatar image

Yes, the URDF does not support parallel robots.

There are two options for you here:

(a) add URDF support for parallel robots and give us a patch we can then integrate. This is going to be a little complicated though.

(b) Abstract your robot in a clever way so you can workaround these limitations. e.g. for motion planning, it seems like you could essentially plan in the space of your end-effector platform and use inverse kinematics to project that down into the joint space of the individual arms that connect the base to the platform. I found a document online that details the IK for a Delta robot -

Once you have a working IK, I/our group can help you more with getting motion planning working on this.

BTW, just looking at some videos online of what this robot can do, it's a very cool robot :-)

edit flag offensive delete link more

answered 2011-02-16 06:45:06 -0600

hsu gravatar image

While URDF does not support non-tree kinematic structures at this point, gazebo can handle closed chain loop dynamics. Maybe as a first order hack for simulating the Delta Robot, you can leave some joints out of the URDF, keeping the URDF representation in a tree structure, but in addition implement the loop closing joints in gazebo only. As an example, I did this for the PR2 gripper, where some of the joints in simulation are not modeled in the corresponding URDF. Is this is a feasible approach for your model?

edit flag offensive delete link more

answered 2011-02-16 00:52:05 -0600

Wouter van Teijlingen gravatar image


Thanks for your answer. we did discover a new problem, however. After reading a bit more i found the following text:

'The Unified Robot Description Format (URDF) is an XML specification to describe a robot. We attempt to keep this specification as general as possible, but obviously the specification cannot describe all robots. The main limitation at this point is that only tree structures can be represented, ruling out all parallel robots.'

And a Delta Robot is a parallel robot. Now we are wondering on what to do. We could rewrite arm_kinematics and rename it to parallel_kinematics or something like that, but perhaps some of you have other/better ideas than we have :-)

edit flag offensive delete link more


Delta robots are by nature parallel. However the model does not need to reflect their exact physical properties. I believe you can add constraints in transmissions such that only one link is in the kinematic tree. And fake the visualization of the others.
Tully gravatar imageTully ( 2011-02-16 04:33:20 -0600 )edit

answered 2012-01-30 07:18:49 -0600

ssafarik gravatar image

My solution for implementing a closed kinematic chain manipulator (in my case a five bar mechanism) was to write the URDF as two serial manipulators. I "close" them myself with my own fwd/inv kinematics equations. In other words, there are four joints, but only two DOFs, and so while the left manipulator has j1 & j3, and the right manipulator has j2 & j4, we can write two of the four joints in terms of the other two, and only really care about two of the joints for control. You publish the joint angles of all four joints, and rviz, etc, are all happy.


edit flag offensive delete link more

answered 2011-02-28 21:35:00 -0600

Wouter van Teijlingen gravatar image

updated 2011-03-01 00:02:32 -0600

Thanks for your help :)

You wrote:

(a) add URDF support for parallel robots and give us a patch we can then integrate. This is going to be a little complicated though.

We think this is the best way. Could you elaborate on the complications?

We don't know for sure if we choose this path, because option b) or our own option c) (creating a new package) seem plausible as well.

// edit

We probably first try option b, because it seems easier than creating a new package or adding support for a parallel robot ROS wide. I come back when i have any more questions :-) Thanks!


edit flag offensive delete link more

answered 2012-05-09 10:51:36 -0600

Damien gravatar image


This is question for Steve: I'll be in a near future interested in simulating delta robots in Gazebo and control it with ROS.

We have analytical direct and inverse kinematics and dynamics. We actually already build and control our real prototypes, but we're doing that based on matlab, and I want to port this on ROS...

I understand from your post that you already implemented such solutions for delta robots.

Could you explain further how you did it and maybe share some code?

Thanks in advance!


edit flag offensive delete link more

answered 2011-02-15 12:22:16 -0600

Sachin Chitta gravatar image

If you implement the functions mentioned in the article you will have a working version of the higher level functionality for motion planning and kinematics. You still have to implement your own lower-level controllers to talk to your robot motors, etc before you can actually get this working on the robot. You might want to look at simulating your robot in Gazebo and trying out the higher-level functionality there while developing the lower level controllers for the robot in parallel.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2011-02-14 16:21:57 -0600

Seen: 4,105 times

Last updated: May 09 '12