To LUGNET HomepageTo LUGNET News HomepageTo LUGNET Guide Homepage
 Help on Searching
 
Post new message to lugnet.roboticsOpen lugnet.robotics in your NNTP NewsreaderTo LUGNET News Traffic PageSign In (Members)
 Robotics / 12051
12050  |  12052
Subject: 
Re: Autonomous Robot
Newsgroups: 
lugnet.robotics
Date: 
Wed, 9 Aug 2000 20:16:36 GMT
Original-From: 
Andy Gombos <gombos_2000@%AntiSpam%yahoo.com>
Viewed: 
480 times
  
As a sensor, you could have the laser go into a large piece of quartz or some
other rock. When these rocks are hit they make the whole rock glow very
brightly, enough that a sensor could detect. You can get pieces for around $1
US, or you should be able to find similar rocks along the road.

Andy

Sattler Chris-QA1406 wrote:

-----Original Message-----
From: Doug Weathers [mailto:weathersd@metro.dst.or.us]
Sent: Wednesday, August 09, 2000 1:53 PM
To: lego-robotics@crynwr.com
Subject: Re: Autonomous Robot


in article FyyAqy.5zy@lugnet.com, Ian Warfield at
ipw47@hotmail.com wrote on
8/7/00 6:56 PM:

I thought of another possibility for robot coordinate • recognition.  It's
rather unorthodox, however, and requires some special • equipment and setup to
make it work.  Still, in the interest of creative discussion...

That's what this is all about, after all.  Type on!


Building off the base station idea mentioned earlier, set • up a single station
in the middle of the room/arena/whatever.  This station • incorporates an extra
RCX, two motors, two rotation sensors, and two laser • pointers, one mounted on
the tower at ground level and one mounted about two feet • high.  The robot
itself sports a laser detection sensor.

There are two ways to design a laser sensor - directional or
omnidirectional.  Either way creates problems with your
approach, see below.


Here's the tricky part... use polar coordinates.  Suppose • the robot wants to
know where it is relative to the tower.  It stops, sends • out an IR call for
help,

Hopefully, the base station is within IR range of the robot,
and the robot
is facing towards the base station.  Perhaps the base station
should be
stuck in a corner so its IR window faces the whole room.

and enables its laser detection sensor. The base station • receives the
call, turns on the ground-level laser pointer, and starts • rotating the tower.
As soon as the robot detects the ground-level laser it • signals again, and the
tower stops rotating.  Next the base station switches off • the ground-level
laser and switches on the high-level laser.  The high-level • laser zeroes
itself perpendicular to the floor and starts sweeping upward towards
parallel.  When the robot detects this laser, it signals • again, and the tower-
based laser stops.

Now the base station records the orientation of the tower • via the turntable
rotation sensor and the angle of the high-level laser via • the laser rotation
sensor.  The base RCX stores the turntable orientation • provides the angle
reference.  It then multiplies the height of the tower (two • feet in this case)
by the tangent of the angle of the tower-based laser to get • the distance from
the base station to the robot.  Finally, it sends the • ordered coordinate pair
to the robot, which updates its internal odometry and • continues on its way.


This is a really cool idea.  I wonder if it will be accurate
enough at large
distances from the tower, where small changes in angle of the
laser create a
large movement of the laser spot.

One way to get around this is to use an internal RCX timer with its
millisecond (?) resolution.  The base station will have only
one laser, at
ground level.  First it does a fast scan to discover the
approximate angle
of the robot.  Then it does a slower scan across the robot
again, which does
two things: gets a better fix on the location of the robot,
and gives the
robot a chance to measure HOW LONG it takes for the beam to
transit the
detector.  The knowledge of how wide the detector is, combined with
knowledge of how fast the tower was rotating (angle sensor
and IR broadcast
from tower), should allow the robot to calculate its distance from the
tower.  The accuracy limitation here is not the resolution of
the angle
sensor, but the latency issues of the RCX firmware and your
code.  (And the
smoothness with which the base station can rotate.  Oil your
turntable!)

Rather than use the width of the sensor as one leg of your triangulation
calculation, another way to do this is to collect two angle measurements
from the tower to the robot, having the robot move slightly between
measurements. You could then triangulate the robots location. I'm concerned
that the width of the sensor is an awfully small delta if the robot is
far away from the tower. If you move the robot you coul move it a little,
and if the delta in the angle is very small you could then move it some more
to get a more accurate reading.

But my main concern is the issue of the orientation of the
robot.  If it has
a directional sensor, the robot has to be pointed right at
the base station
to see its laser.  If you solve that problem by using an
omnidirectional
sensor (shaped like a cylinder, for example), then your robot
doesn't know
which direction it's pointing!  (Of course if your robot uses
synchro drive,
perhaps this isn't much of a problem.)

