Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Java (http://www.chiefdelphi.com/forums/forumdisplay.php?f=184)
-   -   Help for a beginner (http://www.chiefdelphi.com/forums/showthread.php?t=116266)

musicalpets 19-04-2013 23:43

Help for a beginner
 
Hey guys! I'm relatively new to coding and I decided to learn some more before next year.

I've learned mostly simple stuff for "regular" java coding, like if-then-else, while, how to print lines, variables, etc.

How do I apply this to coding a robot?

BigJ 19-04-2013 23:51

Re: Help for a beginner
 
The biggest thing to realize is that programming for a robot has a different mindset most of the time than a desktop application.

Unlike a desktop application you are usually not doing one set of instructions in a set order then exiting the program. You usually have a "control loop". The code should maintain the state of the robot every so often, taking in inputs such as sensors, joysticks, etc, and send outputs such as giving motors power, activating pneumatics, etc.

I would definitely try to build a testing board to play with if you have the materials available to you.

There are a lot of templated things available for you in the WPILib (such as the SimpleRobot, IterativeRobot, and CommandBasedRobot templates). The FRC plugins also come packaged with a multitude of example projects that I suggest poking through and trying to understand.

Dinoyan 20-04-2013 11:50

Re: Help for a beginner
 
http://wpilib.screenstepslive.com/s/3120/m/7885

tuXguy15 20-04-2013 17:21

Re: Help for a beginner
 
Here is a list of things i went through to learn java for FRC.

http://www.youtube.com/watch?v=4vYij44HWfo
http://www.youtube.com/watch?v=_LU5UhxsrCA
http://www.youtube.com/watch?v=PYsmIhvKmdo
http://www.youtube.com/watch?v=5Uz1yldz2FE
http://www.youtube.com/watch?v=AkEdmYjPEOU

http://wpilib.screenstepslive.com/s/3120/m/7885
http://robotics.francisparker.org/javadoc/
http://first.wpi.edu/FRC/frcjava.html
http://first.wpi.edu/Images/CMS/Firs...va_for_FRC.pdf
http://first.wpi.edu/Images/CMS/Firs...sers_Guide.pdf

musicalpets 01-05-2013 22:29

Re: Help for a beginner
 
Thanks so much for your help! Unfortunately I haven't been able to gain access to a test board, but I've been given permission to use an older robot.

I can get it to move forward autonomously for as long as I want...that's about it. How can I code simple autonomous, like going in a box?

tuXguy15 01-05-2013 22:32

Re: Help for a beginner
 
Are you using the RobotDrive feature or no?

tuXguy15 01-05-2013 22:58

Re: Help for a beginner
 
Here is a very stripped down version of our autonomous. This shoots the frisbees.
Code:

    // Int
    int maxShootCount;
    int currShootCount;

    public void autonomousInit() {
        maxShootCount = 6; //Does 6 Shots Just In Case Of Jam
        currShootCount = 0; //Starts At 0 Shots
        systimer.start();
        systimer.reset();
    }
   
    /**
    * This function is called periodically during autonomous
    */
    public void autonomousPeriodic() {
        double currentTime = systimer.get();

        if (currentTime < 3) {
            jaguar3.set(0.64); //Turn on shooter jags
            jaguar4.set(0.64); //Turn on shooter jags
        } else if (currentTime >= 3 && currentTime < 10) {
        if(currShootCount < maxShootCount) //If our current shot count is less than the max(6 shot max) then do the below code
        {
            solenoid3.set(true); //Activate Frisbee Launcher
            solenoid4.set(false); //Activate Frisbee Launcher
            Timer.delay(0.5);
            solenoid3.set(false); //Deactivate Frisbee Launcher
            solenoid4.set(true); //Deactivate Frisbee Launcher
            solenoid5.set(true); //Activate Frisbee Dropper
            solenoid6.set(false); //Activate Frisbee Dropper
            Timer.delay(0.4);
            solenoid5.set(false); //Deactivate Frisbee Dropper
            solenoid6.set(true); //Deactivate Frisbee Dropper
            Timer.delay(0.5);
        }
        currShootCount++; //Add on a count when code cycles through each time until it hits 2 shots
        } else if (currentTime >= 10 && currentTime < 10.5) {
        jaguar3.set(0); //Turn off shooter jags
        jaguar4.set(0); //Turn off shooter jags
        robotDrive.drive(1, 0); //Drive Forward Full Speed
        } else if (currentTime >= 10.5 && currentTime < 11.2) {
        robotDrive.drive(0.0); //Stop driving
        Solenoid7.set(false); //this puts the shooter down
        Solenoid8.set(true); //this puts the shooter down
        } else if (currentTime >= 11.2 && currentTime < 15) {
        solenoid1.set(true); //puts the robot in low gear
        solenoid2.set(false); //puts the robot in low gear
        robotDrive.drive(-1, 0); //Drives backwards full speed
        } else (currentTime = 15) {
        robotDrive.drive(0, 0); //stops driving
        solenoid1.set(false); //puts the robot in high gear for teleop
        solenoid2.set(true); //puts the robot in high gear for teleop
        }
}

Hope this helps you with some ideas. If you need any explanation, I will do the best i can to explain.


musicalpets 01-05-2013 23:38

Re: Help for a beginner
 
Yes, I'm using RobotDrive.

Thank you for the sample code!

Another quick question- how do I read the API exactly? (This one http://robotics.francisparker.org/javadoc/ ) Yes, I'm very new to this, but I'm determined to become an able coder by the beginning of the upcoming year.

tuXguy15 02-05-2013 15:45

Re: Help for a beginner
 
Don't worry this is my first year doing java for my team and it worked out great. I can try to explain the API to you the best i can. It basically has everything that the wpi library has to help or tell you what features are there and how to use them. Like for jaguar. If you find the jaguar on there it says:
Constructor Summary
Jaguar(int channel)
Constructor that assumes the default digital module.
Jaguar(int slot, int channel)
Constructor that specifies the digital module.
So i dont need to specify a slot when im constructing this. So in my code it is
Jaguar jaguar1 = new "Jaguar(1)"; The quotations dont go in the code they are to show you what the API says to do to construct it.

void set(double speed)
Set the PWM value.

for this i can do if(joystick1.getRawButton(1)) {
jaguar1.set(0.64); //the jaguar values are -1 to 1 and 0 is no output
} else {
jagaur1.set(0.0);
}
I dont know if this helped you at all or not. Hopefully it did.


All times are GMT -5. The time now is 10:01.

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