A control system and simulator for a firefighting drone swarm.
| File | Description |
|---|---|
FireIncidentSubsystem.java |
Handles fire events and drone requests, communicating with Scheduler |
Scheduler.java |
Processes fire incidents and drone requests. |
SimEvent.java |
Represents a fire event message. |
DroneTask.java |
Represents a task used to aid in the generation of messages passed between scheduler and drone. |
DroneTaskType.java |
Enum defining the types of tasks that can be assigned to a drone. |
Drone.java |
Represents a drone in the simulation. |
DroneInfo.java |
Represents the information of a specific drone |
DroneStateID.java |
Enum defining the states of the drone. |
DroneActionsTable.java |
Represents the drone actions table of the scheduler. |
DroneScores.java |
Represents the scores of the drones. |
TimeUtils.java |
Utility class for formatting time. |
Zone.java |
Represents a zone, including position and severity of any fire occurring there. |
AgentTank.java |
Represents the tank of the drone. |
Position.java |
Represents x, y coordinates of a zone. |
FireSeverity.java |
Enum defining NO_FIRE, LOW, MODERATE, and HIGH severity levels. |
Accelerating.java |
Accelerating drone state |
Base.java |
Base state of the drone |
Arrived.java |
Arrived drone state |
Decelerating.java |
Decelerating drone state |
Flying.java |
Flying drone state |
Idle.java |
Idle drone state |
Landing.java |
Landing drone state |
Takingoff.java |
Taking off drone state |
ReleasingAgent.java |
Releasing agent drone state |
Main.java |
Entry point for running the simulation. |
DroneRequestHandler.java |
Handles requests for new drone tasks. |
DroneSubsystem.java |
Manages the drone subsystem. |
FireEventHandler.java |
Handles fire events. |
SchedulerSubsystem.java |
Manages the scheduler subsystem. |
DroneController.java |
Controls the drone operations. |
DroneFault.java |
Represents faults in the drone. |
FaultID.java |
Enum defining the types of faults that can occur in a drone. |
tests/FireIncidentSubsystemTest.java |
Unit tests for FireIncidentSubsystem. |
tests/ZoneTest.java |
Unit tests for Zone. |
tests/DroneTest.java |
Unit tests for Drone. |
tests/SchedulerTest.java |
Unit tests for Scheduler. |
tests/MissionsTest.java |
Unit tests for MissionQueue. |
tests/AgentTankTest.java |
Unit tests for AgentTank. |
tests/SimEventTest.java |
Unit tests for SimEvent. |
tests/PositionTest.java |
Unit tests for Position. |
tests/MessagePasserTest.java |
Unit tests for MessagePasser. |
tests/DroneSubsystemTest.java |
Unit tests for DroneSubsystem. |
sample_input_files/zones.csv |
Sample test file containing zone definitions. |
sample_input_files/events.csv |
Sample test file containing fire incident events. |
docs/UML_Class_Diagram.pdf |
UML Class diagram of the system. |
docs/UML_Sequence_Diagram.pdf |
UML Sequence diagram of the system. |
docs/Scheduler_State_Machine.pdf |
State machine diagram of the scheduler. |
docs/Drone_State_Machine.pdf |
State machine diagram of the drone. |
docs/Timing_Diagram.pdf |
Timing diagram of the system. |
- Java 11+ installed.
- JUnit 5.7.2 or higher.
- IntelliJ IDEA or any Java IDE.
- Ensure that the following test files exist in sample_input_files/:
zones.csv,events.csv.
git clone https://github.com/hubertdang/fire-drone-swarm.git `
cd fire-drone-swarm- Open IntelliJ IDEA.
- Click on
Open. - Compile and run
DroneSubsystem,SchedulerSubsystem,FireIncidentSubsysteminside your IDE to run the simulation. - To run unit tests, click on unit test file and run the test
-
Checkout the project in IntelliJ. Follow the instructions listed here.
-
Create a branch to work on an issue. Follow the instructions listed here.
-
Checkout your new remote branch that you just created in step 2.
huber@hubert_laptop MINGW64 ~/OneDrive - Carleton University/w2025/SYSC3303/project/FireDroneSwarm (master) $ git fetch # DO THIS COMMAND From https://github.com/hubertdang/fire-drone-swarm * [new branch] hubert-issue -> origin/hubert-issue huber@hubert_laptop MINGW64 ~/OneDrive - Carleton University/w2025/SYSC3303/project/FireDroneSwarm (master) $ git checkout hubert-issue # DO THIS COMMAND Switched to a new branch 'hubert-issue' branch 'hubert-issue' set up to track 'origin/hubert-issue'.
-
Make your code changes locally.
-
Remember to add helpful comments and format your code. Try to adhere to Java Code Conventions and follow the instructions listed here.
-
Verify that any additionally required tests have been added and that all tests pass.
-
Add and commit your changes locally.
huber@hubert_laptop MINGW64 ~/OneDrive - Carleton University/w2025/SYSC3303/project/FireDroneSwarm (hubert- issue) $ git add src/Hubert.java # DO THIS COMMAND huber@hubert_laptop MINGW64 ~/OneDrive - Carleton University/w2025/SYSC3303/project/FireDroneSwarm (hubert-issue) $ git commit -m "Adding Hubert class to solve Hubert issue." # DO THIS COMMAND [hubert-issue 5fd319a] Adding Hubert class to solve Hubert issue. 1 file changed, 2 insertions(+) create mode 100644 src/Hubert.java
-
Once you're finished making your changes, push them to your remote branch.
huber@hubert_laptop MINGW64 ~/OneDrive - Carleton University/w2025/SYSC3303/project/FireDroneSwarm (hubert-issue) $ git push # DO THIS COMMAND Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 8 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (4/4), 357 bytes | 357.00 KiB/s, done. Total 4 (delta 1), reused 0 (delta 0), pack-reused 0 remote: Resolving deltas: 100% (1/1), completed with 1 local object. To https://github.com/hubertdang/fire-drone-swarm.git 406eb44..5fd319a hubert-issue -> hubert-issue
-
Confirm your remote branch on GitHub has your newest changes.
-
Create your pull request. Follow the instructions listed here.
-
Once your pull request is ready to merge, please squash and merge to limit the number of commits to master.

