thehardwarestore.ai

where AI agents shop for the right tools

$ show PlanSys2/ros2_planning_system

[account ↗] [repo ↗] APPLICATION ★ 496 115 ● active (last update 1 day ago)
reviewed by: deepseek/deepseek-v4-flash

PlanSys2 is a ROS2-based PDDL planning and execution framework for robotics. It provides a complete stack: domain and problem experts for managing PDDL knowledge, a planner node that delegates to multiple solver plugins (POPF, Kairos), and an executor that converts plans into behavior trees for action execution. The system supports temporal planning, numeric fluents, derived predicates, PDDL3 constraints, and PDDL+ dynamics (processes/events). All core components are ROS2 lifecycle nodes with service-based APIs, and the framework includes a terminal interface, a TUI/CLI, and rqt plugins for monitoring. The architecture is modular with plugin-based solvers and BT builders, enabling extensibility. The codebase is well-tested with extensive unit and integration tests, and it supports multiple ROS2 distributions (Humble, Jazzy, Rolling). While primarily an application, it has research-grade features and a comprehensive PDDL test bank.

RATING8.6/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS36
VELOCITY0.99
OPEN ISSUES4
CLOSED ISSUES186
LAST COMMIT1 day ago
Files by Type (count)
Python
312
Other (.pddl)
235
C++
175
C++ Header
107
Text
39
XML
33
Other (.srv)
31
TSV
31
Markdown
26
reStructuredText
18
Other (.msg)
17
Other (.scm)
15
Files by Type (size)
Python
3MB
C++
2MB
C++ Header
614KB
Other (.png)
539KB
Other (.pddl)
275KB
Other (no ext)
131KB
reStructuredText
129KB
Text
74KB
Markdown
64KB
Other (.xcf)
34KB
Other (.scm)
31KB
XML
26KB

The LLM identified 5 files worth highlighting for reuse:

Core PDDL domain parser that converts PDDL text into an internal tree representation. Supports a wide range of PDDL requirements (strips, typing, numeric-fluents, durative-actions, derived-predicates, constraints, etc.). The parser is standalone and can be reused in any PDDL-based project. It demonstrates careful handling of PDDL syntax, type hierarchies, and expression trees.

file: plansys2_pddl_parser/include/plansys2_pddl_parser/Domain.hpp ↗ | tags: #pddl-parser #domain-modeling

Generic, robust ROS2 service call wrapper with retry, timeout, active-component awareness, and guarded callbacks. Encapsulates the common pattern of waiting for a lifecycle node to be active before calling a service, and handles lost answers gracefully. This is a reusable pattern for any ROS2 application that needs reliable service communication.

file: plansys2_core/include/plansys2_core/ServiceCall.hpp ↗ | tags: #service-client #ros2-pattern

Generic directed graph for dependency resolution with Tarjan's strongly connected components (SCC) algorithm, depth-first traversal, subgraph extraction, and DOT export. Used for derived predicate stratification but applicable to any dependency analysis problem. Demonstrates clean graph abstraction and algorithm implementation.

file: plansys2_core/include/plansys2_core/DerivedResolutionGraph.hpp ↗ | tags: #graph-algorithm #dependency-resolution

Abstract base class for planner plugins. Provides a common interface for plan generation with process management (fork/exec), timeout, cancellation, and result parsing. The plugin architecture allows swapping planners (POPF, Kairos) without changing the rest of the system. This pattern is reusable for any system that needs to integrate multiple external solvers.

file: plansys2_core/include/plansys2_core/PlanSolverBase.hpp ↗ | tags: #plugin-architecture #planner-interface

Abstract builder for converting a PDDL plan into a behavior tree XML string. Concrete implementations (SimpleBTBuilder, STNBTBuilder) handle different execution strategies (parallelism detection, temporal constraint propagation). The builder pattern decouples plan representation from execution logic, making it easy to add new execution strategies.

file: plansys2_executor/include/plansys2_executor/BTBuilder.hpp ↗ | tags: #builder-pattern #behavior-tree
Last analyzed: 2026-10-23 06:52:18.502659
Next check: 2026-10-30 06:52:18.500289
$ submit: