How to load Moveit motion planning pipelines

asked 2023-03-01 09:30:03 -0500

NotARobot gravatar image

updated 2023-03-10 08:40:04 -0500

Greetings. I want to use the default OMPL pipeline side-by-side with the Pilz industral motion planner.

What do I have to do to get the Pilz industral motion planner to work?

So far, I requested a movement with the Pilz pipeline. But all I get is a fatal error because the requested pipeline was not found.

[move_group-5] [INFO] [1677679768.000652630]  [moveit_move_group_default_capabilities.move_action_capability]: Received request
[move_group-5] [INFO] [1677679768.000740210] [moveit_move_group_default_capabilities.move_action_capability]: executing..
[move_group-5] [INFO] [1677679768.006361362] [moveit_move_group_default_capabilities.move_action_capability]: Planning request received for MoveGroup action. Forwarding to planning pipeline.
[move_group-5] [WARN] [1677679768.006424931] [moveit_move_group_capabilities_base.move_group_capability]: Couldn't find requested planning pipeline 'pilz_industrial_motion_planner'
[move_group-5] [INFO] [1677679768.006451202] [moveit_move_group_default_capabilities.move_action_capability]: Catastrophic failure

The pipeline should be there as part of MoveIt (Foxy). Do I have to specify it when I start the move group node? Since there are parameters for the OMPL.

# Planning Configuration
ompl_planning_pipeline_config = {
    "move_group": {
        "planning_plugin": "ompl_interface/OMPLPlanner",
        "request_adapters": """default_planner_request_adapters/AddTimeOptimalParameterization default_planner_request_adapters/FixWorkspaceBounds default_planner_request_adapters/FixStartStateBounds default_planner_request_adapters/FixStartStateCollision default_planner_request_adapters/FixStartStatePathConstraints""",
        "start_state_max_bounds_error": 0.1,
    }
}
ompl_planning_yaml = load_yaml("ur_moveit_config", "config/ompl_planning.yaml")
ompl_planning_pipeline_config["move_group"].update(ompl_planning_yaml)

Update1: I've tried to define the PIMP pipeline for MoveGroup via launch file parameters as seen above.

planning_pipeline_config = {"move_group": {"planning_plugin": "pilz::CommandPlanner"}}

This results in a pipeline initialization error.

[move_group-5] [INFO] [1678431810.035325241] [moveit.ros_planning_interface.moveit_cpp]: Loading planning pipeline 'move_group'
[move_group-5] [ERROR] [1678431810.036660884] [moveit.ros_planning.planning_pipeline]: Exception while loading planner 'pilz::CommandPlanner': According to the loaded plugin descriptions the class pilz::CommandPlanner with base class type planning_interface::PlannerManager does not exist. Declared types are  ompl_interface/OMPLPlannerAvailable plugins: ompl_interface/OMPLPlanner
[move_group-5] [ERROR] [1678431810.037928493] [moveit.ros_planning_interface.moveit_cpp]: Failed to initialize planning pipeline 'move_group'.
[move_group-5] [ERROR] [1678431810.038590220] [moveit.ros_planning_interface.moveit_cpp]: Failed to load any planning pipelines.
[move_group-5] [FATAL] [1678431810.038617225] [moveit.ros_planning_interface.moveit_cpp]: Failed to load planning pipelines from parameter server
[move_group-5] terminate called after throwing an instance of 'std::runtime_error'
[move_group-5]   what():  Failed to load planning pipelines from parameter server

Which raises the question, why does MoveIt not load the plugin for the requested pipeline, when it is requested? Also, if one has to load the plugin for PIMP into MoveGroup by oneself in order for it to become a valid planning pipeline, how is this achieved?

Update2: Building MoveIt2 from source shows now also CHOMP as possible planner plugin. This led me to check the moveit_planners folder and the subsequent pilz_industrial_motion_planner folder for the export statements of the plugins. Fact is, MoveIt would load the plugin, however PIMP is still not build with colcon but with catkin. This makes me belief, that it is still a ROS1 package, despite the fact that it is in the ROS2 branch of the repo. So as a matter of fact, PIMP will be never build with colcon in MoveIt2 and even if it would, it would not be registered as plugin, since ROS1 and ROS2 plugins are defined differently (package.xml vs CMakeLists.txt).

edit retag flag offensive close merge delete

Comments

please, post text not screenshot.

Ranjit Kathiriya gravatar image Ranjit Kathiriya  ( 2023-03-01 09:32:42 -0500 )edit