code: def earth_rates(ATTITUDE):
      '''return angular velocities in earth frame'''
      from math import sin, cos, tan, fabs
  
      p     = ATTITUDE.rollspeed
      q     = ATTITUDE.pitchspeed
      r     = ATTITUDE.yawspeed
      phi   = ATTITUDE.roll
      theta = ATTITUDE.pitch
      psi   = ATTITUDE.yaw
  
      phiDot   = p + tan(theta)*(q*sin(phi) + r*cos(phi))
      thetaDot = q*cos(phi) - r*sin(phi)
      if fabs(cos(theta)) < 1.0e-20:
          theta += 1.0e-10
      psiDot   = (q*sin(phi) + r*cos(phi))/cos(theta)
      return (phiDot, thetaDot, psiDotf earth_rates(ATTITUDE):
      '''return angular velocities in earth frame'''
      from math import sin, cos, tan, fabs
  
      p     = ATTITUDE.rollspeed
      q     = ATTITUDE.pitchspeed
      r     = ATTITUDE.yawspeed
      phi   = ATTITUDE.roll
      theta = ATTITUDE.pitch
      psi   = ATTITUDE.yaw
  
      phiDot   = p + tan(theta)*(q*sin(phi) + r*cos(phi))
      thetaDot = q*cos(phi) - r*sin(phi)
      if fabs(cos(theta)) < 1.0e-20:
          theta += 1.0e-10
      psiDot   = (q*sin(phi) + r*cos(phi))/cos(theta)
      return (phiDot, thetaDot, psiDot)
docs: return angular velocities in earth frame