task_planning_wiki - IRS-group/isr_tiago_docs GitHub Wiki

Install

sudo apt-get install flex ros-melodic-mongodb-store ros-melodic-tf2-bullet freeglut3-dev time

sudo apt-get install bison flex gawk g++-multilib pypy

These packages are already inside isr_tiago repo, so you don't need to clone them, but I'll leave them here for anyone in the future to know the source:

git clone -b kinetic --single-branch [email protected]:socrob/ROSPlan.git

git clone [email protected]:socrob_at_home/isr_planning.git

git clone [email protected]:socrob/robocup-at-work.git

Launch

GPSR main launch files

roslaunch mbot_gpsr gpsr.launch

GPSR coordination state machine

roslaunch mbot_gpsr sm_gpsr.launch

Next Steps

  1. Trigger word before recording audio (porcupine);
  2. Plan executor (from plan to actions);

For debug purposes

Knowledge-base GUI

rqt_rosplan

If the state machine is not launched the intrinsic knowledge needs to be uploaded. To do that use the following command:

rostopic pub /task_planning/upload_pddl_knowledge_node/event_in std_msgs/String "data: 'e_start'"

Unified Planning Framework

Project Page

GitHub Repo

Documentation

Colab Example

Install commands:

!rm -rf upf && git clone https://github.com/aiplan4eu/upf && pip install upf/

!rm -rf pyperplan-upf && git clone https://github.com/aiplan4eu/pyperplan-upf && pip install pyperplan-upf/

!rm -rf tamer-upf && git clone https://github.com/aiplan4eu/tamer-upf && pip install tamer-upf/

Usage Python code:

import unified_planning
from unified_planning.shortcuts import *
from unified_planning.io.pddl_writer import PDDLWriter
from unified_planning.io.pddl_reader import PDDLReader

reader = PDDLReader()
pddl_problem = reader.parse_problem('upf/upf/test/pddl/depot/domain.pddl', 'upf/upf/test/pddl/depot/problem.pddl')
print(pddl_problem)

print(pddl_problem.kind().features())
with OneshotPlanner(name='pyperplan') as planner:
    plan = planner.solve(pddl_problem)
    print("%s returned: %s" % (planner.name(), plan))

with OneshotPlanner(names=['tamer', 'tamer', 'pyperplan'],
                    params=[{'heuristic': 'hadd'}, {'heuristic': 'hmax'}, {}]) as planner:
    plan = planner.solve(problem)
    print("%s returned: %s" % (planner.name(), plan))

with PlanValidator(problem_kind=problem.kind()) as validator:
    if validator.validate(problem, plan):
        print('The plan is valid')
    else:
        print('The plan is invalid')