Teaching Software Basics

Hello CD,
I am working on educating some high schoolers in a different country about some of the basics of FRC. I plan on presenting a little bit about the 5 main sub-teams (marketing, electrical, design, build, software). However, although relatively fluent in design, build, marketing, and a bit on electrical, I am almost clueless concerning software. I was wondering what I should cover at first (I only need to talk about it for about 25 minutes). Should I talk about selecting a robot class, using programs like shuffleboard, labview, etc.? I am honestly pretty stumped so I’m turning to CD for help. Basically, what are the few basic stuff I should cover for about 20-25 minutes concerning getting started with FRC software (most likely in C++)?

It depends on the level of programming skills the students have. If you are planning on giving a presentation based on C++, the WPI getting started guide has a lot of good information. However, you don’t want to get too specific and maybe go over some more general stuff like teleop, autonomous, vision and other things that are used in FRC. It just depends on if you want to teach them something or just give them insight to what the different subteams in FRC do.

I would focus on teaching how to split up the robot into subsystems and describing the different actions or commands the robot can do with those subsystems. A great group activity to close the session is to have the students do this themselves. Split the group up into smaller teams and show the group a photo of a robot. Ask them to come up with the subsystems and commands for that robot. This activity works well for teams using either C++ or Java.

If you do decide that you want to talk about the syntax of the software, please go search for all the other threads about how to pick a programming language. You will find that the best programming language for each team is different and you should not assume that C++ is what will work well for this group.

I would not do anything about getting started with the control system. You just do not have the time. Point them at ScreenSteps (https://wpilib.screenstepslive.com/s/currentCS). There are guides there that can walk them through setup.

1 Like

So you’re suggesting taking a more simple approach and focusing on just the logical aspect of controlling a robot with simple commands rather than elaborating on the complexity of the control system?

Yes. Part of the reason I suggest this is because it is one of the things I see teams struggle with today. Teams that do not teach this end up with buggy robot code in one file thousands of lines long. Most other skills can be found online in the documentation or answered in a short answer.

EV3, the lego programming is pretty darn simple but can show the basics. For instance, if as rookies we understood the limitations of doing any autonomous programming with timing or even with encoders we would have moved sooner to more sophisticated sensor/feedback options. Not sure how it is wherever you are/will be but I’ve seen many teams, and not even rookies, just sit still in autonomous game play. Of course moving to real programming you’ll need to pick a language. Whatever your mentors have a smidge of experience with would be a good starting option. In four seasons we went through Labview, C++ and now use Java.
TW

Gotchya, I see the reasoning.

I’ll work on incorporating some more details about sensor feedback. I say C++ is likely because many of the students here already know C++ and there are teachers who teach it. I’m not sure about Java.

ScreenSteps is getting dropped, use https://frc-docs.readthedocs.io/en/develop

Awesome! I’ll try to work with ScreenSteps and that doc you sent to elaborate a bit on the programming concepts and logic flow.

You might wanna check out Synthesis by Autodesk. It’s a virtual emulator and simulator for FRC and FTC built to work with Autodesk products. It’s a little buggy, but a cool place to start and show the integration of CAD/software. It gets worked on every summer and I hear they’re making it much more stable this year and adding a lot more code emulation support.

synthesis.autodesk.com

I know that this is not yet supported for FRC, but you could introduce software with Python and then draw the parallels of Python with FRC software. You don’t have to be a software developer to learn python (how to read in files, talk to the console, how to do math, read in joysticks, etc.)

Really?
Finally…

Yep! Here are some more details: FRC Screensteps/Documentation is getting a successor!