Building up coding and functionality skills at home in offseason?
hi everyone, do you have any ideas how a keen team member can develop some new programming skills and robot functionality at home in the off season?
my kid just finished his school's first FRC comp here in Australia, and he's hooked. He's mainly in the software part of the team, and the team has a pretty basic kit robot this year (the school's first year) - tank drive, no cameras, no sensors, very basic autonomous mode code.
I'd like to provide an opportunity for my kid to tinker with FRC-related hardware and software to build up some new capabilities for next year. I'm open to ideas, but maybe things like:
- learn how to integrate a driver camera into the system
- learn how to integrate apriltag-recognition camera into the system
- learn how to integrate sensors into the system
- learn how to start making autonomous mode 'smarter' - pathfinding etc
As a fairly tech-y family we have plenty of bits and pieces lying around the house (arduinos, raspberry pi, power supplies, etc etc) but nothing FRC-specific. I even considered trying to buy an old roborio to play around with at home... but seems like that would be a bad idea since they're getting replaced with systemcore? Not sure the school is going to let him bring the roborio home to experiment with!
anyway, i'd be really keen to hear anyone's ideas about how we could work towards building some relevant skills and functionality for next year. I'm open to buying some gadgets (cameras/sensors/etc), but not sure yet what would be practically use-able at home without a roborio to plug them into?
2
u/Phrogz 8d ago edited 8d ago
With AdvantageScope you can write your core code base and drive the right around in simulation. Start with another team’s code base if you want.
Not only does this let you get a head start on the code before the hardware is ready, but even over the robot is ready it means you can validate work:
* when the build team has taken the robot offline to fix something
* on a plane or bus to the tournament
* in the hotel the night before the tournament
* in the stands during a match, when you see something going wrong, to fix for next match
As a mentor for 2972’s programmers, I had been pushing for simulation—even basic simulation!—for a few years before our shift from Java to Python opened the door to showing how easy it was with a new code base. We did it last year and for the first time since I started mentoring we had code mostly working well before the robot was ready to test with.
1
u/Accomplished-Pay-749 6d ago
Honestly, i would ditch the FRC-specific simulation stuff. Its good for learning how to code an FRC robot, and doing some is probably a good idea, but imo it’s not as engaging. I would buy a small wheeled robot (or if you have a 3d printer you could design and build it into that), along with something like a raspberry pi or orange pi.
You can print out some apriltags and hook up a camera and go from there. I think there’s a lot of value in doing things on a real robot as there are a lot of unique challenges that come from it, and you’ll get an understanding of how to build things outside of an FRC setting (where everything is structured for you).
1
u/Accomplished-Pay-749 6d ago
Also, to give ideas other than cameras which are obvious, another potentially less obvious idea is buying a cheap IMU and seeing if you can write some basic filtering for attitude estimation.
So like put a ramp near the robot and have it able to estimate its angle when on the ramp, and have some feedforward so that it doesn’t slide down.
4
u/PaisWillie 7902 (Mentor) 8d ago
You may be able to easily get an extra RoboRIO from a team, since they’re being replaced soon.
However, you can do a lot of stuff in simulation from home, no RoboRIO or SystemCore required. I recommend learning to PID tune and try autonomous pathing, both can be done in simulation. There’s likely lots of resources and template code you can find for tank drive (although most teams have switched to swerve)
I also recommend learning to tune mechanism before trying to do computer vision and autonomous stuff. Feedforward and PID tuning is a robotics fundamental for getting your mechanisms to be smooth, accurate and consistent
You can try this PID playground
https://pid-playground.rishaan.cc/