Commit ad9056a6 authored by mercih191's avatar mercih191
Browse files

readme and license

parent ba57d421
MIT License
Copyright (c) [2023] [Citaku Mergim, Eriksson Emanuel, Ivanov Kristiyan, Tekin Philip]
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
......@@ -2,10 +2,26 @@
A user interface created for the course _Integrated Project Work_ at **Örebro University**.
## Authors
- Citaku, Mergim: Implemented the backend functionality, dashboard and replay screen, including the optimization of demo storing and MQTT communication.
- Eriksson, Emanuel: Desinged and implemented key functionallites on the map screen.
- Ivanov, Kristiyan: Designed the overlay interface and inventory handler on the map screen.
- Tekin, Philip: Desinged and implemented key functionallites on the map screen.
This project is licensed under the [MIT License] (see LICENSE file). Feel free to build upon it.
## Note
Please be aware that certain components within this project may not fully adhere to the SOLID principles due to the limited development timeframe of six months. While we strive to follow best practices and maintain code quality, the project's rapid iteration and time constraints necessitated some trade-offs. We acknowledge the importance of SOLID principles in achieving maintainable and extensible code, and we have made efforts to apply them where possible. However, certain sections or modules may require further refactoring and optimization to achieve a more robust adherence to SOLID principles. We appreciate your understanding and encourage contributions from the community to help improve the project's codebase and align it more closely with SOLID principles. If you encounter areas that can benefit from refactoring or enhancements, we welcome pull requests and constructive feedback. Thank you for your interest in our project, and we hope it provides value despite the limited time constraints under which it was developed.
## Table of Content
1. [Prerequisites](#prerequisites)
2. [Installation](#installation)
3. [Structure](#structure)
4. [Key-Binds](#key-binds)
5. [Demos](#demos)
## Prerequisites
......@@ -33,3 +49,40 @@ To install and run the project, follow these steps:
4. Once the dependencies are installed, start the development server using the following command:
`npm start`
## Structure
There a three main screens and all of them uses refs to handle state changes together with a useEffect that contains a interval function. The reason to why useState isn't used as much globally is due to the facts that it causes the Three JS canvas to re-render after each state change. Therefore useState is only used locally in components that doesn't re-render on a ref-change.
The refs are initiated in the **Navigation.tsx** (src/navigation/Navigation.tsx), additionally the onMessage handler and all the routes are in the same file.
Settings for MQTT can be found in src/state/MQTT.tsx.
Settings for supabase can be found in src/supabase/Supabase.tsx
All the data models can be found in src/models, these might need to change depending on the structure of the other modules (simulator, task planning, motion planning and situation report).
1. MapScreen/Robot Interface - Can be found in src/map.
The folder contains all the objects that are rendered on the Three JS canvas.
2. Dashboard - Can be found in src/dashboard.
3. Replay/Demo Screen - Can be found in src/replay.
## Key Binds
These are the different key-binds that can be used on the map screen. The bindings are implemented in the file src/map/components/Controller.tsx.
1. Escape - Opens the exit modal, or exits the interaction mode.
2. I - Opens the interaction mode, in this mode a goto instruction can be created as well as seeing the plane probabilites.
3. R - Request a satellite image from the simulator group.
4. W, A, S, D - Used to control the rover when in manual mode. After a key-press the motors will be started in the specific direction.
5. Space - Sets the motor speed to zero.
6. C - Switches the camera mode on the rover, from third person to above the rover and vice versa.
7. Plus (+) and minus (-) - Used to adjust the zoom when the camera is set to global mode.
8. Arrow up, down, left, right - Used to move the camera when in global mode.
## Demos
In documentation/supabase-files, screenshots of the tables as well as the supabase-storage content can be found. To run a demo start by creating a supabase account and update the src/supabase/Supabase.tsx file. Create the demo table with the same strucuture as the screenshot and upload the content from documents/supabase-files/storage-demos to your supabase storage. Note that the demos will appear on the dashboard, the data is fetched from the table Demo. After starting a demo from the dashboard the demo file will be fetched from the supabase-storage which is a NoSQL storage. Make sure that the demos in the SQL table has the same ID as the demo names stored in the storage, e.g. If the demo in the SQL table has id 5 the demo in the storage should be named demo_5.txt.
Note: The table screenshots carries the name of the table, in the screenshot the strucutre can be seen. In src/state/Supabase.tsx the fetching of the chart data and activity log can be found.
File added
File added
File added
File added
File added
File added
File added
File added
File added
File added
documents/supabase-files/tables/ActivityLog.png

7.85 KB

documents/supabase-files/tables/ChartData.png

51.9 KB

documents/supabase-files/tables/Demo.png

47.4 KB

Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment