Overview
Second year final project with a 6-person team, 3 from the Electronics and Information Engineering (EIE) stream and 3 from the Electrical and Electronics Engineering (EEE) stream. Together, the Rover was split into 5 modules, each one for each member as shown below with the sixth person responsible for full rover integration and testing.
As part of the EIE stream, I was responsible for the Command module. The Command module acts as the bridge between the rover to the database and user. Because of the user aspect, my module had to consider factors such as UI/UX in addition to the traditional factors like efficiency.
The Command module server was built with the Python FastAPI framework and would communicate with the Control module on the rover through the WebSocket protocol due to the ease of implementation and compatibility between Arduino and the server. The database used MongoDB and security authentication used Okta. The decision to outsource these components was due to the short development period of the project.
The frontend was created with React with the design first implemented on wireframes for internal team feedback to ensure the frontend was intuitive for the user. The frontend would communicate the the backend through WebSocket protocol to ensure live data is reflected as soon as possible to the user. This was critical as obstacles detected by the Vision module has to be shown immediately.