One of the goals my team have this year is for everyone to do more outside of their main role, and the way we’ve settled on doing that is breaking up the design into submodules that will each have one team member fully responsible for building, testing, and programming, and then the leads will help manage the integration.
When it comes to programming, this actually fits nicely into a model that’s more like industry where the functionality of one component (e.g. a particular mechanism) is built separately from the overall control program and ideally abstracts away the details of what’s happening so that the control program can simply execute a “start intake” command rather than having to know that the motor in port 8 needs to spin forward at 70% speed and the motor in port 4 needs to spin in reverse at 50% speed, etc. It also allows for better code re-use between e.g. a driver control program and a programming skills program.
Doing something like this is straightforward when using Python (especially if using VS Code rather than VEXCode), and it’s even fairly easy to deal with if the integrated programs are done in Python, while the submodules are created in blocks. The problem is, I’m not sure if any of my Students will be up for doing Python this year, and I doubt anyone beyond our Lead Programmer would, so I’m trying to figure out whether/how we can make something similar work with Blocks.
My idea is that each blocks project would have an identical device configuration, and the projects for a given mechanism would simply define My Blocks for each of the functions of the mechanism they control…and that’s as far as I get in what I know we can do.
What I’d want to do from there is be able to import the My Blocks from the other projects into the integrated program without having to go through the error-prone tedium of manually re-creating them (or simply merge the two projects together into one). Extra bonus (and I know I’m thinking very pie in the sky here) if we don’t have to re-import them every time an update is made to the submodule.
Does anyone know if something like this is possible with the tooling that exists today? If it is, has anyone tried it and found it to be worthwhile? If it isn’t, is this something that other people might like to see?