PLUGINLIB_DECLARE_CLASS vs PLUGINLIB_REGISTER_CLASS
I created my own kinematics plugin, akin to pr2_arm_kinematics_plugin.cpp. My intention is for it to be used by ompl_motion_planner, also like pr2_arm_kinematics_plugin in the case of the pr2_object_manipulation_launch demo. I added all the necessary ingredients (I think)-- CMakeLists that creates the plugin library, a kinematics_plugin.xml that specifies the package/class/type of the plugin, a manifest that exports the library and kinematics_plugin.xml.
When I launch ompl_motion_planner, it does find my plugin:
/opt/ros/diamondback/stacks/motion_planners/ompl_ros_interface/src/ik/ompl_ros_ik_sampler.cpp (57): Found solver my_namespace/MyKinematicsPlugin
However, it throws the error:
/opt/ros/diamondback/stacks/motion_planners/ompl_ros_interface/src/ik/ompl_ros_ik_sampler.cpp (65): The plugin failed to load. Error: Failed to load library /path/to/my_kinematics/lib/libmy_kinematics_lib.so. Make sure that you are calling the PLUGINLIB_REGISTER_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Cannot load library: No manifest in /path/to/my_kinematics/lib/libmy_kinematics_lib.so: my_namespace__MyKinematicsPlugin
The lib does exist at the specified path.
The error is confusing, because the way I understand it from the wiki is that PLUGINLIB_REGISTER_CLASS is the boxturtle version of PLUGINLIB_DECLARE_CLASS. I have the former at the top of my my_knematics_plugin.cpp file. Any clues?