I’m not on 254, but according to the tech. binder: “An Interpolating Tree Map determines the correct flywheel RPM for the current distance”
Considering that googling “interpolating tree map” gives 254’s FRC-2016-Public/InterpolatingTreeMap.java on GitHub as the first result, I’m willing to bet that this is mostly an original term.
Anyways, I’ll just explain a good way to do this, which is not quite how 254 did it. On my team, we set up closed-loop velocity control for the flywheel. Then, we positioned the robot in intervals of 10 inches away from the goal, and found the exact right flywheel speed to make the shot every time, from 20 inches away to 100 inches away (We had a fixed firing angle and could not shoot from 10 inches away). Once we found the perfect speed to make every shot, we recorded that distance and flywheel speed as a data point.
After gathering the 9 data points from those tests, we put them all into Excel. Then we graphed them, and fit a quadratic curve to them. Essentially, this gives an equation with an input of inches from the goal, and it outputs the perfect flywheel speed to shoot from that far away. This worked really well, and from any reasonable distance, the flywheel could autonomously find the right speed to shoot at, even if we didn’t have a nearby data point.
Again, I haven’t looked at 254’s code, but it’s on GitHub. However, generating an equation like this is an excellent way to solve this problem. The only real drawback that we found is having to take fresh data points whenever we changed something on our turret, which was a bit of a hassle.