Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Programming (http://www.chiefdelphi.com/forums/forumdisplay.php?f=51)
-   -   Holonomic + gyro/PID (http://www.chiefdelphi.com/forums/showthread.php?t=88012)

Jogo 19-12-2010 22:10

Holonomic + gyro/PID
 
I've been doing some research on holonomic drivetrains, and understand the physics behind it. I'm assuming that, of course, error will begin to mount up, which requires some additional programming to overcome.

I've heard people say they use a gyro and a PID loop, but I'm confused as to how the gyro is implemented. And, even if the gyro is used to control the angle, how can you control the velocity? Doesn't the gyro itself rack up some error over time?

I'd appreciate any advice and any good links. Thanks!

apalrd 19-12-2010 22:41

Re: Holonomic + gyro/PID
 
Usually, when a gyro is implemented, it is used for "field-centric" control. The robot is moved relative to the field, whatever direction it might be facing. This is usually implemented by converting the X/Y inputs from the joystick into a polar coordinate (magnitude and direction), and then add the gyro heading to that direction, then convert the polar coordinate into four motor outputs for either the omni wheels or mecanum wheels.

By itself, an omnidirectional drive has no control loop (or controls the speed of its wheels using P/PID and encoders), but there isn't much error to build up in the drive alone.

Possible sources of gyro error:
IF you boot up while moving, then the gyro accumulator will set the centerpoint to whatever it was when you booted up, and then when you stop moving it will think you are continuously spinning. I do not know if it is possible to set the centerpoint manually.
IF you somehow manage to max out the gyro's output (since it has a 5v or 0v limit), you will loose all of the data above that point. Which means you will be off.
The gyro does have a little bit of running error, which might or might not be negligible during a 2.5 minute match. I have only ever used it during auto, and the error in 15 seconds is negligible.

If you would like to experiment with new drivetrains (especially field-centric driving), I highly suggest that you prototype during the off-season.


Any more questions? feel free to ask.

Jeremy Germita 19-12-2010 22:43

Re: Holonomic + gyro/PID
 
The gyro is used in allowing the robot to be controlled reletive to the driver(driver-centric) as opposed to the traditional robot-centric mode.

For example, if you push forward on the stick, the robot will move away from you, pulling it back will bring it closer to you.

A PID loop can be used to control this angle more precisely.

Gyros DO drift over time. This is measured by Degrees/minute. Check your model's datasheet for the exact rate.

I recommend you have your program "Zero" out the gyro reading at the beginning of autonomous and teleop(given that the angle should the same at the end of auton). In Arizona last year, our robot was left on during an especially long reset period and our autonomous program behaved strangely, almost incurring a penalty.

Perhaps you could use a complementary filter with an accelerometer and gyro. This will make your angle heading more accurate. Google is your friend.

A PID loop is can also be used to control the velocities of each wheel. You must use an encoder on each wheel.

kgzak 19-12-2010 22:52

Re: Holonomic + gyro/PID
 
I would use a gyro to make sure that when you want your robot to go straight, that it goes straight and does not turn. Encoders will help you keep your wheels spinning at the same speed which should keep you going straight but if your wheels have different amounts of traction then the gyro can be used to keep the robot going straight. For velocity you can try an accelerometer or just use the encoders, even though it'd be hard to get a good measurement, again because of traction.

apalrd 19-12-2010 23:19

Re: Holonomic + gyro/PID
 
I disagree. There is generally not enough slip to make a difference. I would argue that an accelerometer is an almost useless sensor for FRC robots, since we have access to encoders, which measure much more precisely than accelerometers.

I would actually argue that it is easier for a driver to drive the robot directly (robot-centric) than field-centricly, since 1. it is easier to drive, and 2. once you get used to driving, it is very nice to have direct control of where you want your robot go go.

Just because you have a holonomic drive, that does not mean it must use a gyro and be field-centric.

Ether 19-12-2010 23:20

Re: Holonomic + gyro/PID
 
Quote:

Originally Posted by Jogo (Post 986725)
I've been doing some research on holonomic drivetrains, and understand the physics behind it. I'm assuming that, of course, error will begin to mount up, which requires some additional programming to overcome.

Could you please explain what error you are referring to, which will begin to mount up ?




theprgramerdude 19-12-2010 23:24

Re: Holonomic + gyro/PID
 
I believe he may be referring to the error in all sensors which may deviate from the actual, true reality, like a gyro reading +/- .01 degrees per second turn when it's in fact stopped. It's the nearly unavoidable stuff in cheap electronic parts.

Ether 19-12-2010 23:30

Re: Holonomic + gyro/PID
 
Quote:

Originally Posted by theprgramerdude (Post 986741)
I believe he may be referring to the error in all sensors which may deviate from the actual, true reality, like a gyro reading +/- .01 degrees per second turn when it's in fact stopped. It's the nearly unavoidable stuff in cheap electronic parts.

Thank you, that's one possible interpretation... but I'd like to hear from the OP if that's what he meant... or if he had something else in mind.

He doesn't mention gyro in the first paragraph where he says he understands the physics but is concerned that "error will begin to mount up".

He mentions gyro in the second paragraph, but says he doesn't know how it is implemented. So I inferred that he wasn't referring to gyro error in the first paragraph.



AustinSchuh 20-12-2010 00:02

Re: Holonomic + gyro/PID
 
Quote:

Originally Posted by apalrd (Post 986737)
I would argue that an accelerometer is an almost useless sensor for FRC robots, since we have access to encoders, which measure much more precisely than accelerometers.

We've seen wheelspin when accelerating quickly, and the wheels will slip when the robot gets hit hard. Both of those are relatively common in a match, so the encoders will no longer be at the correct position. This doesn't mean that encoders are useless sensors, but that they aren't a magic bullet. A clever algorithm would decide which one is more likely to be right, and use it to correct the other one based on the measured conditions.

biojae 20-12-2010 01:37

Re: Holonomic + gyro/PID
 
Quote:

Originally Posted by AustinSchuh (Post 986753)
We've seen wheelspin when accelerating quickly, and the wheels will slip when the robot gets hit hard. Both of those are relatively common in a match, so the encoders will no longer be at the correct position. This doesn't mean that encoders are useless sensors, but that they aren't a magic bullet. A clever algorithm would decide which one is more likely to be right, and use it to correct the other one based on the measured conditions.

Or, you could use follower wheels with encoders on them.
http://www.chiefdelphi.com/media/photos/32440

AustinSchuh 20-12-2010 01:43

Re: Holonomic + gyro/PID
 
Which work best on flat ground. Not a problem in 2009 when the ground was flat, but I wouldn't have been willing to put them on our robot this year.

EricS-Team180 20-12-2010 09:02

Re: Holonomic + gyro/PID
 
Kris noted the simplest use of a yaw rate sensor and it's easiest implementation: driving straight. We have used this technique on most of our 'bots, holonomic, treaded & wheeled, since 2004. The algorithm is a simple multiplier on the yaw rate detected. We usually determine it empirically, This is added to the motor outputs to create an automatic, opposite spin to the measured yaw rate. When driving straight, the yaw rate is close to zero, so the effect is nil...easy and powerful. Add in a small deadband around zero yaw rate, if it wants to twitch when still. This also helps, if someone is trying push on a corner of your 'bot. Typically we give the driver a button or switch, to turn the effect on and off. We always want the driver to have the final decision on handling.

We've used the gyro for field-centric control, as well. Our results are mixed - a great implementation with our 2004 holonomic 'bot, and a rather disastrous implementation with our swerve drive, last year. Give yourself a lot of time for driver training and robot testing.

Eric

Ether 20-12-2010 09:22

Re: Holonomic + gyro/PID
 
Quote:

Originally Posted by EricS-Team180 (Post 986798)
and a rather disastrous implementation with our swerve drive, last year.

What was disastrous about it?



Jogo 20-12-2010 12:34

Re: Holonomic + gyro/PID
 
Wow you guys are all really helpful! I think two separate issues are coming up here, mostly due to my ignorance.


1) Driver-centric vs. Robot-centric: It seems that this issue is not related to the type of drive train. For example, by turning the joystick into a polar coordinate, if I push the joystick to (0.5,pi/4), then I could see using a gyro to constantly PID to the angle even without holonomic wheels. Error in this case could be caused by the gyro, which if it mounts up might require the driver to zero the gyro midway through the match.

2) Holonomic vs….well, non-holonomic: Having never tried a holonomic drivetrain, I was wondering if error could mount up naturally. For example, pushing the joystick to (0.5, pi/4) might for some reason not move the robot at precisely this amount due to environmental factors. I was wondering if teams use a gyro or other sensors to deal with this, but maybe this isn’t a significant problem.

I'd appreciate any attempts to help clarify this stuff for me. Thanks :)

Ether 20-12-2010 12:55

Re: Holonomic + gyro/PID
 
Quote:

Originally Posted by Jogo (Post 986838)
2) Holonomic vs….well, non-holonomic: Having never tried a holonomic drivetrain, I was wondering if error could mount up naturally. For example, pushing the joystick to (0.5, pi/4) might for some reason not move the robot at precisely this amount due to environmental factors. I was wondering if teams use a gyro or other sensors to deal with this, but maybe this isn’t a significant problem.

This isn't a holonomic vs non-holonomic question. You could ask the same question (or a similar question) about a simple tank drive: "If I push both joysticks forward by the same amount, will the robot go precisely straight ahead?". The answer is no, and it doesn't matter because the driver adjusts (within reason) the joystick position(s) to get the response he seeks.

The only reason holonomic is different is because it has three degrees of freedom, and it's annoying for the driver if, for example, he's got a Halo-style interface and he has to continuously hold a rotation command in order to keep the robot from rotating while he's busy working the fwd/rev and strafe joystick. That's when gyro feedback or a "calibrate" button on the joystick is nice to have.






All times are GMT -5. The time now is 03:41.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi