VADCFLL-L Archives

First Lego League in Virginia and DC

VADCFLL-L@LISTSERV.JMU.EDU

Options: Use Forum View

Use Monospaced Font
Show HTML Part by Default
Condense Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Sender:
First Lego League in Virginia and DC <[log in to unmask]>
Date:
Mon, 10 Nov 2014 21:51:26 -0500
Reply-To:
Frank Levine <[log in to unmask]>
Subject:
From:
Frank Levine <[log in to unmask]>
Content-Type:
multipart/related; boundary="001a11c3e70834107a05078c5cf6"
In-Reply-To:
MIME-Version:
1.0
Comments:
To: Naren Botlaguduru <[log in to unmask]>
Parts/Attachments:
Naren,
  This is a common problem with the gyro.  We got the following solution
from http://www.droidsrobotics.org, and in turn have contributed some of
our code to their great site.  I encourage other teams to help these guys
build a useful repository of foundational code, they're doing it the right
way.

Anyway - here is the code that will cure your gyro woes:


​
I'm not sure how well the photo will come through, but here's a brief
explanation - this all goes into a 'reset gyro' myBlock that you can call
when you need to reset it.

1) play a tone to signify the start of calibration
2) read the angle and rate
start a loop
3) read the angle only - apparently switching from angle+rate to angle mode
causes it to go into reset mode
4) check to see if the angle is >= 0 OR < 0, more on that in a moment
end the loop when step 4 evaluates to true
5) play a tone to signify that calibration has finished.


So, what the heck is going on here?  It appears that when you switch from
reading angles/rates, to just angles, it causes the gyro to reset itself.
While it is resetting, it will return 'NaN', which stands for 'Not a
Number'.  NaN's have caused me more headaches than I care to admit as a
professional software engineer... they're hard to detect.  The property
that is being exploited here is that NaN returns 'false' when compared to
any other number.  It's not >, =, or < anything, because it's Not a
Number.  What the loop is doing is just reading the angle from the gyro
(after it has been put into reset mode) until it starts returning actual
numbers.

Finally - Once I found this, I tried it out and simply explained it to the
team.  I strongly believe that you don't have to re-invent everything.  If
someone else has published a good solution, then it's perfectly fine to
understand it and use it.  It gave us a great opportunity to discuss how
computers represent things like NaN (which can happen when you divide a
number by zero).  They all understood it and we have a robot that turns :)

Hope this helps you or anyone else that is suffering from the dizzy robot
syndrome..

-Frank Levine
Coach, "The Construction Mavericks"



On Mon, Nov 10, 2014 at 9:09 PM, Naren Botlaguduru <[log in to unmask]>
wrote:

> First of all thanks to this community for clarifying lot of questions.
> Great work.
>
> We are using Gyro sensor this year and understand about the Drift.
>
> We tried following but still Robot sometimes just spins....
>
> 1. Kids are resetting the sensor before every program and also couple of
> times in the program.
> 2. Compare is set to equal to rather than Greater than Equal to or Less
> than equal to as those both options didn't work for us.
> 3. We are also deducting some drift value to get right angle value.
> 4. Kids are using a very slow power to do the turns.
>
> But still the program that works one day is not working another day due to
> the Gyro sensor keeps on rotating sometimes. Kids are restarting the Robot
> when they see that but still not helping.
>
> Any tips and tricks to solve this will be a great help. Is there firmware
> or something that need to be done so that Gyro sensor doesn't give us that
> drift and gives perfect angle stop.
>
> Thanks in advance for any help with Gyro Sensor.
>
>
> --
>
> Thx
> Naren
>
>
>
> --
>
> Thx
> Naren
>  ------------------------------
> To UNSUBSCRIBE or CHANGE your settings, please visit
> https://listserv.jmu.edu/archives/vadcfll-l.html and select "Join or
> leave the list".
> VADCFLL administrative announcements are sent via VADCFLL-ANNOUNCEMENTS-L.
> Visit https://listserv.jmu.edu/archives/vadcfll-announcements-l.html to
> subscribe.
>

-- To UNSUBSCRIBE or CHANGE your settings, please visit https://listserv.jmu.edu/archives/vadcfll-l.html and select "Join or leave the list".

-- VADCFLL administrative announcements are sent via VADCFLL-ANNOUNCEMENTS-L. Visit https://listserv.jmu.edu/archives/vadcfll-ANNOUNCEMENTS-l.html to subscribe.


ATOM RSS1 RSS2