Programming concept videos

Hi everyone,
I’m currently working on making some short videos about ideas and concepts one might encounter when coding for FRC. Are there any topics that you’d like to hear about? Anything from physics to control and algorithms.

I’ll try to keep them language agnostic if possible, but my main experience is with Java.

About me: I’m the Tech Lead for 670. We won the Innovation in Control Award at Utah this year.

2 Likes

Hello, I am currently working on PathWeaver, and I have gotten it working and create many auto paths, but the implementation of the PathWeaver trajectories is quite challenging for me. I have asked about the topic and found resources online, but I still do not understand where it goes and how it formatted.
Thank you.

I can definitely talk about that! By implementation, maybe more on the concepts behind it?

Hi, as someone who has just barely gotten into programming, I’d really appreciate going over the basics of programming a robot. (I’ve just been standing behind the programmers watching them work for right now, so I have about zero experience.) Thank you!

That will work, I have basic and intermediate programming down, but I am trying to get past PID and move to PathWeaver, and advanced vision

Sure! Something I worked on and was moving to implement was integrating vision into path following and more generally odometry tracking as well – you may find that to be interesting as well. I can talk about moving to doing fancy things with paths and more, definitely.

Something on basic robot code organization and how all the systems talk to each other(OI calls a command, command calls subsystem method, subsystems call upon hardware in robotMap. And then there is robotContainer)

1 Like

I want to second this. This is our main stumbling block with the command (and magic bot) framework(s). We get how these calls work in auto. It is teleop that presents a brain-block. We understand the general theory, but in practice it makes less sense. How do we just make the robot go where we want with the joystick?

1 Like

I think the most basic introduction a programmer needs for solid FRC programming is understanding how the scheduler works.

That in part requires the person to understand that the robot must be subdivided into logical groups called Subsystems, and that each logical group of robot components are run by sequences of code called Commands.

The Commands themselves are managed by the scheduler, and the scheduler itself takes care of which commands are being run for a given subsystem.

Secondly, the next most important piece for a programmer to understand is how to debug their robot code. Using command-based programming this may be using Shuffleboard to view the subsystem and what is currently running on it, this may be displaying values the robot is using for a given input (e.g. joystick values, motor controller set values, etc)

4 Likes

Organizing the code by dividing stuff logically for Subsystems and Commands is a really big thing that I’ve seen my programmers struggle with sometimes, so I’ll definitely discuss that! And same with getting to know tools for debugging, thanks for bringing that up – I have used Shuffleboard and written a ridiculous amount of JUnit tests, I could go over setting those up and getting familiar with them.

After teaching this stuff for the last 7 years, I believe your most important videos are to cover the core foundations really well. Students really need to understand objects. Do the simple stuff amazing before trying to do the really complicated stuff.
After that, I would love to see focus on Command-Based framework from the WPI-LIB. While it is great documentation, an interactive video would be a lot more interesting to students rather than large walls of text.

2 Likes

Are you planning on going into topics such as kalman filters, or is that too specific?

I could, and Kalman filters are super interesting, but probably more in the future (I’d rather start with more general stuff and basics).

2 Likes

You’re absolutely right, and those are some good suggestions!

I’d definitely take a look to see what content already exists, to make sure you’re not overlapping a ton of content.

I’d check out what resources 971, 195, and Zero to Autonomous have put out.

Not to say it’s not worth covering this content, but it’s something to keep in mind.

Something I’d really like to see is how to implement vision with a limelight. How do you set up the camera and software, how to recognize certain objects, and finally how to connect that to your main FRC code. Thank you for taking requests like this, it’s greatly appreciated!

Thanks for your suggestion! Our team actually has not worked with Limelights before, so I’m probably not the right person to ask about that, but we did implement our own vision system and that was pretty neat. If you’re interested in integrating vision data and some general concepts I can put that on the list though!

1 Like

Definitely! I only suggested Limelight because that’s the main one I’ve seen teams using. We haven’t bought a Limelight yet, so if you have an alternative for vision processing, I’m all ears

Have you personally had trouble setting up the limelight? While it’s super used, one of the reasons it’s so common is the amazing documentation. It almost seems a waste to spend the time creating a video for such beautiful docs.

I didn’t realize that the limelight had such detailed documentation, thanks for the reference! Our team hasn’t bought a Limelight yet, but it’s been a serious consideration for next years game. Although it seems daunting, there’s nothing cooler than vision processing