<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Task Planning | Henry Kou</title><link>https://kenryhou2.github.io/tags/task-planning/</link><atom:link href="https://kenryhou2.github.io/tags/task-planning/index.xml" rel="self" type="application/rss+xml"/><description>Task Planning</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Wed, 06 May 2026 00:00:00 +0000</lastBuildDate><image><url>https://kenryhou2.github.io/media/icon_hu_da05098ef60dc2e7.png</url><title>Task Planning</title><link>https://kenryhou2.github.io/tags/task-planning/</link></image><item><title>Symbolic Planner</title><link>https://kenryhou2.github.io/projects/symbolic-planner/</link><pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate><guid>https://kenryhou2.github.io/projects/symbolic-planner/</guid><description>&lt;p&gt;I built this symbolic planner to make classical AI planning concrete. Instead of commanding robot trajectories directly, the planner reasons over facts such as &lt;code&gt;Clear(A)&lt;/code&gt;, &lt;code&gt;On(A, B)&lt;/code&gt;, 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.&lt;/p&gt;
&lt;p&gt;The planner grounds action schemas by enumerating ordered symbol tuples of the required arity, substitutes them into each action&amp;rsquo;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.&lt;/p&gt;
&lt;p&gt;The repository includes several planning environments: standard Blocks World problems using &lt;code&gt;MoveToTable&lt;/code&gt; and &lt;code&gt;Move&lt;/code&gt;; a Blocks Triangle variant with &lt;code&gt;Block&lt;/code&gt;, &lt;code&gt;Triangle&lt;/code&gt;, &lt;code&gt;NotTable&lt;/code&gt;, &lt;code&gt;Clear&lt;/code&gt;, and &lt;code&gt;On&lt;/code&gt; predicates; and a FireExtinguisher domain where a robot and quadrotor coordinate movement, landing, charging, water refill, and repeated pour actions to reach &lt;code&gt;ExtThree(F)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The implementation exposes heuristic modes for Dijkstra-style search (&lt;code&gt;h = 0&lt;/code&gt;), 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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sources I leaned on:&lt;/strong&gt; Fikes and Nilsson&amp;rsquo;s STRIPS paper for add/delete-list planning; Bonet and Geffner&amp;rsquo;s HSP work for heuristic planning; and Russell and Norvig&amp;rsquo;s AI planning chapters for the connection between symbolic search and robotics task planning.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Keywords:&lt;/strong&gt; 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.&lt;/p&gt;</description></item></channel></rss>