Software Education
Welcome back, everybody, to a new build thread update. This week, it will be about our software sub-department. More specifically, we will talk about how we prepare new students for the build season.
Educating new students was the most important project for the off-season and pre-season. We noticed in previous build seasons that during crunch time the students heavily relied on input and guidance from mentors. This was especially noticeable as the robot we built was one of the most complex ones in our history. We also noticed that the lack of well-trained students was limiting the output of the software subdepartment.
Software pathway to top tier contender
To take our software sub-department to the next level, we spoke to many teams at Worlds to see what resources they had available. We created an overview that defines different performance levels of our team and the required criteria and resources to reach those levels .
These criteria range from the amount of students and mentors needed, to necessary knowledge levels in the fields of control engineering, computer architecture, different communication protocols etc.
Our goal wasn’t to increase our in-depth knowledge but mainly to focus on a sustainable foundation to keep the sub-department healthy. This meant mainly the main part of all our energy was put into the current and new students in order to get them up to speed and about software for the long term to increase the longevity of the sub-department.
Programming FLL Robots
Programming an FRC robot can be quite challenging, so we decided to start with programming FLL robots because the basis is very similar. Using blocks is much easier in the beginning than writing code. This makes it an easy way to start with programming. The end goal of of working with the FLL robots was to program them in such a way that they could balance on a piece of wood, similar to the charge station from 2023.
Reprogramming old robots
What’s a better way to get students hooked on software other than programming a robot? After an introduction to actuators in FRC and the structure of our code, we began reprogramming our 2022 robot, Resurrection, with students interested in software. We started simple with the intake and worked our way up in complexity to the shooter and drivetrain.
And what better way to learn how to program a robot than by programming a robot?
Previous seasons, we struggled quite a bit with the structure and logic of subsystems. Sometimes we even had to pull all-nighters to fix things like the logic of the 2023 arm subsystem. Therefore, a lot of focus was put on the code structure. More specifically, on how to divide the robot into subsystems and assign functions to these subsystems before actually programming it.
For the intake, this would, include: turn on, turn off, fold out, fold in. This makes programming much easier as these functions can be easily implemented into Java, and it also makes reading and debugging the code much easier.
Using Notion to keep track of tasks
This project was also a great way to introduce everyone to our Notion. Every student keeps track of their progress on their plan board in Notion, which makes it easier to see everyone’s progress. It helps people get used to Notion as well before the start of the build season. We also added useful links and documentation to each task to help everyone along.
Student Autonomy
During this project, we focus on the autonomy of students too. In the build season, we want students to take more responsibility and ideally become responsible for the software part of an entire subsystem. The Notion plan board is also a great tool for this because it gives students more freedom to choose on which parts of the robot they will work and to take the initiative to ask for help and conduct research.
Future steps
We will continue with reprogramming Resurrection for the remainder of the pre-season. We are also going to prepare for build season by looking into the exact task division during build season. We are of course also looking into other development projects, but you will hear about that in a future post