_getDeltaS = ({dU, J_U_S}) => {
  const J = new Matrix(J_U_S);
  const U = new Matrix(dU);

  const JT = J.transpose();
  const JTJ = JT.mmul(J);
  const JTU = JT.mmul(U);

  let JTJInv;
  try {
    JTJInv = inverse(JTJ);
  } catch (e) {
    return null;
  }

  const S = JTJInv.mmul(JTU);
  return S.to1DArray();
}
dS has 6 paragrams, first half is rotation, second half is translation
rotation is expressed in angle-axis, 
  [S[0], S[1] ,S[2]] is the axis of rotation, and the magnitude is the angle