이 글에서는 MATLAB과 Robotics Toolbox를 사용하여 1DOF 매니퓰레이터의 시뮬레이션을 수행하고, 기본적인 PID 제어와 ITAE, IAE, ISE 지표를 통해 제어 성능을 평가하는 방법을 설명합니다. 시뮬레이션을 통해 매니퓰레이터의 제어 성능을 확인하고, 게인 튜닝 과정을 다루며, 이후 adaptive PID NN 컨트롤러 적용 결과에도 추가로 소개합니다.
1편 – Manipulator simulation [matlab][1] – Robotics Toolbox (petercorke) 이용해서 one link manipulator PID 제어
2편 – Manipulator simulation [matlab][2] – 로봇 팔, 3 link manipulator, forward kinematics, inverse kinematics, 위치 제어 <- 링크
1. Robotics Toolbox 설치
링크 <-
화면을 내리다 보면
파일 다운로드 하여 설치
matlab 을 키고 경로 설정 클릭
이런 화면이 보일 것인데 맨 아래로 내려서 ‘~ \AppData\Roaming\MathWorks\~~\Robotics Toolbox for MATLAB\~ 경로가 여러개 보일 것인데 한번에 shift 키를 이용하여 한번에 선택한 뒤에 왼쪽에 ‘맨 위로 이동’ 버튼을 클릭하여 맨 위로 보내기
( robotics toolbox manual 참고 – 링크)
2. 기본적인 simulation 구성
시뮬레이션을 수행하기 위해 2개의 파일이 필요.
.m 파일과 .slx 파일
2.1. plot_1dof.m
파일의 이름은 자유롭게 구성하고 .m 파일의 경우는 아래 코드 작성하기
plot_1dof.m
function [sys,x0,str,ts]=plot_1DOF_Manipulator(t,x,u,flag)
L(1) = Link( [pi/2 0 0.4 0] );
L(1).offset = -pi/2;
one_link = SerialLink(L, 'name', 'one link' );
one_link.base = [ 0 1 0 0; 0 0 1 0; 1 0 0 0; 0 0 0 1];
switch flag
case 0
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 0;
sizes.NumInputs = -1;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 = [];
str = [];
ts = [-1 0];
%L(1) = Link( [pi/2 0 0.4 0] );
%L(1).offset = -pi/2;
%one_link = SerialLink( L, 'name', 'one link' );
%one_link.base = [ 0 1 0 0; 0 0 1 0; 1 0 0 0; 0 0 0 1];
one_link.plot(0);
view (135, 20);
case 1
case {2,9}
one_link.animate( u(1) );
case 3
otherwise
error(['unhandled flag = ',num2str(flag)]);
end
2.2. one_dof_system.slx
아래는 subsystem 중에 robot_model
위 사진처럼 robot_model 에서 저 plot_1dof 는 본인이 2.1. 에서 작성한 파일 명으로 하면 된다.
subsystem 을 만드는 것을 모른다면 Robot_Model 이 있는 위치에 위 사진의 robot_model 을 그 자리에 만들어 주면 된다.
이런 느낌
2.2.1. 블록 종류
S-Function
Fcn
gain
sum
integrator
saturation
Derivative
scope
ITAE
IAE
ISE
3. 기본적인 제어 성능 확인
- gain : p=5, i=0, d=0
오실레이션 확인
2. gain : p=5, i=0, d=0.5
3. 정상 상태 오차 확인
I 제어를 추가함으로써 에러가 수렴하려는 것을 확인 할 수 있다.
4. gain tuning
adaptive pid nn controller
adaptive pid nn controller 를 적용해보았지만 성능이 개선되지는 않았다. 이에 대한 자세한 이야기는 추후 다루겠다.
부록
1. ITAE, IAE, ISE 지표
1.1. ITAE
ITAE는 오차의 절대값에 시간 가중치를 곱하여 적분한 지표로, 시간이 지남에 따라 오차 감소에 더욱 큰 비중을 둡니다. 일반적으로 제어 시스템의 최적화에서 가장 많이 사용되는 지표입니다.
특징: 시간이 지날수록 오차에 더 큰 비중을 두기 때문에, 긴 시간에 걸쳐 오차를 최소화하는 제어 성능을 평가하는 데 가장 적합합니다.
ITAE는 오차에 시간을 곱하여 적분하는 것으로 제어 결과 정상상태(steady state)의 오차에 보다 비중을 주어 성능 을 평가한 지수이다.
1.2. IAE
IAE는 오차의 절대값을 시간에 대해 적분한 지표로, 오차 크기에 관계없이 동일한 가중치를 부여합니다. 이는 지속적인 오차에 대해 전체적으로 일정한 제어 성능을 요구할 때 유용합니다.
특징: 시간에 따른 가중치가 없어 모든 오차 크기를 동일하게 고려하기 때문에 균형 잡힌 성능을 평가할 때 사용됩니다.
1.3. ISE
ISE는 오차의 제곱을 시간에 대해 적분한 지표로, 큰 오차에 대해 큰 가중치를 부여합니다. 따라서 큰 오차를 줄이는 데 중점을 둔 제어 시스템에 유용하며, 최적 제어 이론에서 자주 사용됩니다.
특징: 큰 오차에 대한 가중치가 높아 큰 오차를 빠르게 줄이기 위한 제어 성능을 평가할 때 적합합니다.
0 Comments