Package Summary

Version 4.0.0
License Apache License, Version 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/PlanSys2/ros2_planning_system.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-10-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

This package contains the Executor module for the ROS2 Planning System

Maintainers

  • Francisco Martin Rico

Authors

No additional authors.

Executor

The Executor module is responsible for requesting a plan to the Planner, and carry it out, calling to the nodes in the client application that implements the actions. While executing each action, it checks the requisites (At Start, At End and Over all, in case of durative Actions). If the requirements are not meet, it cancels the plan execution. It also is responsible for applying the effects of the actions, requesting updates to the Problem Expert.

The main class of Executor is plansys2::ExecutorNode, which is instantiated from executor_node.cpp.

The executions of plans are carried out using ROS2 actions, in particular, plansys2_msgs::action::ExecutePlan. Take note that the goal must be already in the Domain Expert.

ExecutorNode ask for the domain and problem, and ask for a plan to the Planner. For each action in the plan, ExecuterNode creates a plansys2::ActionExecutor. The lifetime of this object is only one action. This object calls the actions implemented in the client appliciation using the ROS2 actions plansys2_msgs::action::ExecuteAction. Each client action implementation can use the class plansys2::ActionExecutorClient to avoid the complexity of managing ROS2 actions.

Using the feedback information from plansys2_msgs::action::ExecuteAction, feedback for plansys2::ExecutorNode is composed and returned to plansys2::ExecutorClient. It contains the current action in the plan and the progress in the currently executing action.

Next graph shows an example of the execution flow:

Executor Flow

Actions:

(in ActionExecutorClient)

Services:

Subscribed topics:

(in ActionExecutor)

  • /problem_expert/update_notify [std_msgs::msg::Empty]

Parameters:

(in ExecutorNode)

  • ~/action_timeouts/actions [list of strings]

    • List of actions which have duration overrun percentages specified.
  • ~/action_timeouts/[ACTION_NAME]/duration_overrun_percentage [double]

    • Defines the allowable time overrun of an action based on a percentage of the predicted plan duration. For example, if the plan predicts that an action should take 1000 secs and a duration overrun percentage of 20% is specified, then the action should be halted if the actual duration exceeds 1200 secs.
executor:
  ros__parameters:
    action_timeouts:
      actions: ["move"]
      move:
        duration_overrun_percentage: 20.0

CHANGELOG

Changelog for package plansys2_executor

