-
Notifications
You must be signed in to change notification settings - Fork 1
Drona Software Stack
The figure above shows the software stack for distributed mobile robots implemented in Drona. The software stack is implemented in programming language P.
The code for the software stack resides in folder /Src/SoftwareStack.
The software stack is reliable and was model-checked using the ZING model-checker. We found several critical bugs in the implementation and are fixed. The software stack satisfies the properties listed in the paper. We have run long random simulations of more than 42 hours stress testing our generated code without any failures.
At a high level the software stack consists of five modules or blocks:
Task Planner: The task planner or sometimes also called as the mission planner is the application specific protocol implemented by the programmer to ensure that the system achieves its application specific goals.
- Simple Mission: A simple mission state machine that drives the drone in a square is available simple_mission.
- Mail Delivery System: The mail delivery system task-planner state-machine that services the mail requests and drives the robots in the workspace is available at: mail-delivery
Multi-robot motion planner (MRMP): The MRMP computes the collision-free plans on the fly and the coordination protocol state-machine in P that computes that set of trajectories of all robots is available at coordination-protocol and the A* based safe-plan generator is available in folder safe plan generator.
Plan Executor: The plan executor module is responsible for executing the motion plan received from the motion planner. Plan Executor Machine
Sense and Infer: The sense and infer module implements various monitor state-machines that monitor the data-stream coming from the robot and raise an event if something interesting is detected. Various monitor state-machines like BatteryMonitor, AltitudeMonitor, GeoFenceMonitor are available at: SenseAndInfer Machines
Robot SDK and Helper Code: The robot SDK, helper libraries implement the functionalities required to operate the drone like communication, motion primitives, etc. Code for this part of the software stack is spread in various folders and can be found by browsing through it.