Log in

View Full Version : how can you use a gyro in autonomous mode


magical hands
01-01-2004, 19:31
Hi! i just have a question since i am very new programmer. Okay i know how to create an autonomous mode but how can you use gyro's in autonomous mode. please show me a code so i can have a look at it and learn. thanks by the way my e-mail address is jigarjuhi@yahoo.ca. thanks guys for your time and co-operation. :)

Anthony Kesich
02-01-2004, 01:18
I shouldn't even be writing this, but i felt like i needed to. The second topic in this forum asks the exact same thing (found here:http://www.chiefdelphi.com/forums/showthread.php?t=23268) and i gave them the following response:

one piece of advice, before bringing up something that is not completely obscure, search the forums and also just go the the appropriate forum and make sure to change the start date from one week to one year or something along those lines. here's one forum on gyroscopes and C and the like:
http://www.chiefdelphi.com/forums/showthread.php?t=23071

I cannot say it enough, search, search, search!

As i just realized though, that doesn't give autonomous code. All a gyro can really do is tell you which way you're pointing, nothing more. So there really is no way to give sample code except for the following which just integrates the gyro output to give you one number which shows how far you've turned.


int theta=0; //in global variables

// from here on in autonomous section or what have you

signed char gyro = (GYRO-127)*G_ADJUST; //GYRO being the macro for wherever your gyro is attached
//and G_ADJUST is a constant to adjust to degrees

if (theta+gyro>=360) //rolling from 359 to 0 and around again
theta+=gyro-360;
else if (theta+gryo<0) //rolling from 0 to 359 and around again
theta+=gyro+360;
else
theta+=gyro;

Mike Soukup
02-01-2004, 02:18
Hi! i just have a question since i am very new programmer. Okay i know how to create an autonomous mode but how can you use gyro's in autonomous mode. please show me a code so i can have a look at it and learn. thanks by the way my e-mail address is jigarjuhi@yahoo.ca. thanks guys for your time and co-operation. :)
I cannot say enough that posting "I need code to use the gyro" or "I need autonomous code" is akin to saying "I need a design for an arm for my robot" in the mechanical forum. In order to get a useful answer you need to make your question more specific. What should the code do? Should the code simply read the value of the gyro and discard it while driving forward for 5 seconds? Should the code make sure the robot drives straight? Should the code drive straight ahead, turn 90 degrees, then drive straight ahead again? In engineering requirements are key. We cannot help you if we don't know what you need help with.

Mike

GregTheGreat
02-01-2004, 13:31
I know what the best bennifit of a gyro is (in my mind)... I consider it a backup device... using it with your counter you can make a very sound auton. program. I am searching through my programs last year to find an example of what I am talking about but my programs are on my old computer so when I backed them up on CD's they got thrown all over the place.

Basically it would work like this....

you could use a go-sub like this


Gyrocounter:

if sensor1 > 130 then Gyro1: 'Gyro Sensor Clockwise

if sensor1 < 128 then Gyro2: 'Gyro Sensor Counterclockwise

Goto Gyro3:

Gyro1:

cont = cont + sensor1 - 129

Goto Gyro3:

Gyro2:

cont = cont + sensor1 - 129

Gyro3:

Pass:

Return


Then incorperate your code like this....

Right_Gyro:

gosub gyrocounter

if cont < 32000 then

relay1_fwd = 1 'Two Wheel Drive On

relay1_rev = 0 'Four Wheel Drive Off

endif

On indc goto RGyro, RGyro1, RGyro2, RGyro3, RGyro4

RGyro: 'Half Circle

p1_y = 175 'Right Front Wheel Forward

p2_x = 175 'Right Rear Wheel Forward

p2_y = 250 'Left Front Wheel Forward

p3_x = 250 'Left Rear Wheel Forward

If cont > 37800 then RGyro1

Goto Main:

RGyro1: 'Half Circle

indc = 1

relay1_fwd = 0 'Two Wheel Drive Off

relay1_rev = 1 'Four Wheel Drive On

p1_y = 175 'Right Front Wheel Forward

p2_x = 175 'Right Rear Wheel Forward

p2_y = 250 'Left Front Wheel Forward

p3_x = 250 'Left Rear Wheel Forward

If cont > 38200 then cycle = 0

If cont > 38200 then goto RGyro2

Goto Main:

RGyro2: 'Straight Forward

indc = 2

p1_y = 253 'Right Front Wheel Forward

p2_x = 253 'Right Rear Wheel Forward

p2_y = 253 'Left Front Wheel Forward

p3_x = 253 'Left Rear Wheel Forward

If cycle >= 130 then RGyro3

Goto Main:

RGyro3:

indc = 3

p1_y = 127 'Right Front Wheel Stop

p2_x = 127 'Right Rear Wheel Stop

p2_y = 127 'Left Front Wheel Stop

p3_x = 127 'Left Rear Wheel Stop

If cycle >= 140 then RGyro4


You can get the basic idea on how to program a gyro (id the variabales)

REMEMBER
This is pbasic coding you will need to convert it into C for this years controller... on Innovation they have the "pamphlet" they created to show you how to do many of these functions... I will work on making some C programming for a gyro but I have many other things to work on for my team so I do not know how productive I will be...

If you need help with the coding give me something to work with... a general idea is hard to show you what you want but if you give me a very spacific idea I would be more than happy to help you out ne way I can.

If you need the help contact me...
AOL IM- GregTheGreat04 (no spaces)
E-mail- g.ullstam@comcast.net

Good Luck,

-Greg The Great