3.1 기존 구조의 문제점 및 제안 방법의 필요성
다양한 형태의 가변적인 시선방향 위치명령이 step 형태로 인가되면 김발시스템의 서보 제어기 특성상 과도한 overshoot가 발생된다. Percent
overshoot는 step 입력 크기에 따라서 정해진 비율로 발생되므로 step 입력의 크기가 클수록 overshoot 각도는 커진다. 따라서,
가변적인 step 명령의 크기에 따라서 큰 초기 위치오차를 유발하며 이는 제어기 출력을 증대시키는 요인이 되어 모터 토크의 saturation을 유발하기도
한다. 그래서 일반적으로는 가속도 제한기를 적용하여 모터 토크의 saturation을 방지하는 방법이 적용된다. 이때, 오차는 계속적으로 누적되어
적분기의 출력은 점점 증가하게 되고 이는 overshoot의 주 발생 요인이 된다. 또한, 제어기 입력 및 모터 토크의 saturation은 제어기가
구동기의 최대 출력 범위를 넘어서는 제어 명령을 만드는 상황으로 saturation 상태 동안 제어 시스템은 순간적으로 개루프 상태로 볼 수 있다.
따라서, 설계된 제어기는 정상적인 성능을 내지 못하며, 순간적으로는 비선형 특성을 갖는 상태로 시스템의 불안정한 상태를 초래한다.
Overshoot를 감소시키기 위해 제어기의 대역폭을 낮추는 방법이 있는데 위치 추종성이 늦어지는 결과를 초래한다. 또한, 시선 위치 명령에 대한
추종오차 역시 증가하게 된다. 비행체 탑재 전자광학장비 김발시스템의 임무 수행을 위한 기능 및 성능을 고려할 때 시선 위치 제어기 대역폭은 3Hz
이상으로 설정되어야 되며, 이로 인해 발생되는 overshoot는 별도의 방법으로 해결하여야 한다.
본 논문에서는 전자광학장비 김발시스템의 임무 수행을 위해 요구되는 최단시간 및 최소오차 위치제어 요구사항을 만족하기 위해서 경로 생성 알고리즘의 설계를
제안한다. 그림 3은 기존의 구조에 제안한 경로 생성 방법을 적용한 제어 블록도를 나타낸다. 제안한 경로 생성 알고리즘은 시선 위치 명령이 step 형태로 입력되면
경로 생성 알고리즘을 통해 초기에 설정한 김발시스템의 최대 구동 성능을 이용하여 마이크로프로세서의 제어 주기 마다 가속, 등속, 감속구간별 경로 생성을
결정하고 그에 따른 시선 명령을 생성하도록 설계했다. 여기서, $\theta_{CMD}$는 시선 위치 명령, $\theta_{TG-CMD}$는 경로
생성 알고리즘을 통해 연산된 시선 위치 명령, $\theta_{LOS}$는 김발 시스템의 시선 위치, $\theta_{error}$는 경로 생성 시선
위치 명령과 김발시스템의 시선의 위치 오차, $\omega_{cmd}$는 위치 제어기 출력을 나타낸다.
그림. 3. 제안한 경로 생성 방법을 적용한 제어 블록도
Fig. 3. The Block diagram of Control Applying the Proposed Trajectory Generation Method
3.2 제안한 경로 생성 방법
제안한 경로 생성 방법의 흐름도는 그림 4와 같다. 먼저, 최단시간 시선 이동을 위해 김발시스템의 최대 구동 성능인 최대 가속도 및 최대 속도를 설정하고, 제어 주기 마다 경로 생성을 결정하고
시선 위치를 연산하기 위하여 사용되는 제어 샘플링 시간을 설정한다. 그리고 상위 체계로부터 수신 받은 시선 위치 명령을 목표 위치로 입력한다. 설정을
마친 후 본 논문에서 정의한 가속, 등속, 감속 구간별 판별식 및 위치 명령 계산식을 통해서 매 제어 샘플링 시간마다 가속, 등속, 감속을 결정하고
해당 구간의 시선 위치 명령을 생성한다.
가속구간은 김발시스템이 정지 상태에서 목표 위치까지 이동경로 내의 최고 속도까지 구동할 때 발생한다. 가속구간의 판별식은 다음 식(1)과 같다. 제어 샘플 시간 동안의 시선 위치 명령 대비 현재 위치 변화량과 현재 위치와 이전 제어 샘플링 시간의 위치 변화량 차이가 최대 가속도에
의한 한 제어 주기의 최대 허용 속도보다 크거나 같다면 가속구간의 경로생성을 결정한다. 여기서, $x_{cmd}$는 시선 위치 명령, $x(k-1)$은
이전 샘플링 시간의 위치 명령, $x(k)$는 현재 위치, $a_{\max}$는 최대 가속도, $T_{s}$는 제어 샘플링 시간을 나타낸다.
가속구간이 결정되어 경로 생성을 위한 시선 위치 명령은 아래
식(2)와 같고,
그림 5는 속도-시간 그래프를 이용하여
식(2)의 산출 과정을 나타낸다.
그림 5와 같은 속도-시간 그래프의 면적은 이동한 거리를 나타낸다. 따라서, 그래프의 면적(A)는 가속구간의 경로 생성된 시선 위치 명령인
식(2) 우측 항의 첫 번째에 있는 현재 위치($x(k)$)이고, 면적(B)는 수식의 두 번째에 위치한 이전 샘플링 시간의 속도에 의한 위치 $v(k-1)T_{s}$를
나타낸다. 마지막으로, 면적(C)는 $a_{\max}T_{s}^{2}$를 나타내어 (A), (B), (C)를 합하면 경로 생성을 통한 다음 샘플 시간의
시선 위치 명령인 $x(k+1)$이 산출된다. 여기서, $x(k+1)$은 경로 생성을 통한 다음 샘플링 시간의 위치 명령, $x(k)$는 현재 위치,
$v(k-1)$은 이전 샘플링 시간의 속도, $T_{s}$는 제어 샘플링 시간, $a_{\max}$는 최대 가속도를 나타낸다.
그림. 4. 제안한 경로 생성 방법의 흐름도
Fig. 4. The Flow Chart of Proposed Trajectory Generation Method
그림. 5. 가속구간의 경로 생성 개념 설명을 위한 그래프
Fig. 5. The Graph of Concept Description for Trajectory Generation on Acceleration
Area
등속구간은 시선의 이동 거리가 멀거나 최대 속도가 작을 때 가속이 제한되어 발생하게 된다. 이동구간이 짧거나 최대 속도가 크다면 최대 가속도에 의해
등속구간 없이 가감속만 존재하는 삼각형 형태의 속도 프로파일을 갖지만, 반대의 상황이라면 가속 후 등속을 하고 감속하는 사다리꼴 모양의 속도 프로파일을
통해 등속구간의 위치 명령이 생성되게 된다. 김발시스템의 등속구간 판단식은 다음
식(3)과 같고, 위치의 변화량이 최대 속도에 의한 한 제어 주기의 최대 허용 위치 변화량보다 크거나 같으면 등속구간을 결정한다. 여기서, $x(k)$는
현재 위치, $x(k-1)$은 이전 샘플링 시간의 위치, $v_{\max}$는 최대 속도, $T_{s}$는 제어 샘플링 시간을 나타낸다.
등속구간이 결정되어 경로 생성을 위한 시선 위치 명령의 산출식은 아래
식(4)와 같고,
그림 6 속도-시간 그래프에 표시된 것과 같이 이전 위치에 최대 허용 속도에 의한 위치를 제어 샘플 시간 마다 더하여 다음 위치를 생성한다. 따라서, 동일한
크기로 위치가 증가한 형태의 시선 위치 명령을 등속구간 동안 연속적으로 생성하게 된다. 여기서, $x(k+1)$은 경로 생성을 통한 다음 샘플링 시간의
위치 명령, $x(k)$는 현재 위치, $v_{\max}$는 최대 속도, $T_{s}$는 제어 샘플링 시간을 나타낸다.
감속구간은 현재 속도에서 최대 가속도로 감속 했을 때, 정지까지 걸리는 시간인 $T_{ts}$와 감속에 필요한 이동 거리인 $x_{ts}$를 이용하여
감속구간을 판단하고 경로 생성을 위한 위치 명령을 만들 수 있도록 설계했다.
그림 7과 같은 속도-시간 그래프에서 기울기는 가속도임을 이용하여
식(5)와 같이 $T_{ts}$를 산출했고, 면적은 이동 거리임을 이용하여
식(6)과 같이 $x_{ts}$를 산출했다. 여기서, $v_{\max}$는 최대 속도, $a_{\max}$는 최대 가속도이다.
그림. 6. 등속구간의 경로 생성 개념 설명을 위한 그래프
Fig. 6. The Graph of Concept Description for Trajectory Generation on Constant Velocity
Area
그림. 7. 감속구간의 경로 생성 개념 설명을 위한 그래프
Fig. 7. The Graph of Concept Description for Trajectory Generation on Deceleration
Area
감속구간의 판단식은
식(7)과 같으며, 목표위치와 현재위치의 오차가 감속에 필요한 이동 거리보다 작을 경우, 감속구간에 진입해야 한다고 결정한다. 그리고
식(8)는 감속구간의 경로생성 수식이며, 앞서 기술한 가속구간의 경로생성 수식과 반대로 $a_{\max}T_{s}^{2}$ 부분을 빼주어 $x(k+1)$을
결정한다. 여기서, $x_{cmd}$는 목표 위치, $x(k)$는 현재 위치, $x_{ts}$는 감속에 필요한 이동 거리, $x(k+1)$은 경로
생성을 통한 다음 샘플링 시간의 위치 명령, $v(k-1)$은 이전 샘플링 시간의 속도, $T_{s}$는 샘플링 시간, $a_{\max}$는 최대
가속도이다.
끝으로, 아래
식(9)와 같이 위치 오차가 0.01 미만이면 구동 완료라고 판단하여 경로 생성을 종료한다. 여기서, $x_{cmd}$는 목표 위치, $x(k)$는 현재
위치이다.