HI, i am working on an seallant application with an UR10 robot but cannot seem to get the URDF files connected. The code below describes my seallant tool that i would connect to the UR with the base_fit link. The base_fit link is the link that has to be attached to the flange link of the UR10. The flange link is defined in the top level file and is attached to the tool0 link of the UR10, but it is rotated over the y axis.
i cannnot seem to get it connected in this way because i keep getting this error
Failed to build tree: Joint [flange_to_seallant_tool] is missing a parent and/or child link specification.
i cannot seem find why this keeps happening because when the seallant_tool description is only in urdf (so not with xacro macro's) it seems to generate all elements in rviz. What am i missing?
urdf description of my tool
edit: I changed the prefix to "" and added joint and functionalities found in the top level xacro of the UR10
<robot xmlns:xacro="http://wiki.ros.org/xacro" name="seallant_tool">
<xacro:macro name="seallant_tool" params="prefix">
<link name="${prefix}base_link">
<visual>
<geometry>
<box size = "0.065 0.085 0.10"/>
</geometry>
</visual>
<collision>
<geometry>
<box size = "0.080 0.090 0.105"/>
</geometry>
</collision>
</link>
<link name = "${prefix}seallant_cylinder">
<visual>
<geometry>
<cylinder length = "0.27" radius = "0.025"/>
</geometry>
<material name="LightGrey">
<color rgba="0.7 0.7 0.7 1.0"/>
</material>
<origin rpy="0 0 0" xyz="0 0.015 -0.019"/>
</visual>
<collision>
<geometry>
<cylinder length = "0.27" radius = "0.0275"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0.015 -0.019"/>
</collision>
</link>
<joint name = "${prefix}tube_to_block" type = "fixed">
<origin xyz="0.0 0 0" rpy="0 0 0"/>
<parent link = "${prefix}base_link"/>
<child link = "${prefix}seallant_cylinder"/>
</joint>
<link name ="${prefix}tcp"/>
<joint name="${prefix}cylinder_to_tool0" type="fixed">
<origin xyz="0 0.015 -0.154" rpy="0 0 0"/>
<parent link="${prefix}seallant_cylinder"/>
<child link="${prefix}tcp"/>
</joint>
<link name ="${prefix}base_fit"/>
<joint name="${prefix}base_link_to_fit" type="fixed">
<origin xyz="0 -0.0425 0" rpy="0 0 0"/>
<parent link="${prefix}base_link"/>
<child link="${prefix}base_fit"/>
</joint>
</xacro:macro>
</robot>
Top level description
<?xml version="1.0"?>
<robot xmlns:xacro="http://wiki.ros.org/xacro" name="seallant_robot">
<xacro:arg name= "transmission_hw_interface" default = "hardeware_interface/PositionJointInterface"/>
<xacro:include filename="$(find ur_description)/urdf/ur10_robot.urdf.xacro"/>
<xacro:include filename="$(find seallant_tool_support)/seallanttool.urdf.xacro"/>
<xacro:ur10_robot prefix = "" joint_limited="True"
shoulder_pan_lower_limit="${-pi}" shoulder_pan_upper_limit = "${pi}" shoulder_lift_lower_limit="${-pi}" shoulder_lift_upper_limit="${pi}" elbow_joint_lower_limit="${-pi}" elbow_joint_upper_limit="${pi}" wrist_1_lower_limit="${-pi}" wrist_1_upper_limit="${pi}" wrist_2_lower_limit="${-pi}" wrist_2_upper_limit="${pi}" wrist_3_lower_limit="${-pi}" wrist_3_upper_limit="${pi}" transmission_hw_interface="$(arg transmission_hw_interface)" />
<xacro:seallant_tool prefix = "tool_"/>
<link name = "flange"/>
<joint name= "tool0_to_flange" type = "fixed">
<parent name = "tool0"/>
<child name = "robot_flange"/>
<origin xyz = "0 0 0" rpy = "0 ${pi/2} 0"/>
</joint>
<joint name = "flange_to_seallant_tool " type = "fixed">
<parent name = "flange"/>
<child name = "tool_base_link"/>
<origin xyz = "-0.0425 0 0" rpy = "${pi} ${-pi/2} 0"/>
</joint>
<link name = "world"/>
<joint name= "world_joint" type = "fixed">
<parent name = "world"/>
<child name = "base_link"/>
<origin xyz = "0.0 0.0 0.0" rpy = "0.0 0.0 0.0"/>
</joint>
</robot>
Originally posted by stefvanlierop on ROS Answers with karma: 37 on 2019-07-15
Post score: 0