With the Romi robot becoming a popular FIRST @ home activity right now, I was considering developing a YouTube series for command based programming. It’s obviously a lot of work to put something like this together so I figured I’d ask the community FIRST (puns!). Would like to know which teams are struggling with the basics of programming and would find it useful.
I was specifically thinking about Command Based Programming with the Romi for at home learning. Not just for this year but as a permanent preseason exercise for my team. There is so much more time that students have at home to learn compared to learning at school with a RoboRIO connected to a robot (that can’t leave the school in my case).
Also, would a series like this “spoil” the troubleshooting and learning experience for anyone? I remember how fun it was back in my high school days to try and write code and build the robot with a lot of vague information. The troubleshooting was fun but also frustrating at times.
More Romi content is needed. I’ve done a little with my team but it’s not well produced and I’d love something easier I could point students to.
Absolutely not, anyone can choose to not use a resource that you create. Most of FRC is hard. The problem is getting resources to those that need them. It’s never that FRC is too easy or too accessible.
I notice you create a bunch of duplicate code in your example project.
You can just do controller.getButton(XBoxController.ButtonA);
and you don’t need to do getRawAxis(), you can do controller.getX(Hand.kLeft)
Overally, there are a couple of questionable/bad decisions in your example code that generally we wouldn’t recommend rookie teams to do. String concatenation is actually a direct factor to loop overruns and bad robot performance.
I would also recommend adding Trajectory following to your list. This is quite wanted for this year (path following challenges), and generally is more technical.
This looks excellent! A quality series that covers zero-to-Romi would get heavy use, especially if you can include good documentation and clean code samples to go with the videos.
We’ve been using Romis this season and finding it to be a great hands-on tool for all ages. Perfect for the current unfortunate circumstances, but the Romi will continue to be a great teaching tool even when things return to normal. Our syllabus was similar to what you have there, but you should definitely consider adding drivetrain characterization and trajectory following to the list.
I am particularly excited to see what develops as teams start to build onto the basic Romi platform. We’ve only scratched the surface here adding sensors and actuators.
Afterthought: My best advice for developing this would be to first create your sample programs, and then seek and incorporate feedback into the code and documentation before you commit it to video. I’ve taught a lot of programming courses, and found this to generally be the best path to a good final product.
Errors: Types of Errors, How to Debug, How to Use Driverstation Logs
Workflow Management: Types of development (Agile, Kanban, etc.), How to Effectively Document Code, How (and Why) to Comment, Effective Pair Programming/Fire and Motion, The Joel Test (FRC Edition, Training New Programmers, and Lite Training to Non-programmers.
Misc: How to Talk to Non-coders about Programming
No one is making videos about these. It baffles me.
Yeah. Im not surprised. Our team is still very rookie and does just basic programming. Doing PRs on github would be great to improve the examples so that the kids get the right info. Especially so that the videos don’t have to be redone.
While Processing is awesome, it’s not exactly what I mean. How do programmers explain topics like Motion Profiling or Vision Processing to those who don’t know the ins and outs of programming? These could be younger students, peers, or even professionals who don’t work in a CS area. The point is not to teach them how to it, but give them a rudimentary understanding of what’s going on. I’d love to teach everyone everything, but sometimes that isn’t feasible possible.
This skill would be useful in both an educational and industrial setting.
In education, sometime you only have a very limited time to spark one’s curiosity for a subject. Being able to explain it accurately not only can create a passion, but can also boost self confidence. This confidence come from feeling like you are successful at learning the new concept.
Industry also needs professionals that can explain themselves to non-CS employee. While it’s possible to get a job where the only people you talk to are other programmers, more and more companies are seeing the importance of a CS. I found while working at Subaru that I had to explain to people both what I could not, and more importantly, what I could do with programming. I made a lot of people’s lifes easier, but only once I understood their needs and effectively communicated how I could help them.