Go to Post Computers have a nasty habit of doing exactly what you tell them to do instead of what you want them to do. - KenWittlief [more]
Home
Go Back   Chief Delphi > Technical > Programming > Java
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Reply
 
Thread Tools Rate Thread Display Modes
  #1   Spotlight this post!  
Unread 07-03-2010, 22:35
ideasrule's Avatar
ideasrule ideasrule is offline
Registered User
FRC #0610 (Coyotes)
Team Role: Programmer
 
Join Date: Jan 2010
Rookie Year: 2009
Location: Toronto
Posts: 108
ideasrule is a jewel in the roughideasrule is a jewel in the roughideasrule is a jewel in the roughideasrule is a jewel in the rough
Re: Multiple Autons

You can definitely do it from the Classmate. Just go to the I/O tab and select one or more of the digital inputs. In the code, use station.getInstance().getDigitalInput(number) to get the value of the input, where station is the name of the DriverStation object. There are 10 digital inputs, so you can have 2^10-1=1023 different autonomous programs.
Reply With Quote
  #2   Spotlight this post!  
Unread 07-03-2010, 22:55
The Engineer The Engineer is offline
Registered User
FRC #2607
 
Join Date: Jan 2010
Location: America
Posts: 14
The Engineer is an unknown quantity at this point
Re: Multiple Autons

where do you assign the switch between the autons in the code do you do it in disabled periodic or robot init
Reply With Quote
  #3   Spotlight this post!  
Unread 08-03-2010, 21:02
LukeS LukeS is offline
4272 mentor, 1024 alumnus
AKA: Luke Shumaker
FRC #4272
Team Role: Mentor
 
Join Date: Mar 2009
Rookie Year: 2009
Location: Indianapolis, IN
Posts: 60
LukeS is an unknown quantity at this point
Re: Multiple Autons

Quote:
Originally Posted by ideasrule View Post
You can definitely do it from the Classmate. Just go to the I/O tab and select one or more of the digital inputs. In the code, use station.getInstance().getDigitalInput(number) to get the value of the input, where station is the name of the DriverStation object. There are 10 digital inputs, so you can have 2^10-1=1023 different autonomous programs.
Yes, but I'm fairly certain that you cannot read from the driver station input in autonomous mode.

Also, 1024 different autonomous programs, you only subtract 1 to get the highest number you can represent, so you can represent 0-1023, which is 1024 integers total.

Last edited by LukeS : 08-03-2010 at 21:04. Reason: typo
Reply With Quote
  #4   Spotlight this post!  
Unread 08-03-2010, 21:21
Tom Bottiglieri Tom Bottiglieri is offline
Registered User
FRC #0254 (The Cheesy Poofs)
Team Role: Engineer
 
Join Date: Jan 2004
Rookie Year: 2003
Location: San Francisco, CA
Posts: 3,186
Tom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond repute
Re: Multiple Autons

Quote:
Originally Posted by LukeS View Post
Yes, but I'm fairly certain that you cannot read from the driver station input in autonomous mode.
You can in disabled. We use a push button on our control board to cycle through autonomous modes. The dashboard gives a read out of the current selection.
Reply With Quote
  #5   Spotlight this post!  
Unread 09-03-2010, 08:59
ideasrule's Avatar
ideasrule ideasrule is offline
Registered User
FRC #0610 (Coyotes)
Team Role: Programmer
 
Join Date: Jan 2010
Rookie Year: 2009
Location: Toronto
Posts: 108
ideasrule is a jewel in the roughideasrule is a jewel in the roughideasrule is a jewel in the roughideasrule is a jewel in the rough
Re: Multiple Autons

Quote:
Originally Posted by LukeS View Post
Yes, but I'm fairly certain that you cannot read from the driver station input in autonomous mode.
I'm very certain that you can because that's exactly what our team did during the Finger Lake Regionals. I put 3 if statements in autonomousInit() and had each of them start a new thread.

Quote:
Also, 1024 different autonomous programs, you only subtract 1 to get the highest number you can represent, so you can represent 0-1023, which is 1024 integers total.
Oops, you're right; I was getting confused.
Reply With Quote
  #6   Spotlight this post!  
Unread 10-03-2010, 17:19
The Engineer The Engineer is offline
Registered User
FRC #2607
 
Join Date: Jan 2010
Location: America
Posts: 14
The Engineer is an unknown quantity at this point
Re: Multiple Autons

Ok i really have very little preference to how the switch is made i am just looking for help with the code. if you can tell me anyway to set and switch between autons that would be fantastic
Reply With Quote
  #7   Spotlight this post!  
Unread 10-03-2010, 18:13
TubaMorg TubaMorg is offline
Programmermechanicalelect ricalcoach
AKA: Dan
FRC #1480 (Robatos Locos)
Team Role: Mentor
 
Join Date: Jan 2006
Rookie Year: 2005
Location: Houston
Posts: 450
TubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond repute
Re: Multiple Autons

