def forward_kinematics(self, joints, full_kinematics=False):
frame_matrix = np.eye(<NUM_LIT:4>)<EOL>if full_kinematics:<EOL><INDENT>frame_matrixes = []<EOL><DEDENT>if len(self.links) != len(joints):<EOL><INDENT>raise ValueError("<STR_LIT>".format(len(joints), len(self.links)))<EOL><DEDENT>for index, (link, joint_angle) in enumerate(zip(self.links, joints)):<EOL><INDENT>frame_matrix = np.dot(frame_matrix, np.asarray(link.get_transformation_matrix(joint_angle)))<EOL>if full_kinematics:<EOL><INDENT>frame_matrixes.append(frame_matrix)<EOL><DEDENT><DEDENT>if full_kinematics:<EOL><INDENT>return frame_matrixes<EOL><DEDENT>else:<EOL><INDENT>return frame_matrix<EOL><DEDENT>
Returns the transformation matrix of the forward kinematics

        Parameters
        ----------
        joints: list
            The list of the positions of each joint. Note : Inactive joints must be in the list.
        full_kinematics: bool
            Return the transformation matrices of each joint

        Returns
        -------
        frame_matrix:
            The transformation matrix