Problem statement:
Write a code/Pseudo code to develop a drone(Unmanned aerial vehicle) operating system with
navigation commands like takeoff, survey, return to home, land and failure. (DroneOperation
should be the class name with methods for all the command execution. Please note these
commands are dummy functions and no physical execution of the drone is expected neither
drone’s actual execution knowledge is necessary but approach and logic behind the steps of
execution would be judged)
Next create MissionPlanning class and implement a graphical search algorithm for sending the
drone from location A to location B. Create a fully connected graph with at least 100 nodes with
appropriate vertices and edges. Then ensure the drone can take a connected path from any one
node to another in the best optimal time. Please print the edges taken as a path by drone while
finding the shortest path. Navigation operation should be able to generate this path and forward
to Survey operation class.
Total three classes : DroneOperation, MissionPlanning and Survey.
Path searching Algorithm : Please implement Bidirectional search algorithm via which you can
reduce the existing time complexity to at least half of the unidirectional search algorithm. Make
sure forward and backward search is implemented on multiple threads with resource sharing
and concurrency handling.
Example walkthrough :
Drone first enters into takeoff mode then goes into MissionPlanning mode where source and
destination node locations are entered and the best route is planned and finally into survey
mode where route is expected, post which drone enters into return to home mode and comes
back to source.
Note :
1. Please use polymorphism for creating DroneOperation class through which multiple
commands would be executed.
2. Please use the best optimal graph search algorithm and also state reason behind the
selection
3. Please document the code nicely and it should be self explanatory.
4. Simulate complete code with best and worst case scenarios with driver code in main and
other modules should be in the form of classes.
5. Code has to be strictly written in CPP only.
Bonus points only if time permits:
1. Use a multi threaded code to handle DroneOperations, MissionPlanning and Survey
operations to speed-up the process.