View Single Post
  #2   Spotlight this post!  
Unread 29-01-2015, 23:18
ProgrammerMatt ProgrammerMatt is offline
Programmer-Electrical-Mechanical
FRC #0228 (Gus)
Team Role: Mentor
 
Join Date: Jan 2011
Rookie Year: 2010
Location: Southington
Posts: 138
ProgrammerMatt is just really niceProgrammerMatt is just really niceProgrammerMatt is just really niceProgrammerMatt is just really nice
Re: Issues with the Gyro - Help

Quote:
Originally Posted by TeamMarcies View Post
Hey!

We've been trying for hours to fix the issue with our Gyro and we're not sure whether it's a software issue or hardware issue.

Here is our wiring (i only posted links since they are huge images):

http://i.imgur.com/ChcTKaV.jpg

http://i.imgur.com/6MXDKSq.jpg

As we rotate our gyro, we're expecting the gyro pointer to move but it isn't:
http://puu.sh/fcJgn/209d7ff45f.jpg (when we are connected to joystick/communication/code)

This is our code snippet for the gyro to drive forward straight and to drive backwards straight.
Btw, the gyro.reset(); is already called before this thread starts.

Code:
	
        public double gyroSensitivity = 0.05; // (voltage / 1000)

	public void run() { // This method is executed only for DriveForward and
						// DriveBackward
		r.autonomousCounter = 0;
		r.theRobot.setExpiration(0.1);
		while ((Math.floor(r.autonomousCounter / r.loopsPerSecond)) <= DriveClass.seconds) {
			if (RecycleRush.InTeleop) {
				break;
			}
			if (forward) {
				r.theRobot.drive(r.robotDriveSpeed, -r.gyro.getAngle() * r.gyroSensitivity);
			} else if (!forward) {
				r.theRobot.drive(-r.robotDriveSpeed, -r.gyro.getAngle() * r.gyroSensitivity);
			}
			Timer.delay(r.timerDelay);
		}
		r.theRobot.drive(0.0, 0.0);
	}
It drives forward, but does not drive complete straight - same for backwards.

We also made code to make it rotate while its stationary.... We made two methods, one of which we deprecated for now because we found simpler logic.

Code:
	public void DriveRotate(int rotateAngle) {
		r.queueThread(new Runnable() {
			public void run() {
				r.gyro.reset();
				while (r.gyro.getAngle() < rotateAngle) {
					r.theRobot.drive(0.0, 1);
				}
                                r.theRobot.drive(0.0, 0.0);
			}
		});
	}
	
	/* DEPRACATED METHOD
        public void DriveRotate(int rotateAngle) {
		r.queueThread(new Runnable() {
			public void run() {
				r.gyro.reset();
				double angleHeader = r.gyro.getAngle(); // Initial Angle
				while (Math.abs(angleHeader - r.gyro.getAngle()) <= Math.abs(rotateAngle)) { // Rotating
					r.theRobot.drive(0.0, rotateAngle * r.gyroRotationSpeed);
					DriverStation.reportError(r.gyro.getAngle() + "", true);
					Timer.delay(r.timerDelay);
				}
			}
		});
	}*/
We have the Gyro connected to: 0 so this is our declaration:
Code:
    // Gyro - Handles Trajectory Paths
    public int GyroChannel = 0;
    public Gyro gyro = new Gyro(GyroChannel);
Basically, the Gyro isn't working in any way.
Where are your signal wires? is it the red/black wire that's sideways? id recommend using pwm wire. but anyways, can you preform an analog read on the rate pin and post your results?
__________________
2015-2016 CSA
Software Engineering Student @ Johnson & Wales University
Team 228, Gus Robotics Inc.
Facebook
FLL Mentor for 1107, Edison Eagles!
2015- CT State Champions
2012- WPI Finalist(Thanks 1884 and 549), Spirt, Best Website
2011- WPI Chairman's award winners!
2010- WPI Champions! (thanks 230 & 20), WPI Engineering Inspiration, CT Best Website, CT VEX Champions (VRC228, VRC228b) (21-1-0)
2009- QCC VEX Champions (VRC228) (11-0-0), Innovate Award (VRC228)
Reply With Quote