IkFast Generation on 6DOF Atlas Arm fails

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

IkFast Generation on 6DOF Atlas Arm fails

Jackson Carter
Hello OpenRAVE Users,

Thank you all for your support and work, it has been very beneficial our team's progress toward automated grasping.

I am part of a Darpa Robotics Challenge team (team ViGIR) working with the Atlas robot to generate grasps for challenge objects on the fly. We would like to use IkFast to speed up grasp calculations by eliminating unreachable wrist orientations prior to grasp evaluation.

We took the URDF model of our robot, converted it to COLLADA format using ROS's collada_urdf package, defined a manipulator for the left arm going from the torso to the palm of the hand, and then used the command "openrave.py --database inversekinematics --robot=atlas_setup.robot.xml" to try to generate the IkFast cpp code. This action fails with openravepy.ikfast.CannotSolveError: 'cannot solve 6D mechanism!', which OpenRAVE's IkFast module suggests we send to the developers as a problematic mechanism.

The output of the command states IkFast often identifies three non-intersecting axes on the arm, but fails to find a sufficient number of equations for solutions (5 out of 6 usually).

We have tried changing around the base_link and eelink indices of the manipulator, changing the precision of calculations to all values between 4 and 8 (using the --precision argument), and regenerated the model from the original URDF. Visualizing the model in OpenRAVE works just fine. None of our tweaks has helped.

I have attached the collada model and the robot xml used for the generation. Do you have any idea why this might not be working?

P.S. We generated an Atlas model earlier that had improper joint limits, but IkFast cpp code was generated for that very easily. The bad joint limits file is included as well.