4.0.0 (2026-10-21)

  • One version for Humble, Jazzy, Kilted and Lyrical (#509)
  • Robust PlanSys2: one node per component, clients that wait, retry and see a lost plan (#507)
  • Execute everything Kairos plans: conditional effects, durations, timed literals, object fluents, recursive derived predicates, PDDL+ and constraints (#504)
  • Fixes in the executor, the build, the tests and the CI (#502)
  • Fixes in the PDDL parser and the problem expert (#498)
  • Executor robustness: Ctrl-C, BT nodes, one-call checks, replanning (#492)
  • Take back the at start effects of actions that do not end (#486)
  • ActionExecutor and performers: one request, its own messages (#488)
  • Shutdown test: one process per moment of the execution cycle (#482)
  • Clean Ctrl-C with a plan in execution (#475)
  • Kairos plan solver, and Kairos as the default planner (#465)
  • STNBTBuilder runs actions with no duration (#467)
  • Make STNBTBuilder work again (#453)
  • Tests discover only nodes on this host (#455)
  • Replace the deprecated EventsExecutor with SingleThreadedExecutor (#452)
  • Performers, executor clients and the TUI notice when PlanSys2 goes down (#448)
  • ProblemExpertClient: getProblem(true) no longer returns the problem from before the client's own changes (#440)
  • Consistent executor goal handling: cancels, replaced goals and result codes (#439)
  • Tie the executor thread to the lifecycle and synchronize it (#437)
  • Fail the goal instead of crashing when a plan cannot be set up (#433)
  • Update domain during execution (#414)
  • Contributors: Francisco Martín Rico

3.1.0 (2026-07-28)

  • Fix deprecated get_share_directory
  • Fix publish execution Info. TUI and CLI
  • Deprecate BTAction with rate. Fix all warnings
  • Fix performer hang
  • Fix orphan thread bug in ExecutorNode
  • Fix test
  • Add default
  • Set C++23 as default
  • Use std::string for BT API
  • Remove Eigen dependency export
  • adjust simple_btbuilder_tests.cpp
  • include Action.hpp in BTBuilder.hpp
  • Fix Groot2 monitor format
  • Added BTUtils and JSONUtils to ComputeBT and ExecutorNode
  • Added blackboard keys for compatibility with other nodes
  • Fix formats
  • rm old ActionVariant from ActionExecutor and adjust code
  • add plansys2::SequentialBTBuilder plugin
  • Fix print
  • fix code style
  • Merge branch 'rolling' into getExpr
  • Merge branch 'rolling' into getExpr
  • Added deprecated constructor
  • Merge branch 'PlanSys2:rolling' into fix_predicate_parsing
  • Minor fixes
  • Added explicit to constructor
  • Remove rate of ActionExecutorClient constructor and set as default parameter
  • Minor fix
  • Doc for executor
  • Added Groot2 monitor
  • Merge branch 'rolling' into getExpr
  • Contributors: Alberto Tudela, Eshan Savla, Francisco Martín Rico, Gustavo, Gustavo Rezende

3.0.0 (2025-06-06)

  • Modify export target. Rename metapackage
  • Revamp CMake and clean unused headers
  • Update install
  • Move pluginlib
  • Remove unused dependencies
  • Update CMakeLists to manage dependencies more efficiently in various packages.

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged plansys2_executor at Robotics Stack Exchange

Package Summary

Version 4.0.0
License Apache License, Version 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/PlanSys2/ros2_planning_system.git
VCS Type git
VCS Version jazzy-devel
Last Updated 2026-10-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

This package contains the Executor module for the ROS2 Planning System

Maintainers

  • Francisco Martin Rico

Authors

No additional authors.

Executor

The Executor module is responsible for requesting a plan to the Planner, and carry it out, calling to the nodes in the client application that implements the actions. While executing each action, it checks the requisites (At Start, At End and Over all, in case of durative Actions). If the requirements are not meet, it cancels the plan execution. It also is responsible for applying the effects of the actions, requesting updates to the Problem Expert.

The main class of Executor is plansys2::ExecutorNode, which is instantiated from executor_node.cpp.

The executions of plans are carried out using ROS2 actions, in particular, plansys2_msgs::action::ExecutePlan. Take note that the goal must be already in the Domain Expert.

ExecutorNode ask for the domain and problem, and ask for a plan to the Planner. For each action in the plan, ExecuterNode creates a plansys2::ActionExecutor. The lifetime of this object is only one action. This object calls the actions implemented in the client appliciation using the ROS2 actions plansys2_msgs::action::ExecuteAction. Each client action implementation can use the class plansys2::ActionExecutorClient to avoid the complexity of managing ROS2 actions.

Using the feedback information from plansys2_msgs::action::ExecuteAction, feedback for plansys2::ExecutorNode is composed and returned to plansys2::ExecutorClient. It contains the current action in the plan and the progress in the currently executing action.

Next graph shows an example of the execution flow:

Executor Flow

Actions:

(in ActionExecutorClient)

Services:

Subscribed topics:

(in ActionExecutor)

  • /problem_expert/update_notify [std_msgs::msg::Empty]

Parameters:

(in ExecutorNode)

  • ~/action_timeouts/actions [list of strings]

    • List of actions which have duration overrun percentages specified.
  • ~/action_timeouts/[ACTION_NAME]/duration_overrun_percentage [double]

    • Defines the allowable time overrun of an action based on a percentage of the predicted plan duration. For example, if the plan predicts that an action should take 1000 secs and a duration overrun percentage of 20% is specified, then the action should be halted if the actual duration exceeds 1200 secs.
executor:
  ros__parameters:
    action_timeouts:
      actions: ["move"]
      move:
        duration_overrun_percentage: 20.0

CHANGELOG

Changelog for package plansys2_executor

4.0.0 (2026-10-21)

  • One version for Humble, Jazzy, Kilted and Lyrical (#509)
  • Robust PlanSys2: one node per component, clients that wait, retry and see a lost plan (#507)
  • Execute everything Kairos plans: conditional effects, durations, timed literals, object fluents, recursive derived predicates, PDDL+ and constraints (#504)
  • Fixes in the executor, the build, the tests and the CI (#502)
  • Fixes in the PDDL parser and the problem expert (#498)
  • Executor robustness: Ctrl-C, BT nodes, one-call checks, replanning (#492)
  • Take back the at start effects of actions that do not end (#486)
  • ActionExecutor and performers: one request, its own messages (#488)
  • Shutdown test: one process per moment of the execution cycle (#482)
  • Clean Ctrl-C with a plan in execution (#475)
  • Kairos plan solver, and Kairos as the default planner (#465)
  • STNBTBuilder runs actions with no duration (#467)
  • Make STNBTBuilder work again (#453)
  • Tests discover only nodes on this host (#455)
  • Replace the deprecated EventsExecutor with SingleThreadedExecutor (#452)
  • Performers, executor clients and the TUI notice when PlanSys2 goes down (#448)
  • ProblemExpertClient: getProblem(true) no longer returns the problem from before the client's own changes (#440)
  • Consistent executor goal handling: cancels, replaced goals and result codes (#439)
  • Tie the executor thread to the lifecycle and synchronize it (#437)
  • Fail the goal instead of crashing when a plan cannot be set up (#433)
  • Update domain during execution (#414)
  • Contributors: Francisco Martín Rico

3.1.0 (2026-07-28)

  • Fix deprecated get_share_directory
  • Fix publish execution Info. TUI and CLI
  • Deprecate BTAction with rate. Fix all warnings
  • Fix performer hang
  • Fix orphan thread bug in ExecutorNode
  • Fix test
  • Add default
  • Set C++23 as default
  • Use std::string for BT API
  • Remove Eigen dependency export
  • adjust simple_btbuilder_tests.cpp
  • include Action.hpp in BTBuilder.hpp
  • Fix Groot2 monitor format
  • Added BTUtils and JSONUtils to ComputeBT and ExecutorNode
  • Added blackboard keys for compatibility with other nodes
  • Fix formats
  • rm old ActionVariant from ActionExecutor and adjust code
  • add plansys2::SequentialBTBuilder plugin
  • Fix print
  • fix code style
  • Merge branch 'rolling' into getExpr
  • Merge branch 'rolling' into getExpr
  • Added deprecated constructor
  • Merge branch 'PlanSys2:rolling' into fix_predicate_parsing
  • Minor fixes
  • Added explicit to constructor
  • Remove rate of ActionExecutorClient constructor and set as default parameter
  • Minor fix
  • Doc for executor
  • Added Groot2 monitor
  • Merge branch 'rolling' into getExpr
  • Contributors: Alberto Tudela, Eshan Savla, Francisco Martín Rico, Gustavo, Gustavo Rezende

3.0.0 (2025-06-06)

  • Modify export target. Rename metapackage
  • Revamp CMake and clean unused headers
  • Update install
  • Move pluginlib
  • Remove unused dependencies
  • Update CMakeLists to manage dependencies more efficiently in various packages.

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged plansys2_executor at Robotics Stack Exchange

Package Summary

Version 4.0.0
License Apache License, Version 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/PlanSys2/ros2_planning_system.git
VCS Type git
VCS Version kilted-devel
Last Updated 2026-10-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

This package contains the Executor module for the ROS2 Planning System

Maintainers

  • Francisco Martin Rico

Authors

No additional authors.

Executor

The Executor module is responsible for requesting a plan to the Planner, and carry it out, calling to the nodes in the client application that implements the actions. While executing each action, it checks the requisites (At Start, At End and Over all, in case of durative Actions). If the requirements are not meet, it cancels the plan execution. It also is responsible for applying the effects of the actions, requesting updates to the Problem Expert.

The main class of Executor is plansys2::ExecutorNode, which is instantiated from executor_node.cpp.

The executions of plans are carried out using ROS2 actions, in particular, plansys2_msgs::action::ExecutePlan. Take note that the goal must be already in the Domain Expert.

ExecutorNode ask for the domain and problem, and ask for a plan to the Planner. For each action in the plan, ExecuterNode creates a plansys2::ActionExecutor. The lifetime of this object is only one action. This object calls the actions implemented in the client appliciation using the ROS2 actions plansys2_msgs::action::ExecuteAction. Each client action implementation can use the class plansys2::ActionExecutorClient to avoid the complexity of managing ROS2 actions.

Using the feedback information from plansys2_msgs::action::ExecuteAction, feedback for plansys2::ExecutorNode is composed and returned to plansys2::ExecutorClient. It contains the current action in the plan and the progress in the currently executing action.

Next graph shows an example of the execution flow:

Executor Flow

Actions:

(in ActionExecutorClient)

Services:

Subscribed topics:

(in ActionExecutor)

  • /problem_expert/update_notify [std_msgs::msg::Empty]

Parameters:

(in ExecutorNode)

  • ~/action_timeouts/actions [list of strings]

    • List of actions which have duration overrun percentages specified.
  • ~/action_timeouts/[ACTION_NAME]/duration_overrun_percentage [double]

    • Defines the allowable time overrun of an action based on a percentage of the predicted plan duration. For example, if the plan predicts that an action should take 1000 secs and a duration overrun percentage of 20% is specified, then the action should be halted if the actual duration exceeds 1200 secs.
executor:
  ros__parameters:
    action_timeouts:
      actions: ["move"]
      move:
        duration_overrun_percentage: 20.0

CHANGELOG

Changelog for package plansys2_executor

4.0.0 (2026-10-21)

  • One version for Humble, Jazzy, Kilted and Lyrical (#509)
  • Robust PlanSys2: one node per component, clients that wait, retry and see a lost plan (#507)
  • Execute everything Kairos plans: conditional effects, durations, timed literals, object fluents, recursive derived predicates, PDDL+ and constraints (#504)
  • Fixes in the executor, the build, the tests and the CI (#502)
  • Fixes in the PDDL parser and the problem expert (#498)
  • Executor robustness: Ctrl-C, BT nodes, one-call checks, replanning (#492)
  • Take back the at start effects of actions that do not end (#486)
  • ActionExecutor and performers: one request, its own messages (#488)
  • Shutdown test: one process per moment of the execution cycle (#482)
  • Clean Ctrl-C with a plan in execution (#475)
  • Kairos plan solver, and Kairos as the default planner (#465)
  • STNBTBuilder runs actions with no duration (#467)
  • Make STNBTBuilder work again (#453)
  • Tests discover only nodes on this host (#455)
  • Replace the deprecated EventsExecutor with SingleThreadedExecutor (#452)
  • Performers, executor clients and the TUI notice when PlanSys2 goes down (#448)
  • ProblemExpertClient: getProblem(true) no longer returns the problem from before the client's own changes (#440)
  • Consistent executor goal handling: cancels, replaced goals and result codes (#439)
  • Tie the executor thread to the lifecycle and synchronize it (#437)
  • Fail the goal instead of crashing when a plan cannot be set up (#433)
  • Update domain during execution (#414)
  • Contributors: Francisco Martín Rico

3.1.0 (2026-07-28)

  • Fix deprecated get_share_directory
  • Fix publish execution Info. TUI and CLI
  • Deprecate BTAction with rate. Fix all warnings
  • Fix performer hang
  • Fix orphan thread bug in ExecutorNode
  • Fix test
  • Add default
  • Set C++23 as default
  • Use std::string for BT API
  • Remove Eigen dependency export
  • adjust simple_btbuilder_tests.cpp
  • include Action.hpp in BTBuilder.hpp
  • Fix Groot2 monitor format
  • Added BTUtils and JSONUtils to ComputeBT and ExecutorNode
  • Added blackboard keys for compatibility with other nodes
  • Fix formats
  • rm old ActionVariant from ActionExecutor and adjust code
  • add plansys2::SequentialBTBuilder plugin
  • Fix print
  • fix code style
  • Merge branch 'rolling' into getExpr
  • Merge branch 'rolling' into getExpr
  • Added deprecated constructor
  • Merge branch 'PlanSys2:rolling' into fix_predicate_parsing
  • Minor fixes
  • Added explicit to constructor
  • Remove rate of ActionExecutorClient constructor and set as default parameter
  • Minor fix
  • Doc for executor
  • Added Groot2 monitor
  • Merge branch 'rolling' into getExpr
  • Contributors: Alberto Tudela, Eshan Savla, Francisco Martín Rico, Gustavo, Gustavo Rezende

3.0.0 (2025-06-06)

  • Modify export target. Rename metapackage
  • Revamp CMake and clean unused headers
  • Update install
  • Move pluginlib
  • Remove unused dependencies
  • Update CMakeLists to manage dependencies more efficiently in various packages.

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged plansys2_executor at Robotics Stack Exchange

Package Summary

Version 4.0.0
License Apache License, Version 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/PlanSys2/ros2_planning_system.git
VCS Type git
VCS Version lyrical-devel
Last Updated 2026-10-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

This package contains the Executor module for the ROS2 Planning System

Maintainers

  • Francisco Martin Rico

Authors

No additional authors.

Executor

The Executor module is responsible for requesting a plan to the Planner, and carry it out, calling to the nodes in the client application that implements the actions. While executing each action, it checks the requisites (At Start, At End and Over all, in case of durative Actions). If the requirements are not meet, it cancels the plan execution. It also is responsible for applying the effects of the actions, requesting updates to the Problem Expert.

The main class of Executor is plansys2::ExecutorNode, which is instantiated from executor_node.cpp.

The executions of plans are carried out using ROS2 actions, in particular, plansys2_msgs::action::ExecutePlan. Take note that the goal must be already in the Domain Expert.

ExecutorNode ask for the domain and problem, and ask for a plan to the Planner. For each action in the plan, ExecuterNode creates a plansys2::ActionExecutor. The lifetime of this object is only one action. This object calls the actions implemented in the client appliciation using the ROS2 actions plansys2_msgs::action::ExecuteAction. Each client action implementation can use the class plansys2::ActionExecutorClient to avoid the complexity of managing ROS2 actions.

Using the feedback information from plansys2_msgs::action::ExecuteAction, feedback for plansys2::ExecutorNode is composed and returned to plansys2::ExecutorClient. It contains the current action in the plan and the progress in the currently executing action.

Next graph shows an example of the execution flow:

Executor Flow

Actions:

(in ActionExecutorClient)

Services:

Subscribed topics:

(in ActionExecutor)

  • /problem_expert/update_notify [std_msgs::msg::Empty]

Parameters:

(in ExecutorNode)

  • ~/action_timeouts/actions [list of strings]

    • List of actions which have duration overrun percentages specified.
  • ~/action_timeouts/[ACTION_NAME]/duration_overrun_percentage [double]

    • Defines the allowable time overrun of an action based on a percentage of the predicted plan duration. For example, if the plan predicts that an action should take 1000 secs and a duration overrun percentage of 20% is specified, then the action should be halted if the actual duration exceeds 1200 secs.
executor:
  ros__parameters:
    action_timeouts:
      actions: ["move"]
      move:
        duration_overrun_percentage: 20.0

CHANGELOG

Changelog for package plansys2_executor

4.0.0 (2026-10-21)

  • One version for Humble, Jazzy, Kilted and Lyrical (#509)
  • Robust PlanSys2: one node per component, clients that wait, retry and see a lost plan (#507)
  • Execute everything Kairos plans: conditional effects, durations, timed literals, object fluents, recursive derived predicates, PDDL+ and constraints (#504)
  • Fixes in the executor, the build, the tests and the CI (#502)
  • Fixes in the PDDL parser and the problem expert (#498)
  • Executor robustness: Ctrl-C, BT nodes, one-call checks, replanning (#492)
  • Take back the at start effects of actions that do not end (#486)
  • ActionExecutor and performers: one request, its own messages (#488)
  • Shutdown test: one process per moment of the execution cycle (#482)
  • Clean Ctrl-C with a plan in execution (#475)
  • Kairos plan solver, and Kairos as the default planner (#465)
  • STNBTBuilder runs actions with no duration (#467)
  • Make STNBTBuilder work again (#453)
  • Tests discover only nodes on this host (#455)
  • Replace the deprecated EventsExecutor with SingleThreadedExecutor (#452)
  • Performers, executor clients and the TUI notice when PlanSys2 goes down (#448)
  • ProblemExpertClient: getProblem(true) no longer returns the problem from before the client's own changes (#440)
  • Consistent executor goal handling: cancels, replaced goals and result codes (#439)
  • Tie the executor thread to the lifecycle and synchronize it (#437)
  • Fail the goal instead of crashing when a plan cannot be set up (#433)
  • Update domain during execution (#414)
  • Contributors: Francisco Martín Rico

3.1.0 (2026-07-28)

  • Fix deprecated get_share_directory
  • Fix publish execution Info. TUI and CLI
  • Deprecate BTAction with rate. Fix all warnings
  • Fix performer hang
  • Fix orphan thread bug in ExecutorNode
  • Fix test
  • Add default
  • Set C++23 as default
  • Use std::string for BT API
  • Remove Eigen dependency export
  • adjust simple_btbuilder_tests.cpp
  • include Action.hpp in BTBuilder.hpp
  • Fix Groot2 monitor format
  • Added BTUtils and JSONUtils to ComputeBT and ExecutorNode
  • Added blackboard keys for compatibility with other nodes
  • Fix formats
  • rm old ActionVariant from ActionExecutor and adjust code
  • add plansys2::SequentialBTBuilder plugin
  • Fix print
  • fix code style
  • Merge branch 'rolling' into getExpr
  • Merge branch 'rolling' into getExpr
  • Added deprecated constructor
  • Merge branch 'PlanSys2:rolling' into fix_predicate_parsing
  • Minor fixes
  • Added explicit to constructor
  • Remove rate of ActionExecutorClient constructor and set as default parameter
  • Minor fix
  • Doc for executor
  • Added Groot2 monitor
  • Merge branch 'rolling' into getExpr
  • Contributors: Alberto Tudela, Eshan Savla, Francisco Martín Rico, Gustavo, Gustavo Rezende

3.0.0 (2025-06-06)

  • Modify export target. Rename metapackage
  • Revamp CMake and clean unused headers
  • Update install
  • Move pluginlib
  • Remove unused dependencies
  • Update CMakeLists to manage dependencies more efficiently in various packages.

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged plansys2_executor at Robotics Stack Exchange

No version for distro rolling showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 4.0.0
License Apache License, Version 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/PlanSys2/ros2_planning_system.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-10-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

This package contains the Executor module for the ROS2 Planning System

Maintainers

  • Francisco Martin Rico

Authors

No additional authors.

Executor

The Executor module is responsible for requesting a plan to the Planner, and carry it out, calling to the nodes in the client application that implements the actions. While executing each action, it checks the requisites (At Start, At End and Over all, in case of durative Actions). If the requirements are not meet, it cancels the plan execution. It also is responsible for applying the effects of the actions, requesting updates to the Problem Expert.

The main class of Executor is plansys2::ExecutorNode, which is instantiated from executor_node.cpp.

The executions of plans are carried out using ROS2 actions, in particular, plansys2_msgs::action::ExecutePlan. Take note that the goal must be already in the Domain Expert.

ExecutorNode ask for the domain and problem, and ask for a plan to the Planner. For each action in the plan, ExecuterNode creates a plansys2::ActionExecutor. The lifetime of this object is only one action. This object calls the actions implemented in the client appliciation using the ROS2 actions plansys2_msgs::action::ExecuteAction. Each client action implementation can use the class plansys2::ActionExecutorClient to avoid the complexity of managing ROS2 actions.

Using the feedback information from plansys2_msgs::action::ExecuteAction, feedback for plansys2::ExecutorNode is composed and returned to plansys2::ExecutorClient. It contains the current action in the plan and the progress in the currently executing action.

Next graph shows an example of the execution flow:

Executor Flow

Actions:

(in ActionExecutorClient)

Services:

Subscribed topics:

(in ActionExecutor)

  • /problem_expert/update_notify [std_msgs::msg::Empty]

Parameters:

(in ExecutorNode)

  • ~/action_timeouts/actions [list of strings]

    • List of actions which have duration overrun percentages specified.
  • ~/action_timeouts/[ACTION_NAME]/duration_overrun_percentage [double]

    • Defines the allowable time overrun of an action based on a percentage of the predicted plan duration. For example, if the plan predicts that an action should take 1000 secs and a duration overrun percentage of 20% is specified, then the action should be halted if the actual duration exceeds 1200 secs.
executor:
  ros__parameters:
    action_timeouts:
      actions: ["move"]
      move:
        duration_overrun_percentage: 20.0

CHANGELOG

Changelog for package plansys2_executor

4.0.0 (2026-10-21)

  • One version for Humble, Jazzy, Kilted and Lyrical (#509)
  • Robust PlanSys2: one node per component, clients that wait, retry and see a lost plan (#507)
  • Execute everything Kairos plans: conditional effects, durations, timed literals, object fluents, recursive derived predicates, PDDL+ and constraints (#504)
  • Fixes in the executor, the build, the tests and the CI (#502)
  • Fixes in the PDDL parser and the problem expert (#498)
  • Executor robustness: Ctrl-C, BT nodes, one-call checks, replanning (#492)
  • Take back the at start effects of actions that do not end (#486)
  • ActionExecutor and performers: one request, its own messages (#488)
  • Shutdown test: one process per moment of the execution cycle (#482)
  • Clean Ctrl-C with a plan in execution (#475)
  • Kairos plan solver, and Kairos as the default planner (#465)
  • STNBTBuilder runs actions with no duration (#467)
  • Make STNBTBuilder work again (#453)
  • Tests discover only nodes on this host (#455)
  • Replace the deprecated EventsExecutor with SingleThreadedExecutor (#452)
  • Performers, executor clients and the TUI notice when PlanSys2 goes down (#448)
  • ProblemExpertClient: getProblem(true) no longer returns the problem from before the client's own changes (#440)
  • Consistent executor goal handling: cancels, replaced goals and result codes (#439)
  • Tie the executor thread to the lifecycle and synchronize it (#437)
  • Fail the goal instead of crashing when a plan cannot be set up (#433)
  • Update domain during execution (#414)
  • Contributors: Francisco Martín Rico

3.1.0 (2026-07-28)

  • Fix deprecated get_share_directory
  • Fix publish execution Info. TUI and CLI
  • Deprecate BTAction with rate. Fix all warnings
  • Fix performer hang
  • Fix orphan thread bug in ExecutorNode
  • Fix test
  • Add default
  • Set C++23 as default
  • Use std::string for BT API
  • Remove Eigen dependency export
  • adjust simple_btbuilder_tests.cpp
  • include Action.hpp in BTBuilder.hpp
  • Fix Groot2 monitor format
  • Added BTUtils and JSONUtils to ComputeBT and ExecutorNode
  • Added blackboard keys for compatibility with other nodes
  • Fix formats
  • rm old ActionVariant from ActionExecutor and adjust code
  • add plansys2::SequentialBTBuilder plugin
  • Fix print
  • fix code style
  • Merge branch 'rolling' into getExpr
  • Merge branch 'rolling' into getExpr
  • Added deprecated constructor
  • Merge branch 'PlanSys2:rolling' into fix_predicate_parsing
  • Minor fixes
  • Added explicit to constructor
  • Remove rate of ActionExecutorClient constructor and set as default parameter
  • Minor fix
  • Doc for executor
  • Added Groot2 monitor
  • Merge branch 'rolling' into getExpr
  • Contributors: Alberto Tudela, Eshan Savla, Francisco Martín Rico, Gustavo, Gustavo Rezende

3.0.0 (2025-06-06)

  • Modify export target. Rename metapackage
  • Revamp CMake and clean unused headers
  • Update install
  • Move pluginlib
  • Remove unused dependencies
  • Update CMakeLists to manage dependencies more efficiently in various packages.

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged plansys2_executor at Robotics Stack Exchange

No version for distro github showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 4.0.0
License Apache License, Version 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/PlanSys2/ros2_planning_system.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-10-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

This package contains the Executor module for the ROS2 Planning System

Maintainers

  • Francisco Martin Rico

Authors

No additional authors.

Executor

The Executor module is responsible for requesting a plan to the Planner, and carry it out, calling to the nodes in the client application that implements the actions. While executing each action, it checks the requisites (At Start, At End and Over all, in case of durative Actions). If the requirements are not meet, it cancels the plan execution. It also is responsible for applying the effects of the actions, requesting updates to the Problem Expert.

The main class of Executor is plansys2::ExecutorNode, which is instantiated from executor_node.cpp.

The executions of plans are carried out using ROS2 actions, in particular, plansys2_msgs::action::ExecutePlan. Take note that the goal must be already in the Domain Expert.

ExecutorNode ask for the domain and problem, and ask for a plan to the Planner. For each action in the plan, ExecuterNode creates a plansys2::ActionExecutor. The lifetime of this object is only one action. This object calls the actions implemented in the client appliciation using the ROS2 actions plansys2_msgs::action::ExecuteAction. Each client action implementation can use the class plansys2::ActionExecutorClient to avoid the complexity of managing ROS2 actions.

Using the feedback information from plansys2_msgs::action::ExecuteAction, feedback for plansys2::ExecutorNode is composed and returned to plansys2::ExecutorClient. It contains the current action in the plan and the progress in the currently executing action.

Next graph shows an example of the execution flow:

Executor Flow

Actions:

(in ActionExecutorClient)

Services:

Subscribed topics:

(in ActionExecutor)

  • /problem_expert/update_notify [std_msgs::msg::Empty]

Parameters:

(in ExecutorNode)

  • ~/action_timeouts/actions [list of strings]

    • List of actions which have duration overrun percentages specified.
  • ~/action_timeouts/[ACTION_NAME]/duration_overrun_percentage [double]

    • Defines the allowable time overrun of an action based on a percentage of the predicted plan duration. For example, if the plan predicts that an action should take 1000 secs and a duration overrun percentage of 20% is specified, then the action should be halted if the actual duration exceeds 1200 secs.
executor:
  ros__parameters:
    action_timeouts:
      actions: ["move"]
      move:
        duration_overrun_percentage: 20.0

CHANGELOG

Changelog for package plansys2_executor

4.0.0 (2026-10-21)

  • One version for Humble, Jazzy, Kilted and Lyrical (#509)
  • Robust PlanSys2: one node per component, clients that wait, retry and see a lost plan (#507)
  • Execute everything Kairos plans: conditional effects, durations, timed literals, object fluents, recursive derived predicates, PDDL+ and constraints (#504)
  • Fixes in the executor, the build, the tests and the CI (#502)
  • Fixes in the PDDL parser and the problem expert (#498)
  • Executor robustness: Ctrl-C, BT nodes, one-call checks, replanning (#492)
  • Take back the at start effects of actions that do not end (#486)
  • ActionExecutor and performers: one request, its own messages (#488)
  • Shutdown test: one process per moment of the execution cycle (#482)
  • Clean Ctrl-C with a plan in execution (#475)
  • Kairos plan solver, and Kairos as the default planner (#465)
  • STNBTBuilder runs actions with no duration (#467)
  • Make STNBTBuilder work again (#453)
  • Tests discover only nodes on this host (#455)
  • Replace the deprecated EventsExecutor with SingleThreadedExecutor (#452)
  • Performers, executor clients and the TUI notice when PlanSys2 goes down (#448)
  • ProblemExpertClient: getProblem(true) no longer returns the problem from before the client's own changes (#440)
  • Consistent executor goal handling: cancels, replaced goals and result codes (#439)
  • Tie the executor thread to the lifecycle and synchronize it (#437)
  • Fail the goal instead of crashing when a plan cannot be set up (#433)
  • Update domain during execution (#414)
  • Contributors: Francisco Martín Rico

3.1.0 (2026-07-28)

  • Fix deprecated get_share_directory
  • Fix publish execution Info. TUI and CLI
  • Deprecate BTAction with rate. Fix all warnings
  • Fix performer hang
  • Fix orphan thread bug in ExecutorNode
  • Fix test
  • Add default
  • Set C++23 as default
  • Use std::string for BT API
  • Remove Eigen dependency export
  • adjust simple_btbuilder_tests.cpp
  • include Action.hpp in BTBuilder.hpp
  • Fix Groot2 monitor format
  • Added BTUtils and JSONUtils to ComputeBT and ExecutorNode
  • Added blackboard keys for compatibility with other nodes
  • Fix formats
  • rm old ActionVariant from ActionExecutor and adjust code
  • add plansys2::SequentialBTBuilder plugin
  • Fix print
  • fix code style
  • Merge branch 'rolling' into getExpr
  • Merge branch 'rolling' into getExpr
  • Added deprecated constructor
  • Merge branch 'PlanSys2:rolling' into fix_predicate_parsing
  • Minor fixes
  • Added explicit to constructor
  • Remove rate of ActionExecutorClient constructor and set as default parameter
  • Minor fix
  • Doc for executor
  • Added Groot2 monitor
  • Merge branch 'rolling' into getExpr
  • Contributors: Alberto Tudela, Eshan Savla, Francisco Martín Rico, Gustavo, Gustavo Rezende

3.0.0 (2025-06-06)

  • Modify export target. Rename metapackage
  • Revamp CMake and clean unused headers
  • Update install
  • Move pluginlib
  • Remove unused dependencies
  • Update CMakeLists to manage dependencies more efficiently in various packages.

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged plansys2_executor at Robotics Stack Exchange

Package Summary

Version 2.0.8
License Apache License, Version 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/IntelligentRoboticsLabs/ros2_planning_system.git
VCS Type git
VCS Version galactic-devel
Last Updated 2024-11-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

This package contains the Executor module for the ROS2 Planning System

Maintainers

  • Francisco Martin Rico

Authors

No additional authors.

Executor

The Executor module is responsible for requesting a plan to the Planner, and carry it out, calling to the nodes in the client application that implements the actions. While executing each action, it checks the requisites (At Start, At End and Over all, in case of durative Actions). If the requirements are not meet, it cancels the plan execution. It also is responsible for applying the effects of the actions, requesting updates to the Problem Expert.

The main class of Executor is plansys2::ExecutorNode, which is instantiated from executor_node.cpp.

The executions of plans are carried out using ROS2 actions, in particular, plansys2_msgs::action::ExecutePlan. Take note that the goal must be already in the Domain Expert.

ExecutorNode ask for the domain and problem, and ask for a plan to the Planner. For each action in the plan, ExecuterNode creates a plansys2::ActionExecutor. The lifetime of this object is only one action. This object calls the actions implemented in the client appliciation using the ROS2 actions plansys2_msgs::action::ExecuteAction. Each client action implementation can use the class plansys2::ActionExecutorClient to avoid the complexity of managing ROS2 actions.

Using the feedback information from plansys2_msgs::action::ExecuteAction, feedback for plansys2::ExecutorNode is composed and returned to plansys2::ExecutorClient. It contains the current action in the plan and the progress in the currently executing action.

Next graph shows an example of the execution flow:

Executor Flow

Actions:

(in ActionExecutorClient)

Services:

Subscribed topics:

(in ActionExecutor)

  • /problem_expert/update_notify [std_msgs::msg::Empty]

Parameters:

(in ExecutorNode)

  • ~/action_timeouts/actions [list of strings]

    • List of actions which have duration overrun percentages specified.
  • ~/action_timeouts/[ACTION_NAME]/duration_overrun_percentage [double]

    • Defines the allowable time overrun of an action based on a percentage of the predicted plan duration. For example, if the plan predicts that an action should take 1000 secs and a duration overrun percentage of 20% is specified, then the action should be halted if the actual duration exceeds 1200 secs.
executor:
  ros__parameters:
    action_timeouts:
      actions: ["move"]
      move:
        duration_overrun_percentage: 20.0

CHANGELOG

Changelog for package plansys2_executor

2.0.8 (2022-05-04)

2.0.7 (2022-05-04)

2.0.6 (2022-05-03)

2.0.5 (2022-05-03)

2.0.4 (2022-05-03)

  • Fix version
  • Merge pull request #223 from IntelligentRoboticsLabs/fix_threads_buildfarm Fix threads buildfarm
  • Fix ROS2 Buildfarm error due to Threads
  • Merge pull request #217 from jjzapf/check-action-finished Check action finished
  • check-action-finished: Putting leftover requirement check after state update in get_graph function.
  • check-action-finished: Use distinct names for temporary predicate/function variables inside of while loop.
  • check-action-finished: Reverting previous changes. Adding checks to WaitAction node to verify that action has finished.
  • check-action-finished: Fixing problem_expert.wait_overall_req_test in plansys2_executor/bt_node_test.cpp.
  • check-action-finished: Do not declare failure in check_overall_req_node if action has already finished.
  • Merge pull request #209 from sarcasticnature/master Improvements on recent BtActionNode changes
  • Merge pull request #216 from jjzapf/action-graph-bug-fix Plan-to-Action Graph Bug Fix
  • action-graph-bug-fix: Not applying at end effects when testing if actions can be run in parallel. Fixing bug in prune_backwards function.
  • Update unit tests to match changes
  • Remove extra do_work() call in on_activate() do_work() may call the function finish(), which will fail to deactivate the node if it is still in the on_activate callback.
  • Merge branch 'IntelligentRoboticsLabs:master' into master
  • Merge pull request #208 from xydesa/plan-dotgraph-bug Plan dotgraph color bug
  • Merge branch 'IntelligentRoboticsLabs:master' into master
  • Removing unused variable.
  • More accurately getting the status of an action by including the action's start time in the index for coloring the dotgraph.
  • Contributors: Alexander Xydes, Francisco Martín Rico, Jake Keller, Josh Zapf

2.0.3 (2022-04-03)

2.0.2 (2022-04-03)

  • Use apply and check method to create action graph
  • plan-to-action-graph-mod: Using apply and check method to search for causal links.
  • generalize-is-parallelizable: Cleaning up comments a bit.
  • generalize-is-parallelizable: Checking for contradictions at any point in time in the is_parallelizable function.
  • generalize-is-parallelizable: Improving human readability.
  • generalize-is-parallelizable: Applying ament uncrustify.
  • generalize-is-parallelizable: Generalizing the is_parallelizable function in BTBuilder so that the functions will also be checked.
  • action-graph-test: Adding unit test to verify action graph generation.
  • action-graph-fix: Using std::list to create action graph rather than …
  • action-graph-fix: Shortening line lengths to <100 characters. Applying ament uncrustify.
  • action-graph-fix: Checking for existing link before adding one when creating action graph.
  • Check all reqs and effect for roots
  • action-graph-fix: Setting executor_test TIMEOUT value to 300.
  • Add options to run command in plansys2 Terminal
  • Change runtime failures to BT::NodeStatus::FAILURE, add logging info to ExecutorClient
  • Add options to run command
  • action-graph-fix: Using std::list to create action graph rather than std::set. A std::set does not maintain insertion order, whereas a std::list does. Maintaining insertion order guarantees that graph traversal follows the same path as graph creation.
  • action-graph-test: Adding unit test to verify action graph generation.
  • Add Status recency in performers
  • Remove unnecessary node pointer
  • Merge branch 'IntelligentRoboticsLabs:master' into master
  • Logger tool - performers and plan
  • Logger tool - knowledge, info and action hub
  • Elevate failure logging from INFO to WARN/ERROR
  • Add action failure details to ExecutorClient
  • Contributors: Francisco Martín Rico, Jake Keller, Josh Zapf

2.0.1 (2022-02-03)

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged plansys2_executor at Robotics Stack Exchange

Package Summary

Version 2.0.11
License Apache License, Version 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/PlanSys2/ros2_planning_system.git
VCS Type git
VCS Version iron-devel
Last Updated 2023-08-02
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

This package contains the Executor module for the ROS2 Planning System

Maintainers

  • Francisco Martin Rico

Authors

No additional authors.

Executor

The Executor module is responsible for requesting a plan to the Planner, and carry it out, calling to the nodes in the client application that implements the actions. While executing each action, it checks the requisites (At Start, At End and Over all, in case of durative Actions). If the requirements are not meet, it cancels the plan execution. It also is responsible for applying the effects of the actions, requesting updates to the Problem Expert.

The main class of Executor is plansys2::ExecutorNode, which is instantiated from executor_node.cpp.

The executions of plans are carried out using ROS2 actions, in particular, plansys2_msgs::action::ExecutePlan. Take note that the goal must be already in the Domain Expert.

ExecutorNode ask for the domain and problem, and ask for a plan to the Planner. For each action in the plan, ExecuterNode creates a plansys2::ActionExecutor. The lifetime of this object is only one action. This object calls the actions implemented in the client appliciation using the ROS2 actions plansys2_msgs::action::ExecuteAction. Each client action implementation can use the class plansys2::ActionExecutorClient to avoid the complexity of managing ROS2 actions.

Using the feedback information from plansys2_msgs::action::ExecuteAction, feedback for plansys2::ExecutorNode is composed and returned to plansys2::ExecutorClient. It contains the current action in the plan and the progress in the currently executing action.

Next graph shows an example of the execution flow:

Executor Flow

Actions:

(in ActionExecutorClient)

Services:

Subscribed topics:

(in ActionExecutor)

  • /problem_expert/update_notify [std_msgs::msg::Empty]

Parameters:

(in ExecutorNode)

  • ~/action_timeouts/actions [list of strings]

    • List of actions which have duration overrun percentages specified.
  • ~/action_timeouts/[ACTION_NAME]/duration_overrun_percentage [double]

    • Defines the allowable time overrun of an action based on a percentage of the predicted plan duration. For example, if the plan predicts that an action should take 1000 secs and a duration overrun percentage of 20% is specified, then the action should be halted if the actual duration exceeds 1200 secs.
executor:
  ros__parameters:
    action_timeouts:
      actions: ["move"]
      move:
        duration_overrun_percentage: 20.0

CHANGELOG

Changelog for package plansys2_executor

2.0.11 (2023-08-02)

2.0.10 (2023-07-17)

  • Merge remote-tracking branch 'origin/humble-devel'
  • Merge pull request #252 from PlanSys2/check_at_end Check at end reqs in bt builder
  • Check at end reqs in bt builder
  • Merge pull request #251 from PlanSys2/fix_bt_node Fix bt node
  • Change MultiThreaded for SingleThreaded in CI failing tests
  • Change double quotes for simple ones (linter)
  • Insert in blackboard the action ROS 2 Node
  • Merge pull request #247 from jjzapf/standalone-bt-builder Standalone BT Builder Service
  • Fixing cpplint warning.
  • Fixing cpplint warnings.
  • Checking for self-referencing edges in STNBTBuilder. Adding standalone compute_bt service.
  • Merge remote-tracking branch 'origin/master' into fix_goal_structure_issue_205
  • Merge pull request #240 from jjzapf/bt-builder-plugins New BT Builder and Plugin Interface
  • bt-builder-plugins: Setting default BT builder plugin to SimpleBTBuilder.
  • bt-builder-plugins: Creating BT builder plugin interface. Moving current BT builder to plugin named SimpleBTBuilder. Adding new and improved STN-based BT builder plugin named STNBTBuilder.
  • Merge remote-tracking branch 'origin/master' into fix_goal_structure_issue_205
  • Merge remote-tracking branch 'upstream/master'
  • Merge branch 'IntelligentRoboticsLabs:master' into master
  • Contributors: Andrianov Roman, Francisco Martín Rico, Josh Zapf, Marco Roveri, Splinter1984

2.0.9 (2022-07-10)

  • Humble Upgrade
  • Fix possible bug https://github.com/ros2/rclcpp/issues/1968
  • Expose lifecyclemanager timeout as a parameter, other misc fixes/features
  • Linters are explicit
  • Add ctor to ExecutorClient for varying node name
  • Fix uninitialized variable in ExecutorClient
  • Contributors: Francisco Martín Rico, Jake Keller

2.0.8 (2022-05-04)

2.0.7 (2022-05-04)

2.0.6 (2022-05-03)

2.0.5 (2022-05-03)

2.0.4 (2022-05-03)

  • Fix version
  • Merge pull request #223 from IntelligentRoboticsLabs/fix_threads_buildfarm Fix threads buildfarm
  • Fix ROS2 Buildfarm error due to Threads
  • Merge pull request #217 from jjzapf/check-action-finished Check action finished
  • check-action-finished: Putting leftover requirement check after state update in get_graph function.
  • check-action-finished: Use distinct names for temporary predicate/function variables inside of while loop.
  • check-action-finished: Reverting previous changes. Adding checks to WaitAction node to verify that action has finished.
  • check-action-finished: Fixing problem_expert.wait_overall_req_test in plansys2_executor/bt_node_test.cpp.
  • check-action-finished: Do not declare failure in check_overall_req_node if action has already finished.
  • Merge pull request #209 from sarcasticnature/master Improvements on recent BtActionNode changes
  • Merge pull request #216 from jjzapf/action-graph-bug-fix Plan-to-Action Graph Bug Fix
  • action-graph-bug-fix: Not applying at end effects when testing if actions can be run in parallel. Fixing bug in prune_backwards function.
  • Update unit tests to match changes
  • Remove extra do_work() call in on_activate() do_work() may call the function finish(), which will fail to deactivate the node if it is still in the on_activate callback.
  • Merge branch 'IntelligentRoboticsLabs:master' into master
  • Merge pull request #208 from xydesa/plan-dotgraph-bug Plan dotgraph color bug
  • Merge branch 'IntelligentRoboticsLabs:master' into master

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged plansys2_executor at Robotics Stack Exchange

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 4.0.0
License Apache License, Version 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/PlanSys2/ros2_planning_system.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-10-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

This package contains the Executor module for the ROS2 Planning System

Maintainers

  • Francisco Martin Rico

Authors

No additional authors.

Executor

The Executor module is responsible for requesting a plan to the Planner, and carry it out, calling to the nodes in the client application that implements the actions. While executing each action, it checks the requisites (At Start, At End and Over all, in case of durative Actions). If the requirements are not meet, it cancels the plan execution. It also is responsible for applying the effects of the actions, requesting updates to the Problem Expert.

The main class of Executor is plansys2::ExecutorNode, which is instantiated from executor_node.cpp.

The executions of plans are carried out using ROS2 actions, in particular, plansys2_msgs::action::ExecutePlan. Take note that the goal must be already in the Domain Expert.

ExecutorNode ask for the domain and problem, and ask for a plan to the Planner. For each action in the plan, ExecuterNode creates a plansys2::ActionExecutor. The lifetime of this object is only one action. This object calls the actions implemented in the client appliciation using the ROS2 actions plansys2_msgs::action::ExecuteAction. Each client action implementation can use the class plansys2::ActionExecutorClient to avoid the complexity of managing ROS2 actions.

Using the feedback information from plansys2_msgs::action::ExecuteAction, feedback for plansys2::ExecutorNode is composed and returned to plansys2::ExecutorClient. It contains the current action in the plan and the progress in the currently executing action.

Next graph shows an example of the execution flow:

Executor Flow

Actions:

(in ActionExecutorClient)

Services:

Subscribed topics:

(in ActionExecutor)

  • /problem_expert/update_notify [std_msgs::msg::Empty]

Parameters:

(in ExecutorNode)

  • ~/action_timeouts/actions [list of strings]

    • List of actions which have duration overrun percentages specified.
  • ~/action_timeouts/[ACTION_NAME]/duration_overrun_percentage [double]

    • Defines the allowable time overrun of an action based on a percentage of the predicted plan duration. For example, if the plan predicts that an action should take 1000 secs and a duration overrun percentage of 20% is specified, then the action should be halted if the actual duration exceeds 1200 secs.
executor:
  ros__parameters:
    action_timeouts:
      actions: ["move"]
      move:
        duration_overrun_percentage: 20.0

CHANGELOG

Changelog for package plansys2_executor

4.0.0 (2026-10-21)

  • One version for Humble, Jazzy, Kilted and Lyrical (#509)
  • Robust PlanSys2: one node per component, clients that wait, retry and see a lost plan (#507)
  • Execute everything Kairos plans: conditional effects, durations, timed literals, object fluents, recursive derived predicates, PDDL+ and constraints (#504)
  • Fixes in the executor, the build, the tests and the CI (#502)
  • Fixes in the PDDL parser and the problem expert (#498)
  • Executor robustness: Ctrl-C, BT nodes, one-call checks, replanning (#492)
  • Take back the at start effects of actions that do not end (#486)
  • ActionExecutor and performers: one request, its own messages (#488)
  • Shutdown test: one process per moment of the execution cycle (#482)
  • Clean Ctrl-C with a plan in execution (#475)
  • Kairos plan solver, and Kairos as the default planner (#465)
  • STNBTBuilder runs actions with no duration (#467)
  • Make STNBTBuilder work again (#453)
  • Tests discover only nodes on this host (#455)
  • Replace the deprecated EventsExecutor with SingleThreadedExecutor (#452)
  • Performers, executor clients and the TUI notice when PlanSys2 goes down (#448)
  • ProblemExpertClient: getProblem(true) no longer returns the problem from before the client's own changes (#440)
  • Consistent executor goal handling: cancels, replaced goals and result codes (#439)
  • Tie the executor thread to the lifecycle and synchronize it (#437)
  • Fail the goal instead of crashing when a plan cannot be set up (#433)
  • Update domain during execution (#414)
  • Contributors: Francisco Martín Rico

3.1.0 (2026-07-28)

  • Fix deprecated get_share_directory
  • Fix publish execution Info. TUI and CLI
  • Deprecate BTAction with rate. Fix all warnings
  • Fix performer hang
  • Fix orphan thread bug in ExecutorNode
  • Fix test
  • Add default
  • Set C++23 as default
  • Use std::string for BT API
  • Remove Eigen dependency export
  • adjust simple_btbuilder_tests.cpp
  • include Action.hpp in BTBuilder.hpp
  • Fix Groot2 monitor format
  • Added BTUtils and JSONUtils to ComputeBT and ExecutorNode
  • Added blackboard keys for compatibility with other nodes
  • Fix formats
  • rm old ActionVariant from ActionExecutor and adjust code
  • add plansys2::SequentialBTBuilder plugin
  • Fix print
  • fix code style
  • Merge branch 'rolling' into getExpr
  • Merge branch 'rolling' into getExpr
  • Added deprecated constructor
  • Merge branch 'PlanSys2:rolling' into fix_predicate_parsing
  • Minor fixes
  • Added explicit to constructor
  • Remove rate of ActionExecutorClient constructor and set as default parameter
  • Minor fix
  • Doc for executor
  • Added Groot2 monitor
  • Merge branch 'rolling' into getExpr
  • Contributors: Alberto Tudela, Eshan Savla, Francisco Martín Rico, Gustavo, Gustavo Rezende

3.0.0 (2025-06-06)

  • Modify export target. Rename metapackage
  • Revamp CMake and clean unused headers
  • Update install
  • Move pluginlib
  • Remove unused dependencies
  • Update CMakeLists to manage dependencies more efficiently in various packages.

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged plansys2_executor at Robotics Stack Exchange

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 4.0.0
License Apache License, Version 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/PlanSys2/ros2_planning_system.git
VCS Type git
VCS Version humble-devel
Last Updated 2026-10-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

This package contains the Executor module for the ROS2 Planning System

Maintainers

  • Francisco Martin Rico

Authors

No additional authors.

Executor

The Executor module is responsible for requesting a plan to the Planner, and carry it out, calling to the nodes in the client application that implements the actions. While executing each action, it checks the requisites (At Start, At End and Over all, in case of durative Actions). If the requirements are not meet, it cancels the plan execution. It also is responsible for applying the effects of the actions, requesting updates to the Problem Expert.

The main class of Executor is plansys2::ExecutorNode, which is instantiated from executor_node.cpp.

The executions of plans are carried out using ROS2 actions, in particular, plansys2_msgs::action::ExecutePlan. Take note that the goal must be already in the Domain Expert.

ExecutorNode ask for the domain and problem, and ask for a plan to the Planner. For each action in the plan, ExecuterNode creates a plansys2::ActionExecutor. The lifetime of this object is only one action. This object calls the actions implemented in the client appliciation using the ROS2 actions plansys2_msgs::action::ExecuteAction. Each client action implementation can use the class plansys2::ActionExecutorClient to avoid the complexity of managing ROS2 actions.

Using the feedback information from plansys2_msgs::action::ExecuteAction, feedback for plansys2::ExecutorNode is composed and returned to plansys2::ExecutorClient. It contains the current action in the plan and the progress in the currently executing action.

Next graph shows an example of the execution flow:

Executor Flow

Actions:

(in ActionExecutorClient)

Services:

Subscribed topics:

(in ActionExecutor)

  • /problem_expert/update_notify [std_msgs::msg::Empty]

Parameters:

(in ExecutorNode)

  • ~/action_timeouts/actions [list of strings]

    • List of actions which have duration overrun percentages specified.
  • ~/action_timeouts/[ACTION_NAME]/duration_overrun_percentage [double]

    • Defines the allowable time overrun of an action based on a percentage of the predicted plan duration. For example, if the plan predicts that an action should take 1000 secs and a duration overrun percentage of 20% is specified, then the action should be halted if the actual duration exceeds 1200 secs.
executor:
  ros__parameters:
    action_timeouts:
      actions: ["move"]
      move:
        duration_overrun_percentage: 20.0

CHANGELOG

Changelog for package plansys2_executor

4.0.0 (2026-10-21)

  • One version for Humble, Jazzy, Kilted and Lyrical (#509)
  • Robust PlanSys2: one node per component, clients that wait, retry and see a lost plan (#507)
  • Execute everything Kairos plans: conditional effects, durations, timed literals, object fluents, recursive derived predicates, PDDL+ and constraints (#504)
  • Fixes in the executor, the build, the tests and the CI (#502)
  • Fixes in the PDDL parser and the problem expert (#498)
  • Executor robustness: Ctrl-C, BT nodes, one-call checks, replanning (#492)
  • Take back the at start effects of actions that do not end (#486)
  • ActionExecutor and performers: one request, its own messages (#488)
  • Shutdown test: one process per moment of the execution cycle (#482)
  • Clean Ctrl-C with a plan in execution (#475)
  • Kairos plan solver, and Kairos as the default planner (#465)
  • STNBTBuilder runs actions with no duration (#467)
  • Make STNBTBuilder work again (#453)
  • Tests discover only nodes on this host (#455)
  • Replace the deprecated EventsExecutor with SingleThreadedExecutor (#452)
  • Performers, executor clients and the TUI notice when PlanSys2 goes down (#448)
  • ProblemExpertClient: getProblem(true) no longer returns the problem from before the client's own changes (#440)
  • Consistent executor goal handling: cancels, replaced goals and result codes (#439)
  • Tie the executor thread to the lifecycle and synchronize it (#437)
  • Fail the goal instead of crashing when a plan cannot be set up (#433)
  • Update domain during execution (#414)
  • Contributors: Francisco Martín Rico

3.1.0 (2026-07-28)

  • Fix deprecated get_share_directory
  • Fix publish execution Info. TUI and CLI
  • Deprecate BTAction with rate. Fix all warnings
  • Fix performer hang
  • Fix orphan thread bug in ExecutorNode
  • Fix test
  • Add default
  • Set C++23 as default
  • Use std::string for BT API
  • Remove Eigen dependency export
  • adjust simple_btbuilder_tests.cpp
  • include Action.hpp in BTBuilder.hpp
  • Fix Groot2 monitor format
  • Added BTUtils and JSONUtils to ComputeBT and ExecutorNode
  • Added blackboard keys for compatibility with other nodes
  • Fix formats
  • rm old ActionVariant from ActionExecutor and adjust code
  • add plansys2::SequentialBTBuilder plugin
  • Fix print
  • fix code style
  • Merge branch 'rolling' into getExpr
  • Merge branch 'rolling' into getExpr
  • Added deprecated constructor
  • Merge branch 'PlanSys2:rolling' into fix_predicate_parsing
  • Minor fixes
  • Added explicit to constructor
  • Remove rate of ActionExecutorClient constructor and set as default parameter
  • Minor fix
  • Doc for executor
  • Added Groot2 monitor
  • Merge branch 'rolling' into getExpr
  • Contributors: Alberto Tudela, Eshan Savla, Francisco Martín Rico, Gustavo, Gustavo Rezende

3.0.0 (2025-06-06)

  • Modify export target. Rename metapackage
  • Revamp CMake and clean unused headers
  • Update install
  • Move pluginlib
  • Remove unused dependencies
  • Update CMakeLists to manage dependencies more efficiently in various packages.

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged plansys2_executor at Robotics Stack Exchange