Class ClosestPairTargetProcessor

  • All Implemented Interfaces:
    TargetProcessor

    public class ClosestPairTargetProcessor
    extends AbstractTargetProcessor<TargetWithHeightResult>
    Target processor which finds the closest two targets to the crosshairs, and averages their position. This is the algorithm that was used to track the boiler in the 2017 steamworks game. It can more generally be applied to anything that's two pieces of tape. This processor uses the height of the targets to measure distance. However, it computes x, y, and height all as simple averages, rather than weighting by depth. This is a good approximation as long as one target is not significantly closer than the other, meaning the camera is not viewing the target from a steep angle.
    • Constructor Detail

      • ClosestPairTargetProcessor

        public ClosestPairTargetProcessor​(int xCrosshairs,
                                          int yCrosshairs)
        Construct a new target processor with the given fixed crosshairs position.
        Parameters:
        xCrosshairs - X coordinate for the crosshairs
        yCrosshairs - Y coordinate for the crosshairs
      • ClosestPairTargetProcessor

        public ClosestPairTargetProcessor​(java.util.function.IntSupplier xCrosshairs,
                                          java.util.function.IntSupplier yCrosshairs)
        Construct a new target processor which reads crosshairs position from the given functions. The most common use case would be to pass IntPreference.get(). Whatever you pass must be safe to call from the vision thread, so it should not reference the internals of commands, subsystems, or other robot code. Note that preferences are safe to access from any thread.
        Parameters:
        xCrosshairs - X coordinate for the crosshairs
        yCrosshairs - Y coordinate for the crosshairs