Inspiration

Our inspiration came from a mixture of the hackathon theme, and just a group of friends trying to achieve one of space's greatest feats: bringing a piece of another planet home. NASA's Perseverance rover has spent years drilling and sealing rock samples on Mars, and getting samples like those back is still one of the hardest problems in space exploration. You have to find the right rock, reach it without crashing, collect it, and make it back to base, all with nobody there to drive. We had 24 hours, a boot-legged MCU setup, and a box of popsicle sticks, so we built our own small version of that mission: Rov-E.

What it does

Rov-E is a small, camera-guided "Mars rover" run from a Mission Control dashboard on a laptop.

  1. In Mission Control, you pick which mineral to collect: red or green.
  2. Rov-E searches the arena with its camera, locks on to that color, and drives toward it in short steps, steering around blue obstacles with autonomous decision making involved.
  3. It stops at the mineral, and takes the sample back home. This is simulated by the RGB LED on the shield as well as Mission Control's confirmation.
  4. It turns around and drives back to the black flag that marks home base.

The whole time, Mission Control shows the live camera feed with Rov-E's view drawn on top: the target it has locked on to, the floor it thinks is clear, and its next move. The dashboard also has live ultrasonic distance readings, and a STOP button that works at any moment. A touchscreen on the rover shows its status and an animated pixel face over Bluetooth.

How we built it

We built the project using an Arduino Uno R3, one ESP-32 S3, one ESP32-based camera, WiFi, IPS Touchscreen, Bluetooth, breadboards, LED's, wires, sensors, and much more. Our coding environment included Arduino IDE, open source firmware libraries, Linux terminal based-commands, GitHub, and was coded in mainly C++, C, and Python.

Challenges we ran into

  • Color under real lights: brown cardboard sits between red and yellow on the color wheel, the floodlight made the white floor look colored, and at one point green matched the camera's own shadows. We recalibrated many times and added the color gate.
  • No idea where we were: without encoders the rover can't measure its own position, so we tracked it from timed movements (dead reckoning) and kept every move short.
  • The ultrasonic sensor couldn't see our minerals: the paper-ball samples sit below its beam, and its readings run short. A reading of 0 means "no echo," not "path clear." The camera had to do most of the work.

Accomplishments that we're proud of

  • Once our Elegoo Arduino R3 was at max flash capacity, we worked with Wifi on ESP32 controllers, powering both the camera and the rest of our GPIO.
  • From the laptop, Rov-E can find a chosen color, drive to it, and make its way back to home base on its own.
  • Live color detection with the overlay runs at ~20 FPS, using only classic computer vision with no neural networks.
  • The complex hardware architecture was created in the 24-hour time constraint, putting our real-world engineering skills to the test.
  • The Mission Control frontend website allows both manual and autonomous control of the rover for Mars Missions.

What we learned

The main thing we all learned is that even with all of the hardware constraints against us, you can work around them in many different ways. These ways involved a full engineering team's thinking, and large scale coordination. We also learned:

  • Lighting matters more than the algorithm. Calibrate under the exact lights you'll demo under.
  • Read the firmware source. It answered questions the documentation didn't, and it caught a real safety bug.
  • Simple "take a step, look again" control beats a clever planner when you can't measure your position.
  • Building a simulator first let the whole team work at once instead of waiting on one robot.

What's next for Rov-E Rover

  • Fully hands-free collection, with the scooper picking up the sample automatically.
  • Using the onboard gyroscope (MPU6050) for accurate turns and a real map, so Rov-E retraces its path home instead of turning around.
  • Collecting several samples in one run and recognizing more colors and shapes.

Built With

Share this project:

Updates

Submission history