All posts by Randall Hauch

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, evilletech.com, 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.

EHS Robotics Showcase

Today the Edwardsville High School (EHS) Robotics Club held a Robotics Showcase for area 5th grade students, giving them all kinds of information about how they can participate in robotics and experience the fun and exhilaration of STEM.

The high school students talked about Botball robotics programs at the middle-school level (next year for these 5th graders) and at the high school, and they demonstrated several great robots the club has built.

Even though Edwardsville Robotics Club (ERC) is not part of the local school district, our team was still given an opportunity to talk to the students about FIRST and the different levels of FIRST robotics programs. And since ERC has JrFLL, FLL, FTC, and FRC teams, these students are able to join and do robotics outside of school, too.

So, Jacob got up on stage and went through a quick presentation about FIRST and introduced FRC 4931’s catch video, while offstage TJ drove last years competition robot (with some help from Alex). The audience had lots of great questions, and Jacob did a great job answering them.

FRC4931 at EHS Robotics Showcase

Thanks to the EHS Robotics Club for inviting us to their showcase and for giving us a few minutes to talk about FIRST and Edwardsville Robotics.

Here’s the presentation:

and the catch video:

2015 season meeting schedule

We plan to meet from January 3 through February 17 at our new build site:

  • Monday-Thursday, 6PM-9PM
  • Saturday, 9AM-5PM
  • Sunday, 2-8PM

These are the same times as last year, so the team will discuss whether this will work again this year. We’ll update this post if the team chooses different times. All meetings are also on our calendar.

February 17 is “bag day”, and we have to put the entire robot (minus 25lbs or so) into a big plastic bag and seal it, where it will remain until we can get the robot inspected at the St. Louis Regional FRC on March 18.

We’ll also meet from Feb 18-March 17, but the meeting times will be determined later.

2015 Open House

FRC Team 4931 is starting a new season and looking for new recruits! Any high school age student in 9-12 grades (public, private, or home school) is eligible. While we are based in Edwardsville, any students in the Metro East area willing to make the trip to our meetings is welcome to join us. We currently have members from 4 different high schools!

Join us at our open house on Sunday, January 11 from 3-5PM at the Lewis and Clark N.O. Nelson Campus at 600 Troy Road in Edwardsville (across from Market Basket). We’ll be in Rooms N4 121 and 119. Here’s a map showing where the entrance to building N4:

N.O. Nelson Campus of Lewis & Clark Community College

 

This team is an intensive program for high school students to design and build a robot to compete in the 2015 FIRST robotics competition. Students will learn first hand about all aspects of robotics, including control systems, autonomous and teleoperated operation, computer aided design (CAD), mechanical engineering, Java programming, shop safety, electronics and wiring, fabrication techniques, testing, troubleshooting, and maintenance. They will also experience product development, project management, graphic design, marketing, presentations, documentation, accounting, teamwork, administration, and gracious professionalism. The team will compete at one or more area events, and will experience the hard work and fun of FIRST robotics.

You can also find out more about FIRST and FRC at http://www.usfirst.org/roboticsprograms/frc.

2015 FRC Kickoff event

The team will be attending the St. Louis regional FRC kickoff event for 2015 at Clayton High School.

Meet in the parking lot at the N.O. Nelson campus at 7AM on Saturday, January 3. We’ll carpool to the event in St. Louis, watch the live broadcast, get our decryption key, pick up our kit of parts, and return back to the N.O. Nelson campus where we’ll eat lunch, review the game rules, brainstorm, and start conceptual design. Be sure to bring any laptops that you will want during the afternoon.

FIRST has released several documents that you can download ahead of time:

Most of the documents are encrypted, and all teams will get the decryption key during the live event on Saturday. But FIRST recommends that you download the files before kickoff. (FIRST has also provided an decryption test – simply download the encrypted test document and try to decrypt with the given decryption key.)