Robotics StackExchange | Archived questions

MoveIt setup assistant

Hi, I'm trying to create a new definition of my robot with MoveIt wizard. The robot definitionis ok bu the EE has an hand and two prismatic fingers. If I use the "prismatic" tag in urdf.xacro definition this error appears:

The complete state of the robot is not yet known. Missing finger_joint1

The same error appears if I set it as revolute joint, but If it's a fixed joint this error doesn't appear.

<!-- Import Rviz colors -->
<xacro:include filename="$(find iiwa_description)/urdf/materials.xacro" />
<!--Import the iiwa7 macro -->
<xacro:include filename="$(find iiwa_description)/urdf/iiwa14.xacro"/>
<xacro:arg name="hardware_interface" default="PositionJointInterface"/>
<xacro:arg name="robot_name" default="iiwa"/>

<link name="world"/>

<gazebo reference="world">
    <static>true</static>
</gazebo>

<!-- Here we insert an iiwa7 robot in the scene, it's origin is just on top of the box previously defined. You can use 0,0,0 if you don't have that. -->
<xacro:iiwa14 hardware_interface="$(arg hardware_interface)" robot_name="$(arg robot_name)" parent="world">
    <origin xyz="0 0 0" rpy="0 0 0"/>
</xacro:iiwa14>

<!-- Tool properties -->
<property name="tool_mass" value="1.5" />
<property name="tool_joint_offset" value="0.00 0.00 0.00" />
<property name="tool_link_offset" value="0.00 0.00 0.1187" />
<property name="tool_link_rpy" value="${PI/2.0} ${PI} 0" />
<property name="tool_ee_offset" value="0.00 0.00 0.00" />

<!-- =================================================== -->

<joint name="tool_joint" type="fixed">
    <parent link="iiwa_link_ee" />
    <child link = "tool_link" />
    <origin xyz="${tool_joint_offset}" rpy="0 0 0" />  
</joint>

<link name="tool_link">
    <visual>
        <origin xyz="${tool_link_offset}" rpy="${tool_link_rpy}"/>
        <geometry>
            <mesh filename="file:///base.stl" scale="0.001 0.001 0.001"/>
        </geometry>
        <material name="White"/>
    </visual>

    <collision>
        <origin xyz="${tool_link_offset}" rpy="${tool_link_rpy}"/>          
        <geometry>
            <mesh filename="file:///base.stl" scale="0.001 0.001 0.001"/>
        </geometry>         
        <material name="White"/>
    </collision>
</link>

<!-- =================================================== -->

<joint name="tool_tip_joint" type="fixed">
    <parent link="tool_link" />
    <child link = "tool_link_ee" />
    <origin xyz="${tool_ee_offset}" rpy="0 0 0" />   
</joint>

<!--  The TCP frame is here defined -->
<link name="tool_link_ee">
    <visual>
        <origin xyz="${tool_link_offset}" rpy="${tool_link_rpy}"/>
        <geometry>
            <mesh filename="file:///tool_no_finger.stl" scale="0.001 0.001 0.001"/>
        </geometry>
        <material name="Green"/>
    </visual>

    <collision>
        <origin xyz="${tool_link_offset}" rpy="${tool_link_rpy}"/>          
        <geometry>
            <mesh filename="file:///tool_no_finger.stl" scale="0.001 0.001 0.001"/>
        </geometry>         
        <material name="Green"/>
    </collision>
</link>

<!-- =================================================== -->

<joint name="finger_joint_1" type="prismatic">
    <parent link="tool_link_ee" />
    <child link = "finger_link_1" />
    <origin xyz="-0.015 0.00 0.00" rpy="0 0 0" />   
    <axis xyz="1 0 0"/>
    <limit effort="20" lower="0.0" upper="0.015" velocity="0.2"/>
    <dynamics damping="500.0" friction="0.0"/>
</joint>


<link name="finger_link_1">
    <visual>
        <origin xyz="${tool_link_offset}" rpy="${PI/2.0} ${PI} 0"/>
        <geometry>
            <mesh filename="file:///finger1.stl" scale="0.001 0.001 0.001"/>
        </geometry>
        <material name="White"/>
    </visual>

    <collision>
        <origin xyz="${tool_link_offset}" rpy="${PI/2.0} ${PI} 0"/>         
        <geometry>
            <mesh filename="file:///finger1.stl" scale="0.001 0.001 0.001"/>
        </geometry>         
        <material name="White"/>
    </collision>
</link>

<joint name="finger_joint_2" type="prismatic">
    <parent link="tool_link_ee" />
    <child link = "finger_link_2" />
    <origin xyz="0.015 0.00 0.00" rpy="0 0 0" />   
    <axis xyz="-1 0 0"/>
    <limit effort="20" lower="0.0" upper="0.015" velocity="0.2"/>
    <dynamics damping="500.0" friction="0.0"/>
    <mimic joint="finger_joint_1"/>
</joint>


<link name="finger_link_2">
    <visual>
        <origin xyz="${tool_link_offset}" rpy="${PI/2.0} ${PI} ${PI}"/>
        <geometry>
            <mesh filename="file:///finger1.stl" scale="0.001 0.001 0.001"/>
        </geometry>
        <material name="White"/>
    </visual>

    <collision>
        <origin xyz="${tool_link_offset}" rpy="${PI/2.0} ${PI} ${PI}"/>         
        <geometry>
            <mesh filename="file:///finger1.stl" scale="0.001 0.001 0.001"/>
        </geometry>         
        <material name="White"/>
    </collision>
</link>

Thanks a lot! Michele

Asked by micheleep on 2020-10-30 04:19:04 UTC

Comments

As explained on Github already, this needs more information. Is the finger_joint1 state being published, e.g. by a gripper driver? What does your URDF look like? What have you tried to solve the problem?

Asked by fvd on 2020-10-31 12:13:58 UTC

You added the URDF, but what about the driver publishing that joint's state? Can you start up roslaunch your_moveit_config demo.launch? Does it work as expected?

Asked by fvd on 2020-11-02 03:17:09 UTC

I've added in the post the urdf.xacro definition. What do you mean what "is the finger_joint1 state being published?"'

Asked by micheleep on 2020-11-02 03:18:16 UTC

Yes, I can start up roslaunch iiwa_tool_moveit demo.launch and move finger_joint1 from rviz.

But the problem with roslaunch iiwa_tool_moveit moveit_planning_execution.launch still exists.

Asked by micheleep on 2020-11-02 03:37:03 UTC

Did you define a planning group that includes finger_joint1?

Asked by fvd on 2020-11-02 04:36:07 UTC

Yes, I've two planning group:

  1. manipualtor (all joints of the robot)
  2. endeffector (finger_joint_1 and dummy joints).

A question: when I declare the chain from iiwa_link_ee to tool_link_ee it cannot create the chain. Is it an issue because the last link has two childs (finger_link_1, finger_link_2)?

Asked by micheleep on 2020-11-02 05:47:55 UTC

Can you post your SRDF as well please?

Asked by fvd on 2020-11-02 05:52:14 UTC

Answers