Inspiration
Alex and Richard's comment: "Realistically, we're here to relax this hackathon, and 2 of the teammates from a potential team of 5 bailed. Yet, Masaru is all in! He wants to truly build something, especially for his first ever hackathon, and a hardware one at that! So he decided to de facto solo the project (shoutout to Richard for some assistance)."
Masaru's comment: "I took it as a challenge to create a decent roomba from scratch, even if that meant doing it solo. I wanted to make my first hackathon something I can be proud of no matter the circumstances. I was determined to learn, not take any shortcuts, and build something great. I think it payed off."
Further comments/description by Masaru:
What it does
The roomba like device tracks the lines on the floor and moves along the line. It is able to differentiate between white, brown, and everything else. It then uses an original variant of the wiggle algorithm to make it stay on track. With the time and manpower (solo) I had available, I would say this is a reasonable result.
How we built it
I first hooked up two DC motors to the arduino, along with three two sensors: color and sonic. I used the color sensor to keep the roomba on track, and the sonic sensor to detect any obstacles on its direct path and stop. I had to manually calculate the ranges the color sensor outputs (0 to around 400) and convert it into RGB (0-255). This made it able to distinguish between the colors with decent accuracy.
Challenges we ran into
This was my first every hackathon (which happened to be a hardware-based hackathon), so I didn't really know what I was doing at all and had to figure out everything, from connecting circuits to scripting, all from scratch. Thankfully the mentors and fellow competitors were eager to help (shoutout to them!).
The sonic sensor was very unstable and unreliable. It did not give consistent readings, leading to the roomba not stopping properly at times. Even when adjusting orientation, it gave very inconsistent values, even after switching them out. Moreover, the lack of a gyro ball made the roomba very hard to steer and move in general. It got stuck on small bumps and edges, making the wiggle algorithm malfunction. In addition, when I was trying to program the obstacle-avoidance maneuver, the roomba again got stuck often, leading to inconsistent results.
Making the code readable was another issue. Since the arduino scripting language is not very compact and very verbose, the original code by itself was very hard to read and debug. So I took the time to refactor and make common, repeated chunks of code functions, making the code more compact and readable.
Wire management and hardware design was also fairly challenging. I often had to rewire everything because I ran out of space, or simply because the pin wires were too short and had to be extended one by one.
Furthermore, the map we were given to test out our robots were quite rough and bumpy, which made the robot hard to maneuver. This made the improvement process challenging, as the roomba worked sometimes, but not all the time.
Finally, towards the end (at around 7am) I realized that my roomba was going around the map in the wrong orientation, and had to make quick adjustments. The testing station closed right after I realized, so I wasn't able to get too much fixing done.
Accomplishments that we're proud of
I am happy that I was able to make the roomba line-track decently well.
What we learned
I also made it my mission to complete this hackathon without any AI assistance, which greatly improved my understanding of everything I put my hands on; hardware, circuits, scripting, algorithms, etc. This made the project something I can genuinely be proud of. I also learned that working with hardware and microcontrollers is not as hard as I anticipated. I was able to get away with minimal knowledge of circuits (though I burned one DC motor controller and lowkey burned my fingers). After some brief explanations from mentors and at workshops, I was able to configure the microcontrollers correctly and make it function as I envisioned.
What's next for TBA
Implement box-pickup, obstacle maneuver, stronger motors, better path-tracking algorithm, etc.

Log in or sign up for Devpost to join the conversation.