Go to Post Before you fix something, it's worthwhile to make a concerted effort to figure out why it failed. - Ether [more]
Home
Go Back   Chief Delphi > FIRST > General Forum
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Reply
Thread Tools Rating: Thread Rating: 6 votes, 5.00 average. Display Modes
  #16   Spotlight this post!  
Unread 04-05-2013, 08:49
JesseK's Avatar
JesseK JesseK is offline
Expert Flybot Crasher
FRC #1885 (ILITE)
Team Role: Mentor
 
Join Date: Mar 2007
Rookie Year: 2005
Location: Reston, VA
Posts: 3,724
JesseK has a reputation beyond reputeJesseK has a reputation beyond reputeJesseK has a reputation beyond reputeJesseK has a reputation beyond reputeJesseK has a reputation beyond reputeJesseK has a reputation beyond reputeJesseK has a reputation beyond reputeJesseK has a reputation beyond reputeJesseK has a reputation beyond reputeJesseK has a reputation beyond reputeJesseK has a reputation beyond repute
Re: Team 254 2013 FRC Code

Quote:
Originally Posted by joelg236 View Post
I did a diff on your CheezyGyro class, and the only important change was making initGyro() public. Is this only to calibrate the gyro when you want to? Why didn't you just adjust it in the wpilibj and compile with the custom version?
In industry, modifying the source of an external library is a bad practice that should be avoided if a better technical solution exists.

The bigger issue is if the other library receives updates from the original source. Then you have to re-implement the changes into the updates. If the custom change were in runtime logic (not detected by a compile error, like the Poof's would be) then your robot wouldn't act correctly, causing a lot of wasted time in trying to figure out why.

Here's an example of a situation where I was forced to modify COTS code at work. It required a full write-up and sign-off by the program manager. This type of thing isn't detected by a compiler, but it caused several runtime Exceptions when we tried to load the map format.

At work, we use NASA WorldWind. WorldWind has some static file name extensions that are hard-coded to lower case. On Linux, the files we have are upper case, and case matters on Linux. One of the map formats we use contains the upper-case file names in a header table embedded within a single file binary file -- not possible to change. Additionally, if the issue were brought up to NASA, the fix would likely be seen in WorldWind 1.5 or 1.6, whereas we're using 1.4. WorldWind 1.5, at the time the decision was made, was having hotspot issues on Linux -- so waiting for a fix in an update was considered a risk. Thus, we had to modify WorldWind's code (added .toUpperCase() in the proper spots). We then CM'ed the specific patch files so we would know exactly what changes had to be made in the future. Any time we want to update WorldWind (perhaps in the project's next iteration), we can pull the patch files out of the code repository and analyze if they're still relevant.
__________________

Drive Coach, 1885 (2007-present)
CAD Library Updated 5/1/16 - 2016 Curie/Carver Industrial Design Winner
GitHub
Reply With Quote
  #17   Spotlight this post!  
Unread 05-05-2013, 02:12
dellagd's Avatar
dellagd dellagd is offline
Look for me on the field!
AKA: Griffin D
FRC #2590 (Nemesis) #2607 (The Fighting Robovikings)
Team Role: Mentor
 
Join Date: Sep 2011
Rookie Year: 2011
Location: PA
Posts: 890
dellagd has a reputation beyond reputedellagd has a reputation beyond reputedellagd has a reputation beyond reputedellagd has a reputation beyond reputedellagd has a reputation beyond reputedellagd has a reputation beyond reputedellagd has a reputation beyond reputedellagd has a reputation beyond reputedellagd has a reputation beyond reputedellagd has a reputation beyond reputedellagd has a reputation beyond repute
Re: Team 254 2013 FRC Code

As a Java programmer, lets just say this has fulfilled the second letter of this great organization we compete in for me.

*picks jaw up off of floor*
__________________
Check out some cool personal projects in computers, electronics, and RC vehicles on my blog!

2016 MAR DCMP Engineering Excellence Award
2016 MAR Westtown Innovation in Control Award
2016 MAR Hatboro-Horsham Industrial Design Award
2015 Upper Darby District Winners - Thanks 225 and 4460!
2015 Upper Darby District Industrial Design Award
2015 Hatboro-Horsham District Winners - Thanks 2590 and 5407!
2014 Virginia Regional Winners - Thanks so much 384 and 1610, I will never forget that experience!
2014 Virginia Quality Award
2014 MAR Bridgewater-Raritan Innovation in Control Award
2014 MAR Hatboro-Horsham Gracious Professionalism Award
2013 MAR Bridgewater-Raritan Innovation in Control Award
2012 MAR Lenape Quality Award
Reply With Quote
  #18   Spotlight this post!  
