![]() |
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! |
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. |
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. |
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.
|
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. |
Re: Holonomic + gyro/PID
Quote:
|
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.
|
Re: Holonomic + gyro/PID
Quote:
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. |
Re: Holonomic + gyro/PID
Quote:
|
Re: Holonomic + gyro/PID
Quote:
http://www.chiefdelphi.com/media/photos/32440 ![]() |
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.
|
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 |
Re: Holonomic + gyro/PID
Quote:
|
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 :) |
Re: Holonomic + gyro/PID
Quote:
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