How to create and control a Delta robot?

asked 2020-04-25 10:00:16 -0500

this post is marked as community wiki

This post is a wiki. Anyone with karma >75 is welcome to improve it.

Hi, I'm working on a project in which I need to simulate a Delta robot in Gazebo and control it through ROS.

At the beginning I started to write the robot model using urdf/xacro file because it seems to be the suggested (or even more, requested!?) filetype by ROS. Ayway, I am now facing 2 "big" problems:

1: Since parallel linkages are not allowed by URDF I have to find a way to connect the"movable plate" of the Delta to the 3 forearms (this implies 3 parent links for a unique link). I've tried using the <gazebo> tag to insert the extra joints but they seem to be non-effective (I can see them in the joint list inside gazebo but they don't connect the desired links, as if they were not physically there..) I've used this sintax:

<gazebo>
    <joint name='joint_lower_2' type='ball'>
      <parent>link2_1</parent>
      <child>end_effector</child>
    </joint>
</gazebo>

2: I need to specify the "middle" joints (the ones connecting upper links to lower links) and the "lower" joints (the ones connecting forearms to end-effector/movable plate) as ball joints but this type is not allowed in urdf format. So I am forced to declare these joints in some way (for example, continuous). My idea was to, using the gazebo reference tag, overlap their definitions but this seems to be non-effective too (the joints remain of the type "continuous" in the joint list in Gazebo). Like this:

<joint name="joint_middle_2" type="continuous">
    <parent link="link1_2"/>
    <child link="link2_2"/>
    <origin xyz="${link_upper_lenght} 0.0 0.0" rpy="0.0 0.0 0.0"/>
    <axis xyz="0.0 1.0 0.0"/>
    <dynamics damping="${damping}" friction="${static_friction}" />
</joint>

<gazebo reference="joint_middle_2" type="ball">
</gazebo>

In conclusion, how could I build a proper delta robot model that can be controlled by ROS nodes like "normal" serial robots? Should I have to switch to sdf file format? In this case, I will still be able to control the robot like if it were written in urdf?

Thanks to anyone which will help me!

edit retag flag offensive close merge delete