This week I had the opportunity to participate in a product design class. The Lecturer asked us to sketch and build a robot using Lego mindstorms. That task seemed easy, except by the fact that instructions were not provided and teams were assembled with people of different background. The goal was to built a robot that was able to guard a base (well, the base was just a box).

My team size was 4 people (4 men actually, lack of women in STEAM is still an issue). When we started, a member of the team (let’s call him Mr. A) declared himself useless because He had never built DIY robots nor drones or things alike.

When we started, we divided the team in 2 pairs in charge of hardware and software.  I was assigned to do the software task with Mr. A. The robot kit has wheels, engines, sensors (ultrasonic, object/touch detection, light), etc.

I (pretty much like other engineers in the room) quickly entered a 5 steps program to make move forward the robot if the object (i.e.: base being guarded) was on its right and to turn right when the object was no longer present on its right. That seemed cool but when I tested it with real hardware the thing didn’t turn right because the sensor was not working properly (or maybe we didn’t understand it).

Then Mr. A came up and said “I don’t understand this thing but it seems that it does not turn when it should, after certain time have elapsed, do we have something like a timer?”. I initially said “No”, because I though robot actions didn’t have timers but actions. However his simple point of view challenged me to dig in to find out if a “timer” function was available. Well, it turned out that such as functions were available indeed, so I changed the program to move forward and then turn right after 2 seconds and do the same again in a loop. I was told that you can actually program these kits in C# if you update the firmware – programming the Lego mindstorms in C# would be awesome!

In the hardware front, the boys built a simple robot using 3 big wheels -all same size-, their biggest challenge was reducing the traction in the front wheel. Again, a good idea came out from a random guy passing by, basically they fit a much smaller wheel.

Long story short: the robot did the job (move around a box) without sensors. We won. Other teams got stuck at learning about sensors. Conclusion: creativity and design is a collective process where constant feedback is crucial. Some videos of the loser robots below. The winning robot (ours) is on this post’ header.


Javier Andrés Cáceres Alvis

Microsoft Most Valuable Professional – MVP

Intel Black Belt Software Developer

BTW: Sadly Mr. A kept convinced that He was useless. We also managed to find a driver for the robot…say hello to Emmet!