TRIWG Review June 1998 - Electrical & Computer Engineering
Download
Report
Transcript TRIWG Review June 1998 - Electrical & Computer Engineering
Light
Sensors
Light
Sensors
Light Sensors or Dark Sensors?
Light sensors measure the amount of light impacting a
photocell,
photocell is basically a resistive sensor: the light effects the amount of
resistance.
The resistance of a photocell is low when it is brightly
illuminated,
i.e., when it is very light; it is high when it is dark.
In that sense, a light sensor is really a "dark" sensor.
In setting up a photocell sensor, you will end up using
the equations we learned above
you will need to deal with the relationship of the photocell
resistance Rphoto, and the resistance and voltage in your
electronics sensor circuit.
What can be measured by Light Sensors?
Of course since you will be building the electronics and writing the program to
measure and use the output of the light sensor, you can always manipulate it to
make it simpler and more intuitive;
for example, most people invert the values, so low means dark and high means light.
You can also be clever about what you put around a light sensor, to affect
its properties.
You can shield it and position it in various ways.
If you use multiple sensors, you can arrange them in useful configurations and isolate
them from each other with shields.
Just like switches, light sensors can be used in many different ways:
Light sensors can measure:
light intensity (how light/dark it is)
differential intensity (difference between photocells)
break-beam (change/drop in intensity)
Light sensors can be shielded and focused in different ways
Their position and directionality on a robot can make a great deal of difference and impact
The photocell
Figure 5.6: Photocell
Light Sensor
is a special type of resistor which
responds to light.
The more light hitting the photocell,
the lower the resistance it has.
The output signal of the photo-cell
is an analog voltage corresponding
to the amount of light hitting the
cell.
Higher values correspond to less
light.
A photoresistor
changes its resistive value based on
the amount of light that strikes it.
As the light hitting it increases, the
resistive value decreases.
They are somewhat sensitive to heat,
but stand up to abuse well. Try not
to overheat when soldering wires to
them.
Photocell versus photoresistor
Photocells versus photoresistors
As with all the light-sensing devices, shielding is very important.
A properly shielded sensor can make the difference between
valid and invalid values reported by that sensor.
The idea is simple: restrict the amount of light striking
the sensor to the direction you expect the light to be coming
from.
You do not want light from external sources (i.e., camera
ashes or spot lights) to interfere with your robot.
Black heat shrink tubing often works well to shield the
photoresistor from external light sources.
light-sensitive robot
One good way to get a feel for how these sensors work,
and how your robot and software interact, is to make a light-
sensitive robot.
With two or more photo-resistors, try to create a simple robot
that can:
move around a room,
either avoiding light
or avoiding shadows in a controlled manner.
Ambient light conditions play a major role in how to
interpret the data from any light sensors.
A combination of photocells, one pointed up and one
pointed down, may be used to adjust for ambient light levels,
which may be useful in some applications.
These robots are easy to build and many high-school and undergraduate projects
for wheeled robots were build
Photoresistors are the simplest light sensors
Photoresistors are probably the only sensor
required to be on your robot.
A starting light will be used to start each contest
round, and the robot must be able to sense that
light. This is for all wheeled robot contests.
You must place one photoresistor on the underside
of your robot, probably near the center.
Be sure to shield it as much as possible from
the overhead ambient light.
Write the starting code that reads the value of that
sensor to start the match.
Photoresistors are the simplest light sensors
Mounting the photoresistors doesn't tend to be
difficult.
You can use a small amount of hot glue to
attach the photocell to a LEGO brick, or doublesticky tape will also work.
Be inventive.
Photo Transistors
and Infra Red Light
Emiting Diodes
Photo Transistors
Phototransistors are usually tuned to a
specific wavelength of light.
The wavelength is usually near visible red, or in
the infrared spectrum.
They have similar properties to the
photoresistors.
The main difference is that the
phototransistors are usually tuned to a
specific wavelength.
Photo Transistors
The other important difference is that the time
delay for a change in light conditions is much
smaller for a phototransistor.
This can be useful in doing fast control
looking for polarized light.
The time constant for a phototransistor is
much smaller than a photoresistor, so it may be
used in situations where timing is critical.
Infra Red LEDs
An IR LED is a type of diode which emits radiation in the
infrared range.
This part could be used as a component in a break beam
sensor or a reflectance sensor.
We used two kinds of phototransistors, each of which are
packaged in cylindrical brass-colored cans with a glass lens.
The first kind is packaged individually, with no wires attached,
and with three leads.
The second is surplus parts, with wires already attached, and
with each phototransistor paired with an LED.
(Note: surplus parts are usually overstocked or obsolete parts that didn't
sell through retail channels. See the book's appendix on ordering
electronics parts.)
The individual Phototransistors cost 6.270 about $1 each, about
the same as an entire surplus assembly bundle of wires and
phototransistors and LEDs.
How to tell apart the phototransistors from the LEDs:
Be careful to differentiate the phototransistors from the LEDs:
the phototransistors have relatively flat lenses,
while the LEDS lenses are more convex.
Fig 5.7 shows one of the LEDs.
Figure 5.7: The LEDs
How to tell apart the
phototransistors from the
LEDs:
Also, the two different kinds of phototransistors (surplus vs
virgin manufactured) have very different characteristics, and
cannot be used in sensors interchangeably.
The surplus phototransistors respond almost exclusively to
infrared light
They have a “resistance" of approximately 100 k when activated and 1
M when not activated.
The individual, un-wired phototransistors, on the other
hand, respond to visible light as well as infrared, and have
“resistances" about one hundred times smaller.
Interfacing to the Board
These phototransistors require pull-up resistors, a resistor
connected between Vcc and the signal line, to work properly.
In past years, all of these sensors required 47k pull-up
resistors, but that is no longer the case.
Each individually packaged phototransistor now can be used
with a 220k pull-up, while the “bundle of wires"
phototransistors work well with 100k pull-ups.
This may present a slight problem if you have already installed
RP6, one of the 47k pull-up resistor packs on your expansion
boards.
Fear not! By installing the pull-up resistors on the connector as
shown
in Fig 5.8.
For the individually packaged phototransistors, the 2.2k resistor
on the connector will be in parallel with the 47k pull-up on the
board.
Interfacing to the Board
Since resistors in parallel add reciprocally, the
combination of the two will electrically look like a2.2k
resistor (approximately).
However, if you have the “bundle of wires"
phototransistors, you will have to cut a trace on the
bottom side of the expansion board to disable the 47k
pull-up resistor, since it would otherwise dominate.
Warning! Once you cut a trace, that analog port
should be used only for the 220k phototransistors.
This means that you will have to be sure to plug these
sensors into the correct analog ports each time you
use them.
Ask me or a TA before you cut this trace!
Visible Light sensor
The phototransistors respond very well to visible
(far-red, we hypothesize) light as well as infrared.
They should be wired with a 2k to 4k resistor for best
results (we recommend 2.2k).
Because they respond to visible light, they are
extremely susceptible to interference from ambient
light.
You may be able to use them as floor-color sensors
using just ambient light.
But if you want to use them for break-beam sensing,
they will have to be very well-shielded.
Light Sensors
Light sensors are
used to detect
the presence and
Intensity of light.
These can be
used to make a
light seeking
robot and are
often used to
simulate insect
intelligence in
robots.
Light Sensors
CdS photocell (or other
resistive sensor)
Analog sensor -- Change resistance in response to light stimuli
Shielding Photocell
• Read photocell values:
while (1) { printf("%d\n",
analog(0));
msleep(100L);
}
• Mounting photocell through Lego
beam makes it easier to attach to robot
Photocell Sensors with Light Shields
• Build optical shield to limit the
amount of ambient light that is able to
fall on the sensor
Photocell Sensors Mounted on LEGO Technic Beam
Single Photocell Light Sensor
Circuit
Building light shields
• After building the photocell and test that it
works: (port 0)
while (1) { printf("%d\n",
analog(0));
msleep(100L);
}
Photocell Sensors with Light Shields
• Mount the photocell’s leads through holes of a
LEGO Technic beam, making a sensor device
that can easily be positioned anywhere on the
robot and subsequently reused
• If your photocell easily floods from ambient
room light, then the next order of business is to
build an optical shield to limit the amount of
ambient light that is able to fall on the sensor
Photocell Sensors Mounted on LEGO Technic Beam
Single Photocell Light Sensor
Circuit
• Photocell element is connected to the circuit
ground and the HB’s sensor input line via a voltage
divider circuit
• Vsens , resulting sensor voltage, varies as to the
ratio between 47KW and Rphoto
– When the photocell resistance is small
(brightly illuminated), the Vsens ~= 0v
“dark
sensor”
– When the photocell resistance is large
(dark), Vsens ~= +5 v
– Continuously varying range between
extremes
• Sensor will report small values when brightly
illuminated and large values in the dark
• May invert the sense of the readings from the
HB’s analog ports:
int light(int port) {return 255 -
Photocell Voltage Divider Circuit
Differential Photocell Light
Sensor Circuit
• Instead of comparing the single photocell to a fixed
resistor value, the values of two photocells are
compared to each other
Vout
5Rphoto1
Rphoto1 Rphoto2
• Differential sensor provides a signal that can be
directly interpreted to indicate which side of the
sensor is receiving more light, and by how much
Rphoto2 = Rphoto1, Vout = 2.5 v
Rphoto2 << Rphoto1, Vout ~= +5 v (R2 more light)
Rphoto2 >> Rphoto1, Vout ~= gnd
Ideal Photocell Sensor:
Differential photocell
sensor is constructed by
wiring two like
photocells in the voltage
divider configuration
Differential Photocell Light
Sensor Circuit
Actual Differential Photocell Sensor Schematic
Considerations:
• Use photocells with small dark resistance values, e.g., 10KW, Otherwise 47KW
pull-up resistor on HB will bias sensor reading in the dark
• Mount a “nose” between two sensor elements to cast shadow on one element if
there is a distinct source of light off to the side
Differential Photocell Light
Sensor Circuit
Program tests the
value of the
differential light
sensor to decide
which way to turn
If the value is less
than 128, the
program causes
HandyBug to take a
step to the left
Otherwise,
HandyBug takes a
step to the right
/* stepdiff.c - Light-Seeking Program for HandyBug */
int LEFT_MOTOR= 0;
int RIGHT_MOTOR= 3;
int DIFF_EYE= 0;
void main()
{
while (1) {
if (analog(DIFF_EYE) < 128) {
/* turn to left */
motor(RIGHT_MOTOR, 100); sleep(0.1);
off(RIGHT_MOTOR);
} else {
/* turn to right */
motor(LEFT_MOTOR, 100); sleep(0.1);
off(LEFT_MOTOR);
}
Polarized light
"Normal" light emanating from a source is non-polarized, which means it (i.e., the
light waves) travels at all orientations with respect to the horizon.
However, if we put a polarizing filter in front of a light source, only the light waves of
a given orientation (i.e., the characteristic plane) of the filter will pass through.
This is useful because now we can manipulate this remaining light with other
filters;
if we put it through another filter with the same characteristic plane, almost all of it will
get through.
But if we use a perpendicular filter (one with a 90-degree relative characteristic
angle), we will block all of the light.
You can use polarized light to make specialized sensors out of simple photocells;
if you put a filter in front of a light source (i.e., an emitter) and the same or a different
filter in front of a photocell, you can cleverly manipulate what and how much light you
detect.
Note that polarized light, like all other sensor types we have discussed today, has its
equivalent in nature; many insects and birds use polarized light.
Polarizing Film
Polarized film has printed or etched straight lines.
The polarizing film allows the light to travel in parallel
perpendicular planes rather than in all directions.
Assume for this section that the lines are running up
and down, and therefore the light waves will be
traveling up and down.
If a second film is placed such that the lines are
horizontal, the light traveling past the first filter will
not pass through the second filter.
Polarizing Film
Two pieces of film which are perpendicular to each other will
block out most of the light.
Parallel pieces will allow maximum light to go through.
The Polarizing lm can be used to enhance the photo transistors
and photo resistors.
The beacons at each end of the playing field are emitting
polarized light.
One side is polarized at positive 45 degrees from the vertical
and the other side is at negative 45 degrees.
You can detect the difference between one side and the other
by placing a piece of polarizing lm in front of a phototransistor
or photoresistor.
Polarized Light Seeking for Light
Sensor Circuits
• Two opposing goals consists of a light box with
light filter; one has the polarization filter aligned
vertically, while the other has it aligned
horizontally
– If polarized light is passed through a filter at
a right angle to the plane of polarization, it is
completely blocked out
– At angles in between the 0 - 90 deg, light
passes through proportional to the ratio of the
polarization angle
• Using differential sensor with polarized shields
makes it easy to tell if robot is pointed at a light
beacon or not
– Sensor readings above the midpoint indicate
readings from one beacon and readings below
the midpoint indicate readings from the other
Polarized Light
Seeking for Light
Sensor Circuits
Robot employs a pair of photocells, one
with a +45 deg rotation (right photocell)
and one with a -45 deg rotation (left
photocell). Depending on the polarization
of the light source, either
• light will pass equally through both
photocells’ filters (no polarization)
• be blocked in the left and transmitted in
the right (+45 deg polarization)
• be blocked in the right and transmitted in
the left (-45deg polarization)
Use of Light Sensors
Two Thresholds for
Hysteresis
Line Following performance run :
Setpoint =20
•Problem with single threshold – variances in sensor readings
• Bump on floor may spike the readings
• Shiny spots on line may reflect as well as the floor, dropping the sensor readings up into
the range of the floor
Figure 5.8:
Phototransistor
body and
connector
Two Thresholds for
Hysteresis
Line Following performance run :
Setpoint =20
• Solution: two setpoints can be used
– Imposes hysteresis on the
int LINE_SETPOINT= 35;
int FLOOR_SETPOINT= 10;
interpretation of sensor values, i.e.,
void waituntil_on_the_line() {
prior state of system (on/off line)
while (line_sensor() < LINE_SETPOINT);
affects system’s movement into a
}
void waituntil_off_the_line() {
new state
while (line_sensor() > FLOOR_SETPOINT);
}
Light Sensor States
Using two sensors to keep track of one of four
states:
Light-on-Left
Light-on-Right
Light-in-Center
No light
Options:
Use hysteresis on each sensor individually and combine
values into single state
Combine sensor readings first and then apply hysteresis on
resulting value
Try to maintain “light-in-center” state – make closedloop motor changes when in other states
Simple Feedback Control – Wall
Following
Robot turns towards
wall if distance sensor
indicates too far
away; turns away
from wall if too close
Single threshold for
“too far” and “too
close” = goal
variable
You can use either bend sensor or reflective
IR sensor
Simple Feedback Control – Wall
Following
void main() {
calibrate();
ix= 0;
while (1) {
int wall= analog(LEFT_WALL);
printf("goal is %d; wall is %d\n", goal,
wall);
if (wall < goal) left(); /* too far from
wall -- turn in */
else right(); /* turn away from wall */
data[ix++]= wall; /* take data sample */
msleep(100L); /* 10 iterations per second
Hard Turns Control
void left() {
motor(RIGHT_MOTOR, 100);
motor(LEFT_MOTOR, 0);
}
void right() {
motor(LEFT_MOTOR, 100);
motor(RIGHT_MOTOR, 0);
}
Hard turns
Results with bend sensor:
• HandyBug oscillates
around setpoint goal
value
• Never goes straight
Soft Turns Control
void left() {
motor(RIGHT_MOTOR, 100);
motor(LEFT_MOTOR, 50);
}
void right() {
motor(LEFT_MOTOR, 100);
motor(RIGHT_MOTOR, 50);
}
• Gentle Turning Algorithm:
• Swings less abrupt
• HandyBug completes run in 16
sec (vs. 19 sec in hard turn version)
for same length course
• In light following we want to include a
go-straight function and a randommovement-to-find-light function as well
Separate Sensor State
Processing from Control
Functions might each make use of other sensors and functions –
need to decide how to implement each
5.5.7 Reflectance Sensors
A reflectance sensor is made up of a combination of
an infrared or red LED and a phototransistor that is
sensitive to the wavelength of light being emitted by
the LED.
Over dark surfaces, the light is absorbed, whereas
over light surfaces, the light is reflected back to the
phototransistor.
A reflectance sensor (Figure 5.9) can be made using
discrete components.
The reflectance sensors are useful for detecting what
color the floor is.
They could also be used as object detectors, but they
5.5.7 Reflectance Sensors
In any application, good shielding is an absolute
requirement if any reliability is desired.
The sensors are very sensitive to distance from
the reflecting surface.
Distances greater than an inch will give very
poor reading, and distances that are too small
will not allow the right to be reflected.
The angle at which the light is reflected to the
surface is important and can produce better or
worse results at different distances.
5.5.8 Motor-Force Sensors
There are four motor force sensors built into the 6.270 Controller board,
attached to motors 0 through 3.
These sensors are included to detect when the motors might be stalled.
When the motors stall, they draw a large amount of current, which appears
as a large voltage on the analog inputs to the 6811.
When a motor force value increases sharply, that's a good sign, but not
guaranteed, that the motor may be stalled.
The value that it reaches will depend on the load attached to the motor.
Experiment by stalling the motor yourself while printing the values on the
LCD to determine a threshold that's right for your robot.
Motor force values are not very accurate when you are driving the motors at
anything less than 100%.
Driving the motors at lower speeds will cause the motor force value to
oscillate wildly, so it is recommended that you only use this information
when you are driving a motor at full speed.
Modulation /
Demodulation of
Light
and Infra-Red
Sensors
Modulation and Demodulation of Light
We mentioned that ambient light is a problem
because it interferes with the emitted light from
a light sensor.
One way to get around this problem is to emit
modulated light, i.e., to rapidly turn the
emitter on and off.
Such a signal is much easier and more reliably
detected by a demodulator, which is tuned to
the particular frequency of the modulated light.
Modulation and Demodulation of Light
Not surprisingly, a detector needs to sense several on-flashes
in a row in order to detect a signal, i.e., to detect its frequency.
This is a small point, but it is important in writing demodulator
code.
The idea of modulated IR light is commonly used; for example
in household remote controls.
Modulated light sensors are generally more reliable than basic
light sensors.
They can be used for the same purposes:
detecting the presence of an object
measuring the distance to a nearby object (clever electronics required,
see your course notes)
Infra Red (IR) Sensors
Infra red sensors are a type of light
sensors, which function in the infra red
part of the frequency spectrum.
IR sensors are active sensors: they
consist of an emitter and a receiver.
IR sensors are used in the same ways
that visible light sensors are: as breakbeams and as reflectance sensors.
Infra Red (IR) Sensors
IR is preferable to visible light in robotics (and
other) applications.
This is because it suffers a bit less from
ambient interference,
because it can be easily modulated,
because it is not visible.
IR Communication
Modulated infra red can be used as a serial line for
transmitting messages.
This is is fact how IR modems work.
Two basic methods exist:
bit frames (sampled in the middle of each bit; assumes all bits take the
same amount of time to transmit)
bit intervals (more common in commercial use; sampled at the falling
edge, duration of interval between sampling determines whether it's a 0
or 1)
Notes:
you are strongly encouraged to pay careful attention to the exercises
and problems given in your assigned readings.
Projects, exams, homeworks and reports will use some of those, so it is
in your interest to think about the answers to their questions, and work
some of them out as practice.
Elimination of the effect of the stray IR light
There is a lot of infrared light that is ambient in the air. Some
components of this light are at 40kHz, and straight output from
the sensor would look very glitchy.
The sun produces a lot of IR light, and in the sun, the sensor
output bounces all over the place.
To eliminate the effect of the stray IR light, the IR emitters are
modulated at 100 or 125 Hz and the output of the IR Detectors
is demodulated to look for these frequencies.
(see section A.7 for more information on the IR transmission)
The 40kHz frequency is known as the carrier frequency, and the
other frequency is the modulated frequency.
Noise readings in
infrared sensors and
their effect in the
Khepera Miniature
Robot’s performance
Background
Robots
Management of hazardous waste
Moving of heavy equipment
Ocean and space exploration
Fire extinguishing
Artificial Intelligence
Knowledge-based
Behavior-based
Background (cont.)
Behavior-based Artificial Intelligence
Subsumption Architecture (SA)
Build behaviors from smaller sub-behaviors
SA rely heavily on sensory input
Noise cause disturbance in robot operation
Problem Statement
Avoid negative effect of fluorescent lamps
on infrared sensory readings
Oh! No!
Objectives
Determine the effect of noisy readings on
robot performance
Determine the effect of filtered sensory
on robot performance
Methodology
Review of literature
Simulation study
Hardware implementation
Real Khepera used in testing
Filters design
Testing-platform development
Braitenberg vehicle algorithm
Comparison of results
Shaft Encoder Exercises
1. Build a shaft encoder using a break-beam optosensor and a perforated disk or LEGO pulley wheel. Verify
the raw sensor performance—what values represent the light beam being broken vs. not broken?
2. Choose a suitable midpoint value for determining encoder transitions. Write a program in IC to implement
the simple encoder counting algorithm presented in the flowchart. Use IC multi-tasking capability to display
the encoder counter variable while the counting routine is running, and experiment with the encoder.
Can you determine the performance limit of the algorithm in your implementation, in terms of counts per
second? What is a fundamental problem with this implementation method?
3. Load a library shaft encoder routine and experiment with its performance. Capture raw data from the
encoder. Based on the graph of raw encoder performance, choose suitable high and low threshold values.
Explain your choices.
4. One limitation of current encoder routines, both the IC and library versions, is that they cannot determine
which direction the shaft is rotating. Can you think of a different approach for determining the direction of
rotation?
5. Implement the trailer wheel idea discussed in the text on your HandyBug. Write a program to make
HandyBug drive around and stop, back up, and turn when the trailer wheel’s velocity is 0. Can you think of
other applications for knowing the robot’s velocity, other than as a non-zero/zero (i.e., moving/not moving)
quantity?
6. Instrument one of HandyBug’s drive wheels with an encoder, and write a program at attempts to maintain
constant velocity on the drive wheel by varying the power level delivery to the motor. Experiment with the
system by holding HandyBug in the air and applying pressure to the drive wheel. Is the system able to
maintain the velocity? What happens if you suddenly remove the pressure?
Sources
A. Ferworn
Saúl J. Vega
Daisy A. Ortiz
Advisor: Raúl E. Torres, Ph.D., P.E.
Maja Mataric
Ali Emre Turgut
Dr. Linda Bushnell, EE1 M234, [email protected]
Web Site: http://www.ee.washington.edu/class/462/aut00/
Robotic Explorations: A Hands-on Introduction to Engineering,
Fred Martin, Prentice Hall, 2001.