Fractional order proportional derivative controller tuner
Bo Shang, Jianxin Liu, Tiebiao Zhao and YangQuan Chen, "Fractional order robust visual servoing control of a quadrotor UAV with larger sampling period," 2016 International Conference on Unmanned Aircraft Systems (ICUAS), Arlington, VA, 2016, pp. 1228-1234. PDF
FOPD-tunner is released under a MIT license.
If you use FOPD-tunner in an academic work, please cite:
@inproceedings{shang2016fractional,
title={Fractional order robust visual servoing control of a quadrotor UAV with larger sampling period},
author={Shang, Bo and Liu, Jianxin and Zhao, Tiebiao and Chen, YangQuan},
booktitle={Unmanned Aircraft Systems (ICUAS), 2016 International Conference on},
pages={1228--1234},
year={2016},
organization={IEEE}
}
We have tested the library in MATLAB 2018a and Windows 7, but it should be easy to run in other platforms.
Convert the identified model to this format:
Then we can get the parameter k and tau.
https://www.mathworks.com/matlabcentral/fileexchange/60874-fotf-toolbox
git clone https://github.com/cnpcshangbo/FOPD-tunner.git
Enter the folder named "1. iopid_tune_pid", open "iopid_tune.m", update the plant parameters identified with MATLAB System Identification Toolbox and set cross-over frequency omega_c and phase margin phi.
%% Setting plant parameters
global K T1 wc phi %inputs
K = -0.8592; %plant gain
T1 = 1.0710; %plant time constant
wc = 1.2; %crossoverfrequency
phi = 83.9; %phase margin
then run it to tune IOPID controller and get related parameters (integer order PID parameters kp, ki, kd, ).
Open file "cal_lambda_ki_kp_bode.m". Set fractional order lambda to -1~0.
Note: When lambda is negative, a FOPI controller becomes a FOPD controller.
Run the first cell of "cal_lambda_ki_kp_bode.m". You will see the three curves. Zoom the curves to find crosspoints. The coordinates of the crosspoints are lambda and ki.
Run the "Solution 1" cell of "cal_lambda_ki_kp_bode.m" to double check if the crosspoint is the REAL solution of the equations. If ki is complex number, there's no real solution. It means the phase curve at cross-over frequency can not be flat under current cross-over frequency omega_c and phase margin phi. Either change them or use optimization method to make the derivate of phase the smallest at cross-over frequency.
Run the "Verify the controller 1" cell of "cal_lambda_ki_kp_bode.m" to verify if the phase curve is flat at crossover frequency. At the same time kp will be displayed. The we can get the transfer function of the tuned FOPD controller.
Open the file "run_simulink.m", update the parameters and run the script.
We use the Robotics System Toolbox to cooperate with Gazebo. The Gazebo part follows Erlerobotics simulation.
http://docs.erlerobotics.com/simulation/vehicles/erle_copter/tutorial_5
Install Robotics System Toolbox. Initial ROS in MATLAB.
Use the ROS Publish block in Simulink to publish topic for velocity setpoint.