0
$\begingroup$

I have a custom ROS1 nodelet, which is a type of plugin. It compiles and loads fine except internally it is supposed to load another plugin (bio_ik_kinematics_plugin::BioIKKinematicsPlugin). At run time, it cannot find the other plugin. Prior to converting this to a nodelet, it found the bio_ik plugin perfectly well.

Similar to this Pluginception question: https://answers.ros.org/question/110316/pluginception-build-factory/

The error is:

The kinematics plugin failed to load. Error: MultiLibraryClassLoader: Could not create object of class type bio_ik_kinematics_plugin::BioIKKinematicsPlugin as no factory exists for it. Make sure that the library exists and was explicitly loaded through MultiLibraryClassLoader::loadLibrary()

With rospack plugins --attrib=plugin moveit_core I can see the bio_ik plugin exists:

bio_ik /home/andy/ws_ros/src/bio_ik/bio_ik_kinematics_description.xml

The CMakeLists where I create the custom plugin looks like this (trimmed for relevance and to hide proprietary stuff):

find_package(catkin REQUIRED COMPONENTS
  ...
  bio_ik # I don't think this needs to be here, but tried it both ways
  ...
  moveit_core # I don't think this needs to be here, but tried it both ways
  ...
  nodelet
  ...
)

...

add_library(
  MyLittleNodelet
  src/my_little_nodelet.cpp
)
target_link_libraries(
  MyLittleNodelet
  ${catkin_LIBRARIES}
  ${PROJECT_NAME}  // This is the library that needs to load bio_ik
)

...
$\endgroup$

0

Your Answer

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