In general, the team approached the project collaboratively, working together to solve problems and make decisions. However, each team member was responsible for specific tasks and components of the project. The breakdown of responsibilities is as follows:
- Amilesh: UML Class diagram for Scheduler, pair programmed with David for Scheduler, debugging Drone
- Hubert: Pair programmed with Aashna, reviewed PRs, debugging Scheduler
- David:
FireEventHandler,DroneRequestHandler,MessagePasser,Scheduler,DroneInfo, debugging Drone - Aashna:
Drone,Takeoff,Accelerating,DroneSubsystem,DroneTaskType,DroneTask, debugging Scheduler - Shenhao Gong: UML Timing Diagram,
DroneSubsystemTest - Manit:
DroneFault,DroneSubsystem,FaultID
In general, the team approached the project collaboratively, working together to solve problems and make decisions. However, each team member was responsible for specific tasks and components of the project. The breakdown of responsibilities is as follows:
- Amilesh:
Drone,DroneActionsTable,DroneRequestHandler,DroneSubsystem,FireEventHandler,FireIncidentSubsystem,Scheduler,SchedulerSubsystem, - Hubert:
Decelerating,Drone,DroneController,DroneSubsystem,DroneTaskType,Landing,ReleasingAgent - David:
DroneActionsTable,DroneRequestHandler,FireIncidentSubsystem,Scheduler - Aashna:
Drone,Takeoff,Accelerating - Shenhao Gong:
MessagePasser,DroneInfo,DroneTask,Position,Zone - Manit: UML class diagram, UML state diagram,
SchedulerTest,MessagePasserTest
In general, the team approached the project collaboratively, working together to solve problems and make decisions. However, each team member was responsible for specific tasks and components of the project. The breakdown of responsibilities is as follows:
- Amilesh:
DroneActionsTable,HappySubState,ResupplySubState,SchedulerSubState,DroneTest - Hubert: Drone state diagram,
Accelerating,Arrived,Base,Decelerating,Drone,DroneBuffer,DroneInfo,DroneTask,DroneManager,DroneStateID,DroneState,Flying,Idle,Landing,Takingoff,ReleasingAgent,DroneBufferTest - David: Scheduler state diagram and algorithm,
DroneActionsTable,DroneBuffer,DroneInfo,DroneManager,DroneScores,DroneStateID,DroneTaskType,HappySubState,RerouteSubState,ResupplySubState,SchedulerSubState,Missions,Scheduler,Zone - Aashna: Drone state diagram,
Drone,Position,Accelerating,Arrived,Decelerating,DroneInfo,DroneManager,Flying,Landing,ReleasingAgent,Scheduler,Takeoff - Shenhao Gong:
Drone,DroneBuffer,DroneInfo,DroneManager,DroneTask,DroneBufferTest,DroneTest - Manit: UML class, state and sequence diagrams, testing the application
In general, the team approached the project collaboratively, working together to solve problems and make decisions. However, each team member was responsible for specific tasks and components of the project. The breakdown of responsibilities is as follows:
- Amilesh:
FireIncidentSubsystem,FireIncidentSubsystemTest,SimEvent,SimEventTest,DroneBufferTest,FireIncidentBufferTest - Hubert: System Design and UML Diagrams, reviewing PRs, supported development of
Drone,DroneTask,DroneBuffer,FireIncidentBuffer,TimeUtils - David: System Design and UML Diagrams,
DroneTask,DroneBuffer,FireIncidentBuffer,TimeUtils - Aashna:
Zone,ZoneTest,Position,PositionTest,AgentTank,AgentTankTest - Shenhao Gong:
Drone,DroneStatus,FireSeverity,DroneTest - Manit:
Scheduler,MissionQueue,SchedulerTest,MissionQueueTest