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
Maintainers
- Francisco Martin Rico
Authors
Problem Expert
The Problem Expert module is responsible for maintaining the instances, predicates and goals of the PDDL problem.
The main class is plansys2::ProblemExpertNode, which is instantiated from ProblemExpertNode.cpp. plansys2::ProblemExpertNode is a rclcpp_lifecycle::LifecycleNode, but currently the functionality is in the active phase.
The class responsible for maintaining this problem instance is plansys2::ProblemExpert, which is independent of ROS2.
The Problem Expert is dynamic and volatile, accessing its functionality through ROS2 services. To facilitate the task of the application developer, an plansys2::ProblemExpertClient class has been implemented that hides the complexity of handling ROS2 messages and services. Its API is similar to that of plansys2::ProblemExpert, since both have to implement the plansys2::ProblemExpertInterface interface.
The Problem Expert instantiates a plansys2::DomainExpertClient, and every update query is verified against domain to check if it is valid.
Every update in the Problem, is notified publishing a std_msgs::msg::Empty in /problem_expert/update_notify. It helps other modules and applications to be aware of updates, being not necessary to do polling to check it.
Services
-
/problem_expert/add_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/add_problem_goal[plansys2_msgs::srv::AddProblemGoal] -
/problem_expert/add_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/add_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/clear_problem_knowledge[plansys2_msgs::srv::ClearProblemKnowledge] -
/problem_expert/exist_problem_function[plansys2_msgs::srv::ExistNode] -
/problem_expert/exist_problem_predicate[plansys2_msgs::srv::ExistNode] -
/problem_expert/get_problem[plansys2_msgs::srv::GetProblem] -
/problem_expert/get_problem_function[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_functions[plansys2_msgs::srv::GetStates] -
/problem_expert/get_problem_goal[plansys2_msgs::srv::GetProblemGoal] -
/problem_expert/get_problem_instance[plansys2_msgs::srv::GetProblemInstanceDetails] -
/problem_expert/get_problem_instances[plansys2_msgs::srv::GetProblemInstances] -
/problem_expert/get_problem_predicate[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_predicates[plansys2_msgs::srv::GetStates] -
/problem_expert/is_problem_goal_satisfied[plansys2_msgs::srv::IsProblemGoalSatisfied] -
/problem_expert/remove_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/remove_problem_goal[plansys2_msgs::srv::RemoveProblemGoal] -
/problem_expert/remove_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/remove_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/update_problem_function[plansys2_msgs::srv::AffectNode]
Published topics
-
/problem_expert/update_notify[std_msgs::msg::Empty]
Changelog for package plansys2_problem_expert
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)
- Domain change: done once the problem expert has the new domain (#494)
- Executor robustness: Ctrl-C, BT nodes, one-call checks, replanning (#492)
- Take back the at start effects of actions that do not end (#486)
- Problem expert client: tell a missing answer apart from "no" (#484)
- Numbers keep their precision in numeric effects and in the PDDL text (#478)
- Kairos plan solver, and Kairos as the default planner (#465)
- forall and imply in conditions, goals and effects (#462)
- Accept objects of any descendant type, not only of direct subtypes (#461)
- Negation and numeric equality in evaluate() (#459)
- Problem metric: minimize or maximize any numeric expression (#457)
- Tests discover only nodes on this host (#455)
- Replace the deprecated EventsExecutor with SingleThreadedExecutor (#452)
- ProblemExpertClient: getProblem(true) no longer returns the problem from before the client's own changes (#440)
- Reject instance names that are not PDDL names (#429)
- Use 32-bit node ids and validate trees before walking them (#425)
- Reject malformed PDDL instead of crashing (#424)
- Update domain during execution (#414)
- Contributors: Francisco Martín Rico
3.1.0 (2026-07-28)
- Deprecate BTAction with rate. Fix all warnings
- Merge pull request #392 from fmrico/fix_ci_2 Fix ci 2
- Set C++23 as default
- derived_name.name -> derived_name.predicate.name
- fix evaluate_not test
- Added optional dependency
- Improve doc for domain and problem
- Doc for problem expert
- Merge branch 'rolling' into getExpr
- Contributors: Alberto Tudela, Eshan Savla, Francisco Martín Rico, Gustavo, Gustavo Rezende
3.0.0 (2025-06-06)
- Remove unnecessary depends
- Revamp CMake and clean unused headers
- Update install
- Remove unused dependencies
- Update CMakeLists to manage dependencies more efficiently in various packages.
- Update CI adding BT.CPP as source dependecy
- Fix deprecation of ament_target_dependencies
- Multiple plans and replanning stability
- Linting and fixing tests
- Add getProblemWithTimestamp to Problem Expert
- Replanning
- Adaptation of the rest of the packages
- Add chached getDomain() and getProblem()
- Add chached getDomain()
- Change to EventsExecutor
- 🎨 linter for plansys2_pddl_parser
- Add support for ParamExpression and ConstExpression
- Support for existential preconditions
- evaluate exists use_state==false
- fix code style
- evaluate exsits w/ problem_client
- add replace_children_param
- Support negation of CompositeExpression
- Add support for derived predicates
- return derived predicates in getPredicates
- add cart_produdct and replace_children_param
- fix bug in ParamExpression getTree
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged plansys2_problem_expert 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
Maintainers
- Francisco Martin Rico
Authors
Problem Expert
The Problem Expert module is responsible for maintaining the instances, predicates and goals of the PDDL problem.
The main class is plansys2::ProblemExpertNode, which is instantiated from ProblemExpertNode.cpp. plansys2::ProblemExpertNode is a rclcpp_lifecycle::LifecycleNode, but currently the functionality is in the active phase.
The class responsible for maintaining this problem instance is plansys2::ProblemExpert, which is independent of ROS2.
The Problem Expert is dynamic and volatile, accessing its functionality through ROS2 services. To facilitate the task of the application developer, an plansys2::ProblemExpertClient class has been implemented that hides the complexity of handling ROS2 messages and services. Its API is similar to that of plansys2::ProblemExpert, since both have to implement the plansys2::ProblemExpertInterface interface.
The Problem Expert instantiates a plansys2::DomainExpertClient, and every update query is verified against domain to check if it is valid.
Every update in the Problem, is notified publishing a std_msgs::msg::Empty in /problem_expert/update_notify. It helps other modules and applications to be aware of updates, being not necessary to do polling to check it.
Services
-
/problem_expert/add_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/add_problem_goal[plansys2_msgs::srv::AddProblemGoal] -
/problem_expert/add_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/add_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/clear_problem_knowledge[plansys2_msgs::srv::ClearProblemKnowledge] -
/problem_expert/exist_problem_function[plansys2_msgs::srv::ExistNode] -
/problem_expert/exist_problem_predicate[plansys2_msgs::srv::ExistNode] -
/problem_expert/get_problem[plansys2_msgs::srv::GetProblem] -
/problem_expert/get_problem_function[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_functions[plansys2_msgs::srv::GetStates] -
/problem_expert/get_problem_goal[plansys2_msgs::srv::GetProblemGoal] -
/problem_expert/get_problem_instance[plansys2_msgs::srv::GetProblemInstanceDetails] -
/problem_expert/get_problem_instances[plansys2_msgs::srv::GetProblemInstances] -
/problem_expert/get_problem_predicate[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_predicates[plansys2_msgs::srv::GetStates] -
/problem_expert/is_problem_goal_satisfied[plansys2_msgs::srv::IsProblemGoalSatisfied] -
/problem_expert/remove_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/remove_problem_goal[plansys2_msgs::srv::RemoveProblemGoal] -
/problem_expert/remove_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/remove_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/update_problem_function[plansys2_msgs::srv::AffectNode]
Published topics
-
/problem_expert/update_notify[std_msgs::msg::Empty]
Changelog for package plansys2_problem_expert
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)
- Domain change: done once the problem expert has the new domain (#494)
- Executor robustness: Ctrl-C, BT nodes, one-call checks, replanning (#492)
- Take back the at start effects of actions that do not end (#486)
- Problem expert client: tell a missing answer apart from "no" (#484)
- Numbers keep their precision in numeric effects and in the PDDL text (#478)
- Kairos plan solver, and Kairos as the default planner (#465)
- forall and imply in conditions, goals and effects (#462)
- Accept objects of any descendant type, not only of direct subtypes (#461)
- Negation and numeric equality in evaluate() (#459)
- Problem metric: minimize or maximize any numeric expression (#457)
- Tests discover only nodes on this host (#455)
- Replace the deprecated EventsExecutor with SingleThreadedExecutor (#452)
- ProblemExpertClient: getProblem(true) no longer returns the problem from before the client's own changes (#440)
- Reject instance names that are not PDDL names (#429)
- Use 32-bit node ids and validate trees before walking them (#425)
- Reject malformed PDDL instead of crashing (#424)
- Update domain during execution (#414)
- Contributors: Francisco Martín Rico
3.1.0 (2026-07-28)
- Deprecate BTAction with rate. Fix all warnings
- Merge pull request #392 from fmrico/fix_ci_2 Fix ci 2
- Set C++23 as default
- derived_name.name -> derived_name.predicate.name
- fix evaluate_not test
- Added optional dependency
- Improve doc for domain and problem
- Doc for problem expert
- Merge branch 'rolling' into getExpr
- Contributors: Alberto Tudela, Eshan Savla, Francisco Martín Rico, Gustavo, Gustavo Rezende
3.0.0 (2025-06-06)
- Remove unnecessary depends
- Revamp CMake and clean unused headers
- Update install
- Remove unused dependencies
- Update CMakeLists to manage dependencies more efficiently in various packages.
- Update CI adding BT.CPP as source dependecy
- Fix deprecation of ament_target_dependencies
- Multiple plans and replanning stability
- Linting and fixing tests
- Add getProblemWithTimestamp to Problem Expert
- Replanning
- Adaptation of the rest of the packages
- Add chached getDomain() and getProblem()
- Add chached getDomain()
- Change to EventsExecutor
- 🎨 linter for plansys2_pddl_parser
- Add support for ParamExpression and ConstExpression
- Support for existential preconditions
- evaluate exists use_state==false
- fix code style
- evaluate exsits w/ problem_client
- add replace_children_param
- Support negation of CompositeExpression
- Add support for derived predicates
- return derived predicates in getPredicates
- add cart_produdct and replace_children_param
- fix bug in ParamExpression getTree
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged plansys2_problem_expert 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
Maintainers
- Francisco Martin Rico
Authors
Problem Expert
The Problem Expert module is responsible for maintaining the instances, predicates and goals of the PDDL problem.
The main class is plansys2::ProblemExpertNode, which is instantiated from ProblemExpertNode.cpp. plansys2::ProblemExpertNode is a rclcpp_lifecycle::LifecycleNode, but currently the functionality is in the active phase.
The class responsible for maintaining this problem instance is plansys2::ProblemExpert, which is independent of ROS2.
The Problem Expert is dynamic and volatile, accessing its functionality through ROS2 services. To facilitate the task of the application developer, an plansys2::ProblemExpertClient class has been implemented that hides the complexity of handling ROS2 messages and services. Its API is similar to that of plansys2::ProblemExpert, since both have to implement the plansys2::ProblemExpertInterface interface.
The Problem Expert instantiates a plansys2::DomainExpertClient, and every update query is verified against domain to check if it is valid.
Every update in the Problem, is notified publishing a std_msgs::msg::Empty in /problem_expert/update_notify. It helps other modules and applications to be aware of updates, being not necessary to do polling to check it.
Services
-
/problem_expert/add_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/add_problem_goal[plansys2_msgs::srv::AddProblemGoal] -
/problem_expert/add_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/add_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/clear_problem_knowledge[plansys2_msgs::srv::ClearProblemKnowledge] -
/problem_expert/exist_problem_function[plansys2_msgs::srv::ExistNode] -
/problem_expert/exist_problem_predicate[plansys2_msgs::srv::ExistNode] -
/problem_expert/get_problem[plansys2_msgs::srv::GetProblem] -
/problem_expert/get_problem_function[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_functions[plansys2_msgs::srv::GetStates] -
/problem_expert/get_problem_goal[plansys2_msgs::srv::GetProblemGoal] -
/problem_expert/get_problem_instance[plansys2_msgs::srv::GetProblemInstanceDetails] -
/problem_expert/get_problem_instances[plansys2_msgs::srv::GetProblemInstances] -
/problem_expert/get_problem_predicate[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_predicates[plansys2_msgs::srv::GetStates] -
/problem_expert/is_problem_goal_satisfied[plansys2_msgs::srv::IsProblemGoalSatisfied] -
/problem_expert/remove_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/remove_problem_goal[plansys2_msgs::srv::RemoveProblemGoal] -
/problem_expert/remove_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/remove_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/update_problem_function[plansys2_msgs::srv::AffectNode]
Published topics
-
/problem_expert/update_notify[std_msgs::msg::Empty]
Changelog for package plansys2_problem_expert
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)
- Domain change: done once the problem expert has the new domain (#494)
- Executor robustness: Ctrl-C, BT nodes, one-call checks, replanning (#492)
- Take back the at start effects of actions that do not end (#486)
- Problem expert client: tell a missing answer apart from "no" (#484)
- Numbers keep their precision in numeric effects and in the PDDL text (#478)
- Kairos plan solver, and Kairos as the default planner (#465)
- forall and imply in conditions, goals and effects (#462)
- Accept objects of any descendant type, not only of direct subtypes (#461)
- Negation and numeric equality in evaluate() (#459)
- Problem metric: minimize or maximize any numeric expression (#457)
- Tests discover only nodes on this host (#455)
- Replace the deprecated EventsExecutor with SingleThreadedExecutor (#452)
- ProblemExpertClient: getProblem(true) no longer returns the problem from before the client's own changes (#440)
- Reject instance names that are not PDDL names (#429)
- Use 32-bit node ids and validate trees before walking them (#425)
- Reject malformed PDDL instead of crashing (#424)
- Update domain during execution (#414)
- Contributors: Francisco Martín Rico
3.1.0 (2026-07-28)
- Deprecate BTAction with rate. Fix all warnings
- Merge pull request #392 from fmrico/fix_ci_2 Fix ci 2
- Set C++23 as default
- derived_name.name -> derived_name.predicate.name
- fix evaluate_not test
- Added optional dependency
- Improve doc for domain and problem
- Doc for problem expert
- Merge branch 'rolling' into getExpr
- Contributors: Alberto Tudela, Eshan Savla, Francisco Martín Rico, Gustavo, Gustavo Rezende
3.0.0 (2025-06-06)
- Remove unnecessary depends
- Revamp CMake and clean unused headers
- Update install
- Remove unused dependencies
- Update CMakeLists to manage dependencies more efficiently in various packages.
- Update CI adding BT.CPP as source dependecy
- Fix deprecation of ament_target_dependencies
- Multiple plans and replanning stability
- Linting and fixing tests
- Add getProblemWithTimestamp to Problem Expert
- Replanning
- Adaptation of the rest of the packages
- Add chached getDomain() and getProblem()
- Add chached getDomain()
- Change to EventsExecutor
- 🎨 linter for plansys2_pddl_parser
- Add support for ParamExpression and ConstExpression
- Support for existential preconditions
- evaluate exists use_state==false
- fix code style
- evaluate exsits w/ problem_client
- add replace_children_param
- Support negation of CompositeExpression
- Add support for derived predicates
- return derived predicates in getPredicates
- add cart_produdct and replace_children_param
- fix bug in ParamExpression getTree
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged plansys2_problem_expert 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
Maintainers
- Francisco Martin Rico
Authors
Problem Expert
The Problem Expert module is responsible for maintaining the instances, predicates and goals of the PDDL problem.
The main class is plansys2::ProblemExpertNode, which is instantiated from ProblemExpertNode.cpp. plansys2::ProblemExpertNode is a rclcpp_lifecycle::LifecycleNode, but currently the functionality is in the active phase.
The class responsible for maintaining this problem instance is plansys2::ProblemExpert, which is independent of ROS2.
The Problem Expert is dynamic and volatile, accessing its functionality through ROS2 services. To facilitate the task of the application developer, an plansys2::ProblemExpertClient class has been implemented that hides the complexity of handling ROS2 messages and services. Its API is similar to that of plansys2::ProblemExpert, since both have to implement the plansys2::ProblemExpertInterface interface.
The Problem Expert instantiates a plansys2::DomainExpertClient, and every update query is verified against domain to check if it is valid.
Every update in the Problem, is notified publishing a std_msgs::msg::Empty in /problem_expert/update_notify. It helps other modules and applications to be aware of updates, being not necessary to do polling to check it.
Services
-
/problem_expert/add_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/add_problem_goal[plansys2_msgs::srv::AddProblemGoal] -
/problem_expert/add_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/add_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/clear_problem_knowledge[plansys2_msgs::srv::ClearProblemKnowledge] -
/problem_expert/exist_problem_function[plansys2_msgs::srv::ExistNode] -
/problem_expert/exist_problem_predicate[plansys2_msgs::srv::ExistNode] -
/problem_expert/get_problem[plansys2_msgs::srv::GetProblem] -
/problem_expert/get_problem_function[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_functions[plansys2_msgs::srv::GetStates] -
/problem_expert/get_problem_goal[plansys2_msgs::srv::GetProblemGoal] -
/problem_expert/get_problem_instance[plansys2_msgs::srv::GetProblemInstanceDetails] -
/problem_expert/get_problem_instances[plansys2_msgs::srv::GetProblemInstances] -
/problem_expert/get_problem_predicate[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_predicates[plansys2_msgs::srv::GetStates] -
/problem_expert/is_problem_goal_satisfied[plansys2_msgs::srv::IsProblemGoalSatisfied] -
/problem_expert/remove_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/remove_problem_goal[plansys2_msgs::srv::RemoveProblemGoal] -
/problem_expert/remove_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/remove_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/update_problem_function[plansys2_msgs::srv::AffectNode]
Published topics
-
/problem_expert/update_notify[std_msgs::msg::Empty]
Changelog for package plansys2_problem_expert
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)
- Domain change: done once the problem expert has the new domain (#494)
- Executor robustness: Ctrl-C, BT nodes, one-call checks, replanning (#492)
- Take back the at start effects of actions that do not end (#486)
- Problem expert client: tell a missing answer apart from "no" (#484)
- Numbers keep their precision in numeric effects and in the PDDL text (#478)
- Kairos plan solver, and Kairos as the default planner (#465)
- forall and imply in conditions, goals and effects (#462)
- Accept objects of any descendant type, not only of direct subtypes (#461)
- Negation and numeric equality in evaluate() (#459)
- Problem metric: minimize or maximize any numeric expression (#457)
- Tests discover only nodes on this host (#455)
- Replace the deprecated EventsExecutor with SingleThreadedExecutor (#452)
- ProblemExpertClient: getProblem(true) no longer returns the problem from before the client's own changes (#440)
- Reject instance names that are not PDDL names (#429)
- Use 32-bit node ids and validate trees before walking them (#425)
- Reject malformed PDDL instead of crashing (#424)
- Update domain during execution (#414)
- Contributors: Francisco Martín Rico
3.1.0 (2026-07-28)
- Deprecate BTAction with rate. Fix all warnings
- Merge pull request #392 from fmrico/fix_ci_2 Fix ci 2
- Set C++23 as default
- derived_name.name -> derived_name.predicate.name
- fix evaluate_not test
- Added optional dependency
- Improve doc for domain and problem
- Doc for problem expert
- Merge branch 'rolling' into getExpr
- Contributors: Alberto Tudela, Eshan Savla, Francisco Martín Rico, Gustavo, Gustavo Rezende
3.0.0 (2025-06-06)
- Remove unnecessary depends
- Revamp CMake and clean unused headers
- Update install
- Remove unused dependencies
- Update CMakeLists to manage dependencies more efficiently in various packages.
- Update CI adding BT.CPP as source dependecy
- Fix deprecation of ament_target_dependencies
- Multiple plans and replanning stability
- Linting and fixing tests
- Add getProblemWithTimestamp to Problem Expert
- Replanning
- Adaptation of the rest of the packages
- Add chached getDomain() and getProblem()
- Add chached getDomain()
- Change to EventsExecutor
- 🎨 linter for plansys2_pddl_parser
- Add support for ParamExpression and ConstExpression
- Support for existential preconditions
- evaluate exists use_state==false
- fix code style
- evaluate exsits w/ problem_client
- add replace_children_param
- Support negation of CompositeExpression
- Add support for derived predicates
- return derived predicates in getPredicates
- add cart_produdct and replace_children_param
- fix bug in ParamExpression getTree
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged plansys2_problem_expert 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 | humble-devel |
| Last Updated | 2026-10-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martin Rico
Authors
Problem Expert
The Problem Expert module is responsible for maintaining the instances, predicates and goals of the PDDL problem.
The main class is plansys2::ProblemExpertNode, which is instantiated from ProblemExpertNode.cpp. plansys2::ProblemExpertNode is a rclcpp_lifecycle::LifecycleNode, but currently the functionality is in the active phase.
The class responsible for maintaining this problem instance is plansys2::ProblemExpert, which is independent of ROS2.
The Problem Expert is dynamic and volatile, accessing its functionality through ROS2 services. To facilitate the task of the application developer, an plansys2::ProblemExpertClient class has been implemented that hides the complexity of handling ROS2 messages and services. Its API is similar to that of plansys2::ProblemExpert, since both have to implement the plansys2::ProblemExpertInterface interface.
The Problem Expert instantiates a plansys2::DomainExpertClient, and every update query is verified against domain to check if it is valid.
Every update in the Problem, is notified publishing a std_msgs::msg::Empty in /problem_expert/update_notify. It helps other modules and applications to be aware of updates, being not necessary to do polling to check it.
Services
-
/problem_expert/add_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/add_problem_goal[plansys2_msgs::srv::AddProblemGoal] -
/problem_expert/add_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/add_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/clear_problem_knowledge[plansys2_msgs::srv::ClearProblemKnowledge] -
/problem_expert/exist_problem_function[plansys2_msgs::srv::ExistNode] -
/problem_expert/exist_problem_predicate[plansys2_msgs::srv::ExistNode] -
/problem_expert/get_problem[plansys2_msgs::srv::GetProblem] -
/problem_expert/get_problem_function[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_functions[plansys2_msgs::srv::GetStates] -
/problem_expert/get_problem_goal[plansys2_msgs::srv::GetProblemGoal] -
/problem_expert/get_problem_instance[plansys2_msgs::srv::GetProblemInstanceDetails] -
/problem_expert/get_problem_instances[plansys2_msgs::srv::GetProblemInstances] -
/problem_expert/get_problem_predicate[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_predicates[plansys2_msgs::srv::GetStates] -
/problem_expert/is_problem_goal_satisfied[plansys2_msgs::srv::IsProblemGoalSatisfied] -
/problem_expert/remove_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/remove_problem_goal[plansys2_msgs::srv::RemoveProblemGoal] -
/problem_expert/remove_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/remove_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/update_problem_function[plansys2_msgs::srv::AffectNode]
Published topics
-
/problem_expert/update_notify[std_msgs::msg::Empty]
Changelog for package plansys2_problem_expert
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)
- Domain change: done once the problem expert has the new domain (#494)
- Executor robustness: Ctrl-C, BT nodes, one-call checks, replanning (#492)
- Take back the at start effects of actions that do not end (#486)
- Problem expert client: tell a missing answer apart from "no" (#484)
- Numbers keep their precision in numeric effects and in the PDDL text (#478)
- Kairos plan solver, and Kairos as the default planner (#465)
- forall and imply in conditions, goals and effects (#462)
- Accept objects of any descendant type, not only of direct subtypes (#461)
- Negation and numeric equality in evaluate() (#459)
- Problem metric: minimize or maximize any numeric expression (#457)
- Tests discover only nodes on this host (#455)
- Replace the deprecated EventsExecutor with SingleThreadedExecutor (#452)
- ProblemExpertClient: getProblem(true) no longer returns the problem from before the client's own changes (#440)
- Reject instance names that are not PDDL names (#429)
- Use 32-bit node ids and validate trees before walking them (#425)
- Reject malformed PDDL instead of crashing (#424)
- Update domain during execution (#414)
- Contributors: Francisco Martín Rico
3.1.0 (2026-07-28)
- Deprecate BTAction with rate. Fix all warnings
- Merge pull request #392 from fmrico/fix_ci_2 Fix ci 2
- Set C++23 as default
- derived_name.name -> derived_name.predicate.name
- fix evaluate_not test
- Added optional dependency
- Improve doc for domain and problem
- Doc for problem expert
- Merge branch 'rolling' into getExpr
- Contributors: Alberto Tudela, Eshan Savla, Francisco Martín Rico, Gustavo, Gustavo Rezende
3.0.0 (2025-06-06)
- Remove unnecessary depends
- Revamp CMake and clean unused headers
- Update install
- Remove unused dependencies
- Update CMakeLists to manage dependencies more efficiently in various packages.
- Update CI adding BT.CPP as source dependecy
- Fix deprecation of ament_target_dependencies
- Multiple plans and replanning stability
- Linting and fixing tests
- Add getProblemWithTimestamp to Problem Expert
- Replanning
- Adaptation of the rest of the packages
- Add chached getDomain() and getProblem()
- Add chached getDomain()
- Change to EventsExecutor
- 🎨 linter for plansys2_pddl_parser
- Add support for ParamExpression and ConstExpression
- Support for existential preconditions
- evaluate exists use_state==false
- fix code style
- evaluate exsits w/ problem_client
- add replace_children_param
- Support negation of CompositeExpression
- Add support for derived predicates
- return derived predicates in getPredicates
- add cart_produdct and replace_children_param
- fix bug in ParamExpression getTree
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged plansys2_problem_expert 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 | humble-devel |
| Last Updated | 2026-10-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martin Rico
Authors
Problem Expert
The Problem Expert module is responsible for maintaining the instances, predicates and goals of the PDDL problem.
The main class is plansys2::ProblemExpertNode, which is instantiated from ProblemExpertNode.cpp. plansys2::ProblemExpertNode is a rclcpp_lifecycle::LifecycleNode, but currently the functionality is in the active phase.
The class responsible for maintaining this problem instance is plansys2::ProblemExpert, which is independent of ROS2.
The Problem Expert is dynamic and volatile, accessing its functionality through ROS2 services. To facilitate the task of the application developer, an plansys2::ProblemExpertClient class has been implemented that hides the complexity of handling ROS2 messages and services. Its API is similar to that of plansys2::ProblemExpert, since both have to implement the plansys2::ProblemExpertInterface interface.
The Problem Expert instantiates a plansys2::DomainExpertClient, and every update query is verified against domain to check if it is valid.
Every update in the Problem, is notified publishing a std_msgs::msg::Empty in /problem_expert/update_notify. It helps other modules and applications to be aware of updates, being not necessary to do polling to check it.
Services
-
/problem_expert/add_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/add_problem_goal[plansys2_msgs::srv::AddProblemGoal] -
/problem_expert/add_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/add_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/clear_problem_knowledge[plansys2_msgs::srv::ClearProblemKnowledge] -
/problem_expert/exist_problem_function[plansys2_msgs::srv::ExistNode] -
/problem_expert/exist_problem_predicate[plansys2_msgs::srv::ExistNode] -
/problem_expert/get_problem[plansys2_msgs::srv::GetProblem] -
/problem_expert/get_problem_function[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_functions[plansys2_msgs::srv::GetStates] -
/problem_expert/get_problem_goal[plansys2_msgs::srv::GetProblemGoal] -
/problem_expert/get_problem_instance[plansys2_msgs::srv::GetProblemInstanceDetails] -
/problem_expert/get_problem_instances[plansys2_msgs::srv::GetProblemInstances] -
/problem_expert/get_problem_predicate[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_predicates[plansys2_msgs::srv::GetStates] -
/problem_expert/is_problem_goal_satisfied[plansys2_msgs::srv::IsProblemGoalSatisfied] -
/problem_expert/remove_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/remove_problem_goal[plansys2_msgs::srv::RemoveProblemGoal] -
/problem_expert/remove_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/remove_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/update_problem_function[plansys2_msgs::srv::AffectNode]
Published topics
-
/problem_expert/update_notify[std_msgs::msg::Empty]
Changelog for package plansys2_problem_expert
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)
- Domain change: done once the problem expert has the new domain (#494)
- Executor robustness: Ctrl-C, BT nodes, one-call checks, replanning (#492)
- Take back the at start effects of actions that do not end (#486)
- Problem expert client: tell a missing answer apart from "no" (#484)
- Numbers keep their precision in numeric effects and in the PDDL text (#478)
- Kairos plan solver, and Kairos as the default planner (#465)
- forall and imply in conditions, goals and effects (#462)
- Accept objects of any descendant type, not only of direct subtypes (#461)
- Negation and numeric equality in evaluate() (#459)
- Problem metric: minimize or maximize any numeric expression (#457)
- Tests discover only nodes on this host (#455)
- Replace the deprecated EventsExecutor with SingleThreadedExecutor (#452)
- ProblemExpertClient: getProblem(true) no longer returns the problem from before the client's own changes (#440)
- Reject instance names that are not PDDL names (#429)
- Use 32-bit node ids and validate trees before walking them (#425)
- Reject malformed PDDL instead of crashing (#424)
- Update domain during execution (#414)
- Contributors: Francisco Martín Rico
3.1.0 (2026-07-28)
- Deprecate BTAction with rate. Fix all warnings
- Merge pull request #392 from fmrico/fix_ci_2 Fix ci 2
- Set C++23 as default
- derived_name.name -> derived_name.predicate.name
- fix evaluate_not test
- Added optional dependency
- Improve doc for domain and problem
- Doc for problem expert
- Merge branch 'rolling' into getExpr
- Contributors: Alberto Tudela, Eshan Savla, Francisco Martín Rico, Gustavo, Gustavo Rezende
3.0.0 (2025-06-06)
- Remove unnecessary depends
- Revamp CMake and clean unused headers
- Update install
- Remove unused dependencies
- Update CMakeLists to manage dependencies more efficiently in various packages.
- Update CI adding BT.CPP as source dependecy
- Fix deprecation of ament_target_dependencies
- Multiple plans and replanning stability
- Linting and fixing tests
- Add getProblemWithTimestamp to Problem Expert
- Replanning
- Adaptation of the rest of the packages
- Add chached getDomain() and getProblem()
- Add chached getDomain()
- Change to EventsExecutor
- 🎨 linter for plansys2_pddl_parser
- Add support for ParamExpression and ConstExpression
- Support for existential preconditions
- evaluate exists use_state==false
- fix code style
- evaluate exsits w/ problem_client
- add replace_children_param
- Support negation of CompositeExpression
- Add support for derived predicates
- return derived predicates in getPredicates
- add cart_produdct and replace_children_param
- fix bug in ParamExpression getTree
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged plansys2_problem_expert at Robotics Stack Exchange
|
plansys2_problem_expert package from ros2_planning_system repoplansys2_bringup plansys2_bt_actions plansys2_core plansys2_domain_expert plansys2_executor plansys2_lifecycle_manager plansys2_msgs plansys2_pddl_parser plansys2_planner plansys2_popf_plan_solver plansys2_problem_expert plansys2_terminal plansys2_tests plansys2_tools |
ROS Distro
|
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
Maintainers
- Francisco Martin Rico
Authors
Problem Expert
The Problem Expert module is responsible for maintaining the instances, predicates and goals of the PDDL problem.
The main class is plansys2::ProblemExpertNode, which is instantiated from ProblemExpertNode.cpp. plansys2::ProblemExpertNode is a rclcpp_lifecycle::LifecycleNode, but currently the functionality is in the active phase.
The class responsible for maintaining this problem instance is plansys2::ProblemExpert, which is independent of ROS2.
The Problem Expert is dynamic and volatile, accessing its functionality through ROS2 services. To facilitate the task of the application developer, an plansys2::ProblemExpertClient class has been implemented that hides the complexity of handling ROS2 messages and services. Its API is similar to that of plansys2::ProblemExpert, since both have to implement the plansys2::ProblemExpertInterface interface.
The Problem Expert instantiates a plansys2::DomainExpertClient, and every update query is verified against domain to check if it is valid.
Every update in the Problem, is notified publishing a std_msgs::msg::Empty in /problem_expert/update_notify. It helps other modules and applications to be aware of updates, being not necessary to do polling to check it.
Services
-
/problem_expert/add_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/add_problem_goal[plansys2_msgs::srv::AddProblemGoal] -
/problem_expert/add_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/add_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/clear_problem_knowledge[plansys2_msgs::srv::ClearProblemKnowledge] -
/problem_expert/exist_problem_function[plansys2_msgs::srv::ExistNode] -
/problem_expert/exist_problem_predicate[plansys2_msgs::srv::ExistNode] -
/problem_expert/get_problem[plansys2_msgs::srv::GetProblem] -
/problem_expert/get_problem_function[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_functions[plansys2_msgs::srv::GetStates] -
/problem_expert/get_problem_goal[plansys2_msgs::srv::GetProblemGoal] -
/problem_expert/get_problem_instance[plansys2_msgs::srv::GetProblemInstanceDetails] -
/problem_expert/get_problem_instances[plansys2_msgs::srv::GetProblemInstances] -
/problem_expert/get_problem_predicate[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_predicates[plansys2_msgs::srv::GetStates] -
/problem_expert/is_problem_goal_satisfied[plansys2_msgs::srv::IsProblemGoalSatisfied] -
/problem_expert/remove_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/remove_problem_goal[plansys2_msgs::srv::RemoveProblemGoal] -
/problem_expert/remove_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/remove_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/update_problem_function[plansys2_msgs::srv::AffectNode]
Published topics
-
/problem_expert/update_notify[std_msgs::msg::Empty]
Changelog for package plansys2_problem_expert
2.0.8 (2022-05-04)
2.0.7 (2022-05-04)
2.0.6 (2022-05-03)
2.0.5 (2022-05-03)
- Fix ROS2 Buildfarm error due to Threads
- Contributors: Francisco Martín Rico, Jake Keller
2.0.4 (2022-05-03)
- Fix version
- Fix ROS2 Buildfarm error due to Threads
- Merge branch 'IntelligentRoboticsLabs:master' into master
- Contributors: Francisco Martín Rico, Jake Keller
2.0.3 (2022-04-03)
- Fix conflicts
- Qt5 dependencies
- Contributors: Francisco Martín Rico
2.0.2 (2022-04-03)
- Full supportr for (= _ _) PDDL constraints, added possibility to refer to constants, added initial test cases
- set_decimal_precision: Use std::setprecision to avoid incompatible scientific notation.
- [problem_expert] clearGoal on clearing knowledge
- [problem_expert] test constants parsing as part of problem
- [problem_expert] add constants as instances while parsing problem.pddl
- Contributors: Francisco Martín Rico, Jake Keller, Josh Zapf, Marco Roveri, Mostafa Gomaa
2.0.1 (2022-02-03)
- Update deprecated APIs in launchers and parameters
- get-domain-name: Added service for retrieving domain name. Concatenating domain names when using multiple domains.
- Update launcher param names
- remove-invalid-goals: Removing invalid goals when instances are removed. Keep track of update time in problem expert.
- Merge galactic-devel
- Contributors: Francisco Martín Rico, Josh Zapf
2.0.0 (2021-07-04)
- Compile for ROS2 Galactic
- Contributors: Francisco Martín Rico, Jonatan Olofsson
1.0.10 (2021-07-03)
- Remove node parameter in client constructors
- Adding comments specifying how the syntax is wrong in unexpected_syntax problem file.
- Adding unit tests for new functions in plansys2_problem_expert.
- Add ability to read in pddl problem files to plansys2 and a new AddProblem service to the plansys2_problem_expert. Adding problem_file node parameter to plansys2_problem_expert to load a single problem file at launch.
- ros2-plan-msg: Adding functions to plansys2_msgs/Knowledge message.
- pddl-tree-messages: Deleting unused function declarations. Adding explicit specifier to single param constructors in plansys2_core/Types.hpp.
- Suggestion for #118
- pddl-tree-messages: Extending action string parsing utilities in plansys2_problem_expert/Utils.cpp.
- pddl-tree-messages: Performing some minor cleanup.
- pddl-tree-messages: Using explicit specifier for single parameter constructors in plansys2_core/Types.hpp.
- pddl-tree-messages: Replacing user access function calls with shorter versions where possible.
- pddl-tree-messages: Adding user access functions to domain expert client.
- pddl-tree-messages: Adding goal user access functions to problem expert client.
- pddl-tree-messages: Adding predicate user access functions to problem expert client.
- pddl-tree-messages: Adding predicate user access functions to problem expert client.
- pddl-tree-messages: Using helper functions in problem expert client to handle user interactions.
- pddl-tree-messages: Updating getInstance and getInstances calls to use helper classes.
- pddl-tree-messages: Updating addInstance and removeInstance calls to use helper classes.
- pddl-tree-messages: Replacing hard coded node equality check with function call.
- pddl-tree-messages: Using ROS messages to define the PDDL construct trees.
- Adding support for PDDL addition and subtraction expressions. Courtesy of \@jjzapf
- Update version
- Contributors: Alexander Xydes, Francisco Martín Rico, Josh Zapf
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged plansys2_problem_expert at Robotics Stack Exchange
|
plansys2_problem_expert package from ros2_planning_system repoplansys2_bringup plansys2_bt_actions plansys2_core plansys2_domain_expert plansys2_executor plansys2_lifecycle_manager plansys2_msgs plansys2_pddl_parser plansys2_planner plansys2_popf_plan_solver plansys2_problem_expert plansys2_terminal plansys2_tests plansys2_tools |
ROS Distro
|
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
Maintainers
- Francisco Martin Rico
Authors
Problem Expert
The Problem Expert module is responsible for maintaining the instances, predicates and goals of the PDDL problem.
The main class is plansys2::ProblemExpertNode, which is instantiated from ProblemExpertNode.cpp. plansys2::ProblemExpertNode is a rclcpp_lifecycle::LifecycleNode, but currently the functionality is in the active phase.
The class responsible for maintaining this problem instance is plansys2::ProblemExpert, which is independent of ROS2.
The Problem Expert is dynamic and volatile, accessing its functionality through ROS2 services. To facilitate the task of the application developer, an plansys2::ProblemExpertClient class has been implemented that hides the complexity of handling ROS2 messages and services. Its API is similar to that of plansys2::ProblemExpert, since both have to implement the plansys2::ProblemExpertInterface interface.
The Problem Expert instantiates a plansys2::DomainExpertClient, and every update query is verified against domain to check if it is valid.
Every update in the Problem, is notified publishing a std_msgs::msg::Empty in /problem_expert/update_notify. It helps other modules and applications to be aware of updates, being not necessary to do polling to check it.
Services
-
/problem_expert/add_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/add_problem_goal[plansys2_msgs::srv::AddProblemGoal] -
/problem_expert/add_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/add_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/clear_problem_knowledge[plansys2_msgs::srv::ClearProblemKnowledge] -
/problem_expert/exist_problem_function[plansys2_msgs::srv::ExistNode] -
/problem_expert/exist_problem_predicate[plansys2_msgs::srv::ExistNode] -
/problem_expert/get_problem[plansys2_msgs::srv::GetProblem] -
/problem_expert/get_problem_function[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_functions[plansys2_msgs::srv::GetStates] -
/problem_expert/get_problem_goal[plansys2_msgs::srv::GetProblemGoal] -
/problem_expert/get_problem_instance[plansys2_msgs::srv::GetProblemInstanceDetails] -
/problem_expert/get_problem_instances[plansys2_msgs::srv::GetProblemInstances] -
/problem_expert/get_problem_predicate[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_predicates[plansys2_msgs::srv::GetStates] -
/problem_expert/is_problem_goal_satisfied[plansys2_msgs::srv::IsProblemGoalSatisfied] -
/problem_expert/remove_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/remove_problem_goal[plansys2_msgs::srv::RemoveProblemGoal] -
/problem_expert/remove_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/remove_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/update_problem_function[plansys2_msgs::srv::AffectNode]
Published topics
-
/problem_expert/update_notify[std_msgs::msg::Empty]
Changelog for package plansys2_problem_expert
2.0.11 (2023-08-02)
2.0.10 (2023-07-17)
- Merge remote-tracking branch 'origin/humble-devel'
- Merge pull request #238 from roveri-marco/fix_goal_structure_issue_205 Fix goal structure issue 205
- Merge remote-tracking branch 'origin/master' into fix_goal_structure_issue_205
- Minor changes to the tests to comply with some change in the generated output
- Fixed some errors and some tests to comply with the revised output
- Merge branch 'master' into bt-builder-plugins
- Merge pull request #242 from PlanSys2/duplicate_instances Duplicate instances
- Fix typo
- Check instance types and associated tests
- Merge pull request #235 from MostafaGomaa/problem_expert/Fix_InvalidInstance [problem_expert] AddInstance successeeds if instance already exists
- Merge remote-tracking branch 'origin/master' into fix_goal_structure_issue_205
- Fixed support for the complex goal parsing both from the terminal and from file
- [problem_expert] AddInstance successeeds if instance already exists
- Merge remote-tracking branch 'upstream/master'
- Contributors: Francisco Martín Rico, Marco Roveri, Mostafa Gomaa, Splinter1984
2.0.9 (2022-07-10)
- Humble Upgrade
- Fix possible bug https://github.com/ros2/rclcpp/issues/1968
- Contributors: Francisco Martín Rico
2.0.8 (2022-05-04)
2.0.7 (2022-05-04)
2.0.6 (2022-05-03)
2.0.5 (2022-05-03)
- Fix ROS2 Buildfarm error due to Threads
- Contributors: Francisco Martín Rico, Jake Keller
2.0.4 (2022-05-03)
- Fix version
- Fix ROS2 Buildfarm error due to Threads
- Merge branch 'IntelligentRoboticsLabs:master' into master
- Contributors: Francisco Martín Rico, Jake Keller
2.0.3 (2022-04-03)
- Fix conflicts
- Qt5 dependencies
- Contributors: Francisco Martín Rico
2.0.2 (2022-04-03)
- Full supportr for (= _ _) PDDL constraints, added possibility to refer to constants, added initial test cases
- set_decimal_precision: Use std::setprecision to avoid incompatible scientific notation.
- [problem_expert] clearGoal on clearing knowledge
- [problem_expert] test constants parsing as part of problem
- [problem_expert] add constants as instances while parsing problem.pddl
- Contributors: Francisco Martín Rico, Jake Keller, Josh Zapf, Marco Roveri, Mostafa Gomaa
2.0.1 (2022-02-03)
- Update deprecated APIs in launchers and parameters
- get-domain-name: Added service for retrieving domain name. Concatenating domain names when using multiple domains.
- Update launcher param names
- remove-invalid-goals: Removing invalid goals when instances are removed. Keep track of update time in problem expert.
- Merge galactic-devel
- Contributors: Francisco Martín Rico, Josh Zapf
2.0.0 (2021-07-04)
- Compile for ROS2 Galactic
- Contributors: Francisco Martín Rico, Jonatan Olofsson
1.0.10 (2021-07-03)
- Remove node parameter in client constructors
- Adding comments specifying how the syntax is wrong in
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged plansys2_problem_expert 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 | humble-devel |
| Last Updated | 2026-10-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martin Rico
Authors
Problem Expert
The Problem Expert module is responsible for maintaining the instances, predicates and goals of the PDDL problem.
The main class is plansys2::ProblemExpertNode, which is instantiated from ProblemExpertNode.cpp. plansys2::ProblemExpertNode is a rclcpp_lifecycle::LifecycleNode, but currently the functionality is in the active phase.
The class responsible for maintaining this problem instance is plansys2::ProblemExpert, which is independent of ROS2.
The Problem Expert is dynamic and volatile, accessing its functionality through ROS2 services. To facilitate the task of the application developer, an plansys2::ProblemExpertClient class has been implemented that hides the complexity of handling ROS2 messages and services. Its API is similar to that of plansys2::ProblemExpert, since both have to implement the plansys2::ProblemExpertInterface interface.
The Problem Expert instantiates a plansys2::DomainExpertClient, and every update query is verified against domain to check if it is valid.
Every update in the Problem, is notified publishing a std_msgs::msg::Empty in /problem_expert/update_notify. It helps other modules and applications to be aware of updates, being not necessary to do polling to check it.
Services
-
/problem_expert/add_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/add_problem_goal[plansys2_msgs::srv::AddProblemGoal] -
/problem_expert/add_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/add_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/clear_problem_knowledge[plansys2_msgs::srv::ClearProblemKnowledge] -
/problem_expert/exist_problem_function[plansys2_msgs::srv::ExistNode] -
/problem_expert/exist_problem_predicate[plansys2_msgs::srv::ExistNode] -
/problem_expert/get_problem[plansys2_msgs::srv::GetProblem] -
/problem_expert/get_problem_function[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_functions[plansys2_msgs::srv::GetStates] -
/problem_expert/get_problem_goal[plansys2_msgs::srv::GetProblemGoal] -
/problem_expert/get_problem_instance[plansys2_msgs::srv::GetProblemInstanceDetails] -
/problem_expert/get_problem_instances[plansys2_msgs::srv::GetProblemInstances] -
/problem_expert/get_problem_predicate[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_predicates[plansys2_msgs::srv::GetStates] -
/problem_expert/is_problem_goal_satisfied[plansys2_msgs::srv::IsProblemGoalSatisfied] -
/problem_expert/remove_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/remove_problem_goal[plansys2_msgs::srv::RemoveProblemGoal] -
/problem_expert/remove_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/remove_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/update_problem_function[plansys2_msgs::srv::AffectNode]
Published topics
-
/problem_expert/update_notify[std_msgs::msg::Empty]
Changelog for package plansys2_problem_expert
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)
- Domain change: done once the problem expert has the new domain (#494)
- Executor robustness: Ctrl-C, BT nodes, one-call checks, replanning (#492)
- Take back the at start effects of actions that do not end (#486)
- Problem expert client: tell a missing answer apart from "no" (#484)
- Numbers keep their precision in numeric effects and in the PDDL text (#478)
- Kairos plan solver, and Kairos as the default planner (#465)
- forall and imply in conditions, goals and effects (#462)
- Accept objects of any descendant type, not only of direct subtypes (#461)
- Negation and numeric equality in evaluate() (#459)
- Problem metric: minimize or maximize any numeric expression (#457)
- Tests discover only nodes on this host (#455)
- Replace the deprecated EventsExecutor with SingleThreadedExecutor (#452)
- ProblemExpertClient: getProblem(true) no longer returns the problem from before the client's own changes (#440)
- Reject instance names that are not PDDL names (#429)
- Use 32-bit node ids and validate trees before walking them (#425)
- Reject malformed PDDL instead of crashing (#424)
- Update domain during execution (#414)
- Contributors: Francisco Martín Rico
3.1.0 (2026-07-28)
- Deprecate BTAction with rate. Fix all warnings
- Merge pull request #392 from fmrico/fix_ci_2 Fix ci 2
- Set C++23 as default
- derived_name.name -> derived_name.predicate.name
- fix evaluate_not test
- Added optional dependency
- Improve doc for domain and problem
- Doc for problem expert
- Merge branch 'rolling' into getExpr
- Contributors: Alberto Tudela, Eshan Savla, Francisco Martín Rico, Gustavo, Gustavo Rezende
3.0.0 (2025-06-06)
- Remove unnecessary depends
- Revamp CMake and clean unused headers
- Update install
- Remove unused dependencies
- Update CMakeLists to manage dependencies more efficiently in various packages.
- Update CI adding BT.CPP as source dependecy
- Fix deprecation of ament_target_dependencies
- Multiple plans and replanning stability
- Linting and fixing tests
- Add getProblemWithTimestamp to Problem Expert
- Replanning
- Adaptation of the rest of the packages
- Add chached getDomain() and getProblem()
- Add chached getDomain()
- Change to EventsExecutor
- 🎨 linter for plansys2_pddl_parser
- Add support for ParamExpression and ConstExpression
- Support for existential preconditions
- evaluate exists use_state==false
- fix code style
- evaluate exsits w/ problem_client
- add replace_children_param
- Support negation of CompositeExpression
- Add support for derived predicates
- return derived predicates in getPredicates
- add cart_produdct and replace_children_param
- fix bug in ParamExpression getTree
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged plansys2_problem_expert 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 | humble-devel |
| Last Updated | 2026-10-21 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martin Rico
Authors
Problem Expert
The Problem Expert module is responsible for maintaining the instances, predicates and goals of the PDDL problem.
The main class is plansys2::ProblemExpertNode, which is instantiated from ProblemExpertNode.cpp. plansys2::ProblemExpertNode is a rclcpp_lifecycle::LifecycleNode, but currently the functionality is in the active phase.
The class responsible for maintaining this problem instance is plansys2::ProblemExpert, which is independent of ROS2.
The Problem Expert is dynamic and volatile, accessing its functionality through ROS2 services. To facilitate the task of the application developer, an plansys2::ProblemExpertClient class has been implemented that hides the complexity of handling ROS2 messages and services. Its API is similar to that of plansys2::ProblemExpert, since both have to implement the plansys2::ProblemExpertInterface interface.
The Problem Expert instantiates a plansys2::DomainExpertClient, and every update query is verified against domain to check if it is valid.
Every update in the Problem, is notified publishing a std_msgs::msg::Empty in /problem_expert/update_notify. It helps other modules and applications to be aware of updates, being not necessary to do polling to check it.
Services
-
/problem_expert/add_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/add_problem_goal[plansys2_msgs::srv::AddProblemGoal] -
/problem_expert/add_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/add_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/clear_problem_knowledge[plansys2_msgs::srv::ClearProblemKnowledge] -
/problem_expert/exist_problem_function[plansys2_msgs::srv::ExistNode] -
/problem_expert/exist_problem_predicate[plansys2_msgs::srv::ExistNode] -
/problem_expert/get_problem[plansys2_msgs::srv::GetProblem] -
/problem_expert/get_problem_function[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_functions[plansys2_msgs::srv::GetStates] -
/problem_expert/get_problem_goal[plansys2_msgs::srv::GetProblemGoal] -
/problem_expert/get_problem_instance[plansys2_msgs::srv::GetProblemInstanceDetails] -
/problem_expert/get_problem_instances[plansys2_msgs::srv::GetProblemInstances] -
/problem_expert/get_problem_predicate[plansys2_msgs::srv::GetNodeDetails] -
/problem_expert/get_problem_predicates[plansys2_msgs::srv::GetStates] -
/problem_expert/is_problem_goal_satisfied[plansys2_msgs::srv::IsProblemGoalSatisfied] -
/problem_expert/remove_problem_function[plansys2_msgs::srv::AffectNode] -
/problem_expert/remove_problem_goal[plansys2_msgs::srv::RemoveProblemGoal] -
/problem_expert/remove_problem_instance[plansys2_msgs::srv::AffectParam] -
/problem_expert/remove_problem_predicate[plansys2_msgs::srv::AffectNode] -
/problem_expert/update_problem_function[plansys2_msgs::srv::AffectNode]
Published topics
-
/problem_expert/update_notify[std_msgs::msg::Empty]
Changelog for package plansys2_problem_expert
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)
- Domain change: done once the problem expert has the new domain (#494)
- Executor robustness: Ctrl-C, BT nodes, one-call checks, replanning (#492)
- Take back the at start effects of actions that do not end (#486)
- Problem expert client: tell a missing answer apart from "no" (#484)
- Numbers keep their precision in numeric effects and in the PDDL text (#478)
- Kairos plan solver, and Kairos as the default planner (#465)
- forall and imply in conditions, goals and effects (#462)
- Accept objects of any descendant type, not only of direct subtypes (#461)
- Negation and numeric equality in evaluate() (#459)
- Problem metric: minimize or maximize any numeric expression (#457)
- Tests discover only nodes on this host (#455)
- Replace the deprecated EventsExecutor with SingleThreadedExecutor (#452)
- ProblemExpertClient: getProblem(true) no longer returns the problem from before the client's own changes (#440)
- Reject instance names that are not PDDL names (#429)
- Use 32-bit node ids and validate trees before walking them (#425)
- Reject malformed PDDL instead of crashing (#424)
- Update domain during execution (#414)
- Contributors: Francisco Martín Rico
3.1.0 (2026-07-28)
- Deprecate BTAction with rate. Fix all warnings
- Merge pull request #392 from fmrico/fix_ci_2 Fix ci 2
- Set C++23 as default
- derived_name.name -> derived_name.predicate.name
- fix evaluate_not test
- Added optional dependency
- Improve doc for domain and problem
- Doc for problem expert
- Merge branch 'rolling' into getExpr
- Contributors: Alberto Tudela, Eshan Savla, Francisco Martín Rico, Gustavo, Gustavo Rezende
3.0.0 (2025-06-06)
- Remove unnecessary depends
- Revamp CMake and clean unused headers
- Update install
- Remove unused dependencies
- Update CMakeLists to manage dependencies more efficiently in various packages.
- Update CI adding BT.CPP as source dependecy
- Fix deprecation of ament_target_dependencies
- Multiple plans and replanning stability
- Linting and fixing tests
- Add getProblemWithTimestamp to Problem Expert
- Replanning
- Adaptation of the rest of the packages
- Add chached getDomain() and getProblem()
- Add chached getDomain()
- Change to EventsExecutor
- 🎨 linter for plansys2_pddl_parser
- Add support for ParamExpression and ConstExpression
- Support for existential preconditions
- evaluate exists use_state==false
- fix code style
- evaluate exsits w/ problem_client
- add replace_children_param
- Support negation of CompositeExpression
- Add support for derived predicates
- return derived predicates in getPredicates
- add cart_produdct and replace_children_param
- fix bug in ParamExpression getTree
File truncated at 100 lines see the full file