Rosanswers logo

I know I'm jumping the gun a bit, but I was wondering if anyone's had any experience integrating custom inverse-kinematics plugins (e.g. ikfast) with moveit.

I've created an ikfast solver for my robot, and followed the instructions at wiki/Industrial/Tutorials/Create_a_Fast_IK_Solution to generate a plugin. But it feels like this plugin may not be moveit-compatible??

When I run the moveit setup_assistant, I don't see my new plugin in the list of kinematics solvers (only KDL and PR2 solvers). If I manually edit kinematics.yaml to point to my new plugin, I get an error when running the planning environment: According to the loaded plugin descriptions, the class _____ does not exist. Declared types are ...KDL... and ...PR2...

I also checked the moveit documentation for Groovy/Kinematics/Custom_Plugin, but it doesn't exist yet.

Does anyone have any pointers, or is my best bet to wait for the documentation/code to be officially released?


Originally posted by Jeremy Zoss on ROS Answers with karma: 4976 on 2013-01-08

Post score: 2


1 Answer 1


Rosanswers logo

I have updated the IKFast plugin generator to work with moveIt. The changes have not yet been integrated into the official arm_kinematics_tools repository, so I've uploaded a patch to the wiki for now. The wiki page provides an updated walkthrough for creating an IKFast plugin under moveIt.

The patch updates two parts of the plugin-generation package:
  1. It creates a new template file, to work with the new moveIt kinematics plugin API
  • ikfast61_moveit_plugin_template.cxx
  • I did not create an updated template for ikfast 54
  • Some changes were obvious (const, references, etc.)
  • It could use some double-checking (esp. for consistency_limits handling)

  1. The config-file generation is now moveit-compatible:
  • assumes a rosbuild (not catkin) package

Originally posted by Jeremy Zoss with karma: 4976 on 2013-01-31

This answer was ACCEPTED on the original site

Post score: 5

Original comments

Comment by dbworth on 2013-02-05:
Great work @jeremy-zoss ! I can't wait to see a demo.

Comment by dbworth on 2013-02-05:
Also, I will mention the IKFast plugin for arm_kinematics_constraint_aware is utilised by arm_navigation, tabletop manipulation, and other nodes. And you can utilise the plugin in your code e.g. a joystick tele-op node. Presumably this will be the same in Groovy too.

Comment by Boris on 2013-02-10:
@jeremy-zoss, what modifications did you do to make generated plugin to be visible to ROS? I'm having same weird error "class does not exist" even with your instructions from the wiki. Tried it both with rosbuild and catkin (with some minor changes though) package.

Comment by Jeremy Zoss on 2013-02-11:
@Boris: MoveIt uses pluginlib (ros.org/wiki/pluginlib). 1) robot_kin_plugin.cpp derives from moveIt's kinematics::KinematicsBase, calls PLUGINLIB_EXPORT_CLASS macro. 2) plugin.xml "path" points to plugin lib file, "type" matches class name. 3) manifest.xml: <moveit_core plugin="plugin.xml"/>

Comment by Boris on 2013-02-11:
@jeremy-zoss, thanks! Probably I have to give it another try. It is set like this, but produces same error. rospack plugins doesn't see it as well.

Comment by Dave Coleman on 2013-03-04:
Jeremy, what are your thoughts about getting this IKFast->MoveIt script working in Groovy/catkin? MoveIt is not intended to be used on Fuerte and many people have already upgraded

Comment by Jeremy Zoss on 2013-03-05:
The script works in Groovy/rosbuild. That's what I did my dev/testing in. This allows use of MoveIt under Groovy (as intended), without converting to the Catkin build system. Eventually, we should update the script to generate either catkin or rosbuild files. I just hadn't gotten there yet.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.