Currently, two major programming projects are in progress for Valkyrie: interchange, and controve.
Interchange is a networking library which will allow the various devices on the robot to communicate in a universal fashion. Currently, the easiest way to send packets between devices on the robot is using something along the lines of udpcast. UDP case, well, casts UDP packets. It’s not really an ideal way to communicate because of… all the flaws of using UDP to transfer order-sensitive information. Wikipedia has far more information than I can address here. Interchange can be found on a GitHub repository. We hope to use Interchange to aid the complex task of getting vision processing data from a third-party device to the “brains” of the robot – the RoboRIO.
Controve consists of a series of attempts to create a framework to make working with robot code a little less painful. One of the biggest features it’s fair to talk about right now include building code with Bazel. Bazel is the open source release of Google’s internal build tool, called Blaze. One of the key feature relevant to our team is that Bazel provides for hermetic builds. Namely, if the code compiles a certain way once (to a certain binary), then it will do that consistently. This reduces any bugs caused by differing bytecode, etc. Bazel allows us to specify the dependencies and have it download them before compiling. It can even compile the compiler, and use that to guarantee we are building code with the right version. Currently, it’s also set up to build WPILib from scratch, which lets us eliminate problems or modify the library before it goes on the robot.
More projects are also ongoing, but these two are our primary focuses alongside administration.