Unread 05-05-2013, 20:26
topgun's Avatar
topgun topgun is offline
Registered User
FRC #2846 (FireBears)
Team Role: Mentor
 
Join Date: Oct 2008
Rookie Year: 2008
Location: Minnesota
Posts: 229
topgun has a brilliant futuretopgun has a brilliant futuretopgun has a brilliant futuretopgun has a brilliant futuretopgun has a brilliant futuretopgun has a brilliant futuretopgun has a brilliant futuretopgun has a brilliant futuretopgun has a brilliant futuretopgun has a brilliant futuretopgun has a brilliant future
Re: Team 254 2013 FRC Code

Did Team 254 use visioning on OverKill? If not, how did the drivers line up to shoot so accurately?
__________________
-T

Reply With Quote
  #19   Spotlight this post!  
Unread 05-05-2013, 20:50
Pat Fairbank's Avatar
Pat Fairbank Pat Fairbank is offline
Circuit Breaker
FRC #0254 (The Cheesy Poofs)
Team Role: Engineer
 
Join Date: Mar 2003
Rookie Year: 2001
Location: San Jose, CA
Posts: 2,132
Pat Fairbank has a reputation beyond reputePat Fairbank has a reputation beyond reputePat Fairbank has a reputation beyond reputePat Fairbank has a reputation beyond reputePat Fairbank has a reputation beyond reputePat Fairbank has a reputation beyond reputePat Fairbank has a reputation beyond reputePat Fairbank has a reputation beyond reputePat Fairbank has a reputation beyond reputePat Fairbank has a reputation beyond reputePat Fairbank has a reputation beyond repute
Send a message via MSN to Pat Fairbank
Re: Team 254 2013 FRC Code

Quote:
Originally Posted by topgun View Post
Did Team 254 use visioning on OverKill? If not, how did the drivers line up to shoot so accurately?
We deemed it an unnecessary complexity, given the wide goals and ability to use the pyramid for alignment. We just made sure the drivers got a lot of practice.
__________________
Patrick Fairbank
Team 254 | Mentor (2012-)
Team 1503 | Mentor (2007-2011)
Team 296 | Alumnus (2001-2004) | Mentor (2005-2006)

patfairbank.com
Reply With Quote
  #20   Spotlight this post!  
Unread 05-05-2013, 23:30
Jeremy Germita's Avatar
Jeremy Germita Jeremy Germita is online now
Co-Advisor/Lead Engineering Mentor
AKA: wood is good. plastic is fantastic.
FRC #5012 (Gryffingear) / (Antelope Valley FIRST Teams)
Team Role: Coach
 
Join Date: Jan 2010
Rookie Year: 2007
Location: Lancaster, CA
Posts: 289
Jeremy Germita has a reputation beyond reputeJeremy Germita has a reputation beyond reputeJeremy Germita has a reputation beyond reputeJeremy Germita has a reputation beyond reputeJeremy Germita has a reputation beyond reputeJeremy Germita has a reputation beyond reputeJeremy Germita has a reputation beyond reputeJeremy Germita has a reputation beyond reputeJeremy Germita has a reputation beyond reputeJeremy Germita has a reputation beyond reputeJeremy Germita has a reputation beyond repute
Re: Team 254 2013 FRC Code

Thanks to everyone at 254 for the yearly release of your software. Since you began doing this, 254 software releases have been a source of inspiration and learning for me as a programmer. I especially appreciate the style guide. I will be using it to format 399 code for release later this month.

Quote:
Originally Posted by xmaams View Post
Could you explain the purpose of the negative inertia maths in CheesyDriveCommand.java? Is it to limit the change in PWM?
As a user of a variant of cheesy drive, I've observed that negative inertia calculations and outputs help prevent overshooting during turns by momentarily outputting a calculated output(whose sign is opposite the actual turning direction) to help act as a tuneable brake. This makes turning on a dime and other quick yaw-axis motions a little more controllable when coupled with the rest of the cheesy drive algorithm. Cheesy drive aids controllability on robots that are fast(14+fps) and can turn quickly because of that.
__________________
Drive Coach Team 5012 Gryffingear / Antelope Valley FIRST teams / EWCP - (2013 - Current)
Student / Driver / Programmer / CAD - FRC Team 399: Eagle Robotics / FTC Team 72: GarageBots - (2009 - 2013)
Los Angeles Region FTC FTA/CSA/Head Ref
[FF] FIRST Pick
2014 FTC Los Angeles Regional Compass Award Winner.

