Sandy Rover

Sandy rover was originally built with the aim of leaving it to wonder autonomously in the Namib Desert in Namibia.  Sandy was built using minimal components to make it as cheap as possible.  I wanted Sandy to roam autonomously, powered by the sun, while I monitored its location remotely using a web interface.  I hoped Sandy would manage to drive several hundred meters, or more, autonomously.

Sandy has three wheels, one at the back and two at the front, and a body constructed of PVC conduit pipes.  The single rear wheel is powered by a brushless DC motor salvaged from an old printer.  The motor came complete with drive electronics, making my job much easier.  However, the drive electronics only spin the motor in one direction.   The motor was connected to the wheel using a set of gears also salvaged from the printer.  This single-wheel drive setup was chosen in an attempt to make the rover as energy efficient as possible.

Sandy steers by swiveling its powered wheel.  By swiveling the powered wheel by 180 degrees, Sandy can reverse (overcoming the problem of the non-reversible drive motor).  The swivel motor is tiny, but manages to swivel the rear wheel thanks to a large gear ratio.  The swivel motor has very simple control electronics.  Two relays turn the motor full on in either the forward or reverse direction.

Sandy has no batteries and is powered entirely by the sun using a 20W solar panel.  This design choice was made for several reasons.  Firstly, batteries tend to be heavy, which is a problem for a solar-powered robot.  Secondly, Sandy was designed to be “disposable” in the sense that I was planning to leave it in the desert.  Rechargeable batteries are too expensive for a disposable project!  Finally, LiPo batteries could potentially be a fire hazard if left in the hot desert.  Fortunately, the Namib desert is very bare and gets a lot of sunlight, so solar power should be available most of the time.

Sandy was designed with a very simple goal in mind: drive as far as possible, autonomously, using only solar power.  I had to determine the minimal set of sensors which would allow Sandy to accomplish this goal.  Bearing in mind the fact that I wanted Sandy to be as cheap as possible, it was outfitted with the following sensors:

  • GPS receiver
  • Two light sensors
  • A wheel encoder

An Arduino Uno constantly steers Sandy towards the light using the two light sensors.  If the wheel encoder detects that Sandy is not moving, even though it should be, the Arduino declares the rover stuck, and initiates an escape procedure.  To escape, Sandy will reverse for 3 seconds and then turn in a random direction before reverting to light following mode.  This simple control scheme could definitely be significantly improved, but I had limited time available before I left to Namibia.

The original design called for a GPRS modem to upload Sandy’s GPS location and several other sensor readings to a web-based control center.   Unfortunately, I ran out of time and could not implement this vital feature.  However, I did write proof of concept code which allows an Arduino to upload information to a web server such as Xively using a $25 GPRS modem.  I suspect many people are interested in using this cheap modem, so my code is here.

Since the tracking feature could not be implemented in time, I could not  leave Sandy in the desert.  However, Sandy still went along to Namibia for some supervised desert trials.


Desert trials took place a few kilometers outside the town of Swakopmund.  Since the rover did not contain tracking hardware, I planned to run after it as it drove around in the desert.  We looked for an area of the desert which had a hard surface and was relatively obstacle free.  Fortunately, this was not hard to find.  Fog was rolling in over the desert from the sea, but we predicted we still had half an hour before it reached us.  So, I put Sandy down, turned it on and stood back.

Sun flooded the solar panel and Sandy began to move forward.  After driving a few meters, Sandy encountered a small rock and came to a stop.  Sandy correctly detected this and began its escape procedure.  However, as Sandy’s drive wheel swiveled 180 degrees to reverse, it dug itself into the sand and eventually got stuck.  Despite the relatively compact surface, the sand was still loose enough for Sandy to dig itself in.  At other times, the drive wheel would spin uselessly, kicking up sand but not moving the rover.  Obviously, one wheel drive was not a good choice!

Sandy proved that it could drive around and detect obstacles using only solar power.  However, its mechanical configuration proved  ill-suited for the desert.   My next attempt at an autonomous desert robot will have to include more powered wheels.