Meng's Code


  • Planner for Multi-Agent System under Temporal Goals

  • Download at GitHub.

  • Comments and contributions are most welcome!

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

  • Features:

    • Allow both general and co-safe LTL task formulas.

    • Handle both motion and action models.

    • Allow soft and hard task specifications.

    • NetworkX structure for FTS, Buchi and Product automata.

    • Static or on-the-fly construction of product automaton.

    • Easy integration with motion control, sensing and communication modules.

    • Can be used to generate ‘.dat‘ for MatLAB to load Buchi and product automata model. See

Application One

  • Follow the

  • Applied to two agents simultaneously.

  • Motion and action plan for flexible task specifications.

  • Simulation and demonstration. [Video 1] [Video 2]

simulation and demonstration for nominal scenario 

Application Two

  • Multiple agents with independent local tasks coexist in a partially-known workspace.

    • Local exchange of workspace features based on specific task specifications.

    • Real-time plan adaptation to ensure safety.

    • Gradual plan improvement for task performance.

    • Simulation and demonstration. [Detail] [Video 1] [Video 2]

simulation and demonstration for nominal scenario 

Application Three

  • Multiple agents with dependent local tasks due to collaborative actions.

simulation and demonstration for dependent tasks 

Application Four

  • Multiple agents with local tasks and relative-motion constraints.

    • Network connectivity constraint.

    • Relative-distance constraint with collision avoidance. [Simulation] [Demo]

simulation and demonstration for EGGs 

Application Five

  • Multiple agents with contingent service and formation tasks.

    • Service request as a short-term task provided by one agent to another.

    • Formation request as the relative deployment requirement with predefined transient response. [Video]

Graph Grammers 

Application Six

  • Heterogeneous groups of homogeneous agents

    • Depended local tasks due to collaborative actions

    • Real-time coordination among heterogeneous groups [Video]

    • On-line task swapping to increase plan execution efficiency [Video]



  • Planner for Markov Decision Process under Temporal Goals

  • Download at GitHub

  • Comments and contributions are most welcome!

  • Description:
    this package contains the implementation for policy synthesis algorithms given a probabilistically-labeled Markov Decision Process (MDP) (as the robot motion model) and a Linear Temporal Logic (LTL) formula (as the robot task). It outputs a stationary and finite-memory policy consists of plan prefix and plan suffix, such that the controlled robot behavior fulfills the task with a given lower-bounded risk and minimizes the expected total cost.

  • Features:

    • Allows probabilistic labels on MDP states.

    • Tunable trade-off between risk and expected total cost in the plan prefix.

    • Linear programs for solving constrained stochastic shortest path (SSP).

    • Optimization over both plan prefix and suffix.

    • Relaxed policy generation for cases where no accepting end components (AECs) exist.

    • Interface between LTL formula, Buchi Automaton, Deterministic Robin Automaton and NetworkX graph objects.

    • Computing maximal accepting end components (MAEC) of MDPs.

Application One

simulation for risk and cost optimization 

Application Two

Control of MDP 


  • Python Implementation of Reciprocal Velocity Obstacle (RVO) for Multi-agent Systems

  • Download at GitHub

  • Comments and contributions are most welcome!

  • Check out [Video1], [Video2].

  • Description:
    This package contains a plug-and-play Python package for collision-avoidance in multi-agent system, based on reciprocal velocity obstacles (RVO) and hybrid reciprocal velocity obstacles (HRVO).

  • Features:

    • Takes a 2D workspace with any number of non-overlaping circular or square obstacles

    • Any number of dynamic agents with non-zero volume.

    • Allow the choice of VO, RVO, HRVO.

    • Direct plug-and-play and fully integrate-able with your control objective, i.e., the output velocity is a minimal modification of the desired velocity.

    • Scalable and fast, see examples below.



  • Human-in-the-loop mix initiative control under temporal tasks

  • Download at GitHub

  • Comments and contributions are most welcome!

  • Description:
    This package contains the implementation of the mix-initiative control of a single robot under temporal tasks. The human operator can directly modify the navigation input of the robot and assign new tasks to the robot during run time. The workspace is assumed to be only partially-known and possibly dynamic. More importantly, via this interaction, the robot can learn the human preference for the parameters used in the plan synthesis.

  • Features:

    • Human operator can influence the ‘‘cmd_vel" control velocities directly whenever needed:

      • to guide the robot through unknown area of the workspace,

      • to show the preferred path.

    • Safety is ensured for all time by the mix-initiative controller, for all possible human inputs.

    • Human can assign contingent short-term tasks during run time, which the robot will accommodate within the given deadline.

    • Given the past inputs from the human, the robot could learn the preferred value of the parameters used in the plan synthesis, with inverse reinforcement learning (IRL) algorithms.






  • Python Interface for Controlling iRobots with OptiTrack

  • Download at GitHub

  • Comments and contributions are most welcome!

  • Description:
    this package contains the Python interface used at the RAMA lab of Prof. Zavlanos, Duke University. The hardware structure consists of

    • one Windows PC (W), which connects to all OptiTrack cameras and runs program Motive to calibrate and retrieve data from OptiTrack.

    • one Ubuntu machine (U), which runs ROS and does the algorithmic computation to compute the control signals for each iRobot.

    • several iRobots (I), which runs iRobot driver locally, receives control commands from (U) and sends sensory data back to (U).

  • Features:

    • Retrieve multiple rigid-body data.

    • Plot real-time positions of all rigid bodies.

    • Can be easily extended to more complicate motion and task planning scenarios.

Application One

Multi-robot simple control 

Application Two

Control of MDP