ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Your joint is missing a child. Every joint must have a child and a parent link.

http://wiki.ros.org/urdf/XML/joint

Try it with a useless link like

<link name="${child}_link" />

and insert in the joint

<child link = "${child}_link" />

Let me know if it works.

Your joint is missing a child. Every joint must have a child and a parent link.

http://wiki.ros.org/urdf/XML/joint

Try it with a useless link like

<link name="${child}_link" />

and insert in the joint

<child link = "${child}_link" />

Let me know if it works.

Your joint is missing a child. Every joint must have a child and a parent link.

http://wiki.ros.org/urdf/XML/joint

Try it with a useless link like

<link name="${child}_link" />

and insert in the joint

<child link = "${child}_link" />

Let me know if it works.

Edit: I see that you insert a child link in the joint, but you don't declare it anywhere.

Your joint is missing a child. Every joint must have a child and a parent link.

http://wiki.ros.org/urdf/XML/joint

Try it with a useless link like

<link name="${child}_link" />

and insert in the joint

<child link = "${child}_link" />

Let me know if it works.

Edit: I see that you insert a child link in the joint, but you don't declare it anywhere.

Edit 2: I made it work here. Change the code

<xacro:if value="${parent == 'length'}">
                <xacro:if value="${index == '1'}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == '2'}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == '3'}">
                    <child link="wrist_${child}"/>
                </xacro:if>
</xacro:if>

to

<xacro:if value="${parent == 'length'}">
                <xacro:if value="${index == 1}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == 2}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == 3}">
                    <child link="wrist_${child}"/>
                </xacro:if>
</xacro:if>

Your joint is missing a child. Every joint must have a child and a parent link.

http://wiki.ros.org/urdf/XML/joint

Try it with a useless link like

<link name="${child}_link" />

and insert in the joint

<child link = "${child}_link" />

Let me know if it works.

Edit: I see that you insert a child link in the joint, but you don't declare it anywhere.

Edit 2: I made it work here. The apostrophe indicate its a string type, if you're using a number, don't use it. Change the code

<xacro:if value="${parent == 'length'}">
                <xacro:if value="${index == '1'}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == '2'}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == '3'}">
                    <child link="wrist_${child}"/>
                </xacro:if>
</xacro:if>

to

<xacro:if value="${parent == 'length'}">
                <xacro:if value="${index == 1}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == 2}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == 3}">
                    <child link="wrist_${child}"/>
                </xacro:if>
</xacro:if>

Your joint is missing a child. Every joint must have a child and a parent link.

http://wiki.ros.org/urdf/XML/joint

Try it with a useless link like

<link name="${child}_link" />

and insert in the joint

<child link = "${child}_link" />

Let me know if it works.

Edit: I see that you insert a child link in the joint, but you don't declare it anywhere.

Edit 2: I made it work here. The apostrophe indicate its a string type, if you're using a number, don't use it. Change the code

<xacro:if value="${parent == 'length'}">
                <xacro:if value="${index == '1'}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == '2'}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == '3'}">
                    <child link="wrist_${child}"/>
                </xacro:if>
</xacro:if>

to

<xacro:if value="${parent == 'length'}">
                <xacro:if value="${index == 1}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == 2}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == 3}">
                    <child link="wrist_${child}"/>
                </xacro:if>
</xacro:if>

image description

Your joint is missing a child. Every joint must have a child and a parent link.

http://wiki.ros.org/urdf/XML/joint

Try it with a useless link like

<link name="${child}_link" />

and insert in the joint

<child link = "${child}_link" />

Let me know if it works.

Edit: I see that you insert a child link in the joint, but you don't declare it anywhere.

Edit 2: I made it work here. The apostrophe indicate its a string type, if you're using a number, don't use it. Change the code

<xacro:if value="${parent == 'length'}">
                <xacro:if value="${index == '1'}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == '2'}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == '3'}">
                    <child link="wrist_${child}"/>
                </xacro:if>
</xacro:if>

to

<xacro:if value="${parent == 'length'}">
                <xacro:if value="${index == 1}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == 2}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == 3}">
                    <child link="wrist_${child}"/>
                </xacro:if>
</xacro:if>

Edit 3: Tf tree

image description

Your joint is missing a child. Every joint must have a child and a parent link.

http://wiki.ros.org/urdf/XML/joint

Try it with a useless link like

<link name="${child}_link" />

and insert in the joint

<child link = "${child}_link" />

Let me know if it works.

Edit: I see that you insert a child link in the joint, but you don't declare it anywhere.

Edit 2: I made it work here. The apostrophe indicate its a string type, if you're using a number, don't use it. Change the code

<xacro:if value="${parent == 'length'}">
                <xacro:if value="${index == '1'}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == '2'}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == '3'}">
                    <child link="wrist_${child}"/>
                </xacro:if>
</xacro:if>

to

<xacro:if value="${parent == 'length'}">
                <xacro:if value="${index == 1}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == 2}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == 3}">
                    <child link="wrist_${child}"/>
                </xacro:if>
</xacro:if>

Edit 3: Tf tree

image description

Edit 4: You declared a macro named "fotokite_arm" but never instanced one. I added the following lines before </robot> and it worked

<link name="world">
    <origin xyz="0 0 0" rpy="0 0 0"/>
</link>

<xacro:fotokite_arm parent="world">
    <origin xyz="0 0 0" rpy="0 0 0"/>
</xacro:fotokite_arm>

Your joint is missing a child. Every joint must have a child and a parent link.

http://wiki.ros.org/urdf/XML/joint

Try it with a useless link like

<link name="${child}_link" />

and insert in the joint

<child link = "${child}_link" />

Let me know if it works.

Edit: I see that you insert a child link in the joint, but you don't declare it anywhere.

Edit 2: I made it work here. The apostrophe indicate its a string type, if you're using a number, don't use it. Change the code

<xacro:if value="${parent == 'length'}">
                <xacro:if value="${index == '1'}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == '2'}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == '3'}">
                    <child link="wrist_${child}"/>
                </xacro:if>
</xacro:if>

to

<xacro:if value="${parent == 'length'}">
                <xacro:if value="${index == 1}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == 2}">
                    <child link="module_${index + 1}_${child}"/>
                </xacro:if>
                <xacro:if value="${index == 3}">
                    <child link="wrist_${child}"/>
                </xacro:if>
</xacro:if>

Edit 3: Tf tree

image description

Edit 4: You declared a macro named "fotokite_arm" but never instanced one. I added the following lines before </robot> and it worked

<link name="world">
    <origin xyz="0 0 0" rpy="0 0 0"/>
</link>

<xacro:fotokite_arm parent="world">
    <origin xyz="0 0 0" rpy="0 0 0"/>
</xacro:fotokite_arm>

Edit 5: Here is the launcher I'm using. I'm calling the urdf "teste_2"

<launch>

    <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find test_package)/urdf/teste_2.urdf.xacro'"/>

    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />

    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />

</launch>