MengGuo / P_MAS_TG

Planner for Multiple Agent System with Temporal Goals

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

P-MAS-TG

Planner for Multiple Agent System with Temporal Goals

@article{guo2015multi,
  title={Multi-agent plan reconfiguration under local LTL specifications},
  author={Guo, Meng and Dimarogonas, Dimos V},
  journal={The International Journal of Robotics Research},
  volume={34},
  number={2},
  pages={218--235},
  year={2015},
  publisher={SAGE Publications Sage UK: London, England}
}

Description

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.


References

Multi-agent Plan Reconfiguration under Local LTL Specifications. Meng Guo and Dimos V. Dimarogonas. International Journal of Robotics Research (IJRR), 34(2): 218-235, Feb 2015. [link] [PDF]

Task and Motion Coordination for Heterogeneous Multi-agent Systems with Loosely-coupled Local Tasks. Meng Guo and Dimos V. Dimarogonas. IEEE Transactions on Automation Science and Engineering (T-ASE), 4(2): 797-808, Apr 2017. [link] [PDF]


Features

  • 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.

Debugging

  • Install python packages like networkx, ply. [Update to networkx 2.0]
  • 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.

About

Planner for Multiple Agent System with Temporal Goals

License:GNU General Public License v2.0


Languages

Language:C 59.4%Language:Python 39.5%Language:Makefile 1.1%