MTE 380 Rescue-Bot for the Fall 2021 MTE 380 Mechatronics Engineering Design Workshop course. The project was to build an autonomous robot that could navigate through a search & rescue course (shown in gif below), avoiding traps and hazards, to locate, retrieve, and bring a Lego person to safety (green zones).
Click here for full Youtube video of our robot completing the search and rescue course!
Team Member | Role |
---|---|
Abhinav Agrahari | Electrical and Firmware Lead |
Kyle Tam | Mechanical Lead |
Daniel Leung | Project Manager |
Liam Clark | Software Developer |
- datasheets, high-level block diagram, KiCAD schematics
STM32F401RE
Nucleo board --> main microcontrollerArduino Nano
--> Dedicated servo driver
Sensor interfacing and signal conditioning/classification is implemented for the following sensors:
- 4x
TCS34725
Color Sensors, multiplexed MPU6050
IMU- Motor Encoders -
DG10D-E
- Hobby servo -
MG995
- 2x Hobby motors -
DG10D-E
Bare-metal firmware using C++.
The firmware structure is based on 'state machines' and co-operative 'tasks'. Firmware for our robot was written using PlatformIO, enabling use of the Arduino framework for SMT32 Nucleo board.
The firmware for STM32 Nucleo board is located here. See it's README for more info about the STM32 project.
Color data from various parts of the Search and Rescue course were collected with all color sensors, then plotted in 3D RGB space. Our color classification uses a Euclidean distance thresholding algorithim.
Motor speed is controlled via PID feedback loop, tuned through heruistic methods
Motor encoder velocity readings are filted using a low-pass filter in software to turn this:
into a smoother reading like this: