이 글에서는 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 설치

링크 <-

image 14

화면을 내리다 보면

image 15

파일 다운로드 하여 설치

matlab 을 키고 경로 설정 클릭

image 17
image 18

이런 화면이 보일 것인데 맨 아래로 내려서 ‘~ \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

image 19

아래는 subsystem 중에 robot_model

image 21

위 사진처럼 robot_model 에서 저 plot_1dof 는 본인이 2.1. 에서 작성한 파일 명으로 하면 된다.

subsystem 을 만드는 것을 모른다면 Robot_Model 이 있는 위치에 위 사진의 robot_model 을 그 자리에 만들어 주면 된다.

image 30

이런 느낌

2.2.1. 블록 종류

image 22

S-Function

image 23

Fcn

image 24

gain

image 25

sum

image 26

integrator

image 27

saturation

image 28

Derivative

image 29

scope

image 31

ITAE

image 32

IAE

image 33

ISE

image 34

3. 기본적인 제어 성능 확인

image 36
  1. gain : p=5, i=0, d=0
image 35
image 37

오실레이션 확인

2. gain : p=5, i=0, d=0.5

image 38
image 39

3. 정상 상태 오차 확인

image 40
image 41

I 제어를 추가함으로써 에러가 수렴하려는 것을 확인 할 수 있다.

4. gain tuning

image 47
image 46

adaptive pid nn controller

image 50
image 48
image 49

adaptive pid nn controller 를 적용해보았지만 성능이 개선되지는 않았다. 이에 대한 자세한 이야기는 추후 다루겠다.

부록

1. ITAE, IAE, ISE 지표

1.1. ITAE

ITAE는 오차의 절대값에 시간 가중치를 곱하여 적분한 지표로, 시간이 지남에 따라 오차 감소에 더욱 큰 비중을 둡니다. 일반적으로 제어 시스템의 최적화에서 가장 많이 사용되는 지표입니다.

image 42

특징: 시간이 지날수록 오차에 더 큰 비중을 두기 때문에, 긴 시간에 걸쳐 오차를 최소화하는 제어 성능을 평가하는 데 가장 적합합니다.

ITAE는 오차에 시간을 곱하여 적분하는 것으로 제어 결과 정상상태(steady state)의 오차에 보다 비중을 주어 성능 을 평가한 지수이다.

1.2. IAE

IAE는 오차의 절대값을 시간에 대해 적분한 지표로, 오차 크기에 관계없이 동일한 가중치를 부여합니다. 이는 지속적인 오차에 대해 전체적으로 일정한 제어 성능을 요구할 때 유용합니다.

image 44

특징: 시간에 따른 가중치가 없어 모든 오차 크기를 동일하게 고려하기 때문에 균형 잡힌 성능을 평가할 때 사용됩니다.

1.3. ISE

ISE는 오차의 제곱을 시간에 대해 적분한 지표로, 큰 오차에 대해 큰 가중치를 부여합니다. 따라서 큰 오차를 줄이는 데 중점을 둔 제어 시스템에 유용하며, 최적 제어 이론에서 자주 사용됩니다.

image 43

특징: 큰 오차에 대한 가중치가 높아 큰 오차를 빠르게 줄이기 위한 제어 성능을 평가할 때 적합합니다.

Categories: Manipulator

0 Comments

Leave a Reply