Here is a sniippet of our code that handles auton switiching. It is sanitized, and not all variables are shown declared.
Switching takes place during disabledPeriodic. Care should be taken in teleopinit to clean up after autonomous before heading into teleop mode so that nothing unexpected happens.

Code:
public void autonomousPeriodic()
    {
        this.getWatchdog().feed();
        switch (autoMode)
        {
            case 1:
                // Add kick three balls in goal code here
                message("Performing auto in FAR field");
                break;
            case 2:
                // Add kick two balls in goal code here
                message("Performing auto in MID field");
                break;
            case 3:
                // Add kick one ball in goal here
                message("Performing auto in NEAR field");
                break;
            default:
                // Auto program isn't working so do this instead
                message("Doing nothing");
                break;
        }
    }

    public void disabledInit()
    {
        this.getWatchdog().feed();
    }

    public void disabledPeriodic()
    {
        this.getWatchdog().feed();
        // Using joystick trigger to switch modes
        if (!autoTrigger && js_right.getRawButton(1))
        {
            if (autoMode < 4)
            {
                autoMode++;
            } else
            {
                autoMode = 1;
            }
            autoTrigger = true;
        } else if (!js_right.getRawButton(1))
        {
            autoTrigger = false;
        }
        // Update message at driverstation to reflect current
        // mode selection
        switch (autoMode)
        {
            case 1:
                message("1. Autonomous for FAR field");
                break;
            case 2:
                message("2. Autonomous for  MID field");
                break;
            case 3:
                message("3. Autonomous for NEAR field");
                break;
            default:
                message("Do Nothing...in any position!");
                break;
        }
    }
public void message(String s)
    {
        String temp = s;
        if (!temp.equals(userMessage))
        {
            //System.out.println(s);
            userMessage = temp;
            int length = s.length();
            //int numRows = 1;
            String[] row = new String[6];
            for (int i = 0; i < 6; i++)
            {
                row[i] = "";
            }
            if (length > 20)
            {
                int backwards = 5;
                int index = 0;
                // Each line can only hold 21 characters, so
                // break the line in reverse at a space.
                // This will end up not working if a message is STILL
                // too long.  Program must ensure not to send messages
                // too long.
                while (length > 20 && backwards >= 0)
                {
                    index = temp.lastIndexOf(' ', 20);
                    row[backwards] = temp.substring(index);
                    row[backwards].trim();
                    temp = temp.substring(0, index).trim();
                    length = temp.length();
                    backwards--;
                }
                row[backwards]=temp;
            } else
            {
                row[5] = temp;
            }
            // Erase the message box
            DriverStationLCD.getInstance().println(DriverStationLCD.Line.kMain6, 1, "                      ");
            DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser2, 1, "                      ");
            DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser3, 1, "                      ");
            DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser4, 1, "                      ");
            DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser5, 1, "                      ");
            DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser6, 1, "                      ");
            DriverStationLCD.getInstance().updateLCD();
            // Now write the data
            DriverStationLCD.getInstance().println(DriverStationLCD.Line.kMain6, 1, row[0]);
            DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser2, 1, row[1]);
            DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser3, 1, row[2]);
            DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser4, 1, row[3]);
            DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser5, 1, row[4]);
            DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser6, 1, row[5]);
            DriverStationLCD.getInstance().updateLCD();
        }
    }
__________________
I don't need a signature.

Last edited by TubaMorg : 10-03-2010 at 18:21.
Reply With Quote
  #8   Spotlight this post!  
Unread 11-03-2010, 14:30
ideasrule's Avatar
ideasrule ideasrule is offline
Registered User
FRC #0610 (Coyotes)
Team Role: Programmer
 
Join Date: Jan 2010
Rookie Year: 2009
Location: Toronto
Posts: 108
ideasrule is a jewel in the roughideasrule is a jewel in the roughideasrule is a jewel in the roughideasrule is a jewel in the rough
Re: Multiple Autons

Quote:
Originally Posted by The Engineer View Post
Ok i really have very little preference to how the switch is made i am just looking for help with the code. if you can tell me anyway to set and switch between autons that would be fantastic
Since it doesn't seem like you're the programmer who coded autonomous, get that programmer to do it. It's not a good idea to mess around with somebody else's code because it's very easy to break something or make an error that's super hard to fix.
Reply With Quote
Reply


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
[FTC]: Multiple Programs or One Program with Multiple Auto Modes kevin51292 FIRST Tech Challenge 4 02-01-2009 20:37
Hosting multiple sites in multiple VMs EHaskins Website Design/Showcase 6 22-12-2007 01:09
Multiple Auton's Joe Clohessy Programming 17 11-02-2005 18:46
Multiple RCX's Noah Melamed FIRST Lego League 1 25-01-2005 15:55


All times are GMT -5. The time now is 09:27.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


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