Building a Pet Companion

When my wife and I both worked fulltime, we had to leave our dog Darwin home alone for 7-8 hours every day, so I decided to build a pet companion to keep him company. Primarily, I wanted to build something that would entertain Darwin, but I also thought it would be fun to create something that would allow me to check on him from work.

My vision for a pet companion was actually less of a robot and more of a remotely operated vehicle.  In fact, the only autonomous behavior in the robot is its ability to find and pick up a ball and reload the ball launcher.  Most importantly, I wanted to be able to interact with the remote environment and have fun doing it.  The “fun” aspect was the most important and had a lot of impact on my design decisions.

I started with the Microsoft Robotics reference platform and the Microsoft Robotics Developer Studio software. My process for designing and building the robot was basically trial and error.  I didn’t have the skills to use 3D modeling programs well enough to be effective, so I would embrace an idea and give it a try.  I built early prototypes using “instant gratification” processes and materials.  In fact, the first prototype was built almost entirely of cardboard and hot glue. Once I had a design that seemed to fit and function, I upgraded to chemically welded styrene and aluminum parts.  In some cases, it took several major iterations before I found a design that actually worked.  In fact, while the current treat dispenser seems pretty simple today, it is actually the third major iteration that I built to completion because the first two had jamming issues.

Building a robot is a challenging endeavor, especially for someone like me who has little electronics experience, no mechanical engineering knowledge, and a limited budget.  I would categorize my most common struggles into two areas, first and probably foremost was budget.

Early on in the project, I was actually focusing on getting the robot to work using a BasicX microcontroller and an IP-enabled web cam (because I happened to already have those things lying around). I spent many hours trying to build a pan/tilt for the big bulky web cam and trying to program my BasicX to be a decent servo controller (let alone network server etc.).  Much of this work turned out to be a waste of time compared to the relatively meager cost of good servo controllers and cheap netbook PCs.  One key lesson learned is I should not shy away from spending a few bucks to achieve my vision.

The second major frustration that kept rearing its head was part fabrication.  In many cases, I thought up a design for a part or component, only to be frustrated by the fact that I couldn’t make it work! I spent many hours at the local home improvement, toy and hobby stores trying to find an available product that had what I needed.  This issue definitely killed many of my ideas.  But, learning from my first challenge, I recently ordered a RepRap Mendel 3D printer and am hopeful this will be less of an issue in the future.

Overall, designing and building a pet companion was a fantastic learning experience and was a lot of fun. Now if I can only get the pet companion to walk my dog for me…

This article was written by Jordan Correa, a Test Developer on the Robotics Team. Jordan’s robot has evolved through several iterations with a lot of hand-built hardware and custom software. You can view a video about Jordan’s robot at