We actually used of the whitepaper made by team 449.

Link to the Chief Delphi post in which they explain the principle: https://www.chiefdelphi.com/t/whitepaper-swerve-drive-skew-and-second-order-kinematics

Link to the whitepaper that they uploaded in the same post: https://www.chiefdelphi.com/uploads/short-url/qzj4k2LyBs7rLxAem0YajNIlStH.pdf

We use equation 2 from the paper to do the first order kinematics. This essentially does exactly the same as the kinematics function from WPI. The output of this equation is put into equation 4 and the results of this are put into the matrix equation below equation 8. From the results we use the desired x and y velocity of the module to calculate the heading and speed of the module. From the results of the second order equation we use omega, the rotational speed of the module. This omega is multiplied by a feedforward constant (kV) to add some voltage to the turn motors if the omega term is non zero. This is done using the arbitrary feedforward function of the Spark Max. In contrast to the heading and speed, we do not use a feedback PID loop in addition to this feedforward for omega.

I hope this clarifies your question.