Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Java (http://www.chiefdelphi.com/forums/forumdisplay.php?f=184)
-   -   Issues with the Gyro - Help (http://www.chiefdelphi.com/forums/showthread.php?t=133662)

TeamMarcies 29-01-2015 16:30

Issues with the Gyro - Help
 
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.

ProgrammerMatt 29-01-2015 23:18

Re: Issues with the Gyro - Help
 
Quote:

Originally Posted by TeamMarcies (Post 1435766)
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?

TeamMarcies 30-01-2015 20:48

Re: Issues with the Gyro - Help
 
Just reporting back in to say we have resolved the situation! Thanks for the help!

nickbrickmaster 31-01-2015 10:50

Re: Issues with the Gyro - Help
 
If you don't mind, could you post how you solved the problem? I was having similar issues.

carrud 03-02-2015 02:51

Re: Issues with the Gyro - Help
 
yes, please tell us how you resolved this!!!


All times are GMT -5. The time now is 22:28.

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