code: def forward_kinematics(self, joints, full_kinematics=False):
          
          frame_matrix = np.eye(4)
  
          if full_kinematics:
              frame_matrixes = []
  
          if len(self.links) != len(joints):
              raise ValueError("Your joints vector length is {} but you have {} links".format(len(joints), len(self.links)))
  
          for index, (link, joint_angle) in enumerate(zip(self.links, joints)):
              # Compute iteratively the position
              # NB : Use asarray to avoid old sympy problems
              frame_matrix = np.dot(frame_matrix, np.asarray(link.get_transformation_matrix(joint_angle)))
              if full_kinematics:
                  # rotation_axe = np.dot(frame_matrix, link.rotation)
                  frame_matrixes.append(frame_matrix)
  
          # Return the matrix, or matrixes
          if full_kinematics:
              return frame_matrixes
          else:
              return frame_matrix
docs: 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