[ros-users] Using ROS for a Delta Robot
mguenthe at uos.de
Tue Feb 15 13:20:29 UTC 2011
Am Sun, 13 Feb 2011 21:09:44 +0100
schrieb Wouter van Teijlingen <wouter at van-teijlingen.nl>:
> Hello list,
> 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
> [http://www.ros.org/wiki/cob_canopen_motor] (basically the same as a
since nobody picked up on your email, I'll try to answer it, although
there are probably more qualified people on this list.
I'm not quite clear what you are planning to do. I'll assume that you
have some kind of gripper mounted on your Delta Robot, and that you
want to be able to grasp arbitrary objects in an unstructured
environment while avoiding collisions with other objects.
The tutorial you mentioned assumes the following:
- you have some kind of sensor that gives you a 3D point cloud of the
environment (a tilting laser scanner, a Kinect, ...)
- you have an URDF description of the robot
After you have implemented all the stuff in the tutorial, the typical
workflow is the following:
- you send a joint goal (vector of desired joint positions) or position
goal (in cartesian space) to move_arm
- move_arm will call a motion planner, such as ompl, to plan a
joint trajectory that will bring your end effector to the desired goal
- the resulting trajectory will be smoothed using splines
- the smoothed trajectory will be sent to the
joint_trajectory_action_controller that you have to implement, to be
executed on the robot.
During all those steps, the information from your 3D sensor will be
used to check the environment to make sure that the final trajectory
will not collide with any objects in the environment (or lead to
self-collisions, but that will probably not be a problem for a Delta
Move_arm is commonly used to bring your end effector to a position near
the object to be grasped. Next, you will have to get the grasping
pipeline  going to actually plan and execute a grasp.
Arm navigation was designed for use with a 6+ degree of freedom
robotic arm, and I'm not sure how well it works for a 3 DoF Delta Robot.
Perhaps somebody else could chime in on that.
Regarding where to start: I would recommend developing the code for
communication with your controller first. Better post a separate
question for opinions on how to do that. Keep in mind that in the end,
you want to pass in joint trajectories , and the joints should move
along this trajectory. Before getting started on all the motion
planning stuff, you can just generate a simple joint trajectory, for
example using sin(t), to debug and test your code.
In parallel, you can develop an URDF model of your robot . One
problem I can imagine you will run into is that a Delta Robot is a
3 DoF closed kinematic chain consisting of 9 joints, and I am not sure
how well URDF can represent this at the moment; perhaps OpenRave can
handle these things better .
Dipl.-Inf. Martin Günther
Institut für Informatik
Albrechtstr. 28 (Raum 31/503)
Telefon: +49 (0)541 969 2434
More information about the ros-users