ERC and Lewis & Clark

FRC Team 4931 is one of several FIRST teams that make up the Edwardsville Robotics Club, or ERC.  All together the club has over 100 students in all of its JrFLL, FLL, FTC and FRC teams!

Starting earlier this month, ERC’s FRC, FTC, FLL, and most JrFLL teams will all start meeting at the N.O. Nelson campus of the Lewis & Clark Community College. This is a wonderful and modern facility with loads of history and charm, and it’s the same rooms that the FRC team used last year for our build site.

N.O.Nelson campus in Edwardsville, IL

Each of the teams will benefit a lot from our new home. But even better is that it will make it easier for the older and younger students to work together and to share their passion for STEM.

Of course, none of this would be possible without Kathy Willis and Katie Haas from LCCC. We’d also like to thank Luke Jumper for all his efforts setting up the college’s Fabrication Laboratory (FabLab) that’s nearing completion — it’s going to be an amazing resource for our FTC and FRC teams.

Maps to the campus are available on our “Where we meet” page.

Fall status update 1

Alright, the off season has really gotten started! The past few meetings we’ve been getting the projects we want to work on in the off season started. The main project that nearly all the individual teams are contributing to is a Off-Season Robot (that is not yet the final name). We want to build a robot that the programmers can test new code on and use as a test bed for Strongback. The Mechanical team will practice building and setting up the new two-speed gearbox, and designing and constructing the modular structure. The electrical team always wants practice wiring and playing with new actuators, sensors, and the new control system.

Each team has smaller side projects that will help them practice while we design and order the parts for the Off-Season Robot. Electrical is figuring out Arduino, Admin is working on grants, sponsorships, budgeting, and documentation, and Mechanical is working on figuring out the two-speed gearbox.

We are looking forward to getting into the Fab Lab and working with hardware. Until then we are working in the classroom and limited to more conceptual prototyping and computer work.

The first fall meeting of 2015

This past Thursday evening, Edwardsville Technologies met for the first time since the end of last year’s season. We discussed the various robotics-related things the students have been up to this summer, including multiple students attending various science, robotics, or computer camps. We also discussed our new open source project, Strongback.

After a few emails, Slack was set as the main student to student / mentor to student communication program. Slack is an Apple and Android compatible app for phones, tablets, and computers that allows for the discussion of different topics, each topic having a “channel” (for example: an electrical team channel, an administration channel, an outreach channel, a events channel, etc.). Students receive what is essentially a text alert when there is activity on Slack, and hopefully this will help making communication between mentors and students more reliable, because some students have a bad habit of not checking email regularly (including myself).

We also talked about Fall plans and potential projects, including things such as the Gateway Robotics Challenge, writing code for and designing lockers and a tool “vending machine” for use in the new Lewis and Clark Fabrication Laboratory (The Fab Lab), and building a telepresence robot so that kids at the St. Louis Children’s Hospital can visit the St. Louis Zoo!

We had a few newcomers, and after we explained FIRST, FRC, and what we do, they seemed pretty excited about joining the team. And finally, we determined the Fall meeting schedule: SUNDAYS from 2-5PM and WEDNESDAYS from 7-9PM. Unless otherwise mentioned, all meetings will be at the N.O. Nelson campus of Lewis & Clark. Our next meeting will be at 7PM on Wednesday, Aug 26.

Introducing Strongback

Remember last April when we presented at the 2015 FIRST World Conference and talked about designing testable robot code? We mentioned possibly creating a new open source library with that code, and that got a lot of interest.

Well, over the summer we extracted the code from our team-specific codebase, restructured and documented it, and even added a bit of functionality. We still have to finish the website, but we have a web domain and discussion forums. We also have a name: Strongback.

Strongback is a new open source software library that makes your robot code lighter and stronger. You use it along with the WPILib library on your FIRST Robotics Competitionrobot’s RoboRIO, but Strongback’s APIs and functionality mean you need less code to do more. Plus, Strongback makes it easier for you to test your code without robot hardware and can record real-time data while you operate your robot for later post-processing.

Strongback offers the following features:

  • Testable – Test more of your robot code on development machines without requiring any real robot hardware.
  • Simple API – Uses powerful language features of Java 8 to reduce and simplify code while retaining flexibility.
  • Useful frameworks – Strongback offers several separate frameworks that you can mix and match in your robot code and in your tests. Use what you want, and nothing more. Set up all of them with just a few lines of code.
  • Uses WPILib – Uses the WPILib classes underneath for safety and consistency.

Check out our code, read our documentation, and if you’re interested then join us! We’re looking for students and mentors to try using Strongback, contribute code and documentation, help with the website, and even design robot hardware for physical tests.

