Go to Post I don't think it's that big of a deal if FIRST makes a few mistakes or cuts back every now and then. Personally, I'm just glad I have the opportunity to be in this program. - Crop-Circles [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 15-05-2015, 14:18
Cel Skeggs Cel Skeggs is offline
Robot Software Manager Alumnus
AKA: Previously known as Colby
FRC #1540 (The Flaming Chickens)
Team Role: Alumni
 
Join Date: Feb 2013
Rookie Year: 2009
Location: Portland, Oregon, USA
Posts: 107
Cel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of light
2015 Code Release for 1540 & Our experiences with Code Review.

Team 1540's source code, which ran on Quasar and our prototype bot Helios, is available on GitHub!

We ran our robot software department on a code-review setup: everything got developed in a separate branch, pull-requested, and code-reviewed before merge. You can see the log of this on the project page. 107 pull requests!

This ended up working really well for us - it allowed us to edit each other's code to be higher quality in a way that gave everyone rapid feedback and allowed team members to become much better programmers over the course of the season.

Once the main season was over, it proved slightly less helpful as we made changes at events - we would have to go through everything changed after each event - but it did at least help us keep most transient code from the competitions out of the repository.

We had a robot software team of four, including myself. Using code review might work differently for a department of a different size.

You can take a look at an example chain of code-review, which was for the initial version of mecanum code for our robot. (Make sure to hit Show Outdated Diff wherever it shows up to see old comments made during the process.) You can see how many times we went back and forth with suggested changes and implementing them - if we hadn't used a code review setup, the improvements, if made at all, would have been made by someone besides the author of the code, so the author wouldn't have gotten a chance to learn.

Of course, sometimes the code-reviewer is wrong too, in which case they also learn something.

Any questions on our code or on our development process?

(Also, for reference, our code uses the Common Chicken Runtime Engine, our dataflow-based robot code framework, which should explain some of the nonstandard coding.)
__________________
Software manager alumnus. Developer of the CCRE, a powerful robot code framework based on dataflow and composibility.
Refer to as she/her/hers. Years of FRC: 2012, 2013, 2014, 2015, 2016. FLL for a few years beforehand.
Team 1540: The Flaming Chickens | Portland, Oregon | Twitter | Facebook

Last edited by Cel Skeggs : 15-05-2015 at 14:35. Reason: Fixed typos.
Reply With Quote
  #2   Spotlight this post!  
Unread 02-09-2015, 21:34
orangelight's Avatar
orangelight orangelight is offline
Registered User
AKA: Alex
FRC #0548 (Robostangs)
Team Role: Programmer
 
Join Date: Feb 2014
Rookie Year: 2014
Location: Northville
Posts: 168
orangelight is a splendid one to beholdorangelight is a splendid one to beholdorangelight is a splendid one to beholdorangelight is a splendid one to beholdorangelight is a splendid one to beholdorangelight is a splendid one to beholdorangelight is a splendid one to beholdorangelight is a splendid one to behold
Re: 2015 Code Release for 1540 & Our experiences with Code Review.

I know it's kind of late but, did your auto work well? Was it easy to program a new auto mode? What were the major challenges did you have programming your auto?
__________________


Reply With Quote
  #3   Spotlight this post!  
Unread 03-09-2015, 23:13
Cel Skeggs Cel Skeggs is offline
Robot Software Manager Alumnus
AKA: Previously known as Colby
FRC #1540 (The Flaming Chickens)
Team Role: Alumni
 
Join Date: Feb 2013
Rookie Year: 2009
Location: Portland, Oregon, USA
Posts: 107
Cel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of light
Re: 2015 Code Release for 1540 & Our experiences with Code Review.

Quote:
Originally Posted by orangelight View Post
I know it's kind of late but, did your auto work well? Was it easy to program a new auto mode? What were the major challenges did you have programming your auto?
Our autonomous systems worked well: modes were easy to write. They took a while to tune, of course, but we've found that to be true regardless of how we've structured our autonomous code. We were able to make some parts of autonomous easier to tune by publishing values over Cluck, so that helped.

Take a look at this example auto mode that we used a lot: it picks up a can and turns to the driver station wall to be ready for a noodle to be loaded into the can. It should be relatively self-explanatory, except for some project-specific things: 'waitUntilNot(Clamp.waitingForAutoCalibration);' makes sure that it doesn't trip over the part of the code that zeros the encoders at the right position and 'startSetClampHeight' is the same as 'setClampHeight', but it doesn't wait for the completion of the action.

For most of our modes, we didn't have many challenges. We realized at some point that any stability offered by using PID in auto was far outweighed by the utility of more consistent movements, but that was easy to change. Besides that, we had issues getting enough accuracy while driving fast, which meant that our three-tote auto mode never got quite under the time limit. (Ignoring the time limit, it was actually relatively easy to write! And the issues with driving fast were partially caused by using mecanum wheels and fabrication variances.)

EDIT: one other thing that helped: multi-layered autonomous modes. Some of our modes would pick up totes. To do this, they would start the pseudo-autonomous mode for autoloading (which was also used by the drivers), which would, in turn, also start the pseudo-autonomous mode for automatically controlling the elevator stacking sequence (also available to the drivers separately.)
__________________
Software manager alumnus. Developer of the CCRE, a powerful robot code framework based on dataflow and composibility.
Refer to as she/her/hers. Years of FRC: 2012, 2013, 2014, 2015, 2016. FLL for a few years beforehand.
Team 1540: The Flaming Chickens | Portland, Oregon | Twitter | Facebook

Last edited by Cel Skeggs : 03-09-2015 at 23:18. Reason: added an extra note.
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 12:00.

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