Cannot generate IKFast closed solutions for regular 6DOF Arm

asked 2019-01-31 10:09:23 -0600

mkt gravatar image

updated 2019-01-31 11:53:37 -0600

gvdhoorn gravatar image

Hello everybody!

I'm trying to generate closed analytical solutions for custom 6Dof arm manipulator that we are creating. I managed to obtain container with required software packages (openrave and ikfast plugin). I followed this tutorial: https://adrlab.bitbucket.io/ct/v2.2/c...

Everything seems to work fine - I'm able to load my .dae file and get some informations (indices list). It looks OK. But process of generation final file with solutions last for ages - it never ends...

I also tried to use this online generator: https://www.hamzamerzic.info/ikfast_g...

The result is exactly the same. Process always gets stuck on lines:

INFO: skipping dependent index 3, numausymbols=0, numausymbols=6
INFO: skipping dependent index 5, numausymbols=0, numausymbols=7
INFO: skipping dependent index 6, numausymbols=0, numausymbols=7

I'm assuming that there is something wrong with my .urdf file. Can anyone be so kind and check what can be causing the problem?

<?xml version="1.0"?>
<robot name="pseudobot">

    <material name="blue">
        <color rgba="0 0 0.8 1"/>
    </material>

    <material name="white">
        <color rgba="1 1 1 1"/>
    </material>

    <link name="basis">
        <visual>
        <origin xyz="0 0 0.05" rpy="0 0 0"/>
        <geometry>
            <box size="0.404 0.404 0.1"/>
        </geometry>
    <material name="blue"/>
        </visual>
    </link>

    <link name="base_link">
        <visual>
        <origin xyz="0 0 0.165" rpy="0 0 0"/>
        <geometry>
            <cylinder radius="0.085" length="0.33"/>
        </geometry>
    <material name="white"/>
        </visual>
    </link>

    <link name="arm_link_1">
        <visual>
        <origin xyz="0 0 0.059" rpy="0 0 0"/>
        <geometry>
            <cylinder radius="0.07" length="0.288"/>
        </geometry>
    <material name="white"/>
        </visual>
    </link>

    <link name="arm_link_1_1">
        <visual>
        <origin xyz="0 0 0.135" rpy="0 0 0"/>
        <geometry>
            <cylinder radius="0.055" length="0.4105"/>
        </geometry>
    <material name="white"/>
        </visual>
    </link>

    <link name="arm_link_2">
        <visual>
        <origin xyz="0 0 0.08125" rpy="0 0 0"/>
        <geometry>
            <cylinder radius="0.064" length="0.2625"/>
        </geometry>
    <material name="white"/>
        </visual>
    </link>

    <link name="arm_link_2_1">
        <visual>
        <origin xyz="0 0 0.135" rpy="0 0 0"/>
        <geometry>
            <cylinder radius="0.055" length="0.3805"/>
        </geometry>
    <material name="white"/>
        </visual>
    </link>

    <link name="arm_link_3">
        <visual>
        <origin xyz="0 0 0.07615" rpy="0 0 0"/>
        <geometry>
            <cylinder radius="0.060" length="0.2523"/>
        </geometry>
    <material name="white"/>
        </visual>
    </link>

    <link name="arm_link_4">
        <visual>
        <origin xyz="0 0 0.07615" rpy="0 0 0"/>
        <geometry>
            <cylinder radius="0.060" length="0.23993"/>
        </geometry>
    <material name="white"/>
        </visual>
    </link>

    <link name="arm_link_5">
        <visual>
        <origin xyz="0.01 0 0" rpy="0 1.57 0"/>
        <geometry>
            <cylinder radius="0.060" length="0.12"/>
        </geometry>
    <material name="white"/>
        </visual>
    </link>

    <joint name="base_joint" type="revolute">
        <parent link="basis"/>
        <child link="base_link"/>
        <origin xyz="0 0 0" rpy="0 0 0"/>
        <limit lower="-3.1416" upper="3.1416" effort="0.2" velocity="0.2"/>
        <axis xyz="0 0 1"/>
    </joint>

    <joint name="joint_1" type="revolute">
        <parent link="base_link"/>
        <child link="arm_link_1"/>
        <origin xyz="0 0 0.274" rpy="1.57 0 0 ...
(more)
edit retag flag offensive close merge delete

Comments

I don't know whether it's a factor here, but the docker image that is used in the tutorial you link was last updated a year ago. OpenRAVE is quite actively developed, so I would suggest trying with a more recent version first.

gvdhoorn gravatar image gvdhoorn  ( 2019-01-31 11:54:24 -0600 )edit

I tried following the procedure that You have described here: https://answers.ros.org/question/2639... The result is exactly the same! I think that it must be something wrong with my urdf... Although it is working fine with default moveit planner...

mkt gravatar image mkt  ( 2019-02-01 09:20:10 -0600 )edit

Hi! Have you solved the issue? I'm having the same trouble here, following the steps described in the same link you sent. (#q263925). EDIT: I tried again with a fresh OpenRAVE install on a docker image that I've built, following the tutorial pointed on MoveIT site. It passed the first frozen state, and apparently was running ok. A few minutes later, when it was on the "addSolution" steps, it threw an error "GeneratorsNeeded" from sympy.

lewis_ferreira gravatar image lewis_ferreira  ( 2020-04-30 17:18:00 -0600 )edit

Yes, in the end, I managed to build IKFast solution. I changed some parameters in the script which was starting the calculations on the docker-machine... The parameter was called maxDepthSomethingSomething and I reduced it. Sorry, I don't remember much :( After all that IKFast solution was not better/faster than TracIK, so I'm using the latter one.

mkt gravatar image mkt  ( 2020-05-02 03:09:33 -0600 )edit

Thank you very much! it helped and I managed to build it, too! The parameter name is --maxcasedepth, and setting it to 1 or 2 made the build possible! Setting it to 3 resulted on the same error I commented on the edit (on the docker image i've made). Although the test success rate was below 50%, so I'll try the TracIK.

lewis_ferreira gravatar image lewis_ferreira  ( 2020-05-03 11:09:37 -0600 )edit