Gazebo | Ignition | Community
Ask Your Question
0

How can I make joints in urdf file that have two parents and a single child?

asked 2020-04-30 05:24:21 -0600

this post is marked as community wiki

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

Adding a virtual link is not working. urdf file is here

<robot name="excavator"> <link name="chain"> <inertial> <origin xyz="8.45755288817494 4.18565608014614 6.68537140356519" rpy="0 0 0"/> <mass value="13180.6164884539"/> <inertia ixx="29511.7945592359" ixy="-2776.03451562391" ixz="17.7388007765334" iyy="31532.589769304" iyz="-25.3267391725216" izz="55935.9315133107"/> </inertial> <visual> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <mesh filename="package://excavator/meshes/chain.STL"/> </geometry> <material name=""> <color rgba="0.776470588235294 0.756862745098039 0.737254901960784 1"/> </material> </visual> <collision> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <mesh filename="package://excavator/meshes/chain.STL"/> </geometry> </collision> </link> <link name="cabin"> <inertial> <origin xyz="0.00859305870677396 1.0103521325144 -2.02891355369916" rpy="0 0 0"/> <mass value="28884.5755827318"/> <inertia ixx="72463.9230836232" ixy="-75.4212523104064" ixz="-1395.02162162392" iyy="95358.0696804118" iyz="4987.30416309204" izz="38763.1860075468"/> </inertial> <visual> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <mesh filename="package://excavator/meshes/cabin.STL"/> </geometry> <material name=""> <color rgba="0.792156862745098 0.819607843137255 0.933333333333333 1"/> </material> </visual> <collision> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <mesh filename="package://excavator/meshes/cabin.STL"/> </geometry> </collision> </link> <joint name="cabin_cain" type="continuous"> <origin xyz="0 0 1.6" rpy="0 0 0"/> <parent link="chain"/> <child link="cabin"/> <axis xyz="0 0 1"/> </joint> <link name="boom_cylenders"> <inertial> <origin xyz="0 0 0" rpy="0 0 0"/> <mass value="103.364479304445"/> <inertia ixx="100.667128941694" ixy="-4.91017933874161E-07" ixz="2.86002958247966E-06" iyy="134.54435734305" iyz="0.00236275064146518" izz="36.0844141276187"/> </inertial> <visual> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <mesh filename="package://excavator/meshes/boom_cylenders.STL"/> </geometry> <material name=""> <color rgba="0.647058823529412 0.619607843137255 0.584313725490196 1"/> </material> </visual> <collision> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <mesh filename="package://excavator/meshes/boom_cylenders.STL"/> </geometry> </collision> </link> <joint name="boom_cylenders_cabin" type="revolute"> <limit effort="1000.0" lower="-.3" upper="2.2" velocity="0.5"/> <origin xyz="0 -1.3 0.42" rpy="0 0 0"/> <parent link="cabin"/> <child link="boom_cylenders"/> <axis xyz="1 0 0"/> </joint> <link name="rods"> <inertial> <origin xyz="0.574999999777758 1.08571374113353E-10 -1.09389975266783" rpy="0 0 0"/> <mass value="223.803963542738"/> <inertia ixx="116.930248975123" ixy="-1.36715940196171E-07" ixz="3.84160230701602E-08" iyy="190.848804032466" iyz="1.6628407095709E-08" izz="75.646374241794"/> </inertial> <visual> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <mesh filename="package://excavator/meshes/rods.STL"/> </geometry> <material name=""> <color rgba="0.898039215686275 0.898039215686275 0.898039215686275 1"/> </material> </visual> <collision> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <mesh filename="package://excavator/meshes/rods.STL"/> </geometry> </collision> </link> <joint name="rods_joint" type="prismatic"> <limit effort="1000.0" lower="0.2" upper="1.5" velocity="0.5"/> <origin xyz="0 0 2.7" rpy="0 0 0"/> <parent link="boom_cylenders"/> <child link="rods"/> <axis xyz="0 0 1"/> </joint> <link name="boom"> <inertial> <origin xyz="0 0 0" rpy ... (more)

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
0

answered 2020-04-30 11:54:51 -0600

updated 2020-04-30 11:55:27 -0600

You cannot have closed chains in a URDF model.

If I understand the model correctly, what I would do in your case is have the pistons as an active joint, and then make the ends of the pistons (top and bottom) mimic joints. You would have to derive the kinematics of the arm, and express the end (mimic) joint states with respect to the piston (active) joint state.

This way you will end up with an open chain which, due to the dependence between the joints, behaves as a closed chain.

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2020-04-30 05:24:21 -0600

Seen: 1,682 times

Last updated: Apr 30 '20