2017 - San Diego Regional / Sacramento Regional / Las Vegas Regional
2016 - Los Angeles Regional Creativity + Winners (1197, 987, 5012) / Las Vegas Regional Team Spirit + SF (5012, 5851, 5049) / Galileo Subdivision
2015 - Inland Empire QF (597, 5012, 4413) / Las Vegas Imagery + Winners (148, 987, 5012) / Newton Subdivision and World Champions (118, 1678, 1671, 5012)
2014 - Inland Empire Rookie All Star + Highest Rookie Seed + SF (2339, 1967, 5012) / Las Vegas Rookie All Star / Galileo Division Imagery

Last edited by Jeremy Germita : 05-05-2013 at 23:33.
Reply With Quote
  #21   Spotlight this post!  
Unread 06-05-2013, 22:16
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,189
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: Team 254 2013 FRC Code

Quote:
Originally Posted by joelg236 View Post
I did a diff on your CheezyGyro class, and the only important change was making initGyro() public. Is this only to calibrate the gyro when you want to? Why didn't you just adjust it in the wpilibj and compile with the custom version?
This route would require maintaining a fork of the library and requiring anyone who wants to build our software to use the forked library. Putting it in our source tree makes it easier to maintain AND gives the added benefit of giving compile time errors if something changes upstream.
Reply With Quote
  #22   Spotlight this post!  
Unread 07-05-2013, 00:15
otherguy's Avatar
otherguy otherguy is offline
sparkE
AKA: James
FRC #2168 (The Aluminum Falcons)
Team Role: Mentor
 
Join Date: Feb 2010
Rookie Year: 2009
Location: CT
Posts: 444
otherguy is a splendid one to beholdotherguy is a splendid one to beholdotherguy is a splendid one to beholdotherguy is a splendid one to beholdotherguy is a splendid one to beholdotherguy is a splendid one to beholdotherguy is a splendid one to behold
Re: Team 254 2013 FRC Code

Thanks for posting, I find going through other teams code to be the best way to learn new ways of approaching problems.

I haven't gotten through all the source yet, but it is nice to be able to see how your code has matured through the season. It interesting to look back to see what other teams were working on to prep for regionals and champs.

If we can get our code cleaned up, we will be releasing ours as well this year.

We've also made some changes to your PID Tuner from last year, it allows us to make changes to the gains and modify set points on the fly through the web page. Certainly would have been more useful for last years game, but it's still a great tool to have in the toolbox.

__________________
http://team2168.org
Reply With Quote
  #23   Spotlight this post!  
Unread 27-06-2013, 12:04
feverittm's Avatar
feverittm feverittm is offline
Registered User
FRC #0997 (Spartans)
Team Role: Mentor
 
Join Date: Apr 2010
Rookie Year: 2010
Location: Corvallis, OR
Posts: 124
feverittm will become famous soon enoughfeverittm will become famous soon enough
Re: Team 254 2013 FRC Code

Thanks to team 254 for posting their code. This is very instructional to the mentors as well as our student programmers

I have a number of questions, but a few are quite simple. You have defined a pressureTransducer in your code to read the pneumatic pressure. Where in the system is this transducer located? I ask because we got into some questions on the legality of using any form of transducer on the high pressure side (120psi) of the pneumatics system.

I am also assuming that since you are using the smaller Vlair compressor (as seen on some photos I have seen of the robot) that you are not cycling very much air and therefore the compressor does not have to run very long (and burn out). Is this correct?

Thanks for the great opportunity you are giving other teams to learn from your development.

Enjoy!
__________________
Floyd Moore
Mentor Electrical and Pneumatics
Team 997 - Spartan Robotics
Corvallis High School, Corvallis Oregon
Reply With Quote
  #24   Spotlight this post!  
Unread 27-06-2013, 12:55
apples000's Avatar
apples000 apples000 is offline
Registered User
no team
 
Join Date: Mar 2012
Rookie Year: 2012
Location: United States
Posts: 222
apples000 has a brilliant futureapples000 has a brilliant futureapples000 has a brilliant futureapples000 has a brilliant futureapples000 has a brilliant futureapples000 has a brilliant futureapples000 has a brilliant futureapples000 has a brilliant futureapples000 has a brilliant futureapples000 has a brilliant futureapples000 has a brilliant future
Re: Team 254 2013 FRC Code

From what I understand, the pressure transducer on the 120 psi side is not legal, but many teams have gotten away with it.
Reply With Quote
  #25   Spotlight this post!  
Unread 27-06-2013, 13:03
AdamHeard's Avatar
AdamHeard AdamHeard is offline
Lead Mentor
FRC #0973 (Greybots)
Team Role: Mentor
 
