-
Notifications
You must be signed in to change notification settings - Fork 3
3.3.1 Graphical User Interface (GUI)
We have created a Graphical User Interface (or GUI) for the collation and synthesis of Entity state and behaviour from all Entities that exist in the world stage.
Using multithreading, the GUI asynchronously fetches the status for primary entities and displays them in a user readable format while the Stage and program are running. This information is updated in realtime and includes a status overview of information statistics such as total kiwifruit collected, as well as tabs for each subclass of Entity and also a laser-rangers tab to display to the user what the Robot is directly detecting with their lasers.
The GUI allows much clearer and easier observation of state than reading state through print statements to a terminal. We also found it to be extremely useful for development of Entity behaviours and debugging such behaviours and code expectations. The GUI has evolved over the development of this project as illustrated by the following diagram:
We employed the MVC or Model-View-Controller paradigm for the major state displays. All state data is controlled and produced by the Entity threads and is consistently written to a single model. This data forms a consistent model and is read safely by different threads using the data, including the GUI threads and Webservice threads. All those threads dependent on the entity state model are notified in real time of changes in the model and thus form a consistent view of the data.
The first tab displays the status overview of the Kiwifruit orchard, including information such as the pickers currently in queue for pickup, the pickers that are target for pickup by the carriers as well as the total kiwifruits collected and number of collections:
After this initial tab, there are a number of tabs for different Entity subclasses, including Robot Pickers, Carriers, Humans and Animals. This modularity allows for easy switching between viewing the states of different entities.
Name (its current Entity ID)
- Type (The type of Entity it is)
- Current action (The action the entity is currently carrying out)
- X Position (The X coordinate of the entity on the Stage)
- Y Position (The Y coordinate of the entity on the Stage)
- Theta (The angle in radians from the horizontal zero line)
For robot pickers and carriers specifically:
- Carrying capacity (The current number of kiwifruits they are holding / the max they can hold).
The last tab displays the laser rangers for the Robot Picker robots. Currently it will display the first 4 robot's laser displays. The laser displays allow the user to see exactly what the robots are seeing in the Kiwifruit orchard. This is updated in real time through multithreading techniques:
The below diagram indicates how the GUI and also the webservice uses multithreading to obtain the most recent data in a consistent and real-time fashion:
##1.0 Introduction
##2.0 User Manual
##2.5 Testing
3.1 Launch Infrastructure
3.2 Entities and behaviours (Robots, humans, animals)
- 3.2.1 Entity Superclass
- 3.2.1.1 Entity Movement
- 3.2.2 Robot Entity
- 3.2.2.1 Robot Entity Detection
- 3.2.2.2 Robot Path Finding
- 3.2.3 Robot Pickers
- 3.2.4 Robot Carriers
- 3.2.4.1 Carrier Queue
- 3.2.5 Humans
- 3.2.6 Animals
- 3.2.7 Entity Topics
3.3 Special services and features
##4.0 Project Planning and management
- 4.1 Project plan
- 4.2 Git Branching and Merging Etiquette
- 4.3 Design Requirements, System requirements and Technical specifications
- 4.4 Key Factors and Constraints
- 4.5 System Design
- 4.6 Time spent
- 4.7 Testing and integration overview
- 4.8 Meeting minutes
##Miscellaneous resources