Spark Max CANPIDController issues while driving

We’ve been experiencing drastic problems when driving the neo’s using the onboard PID Controller (in addition to the problem where the encoders return 0 once in a while).

Here is the setup:
Initialize each Spark Max individually, create a CANPIDController for each, set the P (about 0.001), I (0), and D (0) values for all of the 6 motors (3 per side) to be the same. Then during auto periodic, use setReference(200, ControlType.kPosition). This results in this very weird video and graph for the encoder value:
https://www.chiefdelphi.com/uploads/default/original/3X/8/8/889b3fe1054e0eff3e628ba0682f04633be4b653.MOV

Any ideas for this weird behavior? (Notice the spikes in the graph, never reaching the target of 200).

That’s definitely weird. Can you share the code you used?

https://github.com/wbaisrobotics/Robot2019/tree/DriveClass

Look specifically at Robot.java, systems/Drive.java, components/speed/CANSparkMaxGroup.java, components/encoders/CANEncoderGroup.java

Sorry in advance for the code not being that organized yet.