Looking for software beta testers for comprehensive FRC Java framework

Hello teams!

I’m Noah Sutton-Smolin from FRC Team 3128. We’re looking for two or three teams to beta test our Java software framework for FRC. Additionally, we’d like feedback on the simplicity and clarity of our documents, so even just reading our documentation would be helpful. We would like to eventually publish this framework for all teams to use, but we would like to ensure it will work properly.

We’re actually not asking for much; what we are really looking for is feedback on clarity, speed & efficiency, and ease of use. We are more than happy to accept feature requests as well. We won’t ask you to use our framework on your actual robot in-game (though if you do, we would appreciate it!).

The framework constitutes a highly flexible event-driven system which allows for easy teleop and autonomous programs. To use an example from our introduction, this is all that’s needed to write a drive program:

public static final XControl xControl1 = new XControl(1);
public static final MotorLink mLeft = new MotorLink(new Jaguar(1,1));
public static final MotorLink mRight = new MotorLink(new Jaguar(1,2));

public static void initializeTeleop() {
    ListenerManager.addListener(new Event() {
        public void execute() {
            Global.mLeft.setPower(Global.xControl1.y1+Global.xControl1.x1);
            Global.mRight.setPower(Global.xControl1.y1-Global.xControl1.x1);
        }
    }, ListenerConst.UPDATE_JOY1);
}    

Using buttons is as simple as:

ListenerManager.addListener(new Event(){
    public void execute() {Global.motorSpin.setPower(0.7);}
}, "buttonADown");

This does require a decent amount of Java knowledge to get into and use, but those without that knowledge would likely learn much from using it. Teaching it, however, as we’ve found is rather easy. We will be more than happy to answer all questions via Skype and/or email.

Our Google Code project is here. The important and relevant documents are attached to this post, and are also in our SVN repository.

Any and all feedback is welcome! My email is in the document, though I will also be checking this for comments. You are also welcome to add my Skype info. My Skype is “nygubea.rfgina” passed through ROT13 (to avoid spambots).

If you have questions about to implement a specific block of code, please ask! The nonlinearity can be somewhat confusing to get used to.

Thank you so much, and we hope this brings some use in the future!

++Noah Sutton-Smolin

Software Summary.pdf (259 KB)
Programming Tasks.pdf (229 KB)
Programming Intro.pdf (182 KB)


Software Summary.pdf (259 KB)
Programming Tasks.pdf (229 KB)
Programming Intro.pdf (182 KB)

“An Event is simply a block of code which runs at a set interval.” (from the document “Software Summary.PDF”).

FWIW, the above use of the word Event may be confusing to some.

The word “Event” is widely used to refer to a hardware occurrence, either periodic (such as a timer tick) or asynchronous (such a user pressing a button or limit switch changing state). The code which gets invoked when the Event occurs is typically called an Event Handler or Event Service Routine (ESR). This is analogous to an Interrupt and an Interrupt Service Routine (ISR).

That’s fair. The word “Event” was really one we picked because we needed to use something and weren’t sure what to call it at the time (two years ago). I don’t feel any significant need to refactor our code, though, since based on the docs it’s clear what we mean by it.

Thanks for pointing it out, though!

I would be interested in doing this. I am old to FIRST, but haven’t mentored since 2005, so never used the Java IDE. I’ll get back to you in a week.

I certainly understand your reluctance to expend the effort to standardize the terminology. But that effort may be worthwhile to avoid having your own private definitions for words, especially in material used for teaching.