Software navigation system design for delivery robots using LEGO mindstorm sensors and brickpi3 as the core hardware of the robot. The system should be able to follow a track, be able to navigate the map and decide whether to enter or not. It also requires to decide whether to drop the package, and it should play a sound when after a successful delivery and when it returns to the mail room.
- Python (version 3.9)
- Bash
Here are the core feature of the system:
-
Color Detection:
- Detect the important color: Red, Green, Orange, Yellow, Blue, White, Black
- K-Nearest Neighbor (KNN)
- K = 5 with 100 samples per color
- Color sensor mounted on a rotationall arm to cover more blind spot
-
Drive Control:
- Different operation for moving straight, execute, turn, rotation on spot
- Multi-thread to let the robot moves independently from color detection
- Self adjust using gyro sensor
-
Dropping Mechanism:
- Spin the conveyor belt to drop one package at a time
- Play sounds when delivery is dropped and when return to mail room
-
Navigation:
- Track for turning point when detect a black line
- Check for permission to enter the room
- Navigate room for drop location
- Exit room
- Return to mail room when finish all delivery
- Additional feature:
- Self adjust after every turn detect
- Black line turn detection when exit the room
Flow Chart:
- Move the sensor arm all the way to the left
- Set the robot at bottom left corner with the two pin touching the back wall
- On the brickpi, make sure to have install python 3.9
- From the root folder, run the following script:
cd project ./main - Press any button when the robot finishes the calibration
- A few component and subsystem tests are available in minh_test.py
- To change test, change the function that is called in minh_test.py
- From the root folder, run the following script:
cd project ./test.sh