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

Custom kinematic plugins under moveit

asked 2013-01-08 10:52:12 -0500

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?


edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2013-01-31 08:58:27 -0500

updated 2013-02-06 03:44:20 -0500

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)

  2. The config-file generation is now moveit-compatible:
    • assumes a rosbuild (not catkin) package
edit flag offensive delete link more


Great work @jeremy-zoss ! I can't wait to see a demo.

dbworth gravatar image dbworth  ( 2013-02-05 20:39:47 -0500 )edit

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.

dbworth gravatar image dbworth  ( 2013-02-05 20:43:38 -0500 )edit

@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.

Boris gravatar image Boris  ( 2013-02-10 02:30:15 -0500 )edit

@Boris: MoveIt uses 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: <export><moveit_core plugin="plugin.xml"/>

Jeremy Zoss gravatar image Jeremy Zoss  ( 2013-02-11 11:27:08 -0500 )edit

@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.

Boris gravatar image Boris  ( 2013-02-11 15:35:06 -0500 )edit

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

Dave Coleman gravatar image Dave Coleman  ( 2013-03-04 12:41:00 -0500 )edit

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.

Jeremy Zoss gravatar image Jeremy Zoss  ( 2013-03-05 05:20:28 -0500 )edit

answered 2013-01-11 06:33:19 -0500

Dave Coleman gravatar image

My understanding is that some minor modification will be needed to make the old arm_navigation IK plugins to work with MoveIt. Your best bet would be to look at how KDL is setup within the MoveIt framework and make the necessary changes to the IKFast plugin.

I am also working on this setup and will let you know any progress I make, please do the same for me!

edit flag offensive delete link more


Just a heads-up on progress: I was able to successfully modify the arm_navigation plugin to work with the modified moveit plugin API. I also created the package config files to advertise the plugin within the moveit environment. I'm working now on updating with the changes

Jeremy Zoss gravatar image Jeremy Zoss  ( 2013-01-29 12:59:08 -0500 )edit

Question Tools



Asked: 2013-01-08 10:52:12 -0500

Seen: 1,676 times

Last updated: Feb 06 '13