This paper presents a novel controller architecture for a quadrocopter. A two-loop controller using dynamic inversion is designed that allows direct commands for position and heading angle. The inner loop controls the body-fixed angular rates. And the outer loop achieves the position control. With this structure, the position dynamic equation appears in an elegant form. The derived controller is capable of decoupling the strongly coupled dynamics of the quadrocopter, maximizing the transmission bandwidth of the position control, as well as eliminating the singularity caused by the attitude control (i.e. pitch angle at 90 degree). Pseudo-control hedging is applied in the position loop to account for limitations, saturations, actuator dynamics and delay in the inner loop. The effectiveness of the designed controller is demonstrated by an implementation on a quadrocopter equipped with an ARM7 onboard processor.