Skip to main content

Requirements

End-user Software Requirements

Soft-FR01: Webapp must support more than one user at the time, but just one user will have access to the robot at the same time, creating a waiting line.
Soft-FR02: Webapp must have a teacher's interface.
Soft-FR02.1:  Teacher's interface must have access to the program created by the Users, so the Teacher can rate the solutions.
Soft-FR02.2:  Teacher's interface must have Arena and Robot camera live feed.
Soft-FR02.3:  Teacher's interface must have reset button to avoid problems related to the programs created.
Soft-FR02.4:  Teacher's interface must have control of the Users waiting line.
Soft-FR03: Webapp must have a User's interface.
Soft-FR03.1:  User's interface must have a Reset Button, so the user can stop the program running and reset robot position.
Soft-FR03.2:  User's interface must have a Run Button, so the User can run the program created.
Soft-FR03.3:  User's interface must have Save Button, so the User can save the program created.
Soft-FR03.4:  User's interface must have a Task List separeted by difficulty.
Soft-FR03.5:  User's interface must have Coding Evironment, so the User can use the block based language to create the program to solve a task.
Soft-FR03.6:  User must be able to access the created programs saved to his profile.
Soft-FR04:  Webapp must have a sign-up screen. 
Soft-FR04.1:  The user must be able to input their full name, an email address and a password.
Soft-FR05:  Webapp must have a login screen with user authentication.
Soft-FR05.1:  Webapp must identify the user type to show the proper interface.
Soft-FR06: Server must be able to store and recover data from the database.
Soft-FR06.1: The database will run locally.
Soft-FR07: Webapp must protect user information and access control
Soft-FR07.1: User password and sensitive information must be obfuscated 
Soft-FR07.2: Connection must be made with valid HTTPS certificate
 
Soft-FR08: Webapp must have a simple and intuitive block based programming language so the User can program the Robot.
Soft-FR08.1:  IF-ELSE Block
Soft-FR08:     Loop Blocks (FOR and WHILE)
Soft-FR08:     Blocks to get sensor data (GET_COLOR, GET_IMAGE)
Soft-FR08:     Movement Blocks (MOVE_FORWARD, TURN_90)
Soft-FR08:     Block to create variables

Soft-FR09:  Server must handle the Webapp without slowdowns.

Soft-FR10:      After the end of an exercise, the system should reset the movable arena objects to their default positions.

Soft-FR11:  Webapp must be able to send to the Arena the Robot's program created by the user

Arena Requirements


    Arena


Arena's Blueprint

Arena-FR01:     The arena's area must be at least 3 square meters.
Arena-FR01.1:  The arena will be divided in 25cmx25cm squares.
Arena-FR02:       Arena must have two suspended cameras at a maximum of 2.5m from the gound.
Arena-FR03:     Arena must have a grid of 4x4 positions.
Arena-FR03.1:   The 4 tip positions must have different colors, like the blueprint.
Arena-FR04:    Arena must have 4 buttons that can be interacted with by the robot.
Arena-FR04.1:  The buttons must be interacted with the robot.
Arena-FR05:     Arena must have a changing color spot on the side close to the boxes, like in the blueprint.
Arena-FR06:     Arena must have a maze like the one in the blueprint.
Arena-FR06.1:   The maze must have fixed colered walls in dead ends to set the maze goals.
Arena-FR06.2:   The colored dead ends must have a protection so the camera can't see their color.
Arena-FR07:     Arena must have four moveable boxes with four different colors, the same that colors the tip positions in the grid.
Arena-FR07.1:   Each box must have a diferent shape in each of it's four sides.
Arena-FR07.2:   Two or more boxes can't contain the same shape.
Arena-FR08:     Arena must have an induction charging point for the robot.
Arena-FR09:     Arena must be surrounded by walls of at least 10cm high.
Arena-FR10:      Arena must have a fixed upward facing ARTag for camera positioning calibration.
Arena-FR11:      Arena Height and position will be fixed.
Arena-FR12:      Arena must be able to connect to the internet.




Robot Requirements

