Active disturbance rejection control
Active disturbance rejection control (or ADRC) is a model-free control technique used for designing controllers for systems with unknown dynamics and external disturbances. This approach only necessitates an estimated representation of the system's behavior to design controllers that effectively counteract disturbances without causing any overshooting. ADRC has been successfully used as an alternative to PID control in many applications, such as the control of permanent magnet synchronous motors, thermal power plants and robotics. In particular, the precise control of brushless motors for joint motion is vital in high-speed industrial robot applications. However, flexible robot structures can introduce unwanted vibrations, challenging PID controllers. ADRC offers a solution by real-time disturbance estimation and compensation, without needing a detailed model. Disturbance rejection 
To achieve robustness, ADRC is based on extension of the system model with an additional and fictitious state variable representing everything that the user does not include in the mathematical description of the base system to be controlled. This virtual state (sum of unknown part of model dynamics and external disturbances, usually denoted as a "total disturbance") is estimated online with an extended state observer and used in the control signal in order to decouple the system from the actual perturbation acting on the plant. This disturbance rejection feature allows users to treat the considered system with a simpler model insofar as the negative effects of modeling uncertainty are compensated in real time. As a result, the operator does not need a precise analytical description of the base system; one can model the unknown parts of the dynamics as internal disturbances in the base system. Control architecture
The ADRC consists of three main components: a tracking differentiator, a non-linear state error feedback and an extended state observer. The global convergence of ADRC has been proved for a class of general multiple-input multiple-output systems. The following architecture is known as the output-form structure of ADRC:There also exists a special form of ADRC, known as error-form structure, which is used for comparing the ADRC with classical controllers such as PID. Tracking differentiator
The primary objective of the tracking differentiator is to follow the transient profile of the reference signal, addressing the issue of sudden changes in the set point that occur in the conventional PID controller. Moreover, the tracking differentiator also mitigates the possible noise amplification that affects the derivative term of the PID controller by using numerical integration instead of numerical differentiation. Extended state observer
An extended state observer (ESO) keeps track of the system's states as well as external disturbances and unknown model's perturbations. As a result, ADRC does not rely on any particular mathematical model of disturbance. Nonlinear ESO (NESO) is a subtype of general ESO that uses a nonlinear discontinuous function of the output estimate error. NESO are comparable to sliding mode observers in that both use a nonlinear function of output estimation error (rather than a linear function as in linear, high gain, and extended observers). A sliding mode observer's discontinuity is at the origin, but the NESO's discontinuity is at a preset error threshold. Nonlinear state error feedback
The intuitiveness of PID control can be attributed to the simplicity of its error feedback. ADRC extends the PID by employing a nonlinear state error feedback, and because of this, seminal works referred to ADRC as nonlinear PID. Weighted state errors can also be used as feedback in a linearization system. References

External links 

Active disturbance rejection control implementation in MATLAB. Control theory