Follow us on Twitter @Strongbacklib, on GitHub, or join our user and developer discussion forums.


First team meeting of the 2015-2016 season

FRC Team 4931 is going to have its first meeting of the 2015-2016 season to talk about a number of activities for this fall:

  • Our fall meeting schedule.
  • Status of Lewis & Clark and the FabLab and some of the projects we can work on for them.
  • Strongback, a new open source project for a Java library that simplifies robot Java code and makes it easier to use the WPILib framework. The code is ready, but we need to complete an initial website, and then we can launch via Twitter,, Chief Delphi, etc.
  • Gateway Robotics Challenge is October 17 at Hazelwood Central. We have to fix the robot and register.
  • Possible partnership with the St. Louis Zoo to design and build telepresence robots.
  • Outreach and recruitment, including an open house for parents and prospective team members, participating in the Ed/Glen Chamber Halloween parade, displaying at Goshen Market, how to recruitment more high school students.
  • Fundraising news and deadlines.

These are just some of the exciting activities for the team to consider this fall. Plus, we have to think about how to prepare for the competition season that starts in very early January.

Sound interesting? We hope to see all our past students and mentors, as well as any high school student in the  Edwardsville and surrounding area!

WHEN: Thursday, August 20 at 7PM
WHERE: Room N4 119, Lewis & Clark N.O. Nelson Campus, 600 Troy Rd, Edwardsville IL 62025

See you there!


Meeting site

Programming with style

Learning to read and speak English, French, Spanish, or any other language requires learning vocabulary, spelling, grammar rules, punctuation, idioms, and tools such as dictionaries and thesauri. Learning to write — and especially to write well — takes lots of practice, requires reading and dissecting lots of other writing samples, and involves a lifetime of learning and practicing various techniques, terms, and even styles. And each kind of writing has its own style and format: consider the difference between non-fiction, fiction, poetry, and technical reports (just to name a few). Many of these areas, especially those that are more formal, have standard styles and formats with rules that make it easier for readers to consume lots of documents. For example, the MLA Handbook documents in great detail the style and format rules for research papers, and its used in many secondary schools, colleges and universities.

Learning programming languages

In many ways, programming languages are very similar to written and spoken languages: they have their own grammar, terminology, vocabulary, punctuation, and idioms. Learning to read a programming language is much easier than learning to write, since writing code requires mastering many these skills. Learning to write code requires practice and dissecting of other people’s code. And, perhaps not surprisingly, each language has preferred styles and formats, and some even have style guides to help developers format their code in similar ways.

Why is style so important? When multiple people read or work on the same codebase, the formatting of the source code has a very big impact on how easy it is for people to read, understand, maintain, and express the intent of their logic. Code is already complicated enough, and using consistent formatting and style eliminates as much variation and unnecessary complexity as possible. Speaking from experience, it’s very easy to start working on a codebase when it looks like code you might write.

Java Style


Java has been for many years one of the most (if not the most) widely used programming languages. It’s also powerful enough that a lot of companies use Java as their primary programming language. But it is also relatively simple with a small number of straightforward concepts, making it a great language for students to start with. Many of our students’ high school programming classes use Java, and our team uses Java to program our robots (you can get a glimpse of our code by looking in our GitHub repositories). In fact, many FRC teams  and now FTC teams use Java to program their robots, too.

The Java Style Guidelines is the Java-equivalent of the non-fiction writer’s MLA Handbook. It outlines many rules for how to format your code, making it easier for multiple people to read, understand, and maintain. But the Java Style Guidelines were first written in 1999 (yikes!), and while it provides a good foundation, it hasn’t been updated and it hasn’t adapted to the best practices that Java developers have learned in the past 20 years. The de facto style standards used today by many Java projects no longer matches what’s described by the aging Java Style Guideline.

At long last the OpenJDK community has proposed updating the Java Style Guidelines to better reflect the conventions that most people are now using. And in true open source style, they’re looking for feedback from you (and everyone else).

Do you really have to learn all these rules? Well, yes and no. If you’re a Java programmer, then you really should learn to read and write code that follow these format and style rules: it will save you vast amounts of time when reading code written by others, which is something that you’ll do probably more than anything else. And, when you write code that follows the common conventions, and other developers will think your code more professional. But in truth, most Java development tools will automatically format the source code, so you just need to set up your tools to follow the project’s conventions. For example, FRC 4931 uses Eclipse, and our formatting preferences are already similar to these proposed guidelines.

So have a look at the OpenJDK’s proposal for an updated Java Style Guide. And if you don’t like one of the rules, give some feedback to the OpenJDK team.


Making progress on our testable robot code library

