A system comprising: a satellite including a pointing command generator (105, 200), a navigation system (110, 205) and at least one reaction wheel (115, 210, 415), and a satellite orientation control system (125, 220) communicatively connected to the pointing command generator (105, 200), the navigation system (110, 205) and the at least one reaction wheel (115, 210, 415), the satellite orientation control system (125, 220) comprising a double feedback loop system including an outer loop (225, 300, 400) and an inner loop (230, 330, 420), wherein the outer loop (225, 300, 400) is configured to receive a desired orientation of the satellite from the pointing command generator (105, 200) and an estimated orientation of the satellite from the navigation system (110, 205) as inputs, determine an eigen vector to rotate the satellite from one orientation to another based on the desired orientation and the estimated orientation and output the determined eigen vector or desired body rotational rates determined based on the determined eigen vector to the inner loop (230, 330, 420), and wherein the inner loop (230, 330, 420) is configured to receive the eigen vector or the desired body rotational rates from the outer loop (225, 300, 400) as an input and execute a non-linear dynamic inversion algorithm based on the eigen vector or the desired body rotational rates to determine an output signal for the at least one reaction wheel (115, 210, 415) of the satellite; a memory; and a processor device in communication with the memory and configured to: apply the satellite orientation control system (125, 220) to output the output signal to the at least one reaction wheel (115, 210, 415) of the satellite to cause the at least one reaction wheel (115, 210, 415) to rotate in response to the output signal and orient the satellite based upon the rotation of the at least one reaction wheel (115, 210, 415). a satellite including a pointing command generator (105, 200), a navigation system (110, 205) and at least one reaction wheel (115, 210, 415), and a satellite orientation control system (125, 220) communicatively connected to the pointing command generator (105, 200), the navigation system (110, 205) and the at least one reaction wheel (115, 210, 415), the satellite orientation control system (125, 220) comprising a double feedback loop system including an outer loop (225, 300, 400) and an inner loop (230, 330, 420), wherein the outer loop (225, 300, 400) is configured to receive a desired orientation of the satellite from the pointing command generator (105, 200) and an estimated orientation of the satellite from the navigation system (110, 205) as inputs, determine an eigen vector to rotate the satellite from one orientation to another based on the desired orientation and the estimated orientation and output the determined eigen vector or desired body rotational rates determined based on the determined eigen vector to the inner loop (230, 330, 420), and wherein the inner loop (230, 330, 420) is configured to receive the eigen vector or the desired body rotational rates from the outer loop (225, 300, 400) as an input and execute a non-linear dynamic inversion algorithm based on the eigen vector or the desired body rotational rates to determine an output signal for the at least one reaction wheel (115, 210, 415) of the satellite; a memory; and a processor device in communication with the memory and configured to: apply the satellite orientation control system (125, 220) to output the output signal to the at least one reaction wheel (115, 210, 415) of the satellite to cause the at least one reaction wheel (115, 210, 415) to rotate in response to the output signal and orient the satellite based upon the rotation of the at least one reaction wheel (115, 210, 415).