My First Robot, part 1
Thursday, 17 April 2014
Several months ago I backed a Kickstarter campaign for Primo, a simple Arduino-based teaching tool for introducing programming logic to kids age 4-7. My oldest daughter was just 3, but my pledge got me plans and code only, and I figured the way projects go around here it just might be done by the time she’s 4. The Primo experience involves a cute (albeit simple) little robot named “Cubetto”, and right off the bat I figured I would modify some things to make him more… well, awesome. Little did I know of the rabbit hole I was about to tumble into.
As usual I started off with some sketches, thinking about what the robot could do aside from the Primo stuff. A suite of sensors would enable all sorts of behaviors, from simple (light seeking, line following) to more complex (play catch, drawbot). I would definitely enable a simple “radio control” mode, but I’m much more interested in autonomous (or semi-autonomous) behaviors. Isabell is obsessed with the Curiosity Mars rover, so it should definitely have some of that DNA. I also believe the rover should have some personality, so I’m looking into some simple dot-matrix display “eyes” that can communicate artificial emotion, and a simple speaker to give it a voice.
I’m focusing on a tracked design for now, so it can navigate a moderately challenging indoor environment. I love the idea of solar charging, or at least autonomously finding its own charging station. Of course it needs a camera so I’m drawn to the Raspberry Pi as a brain, which might also make remote control from an iPad relatively easy. I imagine the Rasp Pi might talk to one or more Arduinos, which can handle low-level functions like battery monitoring or distance sensors. I already have some small full-rotation servos, which will make the drivetrain simpler (vs. motor controllers, gearboxes, etc.).
My main guiding principle here will be flexibility/modularity, so features can be added or changed as we try things, get bored with them, imagine new uses, learn stuff, etc. Next step, start building the platform.