PlanSys2 4.0.0 released: robust, and covering PDDL from 1.2 to PDDL+

Since it was born during the 2020 pandemic, PlanSys2 has been the basis of papers, master’s theses, master courses, and PhD theses. As far as I know, some companies use it to control their logistics robots, and it has even been to space on board the Astrobee robots, as I was told at ROSCon 2022 in Kyoto. Last year I had the chance to present it at ROSCon 2025 in Singapore:

PDDL is as relevant as ever: it is a formal language for task planning, and PlanSys2 has become an essential baseline for much of the current work on task planning with LLMs.

Today I am happy to announce PlanSys2 4.0.0, a release that marks the technical maturity of this PDDL planning and execution framework. Two things define it:

  • Reliability and robustness. PlanSys2 now copes with any start order, processes that die and come back (they restart and recover their state), lost messages, network delays, loaded systems, API misuse and hostile inputs. It was tested with sanitizers, fuzzing and a stress bench across Fast DDS, Cyclone DDS and Zenoh.
  • PDDL coverage, from PDDL 1.2 to PDDL+, both in the domains it loads and in the execution of their plans: from STRIPS and typing to conditional effects, derived predicates, numeric fluents, durative actions, timed initial literals, PDDL3 preferences and constraints, object fluents, and PDDL+ processes and events. The new STN behavior tree builder, now the default, executes plans faithfully: it keeps the concurrency and the time constraints between their actions. This example (domain and problem) shows what PlanSys2 now plans and executes.

This is possible thanks to Kairos, now the default planner of PlanSys2. As far as we know, it covers more of PDDL than any other planner, and faster.

PlanSys2 4.0.0 is a single version released for Humble, Jazzy, Kilted and Lyrical, and it will be available in the next sync of each distribution.

Feedback, issues and contributions are very welcome at github.com/PlanSys2.