We are making progress on pulling out of our 2015 robot code the component framework, command framework, and data recorder system that we talked about in our Designing Testable Robot Code presentation at the 2015 FIRST World Championship Conference in St Louis last month.

Our goal is to get it into a minimal state as a self-contained library, and then open it up for contributions, improvements, and help. We’ve already settled on a name and purchased a domain name for the website, and we’re trying to get a simple site running.

Stay tuned! We’ll have more progress over the next few weeks.

Designing Testable Robot Code

Today at the 2015 FIRST World Championship Conference, Randall Hauch and Zach Anderson presented “Designing Testable Robot Code” (see slides below or the available PDF).

In the hour-long talk, they described how Team 4931 created new hardware abstractions to decouple the subsystem and command classes from the WPILib hardware classes. Traditionally, robot code directly use the WPILib hardware classes for the robot’s actuators and sensors, but doing this makes it very difficult to unit test the subsystems. Using the abstractions makes it possible to unit test the subsystems on developer machines without having any RoboRIO or physical hardware.

Testing on the robot with the RoboRIO and associated hardware is also important, and the team created a data recorder to capture in real time the discrete and continuous inputs, control outputs, and changing command states while the robot is being operated. The data log can be transferred off robot and passed into data processing and analytics (Team 4931 used Tableau), making it very easy to quickly visualize the behavior of the robot and control system outputs.

The team also proposed creating a reusable open source project where FRC teams can collaborate on this reusable library that sits on top of the standard WPILib for Java library. Team 4931 will refactor and clean up their current code and will donate it as a starting point for the project.  Almost a dozen teams expressed interest in participating, so stay tuned over the next month or two while we kick off this new project.

Thanks to everyone who attended! And best of luck to those competing at the 2015 World Championships in St. Louis!

2015 St. Louis Regional FRC

Later this week FRC Team 4931, aka Edwardsville Technologies, will participate in the 2015 St. Louis Regional FIRST Robotics Competition. The event is 3 full days of very intense  but friendly robotics competition – something FIRST calls Gracious Professionalism®.

The Event

The regional competition is free and open to the public! It’s a great opportunity to bring young students to show them how much fun science, technology, engineering and math can be. So stop by the Chaifetz Arena on the Saint Louis University Campus to see 43 teams and hundreds of high school students with their amazing robots.

Thursday is just a prep day for the teams, but the public is welcome on Friday and Saturday:

  • Friday, March 20 from 8:30-6:30PM
  • Saturday, March 21 from 9AM-5:30PM

detailed schedule is also available online. If you can’t make it in person but want to follow along, watch the live webcast or follow us on Twitter.

Of course, if you do come to the event, stop by our pit to say hi, talk to our students, and see our robot!

The Game

This year’s FIRST Robotics Competition (FRC) game is Recycle Rush℠:

Recycle Rush℠ starts with certain tasks to be performed autonomously in the first 15 seconds of the match, and then human drivers take over for the remaining 2 minutes and 15 seconds to  remotely command the robot to build stacks of totes, recycling cans, and pool noodles. Points are awarded based upon numbers of successfully accomplished tasks. Each match consists of two alliances of three teams, so teams and robots have to work together. And every match puts different teams on each alliance, so teams have to be able to work together will all kinds of different robots. (This is an extreme simplification – the actual game rules are very nuanced and specific and fill about 100 printed pages.)

Our Robot(s)

All FRC teams found out about the game on January 3, 2015, and had only 6 weeks to analyze the game, determine strategies, design and build our competition robot, program the control system, test the functionality, fix any and all problems, and practice driving. Then the competition robot has to be bagged (literally placed in a very large sealed plastic bag) and not touched until the first day of competition.

Team 4931's bagged robot

Here’s our competition robot before bagging:

Competition robot

Six weeks is terribly short, so many teams try to also build a second robot that they can continue to modify, fix, and test after their competition robot has been bagged. This was something we did this year for the first time, and our’s was identical in the most important ways but fairly crude in others (like drive train). Here’s our practice robot with a stack of the totes and recycling container:

Practice robot

There are several areas where totes are available: they can be loaded onto the field via two human player stations, and there are also up to 40 totes in an area of the field called the “landfill” zone. Although our robot can use the totes added from the human player station, our team decided to go for the more challenging task of picking up totes from the landfill. In fact, our robot is optimized for the exact layout of the totes in the landfill.

Field Layout

To save cost and to simplify testing, our robots share a single control system that we can move from one robot to the other.

Our control system

Of course, there’s a lot more to talk about, but the best way to see our robot is to come in person to the event and let us show you!

Our Sponsors

We’d like to thank our sponsors, who have supported us with grants and donations:

And thanks to our families, who have put up with our rigorous schedule!

None of this would be possible without them.

Edwardsville FRC Team 4931