Planner for Multiple Agent System with Temporal Goals
This package contains implementation for plan synthesis algorithms given a finite transition system (as the agent motion model) and a Linear temporal logic formula (as the agent task). It outputs the static plan as a sequence of agent motion and action, required to fulfill the task.
- Allow both normal and co-safe LTL task formulas.
- Action model can be muted if only motion is concerned.
- Soft specification is optional.
- NetworkX structure for FTS, Buchi and Product automata.
- Static or on-the-fly construction of the product automaton.
- Stand-alone planner.
from P_MAS_TG.ts import MotionFts, ActionModel, MotActModel
from P_MAS_TG.planner import ltl_planner
# construct your motion and action model
#---------
robot_motion = MotionFts(node_dict, symbols, 'your_ws_name')
robot_motion.set_initial(initial_node)
robot_motion.add_un_edges(edge_list, unit_cost = 0.1)
#---------
robot_action = ActionModel(action_dict)
#---------
robot_model = MotActModel(robot_motion, robot_action)
# specify your hard and soft tasks
hard_task = '(([]<> r3) && ([]<> r4))'
soft_task = None
# set planner
robot_planner = ltl_planner(robot_model, hard_task, soft_task)
# synthesis
robot_planner.optimal(10,'static')
- Generate
.dat
for MatLAB to load Buchi and product automata model. See square_world.py.
- Install python packages like networkx, ply.
- Add this package to your PYTHONPATH, to import it in your own project.
- ltlba_32 and ltlba_64 are executable files complied under OS X. For other OS, please follow ltl2ba/README.txt.
- Try test.py and other examples in the Examples folder.