Join Date: Oct 2004
Rookie Year: 2004
Location: Atascadero
Posts: 5,526
AdamHeard has a reputation beyond reputeAdamHeard has a reputation beyond reputeAdamHeard has a reputation beyond reputeAdamHeard has a reputation beyond reputeAdamHeard has a reputation beyond reputeAdamHeard has a reputation beyond reputeAdamHeard has a reputation beyond reputeAdamHeard has a reputation beyond reputeAdamHeard has a reputation beyond reputeAdamHeard has a reputation beyond reputeAdamHeard has a reputation beyond repute
Send a message via AIM to AdamHeard
Re: Team 254 2013 FRC Code

Quote:
Originally Posted by apples000 View Post
From what I understand, the pressure transducer on the 120 psi side is not legal, but many teams have gotten away with it.
Curious, what rule gives you this idea?
Reply With Quote
  #26   Spotlight this post!  
Unread 27-06-2013, 13:12
KrazyCarl92's Avatar
KrazyCarl92 KrazyCarl92 is offline
Registered User
AKA: Carl Springli
FRC #0020 (The Rocketeers)(EWCP)
Team Role: Mentor
 
Join Date: Jan 2010
Rookie Year: 2010
Location: Clifton Park, NY
Posts: 523
KrazyCarl92 has a reputation beyond reputeKrazyCarl92 has a reputation beyond reputeKrazyCarl92 has a reputation beyond reputeKrazyCarl92 has a reputation beyond reputeKrazyCarl92 has a reputation beyond reputeKrazyCarl92 has a reputation beyond reputeKrazyCarl92 has a reputation beyond reputeKrazyCarl92 has a reputation beyond reputeKrazyCarl92 has a reputation beyond reputeKrazyCarl92 has a reputation beyond reputeKrazyCarl92 has a reputation beyond repute
Re: Team 254 2013 FRC Code

Quote:
Originally Posted by feverittm View Post
I am also assuming that since you are using the smaller Vlair compressor (as seen on some photos I have seen of the robot) that you are not cycling very much air and therefore the compressor does not have to run very long (and burn out). Is this correct?
I would not make this assumption based on the compressor choice (I would make this assumption from looking at their robot and visiting their pit at competition). We used the same small VIair compressor on our robot this year. We have 5 40 cu. in. pneumatic tanks and some really large pneumatic cylinders on this years robot. We replaced the compressor on the competition robot once all season as a preventative measure at champs, and only saw a failure on the practice bot during a 6 hour drive practice session. They sure heated up a lot, but they can take the abuse if you don't test the limits too much.

The VIair compressor is rated for about the same output, but weighs about half as much as the older compressors. Ours took 2-4 minutes to charge before each match and would usually run most of the match.
__________________
[2017-present] FRC 0020 - The Rocketeers
[2016] FRC 5811 - BONDS Robotics
[2010-2015] FRC 0020 - The Rocketeers
Reply With Quote
  #27   Spotlight this post!  
Unread 27-06-2013, 13:47
Cory's Avatar
Cory Cory is offline
Registered User
AKA: Cory McBride
FRC #0254 (The Cheesy Poofs)
Team Role: Engineer
 
Join Date: May 2002
Rookie Year: 2001
Location: Redwood City, CA
Posts: 6,824
Cory has a reputation beyond reputeCory has a reputation beyond reputeCory has a reputation beyond reputeCory has a reputation beyond reputeCory has a reputation beyond reputeCory has a reputation beyond reputeCory has a reputation beyond reputeCory has a reputation beyond reputeCory has a reputation beyond reputeCory has a reputation beyond reputeCory has a reputation beyond repute
Send a message via AIM to Cory
Re: Team 254 2013 FRC Code

We are not using a Viair compressor. We're using a Thomas compressor that is similar in size to the Viair (but a little smaller). We use a ton of air. Our compressor can barely keep up with our air usage. There have been a handful of times where we didn't quite have enough air when we started our hang and would end up taking awhile to get off the ground.

We are using the pressure sensor to determine when we are below 60 PSI. Before championships our shooting performance would degrade dramatically at that point, as well as the aforementioned hanging issues.
__________________
2001-2004: Team 100
2006-Present: Team 254
Reply With Quote
  #28   Spotlight this post!  
Unread 27-06-2013, 13:50
feverittm's Avatar
feverittm feverittm is offline
Registered User
FRC #0997 (Spartans)
Team Role: Mentor
 
