Showcase your skills in the semester finale
Follow a systematic approach to create your final project:
Choose from these challenge categories or propose your own:
Navigate a complex course as quickly as possible while avoiding obstacles
Find and identify targets in a complex environment
Perform precise manipulations or measurements
Multiple robots working together on a shared goal
The best projects combine multiple concepts from the semester: sensor fusion, computer vision, machine learning, and intelligent navigation. Think about how to showcase your learning!
Break your project into manageable modules that can be developed and tested independently:
// Example: Search and Rescue Robot Architecture
class SearchRescueRobot {
private:
NavigationModule navigator;
VisionModule vision;
CommunicationModule comm;
MissionController mission;
public:
void setup() {
// Initialize all modules
navigator.init();
vision.init();
comm.init();
mission.init();
Serial.println("Search and Rescue Robot Ready!");
}
void loop() {
// Get current mission state
MissionState state = mission.getCurrentState();
switch(state) {
case SEARCHING:
executeSearchPattern();
break;
case TARGET_FOUND:
approachTarget();
break;
case COLLECTING_DATA:
gatherTargetInfo();
break;
case REPORTING:
transmitResults();
break;
case RETURNING:
returnToBase();
break;
}
// Update all modules
navigator.update();
vision.update();
comm.update();
mission.update();
}
private:
void executeSearchPattern() {
// Use computer vision to scan for targets
vector<Target> targets = vision.scanForTargets();
if (!targets.empty()) {
mission.setTarget(targets[0]);
mission.setState(TARGET_FOUND);
return;
}
// Continue systematic search
navigator.executeSearchPattern();
}
void approachTarget() {
Target currentTarget = mission.getCurrentTarget();
if (navigator.navigateToPoint(currentTarget.location)) {
mission.setState(COLLECTING_DATA);
}
}
};
Implement comprehensive testing to ensure reliability:
class TestSuite {
public:
void runAllTests() {
Serial.println("Starting comprehensive test suite...");
testBasicMovement();
testSensorAccuracy();
testVisionSystem();
testNavigationAlgorithms();
testMissionLogic();
testErrorHandling();
Serial.println("All tests completed!");
}
private:
void testBasicMovement() {
Serial.println("Testing basic movement...");
// Test forward movement
robot.moveForward(50);
delay(1000);
float distance1 = robot.getDistance();
robot.stop();
delay(500);
// Test backward movement
robot.moveBackward(50);
delay(1000);
float distance2 = robot.getDistance();
// Validate movement occurred
if (abs(distance2 - distance1) > 10) {
Serial.println("✓ Basic movement test PASSED");
} else {
Serial.println("✗ Basic movement test FAILED");
}
}
void testSensorAccuracy() {
Serial.println("Testing sensor accuracy...");
// Take multiple readings
float readings[10];
for (int i = 0; i < 10; i++) {
readings[i] = robot.getDistance();
delay(100);
}
// Calculate standard deviation
float stdDev = calculateStandardDeviation(readings, 10);
if (stdDev < 2.0) {
Serial.println("✓ Sensor accuracy test PASSED");
} else {
Serial.println("✗ Sensor accuracy test FAILED");
}
}
};
The final competition consists of multiple components:
Your final presentation should include:
Create comprehensive documentation that showcases your work:
Build a professional portfolio that demonstrates your growth throughout the semester:
Your portfolio will be valuable for college applications, internships, and future opportunities. Invest time in making it professional and comprehensive!
Your project will be considered successful if it demonstrates: