3D Monoscopic Guided Vehiclepeople.ee.duke.edu/~mbrooke/ece4040/00spring/00Sp_ECE...It had a large...
Transcript of 3D Monoscopic Guided Vehiclepeople.ee.duke.edu/~mbrooke/ece4040/00spring/00Sp_ECE...It had a large...
3D MonoscopicGuided Vehicle
4/25/00
Purpose
The 3D Monoscopic Guided Vehicle (Monoscop 3DGV ) design group has set
as its goal to create a remotely guided vehicle that, with a mounted three dimensional
camera, will be controlled by its user with a simulated virtual reality viewing and head
tracking system. The guided vehicle user will wear a virtual reality headset that displays
the remote car’s camera image, and will literally control what direction and how fast it
goes by moving his/her head.
Overview
Our group has many goals to accomplish during the semester. The first goal is to
utilize a pair of goggles to view video from a camera mounted on a remote-controlled car.
The camera uses NTSC technology to connect to a transmitter over the frequency of 2.4
GHz to a receiver connected by NTSC to the goggles. The second goal is to obtain a car
capable of carrying the weight of the transmitter, camera, and battery packs. The final
and most complicated goal will be to utilize a head tracking system that will allow the
user to control the movements of the car by moving their head. The control must be
designed for the head tracker to the PC, and then from the PC to the remote car. The car
should move proportionally to the degree of head movement of the user.
Parts and Materials
I-Glasses Monoscopic Virtual Reality Goggles
2.4 GHz Transmitter/Receiver
I-O Displays Head Tracker
Traxxus Remote Control Truck
3D Camera Lens
Batteries: for Car, Camera, Transmitter/Receiver
Initial Purchasing and Gathering
With our budget and design goals set, we needed to do much of the research and
purchasing necessary to begin our project. First, we needed a camera mounted on a
remote controlled vehicle, which would send its signals through an RF link into a head
mounted display. The initial step we took was to search through web sites for a head
mounted display unit. At first, the products we found turned out to be overpriced and
beyond our budget requirements. At that stage of the project, we felt it necessary to
purchase head mounted displays (HMD) with 3D stereoscopic capabilities. Such a
feature required the HMD to have two camera input channels, one for each eye. The
cheapest HMD with that capability turned out to be priced at four thousand dollars, which
highly exceeded our budget requirement. Another concern of ours was the kind of input
signal the HMD could handle. The camera that we would have in our project would
transmit its signal in NTSC format. Therefore our first choices of HMD’s included the
ones with NTSC inputs, although a few could handle PC VGA inputs as well as NTSC.
Our choice finally came down to certain types of I-glasses, particularly one’s that
are really lightweight and can be worn almost like glasses. The first one was from
Computers and More in Galveston, Texas. One type of I-glasses with video only input
cost $499, while the other with both PC and video inputs cost $750. The 3D motion
detector had a price of $250, while the 3D visual camcorder attachment cost $500. The
total price with $20 charge of shipping came up to $1520. The second choice of I-glasses
set was (surprisingly) from a company called I-Glasses, in Menlow Park, CA. The only
type of I-glasses headset they sold with one NTSC input cost $349. With $225 3D
motion tracker and $399 3D visual image camcorder attachment, the total price came up
to $983.50. Since the I-Glasses set was cheaper, and Computers and More required us to
make an initial payment before purchase, we decided to go with the second choice.
Once we had purchased most of the virtual reality parts of the monoscopic
operation system, our job now was to find a suitable remote controlled vehicle that we
could interface with. Since the motion trackers on the head mounted display sent their
outputs to a P.C. serial port, we had to find a vehicle that could receive its inputs from a
PC. At that time, we came up with a decision that we would purchase a regular remote
controlled vehicle, open up its radio controller and inspect the circuits. We would reverse
engineer the control circuitry of the transmitter, and then disconnect the joystick input
and replace it with an output signal from the serial port of a PC. Since the signal
generated by the transmitter was pulse width modulated, effectively a digital signal, we
would eventually have a remote controlled vehicle with a PC interface.
One of the best remote controlled vehicle vendors we found out in our web search
previously was Hobbytown USA. It had a large selection of remote controlled cars and
trucks, either nitro fueled or electrically powered, that came ready-to-run upon request.
After looking thoroughly through their catalog, we decided to purchase a Traxxas Sledge
Hammer monster truck. It was an electrically powered ready-to-run kit. Its wide chassis
also allowed it to carry the required instruments like the camera with the RF transmitter.
It would cost us $229.99. The 9V rechargeable battery that was the vehicle’s and the
other instruments’ power source cost $19.99, and we would soon realize we needed 2 of
them for successful operation. The battery recharger would cost us $49.99.
RF Link and Power
After purchasing the I-glasses, a head-tracker system, and a remote-controlled car,
we evaluated how we would attach our transmitter, camera, battery, and lens system onto
the car. The ECE department currently had in possession a GW-200 transmitter/receiver
pair, which was being tested in a HDTV set-up. This pair was used to test out the camera
and I-glasses and we found that the camera and I-glasses worked pretty well. The camera
we are using also came from the ECE department. It is a ¼”, color board camera made
by Panasonic with 380 lines of resolution that runs off 12 Volts DC. This camera is very
lightweight so we decided to keep it and hope that the 3D lens that still hadn’t come in
would work with it.
Because the GW-200 transmitter weighed a little over a pound, it would be too heavy
for the car to carry. We talked to some representatives at Polaris about some transmitter
modules that would weigh less and take up less square footage. What we found was the
LFT-2400 transmitter module that weighed 2.2 oz and would fit behind the car's heat
sinks and in front of the motor. This transmitter also runs off 12 Volts DC, and would
last long enough without breaking the car's suspension in half. Instead of breaking up the
GW-200 pair we bought a new four-channel receiver, the GFR-4004. We found a GFB-
12-1.3 that is a 12-volt rechargeable battery with 1.3 amp hours of current. The LFT-
2400, GW-200, and GFB-12-1.3 combined cost $359.80 which leaves us under our
budget.
Car Assembly
With the majority of the car hardware in possession, we mounted the camera and
battery to the car using aluminum plates. #4 size holes were drilled into the aluminum
plate and the camera was screw into it using plastic bushings to prevent contact between
the camera’s circuits and the aluminum. A few holes were drilled into the sides of the
aluminum and wire straps were run through them and strapped to the bumper of the car.
The camera was mounted behind the bumper, slightly above the bumper in between the
shock towers. Behind the shock towers and in front to the car’s receiver is a little empty
space. Holes were also drilled into a second aluminum plate that was strapped down to
the car and the battery to the plate. The battery and camera were secured to the car, but
are easily removed. There aren’t any additional holes drilled into the car. This
configuration was done in consideration of future projects and changes in our own. The
transmitter was strapped down behind the heat sinks. The transmitter is not strapped
directly to the heat sink so that air still flows across the sinks. This is also one of the
highest points of the car and will allow the antenna of the transmitter to be mounted high.
After strapping all the equipment onto the car and testing the system, the RF link did not
initially work, but we could directly connect the camera to the glasses and see what the
car sees. With adjustment of the camera focus, we decided that the picture would be
adequate to steer the car by.
Car Troubles
The car was suffering from a few other problems not related to the RF link. The
steering alignment was bad on the car, so the rods were taken off and the wheels adjusted
until they lined up parallel. The weight of the equipment also made it necessary to
readjust the camber of front and rear wheels. The gear from the electric motor to the
wheel drive was slightly out of alignment and was causing the wheels to lock up. We
found a washer the appropriate size and greased the gears to solve this problem. The
wheel wells were cut out and the lexan body was trimmed to fit the car. This would help
keep the dust out of the circuits. A small hole was also cut in the top and allowed the
transmitter antenna to come out opposite of the car’s receiver antenna.
Another problem that the car had was a malfunction in the rear gear drive. It was
slipping when it went into gear, so we took the gear drive apart to find out what the
problem was. It turns out that Traxxas had left out a bearing that turns with the inner
gear that connects the two spindles. Without this bearing the gear is free to move around
and grind the plastic gearbox causing the car to slip and make lots of noise. This problem
was partially corrected by attaching a plastic spacer on the end of the gear to help
stabilize it, but it is not nearly as efficient as the $30 metal bearing that they shorted us
on. Getting a bearing would also be a viable option to make the project more worthwhile
in the future. The gear box was put back together with the “new” plastic bearing, and
hopefully, it will hold the car long enough to test drive the other equipment.
Mounting the 3D Lens
Eventually, the 3D lens from NuView arrived and we discovered that the lens was
intended for a camcorder. The I-glasses had come with an RCA splitter that we used to
split the lens and camera into one signal to be transmitted back to the glasses. The lens
weighs about a 1 lb. and will be tough to mount to the car due to sheer size and weight.
The lens comes with a AAA battery supply and turns itself on when the camera is turned
on. We tested it out with the camera, and it is possible to see depth. The focal point
length is not a big issue since it does not appear to be sensitive to it.
In order to accommodate the 3-D lens, we decided to remove the camera and
battery from the car and start from scratch. All 8 shocks were disassembled, and we
located the assortment of shims to adjust them with. We took the collars and shimmed
the four fronts as much as the shocks would allow and then put the rear shocks on about
half capacity. The car’s front suspension is as stiff as the design of the car will allow
without buying some type of after-market spring set. Perhaps next semester ordering a
shock/spring set would be a good idea.
After looking through the lens with the camera, it was assumed that the 3-D
viewing would work whether the lens was vertical or sideways, so we decided to mount it
vertically above the springs. This was simpler to do, more physically feasible, and
aesthetically pleasing. We used the original mounting hardware that came with the lens
to mount the camera high enough to look through the lens. The lens was mounted at the
correct angle so that a person could drive the car and see enough of the ground and also
what was in front the vehicle. The camera was leveled off to look through the 3-D lens.
The camera height is easily adjustable by undoing one wing nut, yet stable so that it
doesn’t move when driving the car. It’s almost as if the lens is physically attached to the
camera even though it isn’t.
The battery was remounted in the original spot and all the cables and wires were
cut and folded up the appropriate length. The wires were bundled up and hid under the
battery plate and out of the way. The old GW-200 transmitter was strapped to the back of
the car in place of the broken mpx-2400 transmitter that never got replaced. The springs
in the back of the car can easily support the transmitter so that it was not a problem
mounting it as was first anticipated. We then wired the transmitter to the battery and
prepared to take an initial test drive.
Testing
The car was tested with only the I-glasses and the RF link to determine its
capabilities. The car was driven with the factory remote control, and no other control
devices. It was perfectly capable of maneuvering, and there was not any noticeable
visibility problems. The car could be driven around corners and down hallways
approximately 30-40 meters from where the driver was standing without any signal
breakup. Depth perception through the I-glasses was also good. The car can be
controlled without running into walls if the driver is careful.
There was some difficulty viewing a 3-D rendered image with the 3-D lens
mounted vertically. The image was definitely good enough to drive the car with, but it
was taking the 3D image from the wrong perspective, which the human brain
automatically corrects. We’ve decided that his could result in a serious headache if used
for too long. The lens will have to be remounted horizontally to achieve a true 3D image.
Picture 1. Testing the Monoscop 3D in the MRC, with the I-glasses, RF Link, and 3D Lens.
Picture 2. Jarrett says, “I am Terminator III”
PC Controls
The feedback loop for the virtual reality controlled Traxxas Monster Truck required a
connection from the motion tracker to the PC and from the PC to the truck’s remote
controller. While the motion tracker to the PC link still has lots of room for
improvement, the PC to car remote controller link is currently operational. The car is
remotely controlled with a graphical user interface (GUI) program, which development
and operation are explained here.
The essential part of the PC-to-Car link is the Digital to Analog Converter Board
installed on the PC. The DAC board is capable of being programmed to send any
specified analog voltages to any of its four inputs simultaneously. The analog voltages
from the DAC board were to be fed into the already-existing wireless remote controller of
Traxxas Truck, in a way to control its thrust and steering. The analysis of the remote
controller indicated the thrust and steering control knobs were just potentiometers which
input a certain level of voltage to a processor chip, named 9362TX. The chip in turn
outputted a pulse width modulated signal to be transmitted to the car over a wireless RF
link. The diagram of the chip is as follows:
Steering
Throttle
Triangular Wave
Square Wave
Pulse Output
Pin 1
Pin 2
Pin 11
Pin 10
Pin 9
The input voltage for steering was between 1.7 V, which corresponded to steering to
right, and 2.6 V which corresponded to steering to left. 1.95V of input to the steering pin
assured that the car would run straight. The input voltage for thrust was between 1.7 and
2.4 Volts, with 1.7 V corresponding to forward thrust and 2.4 V to reverse. When 2.05
Volts was applied, the car would come to a standstill.
The output from the pin 9 of the chip was a PWM signal, which consisted of triplets
of pulses following each other at intervals of 20 ms in between. The width of each pulse
was 280 microseconds. Between each pulse in the triplet there was an average separation
of 1.5 ms. The first pulse in the triplet controlled steering and the third controlled thrust
by means of shifting their locations in time relative to the central pulse. Our project did
not involve any direct manipulation of the output from the 9362TX chip, but injecting our
own control signal to the pins 1 and 2.
The DAC board that was used to send control signals was programmed with drivers
that came with a software package called DriverLinx. DriverLinx was already installed
in every computer in the Industrial Controls lab. The graphical user interface of the
program was developed using Visual Basic. As a part of DriverLinx installation, there
already existed Linx ActiveX library, named DLXOCX32.OCX, for the Visual Basic
form. The library provided mainly two different type of controls to be included in the
Visual Basic form: DriverLINXLDD and DriverLINXSR . When included in the form,
the LDD would be used to provide the correct low level software driver for the specified
DAC board, and the SR would provide means to initialize the DAC board outputs and
enable them to transmit multiple analog signals simultaneously. As the low level
software driver for the DAC board, KMB1800.DLL was used, which already existed in
DriverLINX directory.
Unfortunately, the DriverLinx configuration and programming using Visual Basic
was not a simple task to be undertaken. It was virtually impossible to write the type of
program we wanted from scratch within the project deadline of three weeks. Therefore it
was decided that an existing template program was to be modified to serve our needs.
However, the multiple-channel analog output program did not quite work correctly. It
would output the same voltage to all four outputs. For our project it was necessary to use
two analog outputs with independent voltage levels. The project came to a temporary
deadlock.
That’s when the insight to this problem was gained. When the single-channel analog
output template was inspected, it was discovered that whenever the program was turned
off after it was running, the voltage level at the specified channel stayed at the same level
until the program was re-started and the board was initialized. Therefore it was possible
to make the program have two analog outputs by initializing a channel and setting up its
value and initializing a second channel and setting up another voltage value for it. Thus
the single-channel output program was modified instead to serve our project.
The final version of the program now exists under the directory C:\Traxxas\Test of
the TA computer of the Industrial Controls Lab. Its executable file is named
Traxxas_Control.exe. The GUI and the source code lies under the form
Traxxas_Control.frm. The primary controls on the form are the two scroll bars. The
vertical scroll bar is used to adjust the speed of the car. The horizontal scroll bar is used
to control the steering. When the Stop button is pressed, the car comes to a standstill,
with its wheels in the middle position. Forward, Back, Left and Right buttons are self-
explanatory, but should be used with caution since they provide the extreme voltage
values to the car controls. The status text bar displays status messages. The Zero button
is used to bring the voltage level to 0 V on all channels, and is used just before turning off
the program.
It is easier to understand the implementation of these controls when the VB code of
the form is inspected. The Form_Load ( ) procedure is run at the beginning, which
initializes the DAC board with the existing software driver. The function of all the other
control procedures is to get an input from the user (such as the scroll bar position) and
transform it to a voltage value for the specified channel of the DAC board. In this
implementation of the program, Channel 0 is assigned for Throttle control and Channel 1
is assigned for Steering. For instance, when the Left button is pressed, 2.6 Volts is sent
to Channel 1. The procedure VoltageOutputAdj is central to the functionality of this
application, and is used to adjust how much voltage is sent to a specified channel. Unlike
all other procedures, this is public, which means it can be called from a separate module
or application. It is capable of checking whether the voltage value or channel number
inputs are within acceptable limits. All the user generated events make a call to this
procedure ultimately. There are other procedures which are useful to the running of the
GUI, such as AdjustSteeringScr and AdjustThrottleScr. They are used to adjust the
positions of vertical and horizontal scroll bars, after a voltage value is sent to either
channel 1 or 2.
This program was completed in two weeks, well within the range of the project
deadline. The Traxxas Monster Truck was tested with the control software. For that
purpose, the remote controller joystick was opened up. The wires coming from pins 1 &
2 of the 9362TX chip and going to the thrust trigger & the steering knob were cut and
instead connected to the DAC board analog output channels. The program demo ran
almost perfectly. Slight calibrations had to be made to adjust the input levels for the
stationary state of the truck.
Right now a user has to wear the Head Mounted Display unit to see the input from the
camera on the vehicle, and look at a separate computer screen at the same time to adjust
the GUI scroll bars and send a control output to the vehicle. In a future implementation
of this project, if the motion tracker becomes functional, its software drivers can be
incorporated into this Visual Basic program either as a “.dll” file compiled from their C
program source code, or as a “.bas” file if the source code is also in VB. Then a user may
be able to control the vehicle with just a motion of his/her head.
Future Design
Most of the proposed design has been completed, except for the head tracker
control. The IO-Displays tracker did not come with any sort of instructions or software.
Most of the test software and code for it were found in an obscure website
(http://www.mindflux.com). Here, you can find some test programs and a software
development kit for the device. We had problems getting any of them to work without
crashing the computer or having a fault error. This part of the design should be heavily
examined by anyone taking on this project next semester. By getting the head tracker to
work in coordination with the PC control, the design will be almost entirely finished.