Fairly early on in the development process, we researched methods of robot kinematics to solve for positions and angles of our robotic systems. There are two primary types of kinematic approaches:
Forward kinematics: These methods begin with the lengths of each link and the angles of each joint, and give the position of any point in Cartesian (that is, $(x,y,z)$) coordinates.
Inverse kinematics: These methods begin with the lengths of each link and the positions of some point on the robot, and give the angles of each joint needed to obtain that position.
Both methods required a considerable amount of matrix algebra. For forward kinematics problems, for example, the fourth Denavit-Hartenberg parameter $Y_i$ corresponds to the amount of rotation around the $Z_i$ axis needed to align the $X_{(i-1)}$ axis with the $X_i$ matrix through the operator
$$ \bold{M}{D-H} = \begin{bmatrix}\cos{\theta_i} & \sin{\theta_i} & 0 & a{(i-1)} \\ \sin{\theta_i} \cos{\alpha_{i-1}} & \cos{\theta_i} \cos{\alpha_{(i-1)}} & -\sin{\alpha_{(i-1)}} & -\sin{\alpha_{(i-1)}} d_i \\ \sin{\theta_i} \sin{\alpha_{(i-1)}} & \cos{\theta_i} \sin{\alpha_{(i-1)}} & \cos{\alpha_{(i-1)}} & \cos{\alpha_{(i-1)}} d_i \\ 0 & 0 & 0 & 1\end{bmatrix}. $$
Above is a reference PDF for the matrix algebra of robot kinematics transformations, particularly for reverse and inverse kinematics. We eventually found that the mechatronic issues we had to solve in building our final design were more specific than either of these general categories of problems: thus, to reduce the complexity of our code, we ultimately used simpler approaches.

Rotation matrices for different Cartesian axes

Cartesian vector transformations in matrix form