Robot-FR01:      Robot must be built in a circular frame, with a 2wd circular chassis, with a 3d printed auxiliary frame.
Robot-FR01.1:    Auxiliary frame must have a place to attach: tag, ESP32-CAM, arduino uno, pincer claw, the recharger system with the induction charger receiver.
Robot-FR01.2:    2wd circular chassis must be used to attach: two DC motors with encoders, color sensor, two ball casters.
Robot-FR01.3:    Robot has 2 powered wheels with separate motors.
Robot-FR01.4:    Motors must have encoders.
Robot-FR01.5:    Robot has 2 ball casters.
Robot-FR02:      Robot must communicate with the server using wifi.
Robot-FR02.1:    Robot must send RGB image to the server.
Robot-FR02.2:    Robot must send battery status (high, medium or low) to the sever.
Robot-FR02.3:    Robot must receive micropython program using wifi server.

Robot-FR03:        Robot must have a pincer claw.
Robot-FR03.1:     Claw must be able to carry a 5cm wide rectangular box.
Robot-FR03.2:     Pincer must be retractable.
Robot-FR03.3:     Pincer must be capable of grabbing the arena boxes.
Robot-FR04:      Robot must have a tag to be located by the arena cameras.
Robot-FR04.1:     Tag must be of ARTag system.
Robot-FR05:       Robot must have a RGB camera.
Robot-FR05.1:     Camera must face forward.
Robot-FR06:       Robot must have a color sensor, TCS230 .
Robot-FR06.1:     Color sensor should face down.
Robot-FR07:        Robot must have a charger system.
Robot-FR07.1:     Go to the charge station automatically at the end of each task.
Robot-FR07.2:     Go to the charge station automatically when battery is low.
Robot-FR07.3:     Charger system must be able to measure the battery level using the esp32's adc.
Robot-FR07.4:     The robot will inform the rest of the system of current battery status.
Robot-FR07.5:     The battery charging system must be safe from explosions and fires.
Robot-FR07.6:     The charger must be able to charge the battery between tasks perform.
Robot-FR08:        Details of robot movement are abstracted and simplified from the point of view of the end-user.
Robot-FR08.1:     Robot can only move in a grid pattern.
Robot-FR08.2:     Robot can be commanded to move Forward/Backwards.
Robot-FR08.3:     Robot can be commanded to turn 90° clockwise or counterclockwise.
Robot-FR08.4:     If the robot is positioned out of center of a grid position, it will correct itself automatically.
Robot-FR08.5:     If the robot's facing is out of grid alignment with one of North/South/West/East it will correct itself automatically to one of those directions.
Robot-FR08.6:     The robot will not accept invalid moves such as: leaving the arena and crashing into the walls of the maze.

Note: North/South/West/East are arbitrary names for the direction, not actual geographical directions.

Anti-Requirements

Anti-01:     There are no backups.
Anti-02:     No AI tech is used.
Anti-02.1:    Specifically color and pattern identification uses simple algorithms.
Anti-03:      There are no diagonal movements.
Anti-04:       No support for phones, tablets or other touchscreen devices.
Anti-05:     Something about the stuff that CAN'T be fixed remotely.
Anti-06:       No element of the arena except the robot moves on its own.
Anti-07:       The arena lighting must be provided.
Anti-08:       The PC used must be provided.
Anti-09:       Internet connection must be provided by the user.




Comments

Popular posts from this blog

Tests

Testing different parts of the project using two 18650 batteries, one of 8000mAh and one of 3800mAh, with the charger module and two voltage regulator to validate the energy expenditure. First test:  Using the arduino with the LED bar and a servo motor. When the servo motor moviment the motors regulator flashes the current LED, showing that current usage at this time is high, it could be a problem when adding more loads. Second test:  Using arduino with servo motor and two DC motors with H-bridge and ESP32-cam disabled. Again, the motors regulator flashes the current LED, showing that the current usage is high, but it is enough to power the project motors without loads. Third test:  Using arduino with servo motor and two DC motors with H-bridge and ESP32-cam taking pictures and flashing the flash LED. The second regulator seems to be working fine with both devices. This test showed that the WiFi coverage of ESP32-cam is not great, but it is enough for the projec...

Arduino diagrams

Software-focused block diagram Flowchart for the Arduino   Simplified statechart for the Arduino Draft UART Arduino-ESP32 communication Rotation cascade controller diagram Advance cascade controller diagram

Diagramas firmware