Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

My mock up of a Mars Rover, based on a toy tank.

Video Clips of Rover driving around my


house and yard are at bottom of this page.

New and improved version shown above. The old version with the ugly black box on top is
shown below.

Improvements in Rev 2 of the Rover:


• Much lighter since a 2nd 9.6V battery was in the black box. Also more stable and not top
heavy.
• Has a clean top deck where I can add solar panels or more instrumentation later. This also
just looks a lot prettier than that black box.
• All control electronics are inside the main chassis. Better protected from dirt, and no
external ribbon cable.
• 6 IR Ranging sensors vs. previous 4 for better obstacle avoidance
• Mission control is now a Visual Basic based GUI where I click buttons rather than
manually type serial commands.
• Camera pan is done with a single pan/tilt assembly. Before I tried to use the tank's turret
for panning. Too coarse.
Mars Rover Bot - The Tank Cam grows up.
Most of these photos have larger versions available that you can access by cliking on the picture.
On another project page I have photos and video clip of the first use of this tank I bought at Toys
R Us about 2 years ago. You may recall then I just took off the turret with gun and GI Joe at an
M60 and replaced it with an X-10 wireless camera duct taped to the top. Last time we saw this, it
was under my deck looking for base balls.
Reborn as the Mars Rover now, behold. I have switched over to a small sized wireless camera
mounted onto a pan and tilt assembly. Both the camera and pan/tilt assy, I bought through Super
Droid Robots. The camera is a 1.2 GHz model with 380 lines of resolution. Not bad for the $65 I
spent on it. It runs on a 9V battery which makes connection very simple. The 9V is stored at
bottom of the vertical mast. Remote control is now done via the Maxstream RF Modem, model
9XCite. This is a 900 MHz RF Modem. I bought the 9600 BAUD version and found the range to
be quite acceptable for my purposes. I can control the tank remotely using the camera (and built
in microphone) for feedback, similar to the real Mars Rover. At the mission control I add a 5
second delay to simulate the delay seen by the actual rover and its controllers. The video signal
from the bot is also delayed 5 seconds. It made exploring my kitchen an interesting problem that
took almost an hour.
Below is a block diagram of the bot as it exists currently. The DARC Board is the brains, taking
inputs from the IR range, Sonar range, and temperature sensors. The RF Modem is a
bidirectional link to the command station providing both input in the form of command and
output as data is transmitted back to the control station from the various sensors on demand. The
sensors can also trigger an automatic transmission when a command to move is in conflict with
the sensory data that is collected. For instance if I tell it to drive forward 30 cm and the IR
Ranging sensors detect an object ahead in 10 cm it will send me a proximity alert and abort the
command. I can override this though I use the video camera carefully to survey before doing so.
Notice the video camera is not included in the system diagram as it operates completely
independently from the DARC Board and other circuitry including its own power supply. The
video data is in no way fed back into the system as the other sensors are. The RF modem has a
max 9600 BAUD which is to narrow a bandwidth to send video data.
Block Diagram of the Mars Rover system
The brains for this bot is a DARC Board running the program that I attach below written in
BASCOM. As it stands right now I can control the driver motors, and camera pan/tilt only using
23% of available code space in the Mega8535. For anyone running the free download version of
BASCOM the 2K limit comes at 25% so this will work. The full version of software currently
with sonar/IR/temp sensor and 2 way communication is at 42% (just under 4K).
More before and after. I show the before design of the control electronics in the ugly black box.
The turret motor was very coarse control so when I used it to pan the camera view I would most
often overshoot the intended viewing angle. The new and improved version brings all the control
and communication electronics inside the chassis of the tank.

In the guts shot above are visible, left to right, RF Modem, DARC DMC (motor control) board,
and the main brains, the DARC Board. Both photos have larger views that you can see by
clicking on the image.

The top of the rover now sports a nice flat surface by bolting on a sheet of 1/4" expanded rigid
PVC. I used 1/8" PVC to make the mast which holds the camera pan/tilt assembly, sonar sensor,
and LED headlights. A door at the bottom affords quick access to change out the 9V battery. A
hole pierces the rover's top cover to allow the wiring harness necessary to control the pan/tilt
servos. I marked out a grid showing 10 mm increments to help in measuring distances when
viewing camera images at mission control. I have to tilt the camera down to include this view of
course. I can tilt the camera up to almost 60 degrees above horizontal and down to about 45
degrees below horizontal. The sonar rangefinder is mounted with the camera so any sonar range
data that I get is aligned with where the camera is looking, as opposed to the 6 IR rangefinders
which are fixed and looking out level with the top surface of the rover.
A 9.6V rechargeable NiMH battery is in the comparment accessible from the bottom (fits right in
after some Dremel action).

