A ROVing Robot



Building a Metal Melting Furnace


Alternative Power

Classic Computers




About this site

Coming soon?

Email the author:

Since I can't do much outdoors this time of year, to keep myself from bouncing off the walls I've decided to try to build a medium-sized, possibly solar-powered, four-wheel-drive robot (more accurately, a Remotely Operated Vehicle, or ROV) that can be driven around our couple of acres of pasture via the web, and used for viewing and exploring the various plants, insects, and animals found there. If nothing else, it will drive the yappy dog next door to distraction. Since I already have a couple of candidate computer systems for use in controlling the critter (either a laptop, or an HP E-PC, running Ubuntu Linux) and didn't feel like tackling the radio communication part of it just yet, I decided to start with the frame, motors, and motor drive electronics. It occurred to me that those little "mobility scooters" will drag a pretty hefty person around at a pretty good rate of speed, so I decided to look into what it would take to get my paws on a couple of those to use for parts. After considerable scrounging, I was able to come up with some relatively cheaply because they had things like a broken axle, bad batteries, etc. They have a really nice solid-state motor controller, complete with an electromagnetic parking brake, and a really hefty 24-volt motor with a very nice differential gear setup. Since I had decided I wanted four-wheel drive and tank-type steering, a broken axle on one side wasn't a problem. In fact, I got Chris to drill through the (very, very hard) main gear and one of the bevel gears and pin them together, to essentially disable the differential and turn it into a dedicated gearbox to drive one axle. (Thanks, Chris!)

I'm planning to get some sprockets, chains, and pillow-block bearings at the Surplus Center and rig it up so one motor assembly is mounted at the front, and one at the back, and each one drives both wheels on one side via the chains.

Here's what the motor assembly and the inside of the gearbox looks like. Lots of nice sticky black grease that I had to remove so we could work on them. Yuck.

Here's what it looks like cleaned up a bit.

And here's what it looks like with the wheel attached.


A few days ago, I got some nice steel shafts about 2 feet long with several stepped diameters and key slots at the Surplus Center for a few dollars each. I also picked up several pillow block bearings and some sprockets and chain. I cut the shafting to length and turned down the end of it to fit through the wheels, and turned the outside of the wheel centers to fit snugly inside the sprockets. Then I assembled the sprocket over the wheel center with the setscrew hole in the sprocket lined up with the existing hole through the side of the wheel center and slid the whole works onto the shaft. Finally, I clamped the assembly in the drill press vise and drilled a hole straight through the existing holes, through the shaft, and out through the other side of the wheel center and sprocket collar to accept a 1/4" bolt. The bolt is held in place with an airplane nut so it can't vibrate off. I mounted the pillow blocks a few inches apart on the other end of the axle.

I'm still debating if I want to leave one wheel on each side direct-driven by the differential and use a sprocket and chain to transmit that rotation to the other wheel on the same side (which will be mounted as just described), and reverse the setup on the other side (so the left-front and right-rear wheels are directly driven by motors and in turn drive the other wheel on their side via chain and sprocket), or if that's going to end up making the robot too wide (about 29" it looks like). The other thing I could do is to attach all four wheels using the configuration described above and drive all of them with chains and sprockets. This would create some additional mechanical complexity, but it would allow me to shorten the motor output shafts substantially, resulting in a narrower wheel spacing. Decisions, decisions...


I've been playing with some ideas for computer vision for the robot - maybe to allow it to follow one of the donkeys or a person in the pasture. I started out writing a "blob" detector (using the QuickCG library to get video on the screen, and V4L2 to get input from my old Logitech webcam) that looks for red things in a webcam image, highlights them in different colors, and tags the centers of mass with crosshairs. It's set to only track the six largest red objects in this image, and the lighting wasn't very good, so it picked up red highlights on our wooden end-table and drapes. I had fun working out the details, and it works pretty well, but then I ran across OpenCV - an open-source computer vision and image processing library some folks have developed - and decided to try working with that for a while. Why reinvent the wheel, right?