Rosanswers logo

I wanted to try the CHOMP path planner with MoveIt, but when I try that I get the following error:

[ERROR] [1642153041.575042140]: Exception while loading planner 'chomp_interface/CHOMPPlanner': Failed to load library /opt/ros/noetic/lib//libchomp_planner_plugin.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML.

I have installed CHOMP and /opt/ros/noetic/lib/libchomp_planner_plugin.so exists in my system. However notice how MoveIt seems to be adding 2 forward slashes before the file name /opt/ros/noetic/lib//libchomp_planner_plugin.so.

Is there a way to change this path?

  • OS: Ubuntu 20.04
  • ROS version: noetic



  <!-- GDB Debug Option -->
  <arg name="debug" default="false" />
  <arg unless="$(arg debug)" name="launch_prefix" value="" />
  <arg if="$(arg debug)" name="launch_prefix" value="gdb -x $(find my_robot_moveit)/launch/gdb_settings.gdb --ex run --args" />

  <!-- Verbose Mode Option -->
  <arg name="info" default="$(arg debug)" />
  <arg unless="$(arg info)" name="command_args" value="" />
  <arg if="$(arg info)" name="command_args" value="--debug" />

  <!-- move_group settings -->
  <arg name="pipeline" default="ompl" />
  <arg name="allow_trajectory_execution" default="true" />
  <arg name="fake_execution" default="false" />
  <arg name="execution_type" default="interpolate" /> <!-- set to 'last point' to skip intermediate trajectory in fake execution -->
  <arg name="max_safe_path_cost" default="1" />
  <arg name="jiggle_fraction" default="0.05" />
  <arg name="publish_monitored_planning_scene" default="true" />

  <arg name="capabilities" default="" />
  <arg name="disable_capabilities" default="" />
  <!-- load these non-default MoveGroup capabilities (space seperated) -->
  <arg name="capabilities" value="
                " />

  <!-- inhibit these default MoveGroup capabilities (space seperated) -->
  <arg name="disable_capabilities" value="
                " />

  <arg name="load_robot_description" default="true" />
  <!-- load URDF, SRDF and joint_limits configuration -->
  <include file="$(find my_robot_moveit)/launch/planning_context.launch">
    <arg name="load_robot_description" value="$(arg load_robot_description)" />

  <!-- Planning Pipelines -->
  <group ns="move_group/planning_pipelines">

    <!-- OMPL -->
    <!-- <include ns="ompl" file="$(find my_robot_moveit)/launch/planning_pipeline.launch.xml">
      <arg name="pipeline" value="ompl" />
    </include> -->

    <!-- CHOMP -->
    <include ns="chomp" file="$(find my_robot_moveit)/launch/planning_pipeline.launch.xml">
      <arg name="pipeline" value="chomp" />

    <!-- Pilz Industrial Motion-->
    <!-- <include ns="pilz_industrial_motion_planner" file="$(find moveit_resources_prbt_moveit_config)/launch/planning_pipeline.launch.xml">
      <arg name="pipeline" value="pilz_industrial_motion_planner" />
    </include> -->

    <!-- Support custom planning pipeline -->
    <include if="$(eval arg('pipeline') not in ['ompl', 'chomp', 'pilz_industrial_motion_planner'])" file="$(find my_robot_moveit)/launch/planning_pipeline.launch.xml">
      <arg name="pipeline" value="$(arg pipeline)" />

  <!-- Trajectory Execution Functionality -->
  <include ns="move_group" file="$(find my_robot_moveit)/launch/trajectory_execution.launch.xml" if="$(arg allow_trajectory_execution)">
    <arg name="moveit_manage_controllers" value="true" />
    <arg name="moveit_controller_manager" value="my_robot" unless="$(arg fake_execution)" />
    <arg name="moveit_controller_manager" value="fake" if="$(arg fake_execution)" />
    <arg name="execution_type" value="$(arg execution_type)" />

  <!-- Sensors Functionality -->
  <include ns="move_group" file="$(find my_robot_moveit)/launch/sensor_manager.launch.xml" if="$(arg allow_trajectory_execution)">
    <arg name="moveit_sensor_manager" value="my_robot" />

  <!-- Start the actual move_group node/action server -->
  <node name="move_group" launch-prefix="$(arg launch_prefix)" pkg="moveit_ros_move_group" type="move_group" respawn="false" output="screen" args="$(arg command_args)">
    <!-- Set the display variable, in case OpenGL code is used internally -->
    <env name="DISPLAY" value="$(optenv DISPLAY :0)" />

    <param name="allow_trajectory_execution" value="$(arg allow_trajectory_execution)" />
    <param name="max_safe_path_cost" value="$(arg max_safe_path_cost)" />
    <param name="jiggle_fraction" value="$(arg jiggle_fraction)" />
    <param name="default_planning_pipeline" value="$(arg pipeline)" />
    <param name="capabilities" value="$(arg capabilities)" />
    <param name="disable_capabilities" value="$(arg disable_capabilities)" />

    <!-- Publish the planning scene of the physical robot so that rviz plugin can know actual robot -->
    <param name="planning_scene_monitor/publish_planning_scene" value="$(arg publish_monitored_planning_scene)" />
    <param name="planning_scene_monitor/publish_geometry_updates" value="$(arg publish_monitored_planning_scene)" />
    <param name="planning_scene_monitor/publish_state_updates" value="$(arg publish_monitored_planning_scene)" />
    <param name="planning_scene_monitor/publish_transforms_updates" value="$(arg publish_monitored_planning_scene)" />


Originally posted by willemstuijt on ROS Answers with karma: 42 on 2022-01-14

Post score: 0

Original comments

Comment by osilva on 2022-01-14:
Can you pls share your launch file. Sometimes you generate the wrong path

Comment by willemstuijt on 2022-01-15:
You mean the move_group.launch? I added it now

Comment by osilva on 2022-01-15:
You should have a file similar to this:



< arg name="planning_plugin" value="chomp_interface/CHOMPPlanner" />

I think you may have the extra / there


1 Answer 1


Rosanswers logo

The extra slash is not likely to be a problem. The OS can handle that.

A more likely issue is that the libchomp_planner_plugin.so depends on something you have not installed. The first step in checking this is to run the following command in a terminal which has the ROS environment variables set:

ldd /opt/ros/noetic/lib/libchomp_planner_plugin.so

This will list all the sub-libraries that the named .so file depends on. If any line says "not found", you have to fix that. Here's an example of a failure:

    libmoveit_collision_detection.so.1.0.8 => not found

Originally posted by Mike Scheutzow with karma: 4903 on 2022-01-15

This answer was ACCEPTED on the original site

Post score: 1

Original comments

Comment by willemstuijt on 2022-01-17:
Yes I was missing 5 libraries. I tried installing them through apt but it seems I installed the wrong versions and MoveIt stopped working altogether. So I reinstalled ROS, MoveIt and everything and now I don't get the error. However when I try to compute a path with CHOMP MoveIt just gets stuck, but my original question has been solved so I guess I will mark this as answered. Thanks.

Comment by Mike Scheutzow on 2022-01-17:
The other tool you need to be aware of is rosdep. It also helps resolve missing dependencies. Google for the proper command line (some developer made it unnecessarily complicated.)


Your Answer

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