Radio Link: The RF link is accomplished via a pair of the Maxstream 9XCite 900 MHz
Wireless modules. Clik here to download data sheet for the module. Clik here to download the
user manual. These are $50 each and come in a 38400 and 9600 Baud flavor. I have the 9600
version as it has longer range. Range with the XCite module is 100' indoors (I can send from my
basement lab to the office 2 floors above no problem), and about 300' outdoors. Maxstream
makes a longer range version module, the 9X-Stream that has the same footprint.
The Maxstream modems have built in error correction, so for simplicity I do not do an error
checking algorighm with my communications interface. Tests so far have shown that I don't need
it and since I don't actually send this bot to another planet I can afford a little bit of error.
I have updated the command interface to be done with a GUI that I wrote in Visual Basic. It
allows me to control the rover's main drive with forward, back, left and right buttons with a
specified number of units for each motion. I'm working on the other features of pan/tilt controls
for camera as well as grahical displays of the sonar and IR range finders for obstacle detection. I
went with a radar screen looking display for the IR ranger and a side view for sonar. This screen
capture shows the GUI as it stands in its early stages. It shows an obstacle detected in front and
to left (this was actually one object) and gives a collision warning in the data received from the
rover. I still have work to do on this but will post the VB source code when I have it working
fully. I'll also dress up the rather drab grahics. Not sure what functionality the bottom center
button will have yet, but my 9 year old suggested I have it so it could be like "real robots" in the
movies.
Under the GUI layer, the command interface is simple. The GUI invokes serial commands to go
out on my PC's serial port which in turn drives the mission control RF Modem. Each serial out
stream is a 3 byte packet formatted like this:
byte1 byte2 byte3
where byte 1 is the command type byte. It can be 'm' for move (operate the drive motors), 'c' for
camera pan/tilt control, etc. The 2nd byte is the action identifier. 'f' for forward, 'b' for backward
etc. The 3rd byte is a number that specifies magnitude of the action to be taken. Some commands
only have 2 bytes, like the get sonar range command.
The repertoire of commands currently are:
• mfx/mbx - move forward/backward x units where x is a hex number. Each
unit is 5 cm distance.
• mrx/mlx - move right/left. This is a neutral (tank style) turn of about 10
degrees per x unit.
• trx/tlx - turret left 1 unit (rotates the turret about 10 degrees)
• cd1/2/3 - tilt camera down. 1 gives about 30 degrees down, 2 gives 60 and
3 is 90 degrees down.
• cu1/2/3 - Like the cd command but this gives control to tilt up 30, 60 and
90 degrees.
• cc - camera center. Takes camera back to center vertical position.
• lo - lights ON (front headlight LEDs)
• lf - lights OFF
• gt - get temperature reading
• gs - get sonar range, return value via RF modem is range in cm
• gix - x is 1 for front left,2 for front right, 3 for rear left, 4 for rear right.
return is range in cm
Still to come is a batch command where I can send a string of commands all at once and it
executes them in sequence.
Mission Control:The control station consists of 3 elements: a PC for serial commands (the
laptop shown here), RF modem with delay module (white box left of laptop), and the video
receive/delay system.

The laptop is a new one with a fair amount of power. The serial command out interface is dirt
simple and could be done easily with a 486 processor based machine, but the video display and
delay interface requires serious power, thus the new laptop is the one I use. It is an Averatec with
AMD Mobile 1.6 GHz processor, 512 MB RAM.
The RF modem and delay module is the matching Maxstream 9XCite mated to a DARC Board.
The DARC board receives input on its UART from the laptop, waits 5 seconds then retransmits it
out the RF modem.
The video display/delay system is done using a USB 2.0 interface device made by ADS called
USB Instant TV. It takes input through the box shown above on S-Video or Composite inputs
(audio too though I don't use it), and then brings in the video data to the laptop over the USB 2.0
interface (you need 2.0 to handle the bandwidth for video). The software that is included gives
the ability to "time shift" the incoming data, buffering the incoming data onto the hard drive
while simultaneously displaying on the screen data recorded 5 seconds earlier. Also known as
DVR technology.
Source code:
mars_rover4.bas - Rev4 of the code for the Mars Rover board. Written in BASCOM BASIC.
delay_modem.bas - the code used in the DARC Board/RF modem box to introduce 5 second
delay.
Video Clips (Windows Media File format):
Rover driving outside and inspecting underside of my vehicle (4 Megs)
Same clip as above but lower quality (1.7 Megs)
Rover exploring the kitchen (1.6 Megs)

You might also like