I think the robot needs a way to be able to point itself at the base
station.  I like the previously-posted idea of a strobe
light, flashing at a
particular frequency.  Or perhaps you could have the base
station constantly
sweep the laser beam around like a radar.  When the robot
gets confused it
starts rotating slowly until it sees the laser sweep past.
Now the laser
sensor has two different and incompatible tasks - precise
determination of
the direction to the base station (which requires a narrow
aperture) and
precise determination of the time it takes for a beam to
transit the sensor
(which requires a wider aperture).  Two sensors?  A moveable
shade or "gun
barrel"?  Something else, more clever than I can come up
with?  Or back to
the two-laser base station you describe above?

How about this: both the robot and the base station have an
omnidirectional
sensor and a laser.  The base station can rotate, sweeping
the laser across
the room.  Also, the base station's RCX rotates with the
laser so that the
IR window always looks out at where the laser is pointing.

When the robot wants a position update, it starts sweeping
the room with its
laser by rotating in place.

Now when the base station detects the robot's beam, it knows
that the robot
is pointing at it and it sends out an IR broadcast.  If the
robot sees the
IR broadcast, it knows it's pointing at the base station, so it stops
rotating and sends its own IR broadcast to the base station.
Now the base
station starts doing its magic to determine distance and orientation.

If the base station is in a corner, or some other trick is
used to ensure IR
connectivity, we're OK.  However, if not, then what?

Well, each unit will start scanning for the other one.  Every
time one of
them sees the other's laser beam but fails to get an IR
handshake, a portion
of its own 360 degree field of view is marked as "empty" in memory.
Eventually they will find each other by preferentially looking in the
unmarked portions of their field of view.  It shouldn't take
too long - I'd
expect that with the wide field of view of the IR windows
that each circle
only needs to be divided up into four or eight pieces.


In lugnet.robotics, Doug Weathers writes:
[snip lots of interesting thoughts of Cartesian coordinate • recognition]
OK, let's look at the robot.

[...]

It may be possible to do good odometry with only a single • angle sensor.  Set
up a Dorst adder/subtracter and hook the angle sensor to • it.  Normally this
would be used to correct the robot's course while it's • travelling in a
straight line, but this loses information about how far • it's traveled.
However, you could adopt a policy of only running one • motor at a time if you
need to know how far you've moved - if you can live with • your robot lurching
along left/right/left/right.  Of course if you don't care • how far you're
going you can run both motors and go straight, such as • when you're following
a line or headed for a landmark.


It *is* possible to use a single rotation sensor with an • adder/subtractor, but
not quite like that.  I have a robot driven by a • differential transmission
(one motor fd/bk, one motor lt/rt) that has a rotation • sensor attached to one
of the output shafts just before it drives the wheel.  The • transmission allows
precise maneuvering in any direction, and therefore • eliminates uncertainty
about what the rotation sensor is saying.

For example - when the robot is moving straight, the • rotation sensor is
recording the straight motion of one wheel.  Since the • transmission drives
both wheels equally, you can safely extend the sensor to • the other wheel too.
When the robot is turning in place, the rotation sensor is • recording the
turning of one wheel, which is an exact mirror image of the • other wheel, again
eliminating the need to check the status of the other • wheel.  You can set up a
formula that relates the number of turns of the wheel • (varies with wheel
diameter) to the number of degrees turned.

Duh - of course.  <smacks own forehead>

What a great way to solve that particular problem!

Now we might want to turn our attention to the design of an
omnidirectional
laser sensor.  I have some ideas but of course haven't tried
any of them out
yet.  Sensor looking inside paper cylinder?  Sensor looking
down at white
Lego "rocket nosecone" piece, or a shiny tinfoil cone?


HTH,

Ian

Thanks for the great ideas, and thanks everyone for reading
such a long
post.

--
Doug Weathers, http://www.rdrop.com/~dougw
Portland, Oregon, USA
Don't spam me - I know how to use http://www.spamcop.net
"On a clear disk you can seek forever"




Message is in Reply To:
  RE: Autonomous Robot
 
(...) Rather than use the width of the sensor as one leg of your triangulation calculation, another way to do this is to collect two angle measurements from the tower to the robot, having the robot move slightly between measurements. You could then (...) (24 years ago, 9-Aug-00, to lugnet.robotics)

3 Messages in This Thread:


Entire Thread on One Page:
Nested:  All | Brief | Compact | Dots
Linear:  All | Brief | Compact
    

Custom Search

©2005 LUGNET. All rights reserved. - hosted by steinbruch.info GbR