The History of Ponder Bot

Andrew Natoli
4 min readJul 13, 2019

--

One day in the summer of 2014 I was out for a run when a rush of sudden technology inspiration came over me. I wanted to build a rover that could automatically drive itself around the floor like a Roomba, take pictures, and tell me what the temperature was in which ever corner of a room it stumbled into.

Why? Because. Oh, “why” about that last part? Again, because.

Now, we don’t just come into the world naturally knowing how to purchase little wires and solder them together, so I went on a learning binge that lasted several weeks. I had already been using the one of the original Raspberry Pi models as a personal file store, so I decided to start with that and explore the ability to utilize all of its features other than just the ethernet and USB port.

The Raspberry Pi Model B+ board

I learned about the Pi’s GPIO pins, power management, geared motors, and range finders. I lurked around the product lists on Adafruit.com and that led me to the RasPiRobot 2 board. It offered a simple hardware interface for two motors and a range sensor plus an easy SDK to work with them. Perfect. I ordered a board and numerous other parts to go along with it and fit the idea in my head.

As I started piecing Ponder together I was thinking of how Ponder would reliably move around on its own. It was getting forward-facing range finder, yes, but that only accounted for obstacles directly in front of it. The wheels extended out from its chassis and those could easily get caught on a wall or something. The solution I came up with was to put two bumper switches (like these) diagonally on the sides of Ponder so they could signal a collision with an obstacle tall enough to obstruct the wheels.

Geared motors add torque so your rover can power over small obstacles or uneven surfaces

Since I didn’t have access to any sturdier materials and needed as much flexibility as possible to shape the frame and poke holes, Ponder’s chassis was constructed from a simple sheet of cardboard. This did the trick at the time and I later used some random bits lying around a junk drawer like metal pieces and plastic K’Nex rods to reinforce the frame. Ponder’s front wheel is actually an encased metal ball for directional flexibility but being rear-wheel drive the front wheel could get stuck on an obstacle or “crunch up” the chassis. To avoid this I added some springs as a lateral suspension. This sturdied up the front wheel to make it over small objects like shoe laces and gaps between floor tile.

Ponder’s front suspension was built with cardboard, foam, springs, and lots of hot glue. The foam raised the front to match the height of the rear wheels and provided a mount point for the springs.

The software that gave Ponder its rover functionality was written in Python. The main application was a command router that spun off a thread for each function (such as the motor control, camera, and eventual text-to-speech capability) to prevent blockages like taking a picture preventing the rover from turning. Its pathfinding capability was from a long and complicated logic tree that accounted for recent states of the sensors and switches (if I hit the left switch after turning left to avoid something I collided with on the right, do this). While not pretty, it worked, and the main app allowed for text commands to override the automatic or use other features. A USB wifi dongle provided the network connection to access the application, and while I experimented with adding Bluetooth, a few issues stalled the project.

The first obstacle was the rover’s power draw (note: I’m not well-versed with this stuff so I’m explaining from my basic understanding). A Raspberry Pi can operate just fine with five volts but add in two motors and that USB WiFi dongle and draw really increases. The RasPi Robot board creators recommend using a 12V input for this reason — six AA batteries.

At times, power draw from the motors could spike and this would essentially shut down the computer and all 12 volts would flow directly into the motors making the rover drive forward indefinitely. This required some special tuning of the max speed with the RasPi Robot SDK but sometimes the WiFi dongle would also lose power. Eventually the dongle decided it wanted to work with every computer but Ponder.

Figuring out the rover’s electrical problems got deprioritized as I became busy with work, life, and other projects. In 2015 I moved to a new city and while Ponder came along, it sat dormant for years. The cardboard chassis eventually started to deteriorate and became yet another hurdle to further development.

You can’t just hide that face away in a box!

Fortunately, Raspberry Pi boards have advanced with time as have my technical skills. I plan on at least refurbishing Ponder with a new Pi that has integrated WiFi and Bluetooth to avoid dongle woes and we’ll see where that leaves us with power requirements.

More details to come!

--

--