Symbolic Planner

May 6, 2026 · 2 min read
projects

I built this symbolic planner to make classical AI planning concrete. Instead of commanding robot trajectories directly, the planner reasons over facts such as Clear(A), On(A, B), or domain-specific predicates for a robot-fire-extinguisher task. It parses compact domain files into symbols, grounded initial facts, goal facts, and action schemas with positive and negated preconditions and effects.

The planner grounds action schemas by enumerating ordered symbol tuples of the required arity, substitutes them into each action’s preconditions and effects, filters actions whose grounded preconditions are satisfied in the current state, and applies add/delete effects to generate successor states. Search uses an OPEN priority queue and CLOSED state set, with parent pointers for plan reconstruction once all goal facts are reached.

The repository includes several planning environments: standard Blocks World problems using MoveToTable and Move; a Blocks Triangle variant with Block, Triangle, NotTable, Clear, and On predicates; and a FireExtinguisher domain where a robot and quadrotor coordinate movement, landing, charging, water refill, and repeated pour actions to reach ExtThree(F).

The implementation exposes heuristic modes for Dijkstra-style search (h = 0), missing-goal-count guidance, delete-effect penalties, and a combined heuristic. This makes the project a small testbed for seeing how much a heuristic can help when the branching factor comes from grounded actions rather than grid neighbors.

Sources I leaned on: Fikes and Nilsson’s STRIPS paper for add/delete-list planning; Bonet and Geffner’s HSP work for heuristic planning; and Russell and Norvig’s AI planning chapters for the connection between symbolic search and robotics task planning.

Keywords: symbolic planning, STRIPS-style planning, grounded actions, action schemas, preconditions, add/delete effects, Blocks World, Blocks Triangle, FireExtinguisher domain, heuristic search, Dijkstra search, priority queue, state-space search, plan reconstruction, C++14, CMake.

Henry Kou
Authors
Henry Kou (he/him)
MS Robotics Student and Research Associate
I am an MS Robotics student at Carnegie Mellon University with a background in electrical and computer engineering and a focus on state estimation, control theory, motion planning, and embedded robotic systems. As a research associate in the Biorobotics Lab, I work on building reliable, sensor-driven robots that connect theory with hardware and real-world autonomy.