Am Sun, 13 Feb 2011 21:09:44 +0100 schrieb Wouter van Teijlingen : > 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' > [http://www.ros.org/wiki/arm_navigation/Tutorials/Running%20arm%20navigation%20on%20non-PR2%20arm] > > 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 > whistler)... Hello Wouter, 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 Robot). 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 [1] 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 [2], 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 [3]. 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 [4]. Best wishes, Martin [1] http://www.ros.org/wiki/object_manipulator [2] http://www.ros.org/wiki/joint_trajectory_action [3] http://www.ros.org/wiki/urdf/Tutorials [4] http://article.gmane.org/gmane.science.robotics.ros.user/11664 -- Dipl.-Inf. Martin Günther Universität Osnabrück Institut für Informatik Albrechtstr. 28 (Raum 31/503) D-49076 Osnabrück Telefon: +49 (0)541 969 2434 http://www.inf.uos.de/mguenthe/