Join Date: Apr 2010
Rookie Year: 2010
Location: Corvallis, OR
Posts: 124
feverittm will become famous soon enoughfeverittm will become famous soon enough
Re: Team 254 2013 FRC Code

Regarding the legality of pressure transducers on the high side. This was a question I asked directly to the QA and was told that they are illegal. Pretty clear there. If you read the rules it states the the ONLY things allowed on the high side are the compressor, high-pressure gauge, pressure relief valve, storage tanks and the regulator. Nothing else. However, as someone else pointed out it was not checked very well and teams got away with it in a number of instances.

The Vlair compressor has a 9% duty cycle rating that makes it very difficult to use on a pneumatic intensive robot as it will tend to overheat. I have heard of instances where teams have gotten away with running them for awhile, but I have also heard many stories where these compressors have failed as well. I cannot guarantee that the CheesyPoofs used the 090C or found a better model, but I was just going by the pictures I have seen. Educated guess, no assumptions.

(sorry for being off-topic).

Another item of the code the I will have to spend a long time trying to digest is the large number of 'controller' classes that are used. Not just a simple PID controller, but a number of other things (like the StateSpaceController). It is going to take awhile to unwrap this code in my brain.

Again Thanks!

Enjoy!
__________________
Floyd Moore
Mentor Electrical and Pneumatics
Team 997 - Spartan Robotics
Corvallis High School, Corvallis Oregon
Reply With Quote
  #29   Spotlight this post!  
Unread 27-06-2013, 15:13
apples000's Avatar
apples000 apples000 is offline
Registered User
no team
 
Join Date: Mar 2012
Rookie Year: 2012
Location: United States
Posts: 222
apples000 has a brilliant futureapples000 has a brilliant futureapples000 has a brilliant futureapples000 has a brilliant futureapples000 has a brilliant futureapples000 has a brilliant futureapples000 has a brilliant futureapples000 has a brilliant futureapples000 has a brilliant futureapples000 has a brilliant futureapples000 has a brilliant future
Re: Team 254 2013 FRC Code

Wow, you guys did a great job with organizing your code. I love that the PID controller doesn't need to start it's own thread to call the pidSet() method. Also, I think you forgot to update your feed-forward value when the table listen finds a change in the pid gains. You check to see if the key is named "f", but you never end up comparing/changing "f".

Code:
 private ITableListener listener = new ITableListener() {
    public void valueChanged(ITable table, String key, Object value, boolean isNew) {
      if (key.equals("p") || key.equals("i") || key.equals("d") || key.equals("f")) {
        if (gains.getP() != table.getNumber("p", 0.0) || gains.getI() != table.getNumber("i", 0.0) ||
          gains.getD() != table.getNumber("d", 0.0)) {
          System.out.println("Got new PID gains!");
          gains.set(table.getNumber("p", 0.0), table.getNumber("i", 0.0), table.getNumber("d", 0.0));
        }
      } else if (key.equals("setpoint")) {
        if (goal != ((Double) value).doubleValue()) {
          setGoal(((Double) value).doubleValue());
        }
      } else if (key.equals("enabled")) {
          if (isEnabled() != ((Boolean) value).booleanValue()) {
            if (((Boolean) value).booleanValue()) {
              enable();
            } else {
             disable();
            }
          }
      }
    }
  };
Reply With Quote
  #30   Spotlight this post!  
Unread 27-06-2013, 16:25
Travis Covington's Avatar Unsung FIRST Hero
Travis Covington Travis Covington is offline
Engineering Mentor
FRC #0254
Team Role: Engineer
 
Join Date: Oct 2001
Rookie Year: 1998
Location: San Jose, CA
Posts: 574
Travis Covington has a reputation beyond reputeTravis Covington has a reputation beyond reputeTravis Covington has a reputation beyond reputeTravis Covington has a reputation beyond reputeTravis Covington has a reputation beyond reputeTravis Covington has a reputation beyond reputeTravis Covington has a reputation beyond reputeTravis Covington has a reputation beyond reputeTravis Covington has a reputation beyond reputeTravis Covington has a reputation beyond reputeTravis Covington has a reputation beyond repute
Send a message via AIM to Travis Covington
Re: Team 254 2013 FRC Code

We did not use the pressure transducer on the high pressure side of the comp bot. It was only used that way on the practice bot to give us an idea of how much air we were consuming.
__________________
-Travis Covington

2008-2017 - Engineering Mentor of Team 254
2001-2008 - Engineering Mentor of Team 968
1998-2001 - Mechanical Director/Driver/Member of Team 115

Last edited by Travis Covington : 27-06-2013 at 16:30.
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


All times are GMT -5. The time now is 19:05.

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