0
$\begingroup$

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

move_group.launch

<launch>

  <!-- 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="
                a_package/AwsomeMotionPlanningCapability
                another_package/GraspPlanningPipeline
                " />
  -->

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

  <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)" />
  </include>

  <!-- 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" />
    </include>

    <!-- 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)" />
    </include>
  </group>

  <!-- 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)" />
  </include>

  <!-- 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" />
  </include>

  <!-- 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)" />
  </node>

</launch>

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:

https://github.com/ros-planning/moveit/blob/049be73b8343d67ffde400fed9ed4c387c6ea9e5/moveit_setup_assistant/templates/moveit_config_pkg_template/launch/chomp_planning_pipeline.launch.xml

Check

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

I think you may have the extra / there

$\endgroup$

1 Answer 1

0
$\begingroup$

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

$\endgroup$

Your Answer

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