I'm thinking that for many applications a gyro would be better than
odometry. Specifically, to determine if a robot is actually moving even
though the wheels are grinding away or slipping, such as when blocked or
gaining slow ground in mud or other slippery surfaces. On the other hand,
can they be used *for* odometery - to measure distance traveled ?
Is there free source code out there for making use of any of these in
robots?
Got any favorite brands/models of gyros ?
Thanks!
JCD
You can do that with gyros and accelerometers, but the accelerometers
have to be significantly better than the ones usually seen in R/C gear
or even as MEMS parts. Accelerometers give you acceleration; integrating
this to get velocity is subject to cumulative error.
Rate gyros give you angular rate. Gyros don't tell you anything
about linear motion.
The problem of integrating accelerometers, gyros, odometry, and
GPS is hard, and the available solutions are not yet cheap.
In 2004, it took a 4U rackmount cabinet full of gear to do it,
and that's what the CMU team's Grand Challenge vehicle had.
Now it's down to something the size of a thick book at about
$7K.
Merely detecting wheel slip, though, isn't hard. You just
need encoders on all wheels, both driven and non-driven.
That's how ABS works.
John Nagle
Pogo,
I did some experiments with a Futaba Heading Hold gyro for robot
navigation but without
much success. These are really designed to have a human in the loop
for periodic
"corrections." For the navigation on my jBot off-road robot we ended
up using a commercial
IMU from MicroStrain consisting of gyros, accelerometers and
magnetometers.
There is a writeup on the integration of that sensor data with the
robot's odometry at:
<http://www.geology.smu.edu/~dpa-www/robo/Encoder/imu_odo/>
I don't think the hobby R/C gyros like those used on my TREX-450 are
accurate enough
for robot navigation. I know that Larry Barello's FIRST team in
Seattle, as well as some of
the more advanced battle bots, used R/C style gyros in order to drive
in straight lines,
not quite the same as location but still a useful navigation
improvement.
cheers,
dpa
The LogicTech 2100T and 6100T are very nice gyros, and the latter has
a PC interface IIRC.
One additional used for these gyros on a robot that I forgot to
mention in the previous post
is outlined in the jBot IMU Odometry article in the section on
determining if the robot is
stuck.
Basically the technique is to compare the rate-of-rotation of the
robot around its center (in
radians per second) as measured by the gyro and also as calculated
from wheel odometry.
Normally the two should be the same or very close to the same. When
they are very different,
the robot's wheels are slipping. And when the rate-of-rotation
calculated from the wheel
odometry is large and that from the gyro is near zero, the robot is
probably stuck.
Details of this and other methods for determining and responding to
the condition of being
stuck, high-centered, tangled in brush, etc, are covered in the last
section of the writeup,
along with a video of the robot getting itself unstuck from several
situations:
<http://geology.heroy.smu.edu/%7Edpa-www/robo/jbot/jbot2/
jbot_unstuck.mpg>
Even without the IMU, a simple gyro might be useful in several of
these behaviors, like
determining if the robot is trapped, that don't require location
accuracy.
regards,
dpa
> JCD
If you are using differential steering, I understand the measurement
of angle is the biggest problem, while overall distance is relatively
accurate... at least in indoor conditions. For example, say you've
instruct your robot to travel 120", turn 180 degrees and then return
where you started. The odometry might say you've traveled 240", but
you've really only traveled 239". This is 1" shorter than you planned,
because of wheel slippage. But, you might end up significantly
further away from your target if the robot doesn't travel a straight
line. When one wheel slips more than the other, it will cause
significant changes in your angle. If your path is off by 2 deg, then
you will end up over 8" from your target. (it is a bit more
complicated because your angle continuously changes)
I imagine a gyro would be a benefit this situation greatly. Even if
there is drift, you can reset it any time your robot comes to a stop.
Regarding acceleratometers, I do recall reading about car navigation
devices which existed before the GPS system was created. The stand-
alone ones, which could not have access to the wheel odometry, worked
using accelerometers. They would adjust for drift by resetting reset
their position whenever you made a turn. It could do this because it
would assume you would only turn onto a road, and could compare your
estimated position with its internal map. As long as the drift was
less than the distance to another road, it could properly figgure out
your position.
Joe Dunfee
> Regarding acceleratometers, I do recall reading about car navigation
> devices which existed before the GPS system was created. The stand-
> alone ones, which could not have access to the wheel odometry, worked
> using accelerometers. They would adjust for drift by resetting reset
> their position whenever you made a turn. It could do this because it
> would assume you would only turn onto a road, and could compare your
> estimated position with its internal map. As long as the drift was
> less than the distance to another road, it could properly figgure out
> your position.
You're talking about the original ETAK navigator. I know that
system and its designer. It did in fact have access to wheel odometry.
The original version had only odometry and a magnetic compass, yet
using map data, it was able to correct most errors as the vehicle
made turns.
The Etak people did build an inclinometer/rate gyro combo, well
before MEMS accelerometers and gyros. It was about the size of a
soda can. The gyro was a motor driving a flexible metal plate,
with capacitive sensing of plate deflection. The inclinometer
was an electrolytic 2-axis device. I used to have a few of these units.
That approach wasn't that useful. They also played around with an optical
device like an optical mouse, intended to look down at the road and
measure movement. They never even tried accelerometers; ones good enough
to be useful for measuring velocity by integration cost too much.
Once GPS got going, it wasn't worth the trouble to do an inertial
system.
John Nagle
Has anybody got http://www.microstrain.com/3dm-gx2.aspx to work
with a UAV - http://scratchpad.wikia.com/wiki/UnmannedAerialVehicles
and what is the cost.
dpa: do you know what kind of sensors the microstrain unit you used
contained, i.e. how much of the accuracy was due to optimal signal
processing and how much was due to expensive components?
for some time i have been pondering building a 4-rotor electric heli
but one of the big unknowns is how much accuracy is even theoretically
possible with a tiny mems imu.
-chris.
Hi ,
I am also trying to get a GWS-PG-03 gyro to connect to my 8051
based land robot , it is not very sophisticated just 4 motors
differential drive with IR sensors for obstacle detection.
This gyro from what i have read seems to give PWM output thats why i
was really interested as my 8051 micrcontroller has the PCA
( programmable controller array) to automatically read PWM input by
detecting a rise or a fall in the PWM signal. i am planning to buy a
oscilloscope to verify the signal coming from the gyro ... until then
this seems to a interesting thread to look out for info ...
Regards
Deepak
Now *that* is exactly what I'm looking for! That's a great approach to
achieving what I probably would have written waaaaay too much code for!
thanks !
JCD