본문 바로가기
시스템

[Robot Expert Academy 12] Guidance Controller Architecture and Motion Control Loop — Robot은 어떻게 명령을 정밀한 움직임으로 바꾸는가?

by 프레스러쉬 2026. 10. 4.

[Robot Expert Academy 12] Guidance Controller Architecture and Motion Control Loop — Robot은 어떻게 명령을 정밀한 움직임으로 바꾸는가?

PreciseFlex · Guidance · Motion Control · GPL

이번 편의 목표
Robot Controller를 단순한 ‘명령 실행 장치’가 아니라 Command → Trajectory → Servo Control → Motor → Mechanism → Encoder Feedback → Monitoring이 반복되는 실시간 Closed-loop System으로 이해합니다. 제공된 PreciseFlex/Guidance 자료에서 확인되는 기능과 일반 Servo Engineering을 구분하여 실제 Motion Error를 진단하는 사고방식을 정리합니다.

1. Controller의 본질 — 목표와 실제를 계속 비교하는 시스템

Robot Program이 Target Position을 지정한다고 Motor가 그 위치로 바로 이동하는 것은 아닙니다. Controller는 Target을 시간에 따른 Motion Command로 만들고, Motor를 구동하고, Encoder에서 실제 Joint Position을 읽어 목표와 실제의 차이를 계속 줄여 갑니다.

이 구조가 Closed-loop Control입니다. 핵심은 한 번 명령하고 끝나는 것이 아니라 Motion 동안 Feedback을 이용해 지속적으로 보정한다는 점입니다.

Core Motion Chain
Target → Trajectory → Joint Command → Servo → Motor → Robot → Encoder → Feedback → Servo

2. Guidance Controller는 Robot System의 중앙 조정자다

PF400에는 Guidance 1400B four-axis motion controller가 내장되고, PF3400 계열에는 Guidance 1400C 및 관련 Slave Amp 구성이 사용됩니다. Controller는 Robot Motion뿐 아니라 I/O, Network, Program execution, Error monitoring, Parameter와 Configuration을 함께 관리합니다.

따라서 Controller를 단순 Servo Drive로 보면 안 됩니다. Servo Drive가 Motor Current를 직접 다루는 계층이라면 Guidance Controller는 더 상위에서 Robot의 상태와 Trajectory, Program, I/O를 통합합니다.

3. Step 1 — Target Command를 받는다

Target은 Joint Space 또는 Cartesian Space 관점에서 정의될 수 있습니다. GPL Program, MotionBlock, Browser/Virtual Pendant 또는 상위 PC Application 등에서 Motion 요구가 시작될 수 있습니다.

Cartesian Target이라면 앞선 Chapter에서 다룬 Kinematics와 Coordinate Frame이 개입합니다. Controller는 Target Pose를 Robot이 실제로 움직일 Joint Target으로 연결해야 합니다.

4. Step 2 — Trajectory Generation: ‘어디로’에서 ‘시간에 따라 어떻게’로

Target Position만으로는 Motion이 정의되지 않습니다. 현재 위치에서 Target까지 어떤 속도와 가속도로 움직일 것인지가 필요합니다. 이 과정을 일반적으로 Trajectory Generation이라고 합니다.

Engineering 관점에서는 Position, Velocity, Acceleration이 시간에 따라 연속적으로 변화하도록 Profile을 설계합니다. 급격한 Acceleration 변화는 Mechanism과 Payload를 자극해 Vibration과 Settling을 악화시킬 수 있으므로 Trapezoidal 또는 S-curve 계열의 개념이 널리 사용됩니다. 구체적인 내부 Profile 구현은 제공된 매뉴얼에서 확인되지 않는 부분이므로 이는 Engineering Foundation입니다.

5. Position Loop — 현재 위치와 목표 위치의 차이를 본다

일반적인 Cascaded Servo Architecture에서 Position Loop는 Commanded Position과 Actual Position의 차이를 계산합니다. 이 차이가 Position Error입니다.

Position Error가 크다는 것은 반드시 Position Gain이 부족하다는 뜻은 아닙니다. Payload가 너무 크거나, Mechanism이 걸리거나, Belt가 느슨하거나, Encoder/Calibration이 이상하거나, 지나치게 공격적인 Motion Profile일 수도 있습니다. 따라서 Error를 ‘Controller Parameter 문제’로만 해석하면 진단이 잘못될 수 있습니다.

6. Velocity와 Current/Torque Loop — 실제 힘을 만드는 내부 계층

일반적인 Servo System은 Position Loop 안쪽에 Velocity Loop와 Current/Torque Loop를 두는 Cascaded 구조를 많이 사용합니다. 바깥 Position Loop가 원하는 Motion을 만들고, 더 빠른 내부 Loop가 Motor의 속도와 Torque를 제어합니다.

다만 PreciseFlex Guidance Controller의 내부 Loop topology와 각 Loop frequency를 제공된 문서가 모두 상세히 공개하는 것은 아니므로, 이 절의 PI/PID 구조는 Engineering Foundation으로 이해해야 합니다. 제품 내부 구현을 단정하는 설명이 아닙니다.

7. Encoder Feedback — Controller가 현실을 아는 방법

Controller가 계산한 Command만 알고 실제 Joint가 어디에 있는지 모른다면 Closed-loop Control은 불가능합니다. Absolute Encoder는 실제 Joint Position 정보를 Controller에 전달하는 핵심 Feedback Sensor입니다.

PF400 매뉴얼은 Absolute Encoder를 사용하며 Battery Backup으로 위치 정보를 유지하는 구조를 설명합니다. 하지만 Encoder 값과 실제 Mechanism의 관계가 Calibration되어 있어야 Robot TCP가 올바른 위치에 도달합니다.

8. Tracking Error — 목표 궤적과 실제 움직임 사이의 차이

제공된 PreciseFlex 매뉴얼에서 Controller는 commanded position과 actual position을 2000 Hz로 monitoring하며 Tracking Error가 허용범위를 벗어나는 상황에서 Motion을 정지시킬 수 있다고 설명합니다.

2000 Hz는 1초에 2000번, 즉 약 0.5 ms 간격으로 상태를 확인한다는 의미입니다. 이 고속 Monitoring은 Motion 이상을 빠르게 감지하는 중요한 보호 계층입니다.

Important
Tracking Error는 원인이 아니라 증상일 수 있습니다.
Controller tuning뿐 아니라 Payload, Collision, Belt, Bearing, Cable, Motor, Encoder와 Mechanism을 함께 확인해야 합니다.

9. 왜 고속으로 갈수록 문제가 드러나는가?

저속에서는 Motor Torque 요구가 작고 Mechanism의 Dynamic Effect도 작기 때문에 많은 문제가 숨어 있을 수 있습니다. Speed와 Acceleration이 올라가면 Inertia Torque, Structural Flexibility, Belt Compliance, Friction, Cable Force가 더 크게 작용합니다.

그래서 ‘저속에서는 정상인데 생산속도에서 Error가 난다’면 Motion Profile과 Dynamic Load를 반드시 확인해야 합니다. Chapter 09의 Payload/C.G./Inertia와 이번 Chapter의 Servo Loop가 여기서 연결됩니다.

10. Servo Gain을 높이면 항상 좋아지는가?

아닙니다. Gain을 높이면 Error에 더 강하게 반응할 수 있지만, Mechanism의 Resonance와 Noise까지 증폭하여 Oscillation이나 Buzzing을 만들 수 있습니다. 반대로 Gain이 지나치게 낮으면 Tracking이 느리고 Settling Time이 길어질 수 있습니다.

좋은 Tuning은 최대 Gain을 찾는 작업이 아니라 Stability + Tracking + Settling + Noise Robustness 사이의 균형점을 찾는 작업입니다.

11. Mechanical Problem을 Servo Tuning으로 숨기지 않는다

Timing Belt tension, Pulley eccentricity, Bearing, Joint friction, Tool rigidity 문제가 존재하면 Gain 조정으로 일시적으로 증상이 줄어들 수 있습니다. 그러나 Load나 Robot Pose가 바뀌면 문제가 다시 나타날 수 있습니다.

따라서 Tuning 전에 Mechanical Integrity → Payload → Encoder/Calibration → Motion Profile → Servo Parameter 순으로 확인하는 접근이 안전합니다.

12. Figure 12-1 — Guidance Motion Control Loop

[Figure 12-1 삽입 위치]
Figure 12-1. Guidance Controller Architecture and Closed-loop Motion Control
Target command, trajectory generation, servo control, motor/mechanism, absolute encoder feedback, tracking-error monitoring and system diagnostics.

※ Chapter 12 전용 인포그래픽을 첨부했습니다. 책 편집 시 Motion Control 장의 Overview Figure로 활용할 수 있습니다.

13. GDE와 Datalogger — Controller 내부를 ‘데이터’로 본다

제공된 Guidance Development Environment 문서에 따르면 GDE는 Guidance Development Suite의 일부이며, GDS에는 Controller Data를 graphing하기 위한 Datalogger Viewer가 포함됩니다.

이는 Troubleshooting에서 매우 중요합니다. 느낌으로 ‘떨린다’, ‘느리다’라고 말하는 대신 Position, Error, Motion 상태와 관련 Controller Data를 시간축으로 기록하면 문제 발생 시점과 Motion Phase를 연결할 수 있습니다.

그래프의 축과 Legend는 Time, Commanded Position, Actual Position, Position Error, Velocity, Motion State처럼 English로 구성하는 것을 권장합니다.

14. Controller Error Log와 비동기 Error

GPL Dictionary에는 Controller.ErrorLog와 Exception/Error 처리 기능이 설명되어 있습니다. GPL의 Try/Catch와 Exception.UpdateErrorCode 등을 이용하면 Program 실행 중 발생한 Error를 보다 구조적으로 처리할 수 있습니다.

Dictionary에는 -1029 Asynchronous error, -1030 Fatal asynchronous error, -1043 Asynchronous soft error 등의 코드가 설명되어 있습니다. 이런 Error 정보는 Motion이 멈춘 이유를 Program Logic과 Controller State 관점에서 구분하는 단서가 됩니다.

15. Motion Error 진단을 위한 5단계

Step 1 — Reproduce: 어떤 Target, Speed, Payload, Robot Pose에서 발생하는지 재현합니다.

Step 2 — Log: Error Log와 가능한 Motion Data를 기록합니다.

Step 3 — Separate: Program/Command, Controller, Encoder, Motor/Drive, Mechanism, Tool/Payload 계층으로 원인을 분리합니다.

Step 4 — Correct One Variable: 한 번에 하나의 원인만 수정합니다.

Step 5 — Re-test: 동일 조건과 별도의 Verification Condition에서 다시 평가합니다.

16. 현장 실습 — Command와 Actual을 겹쳐 본다

안전한 저속 Motion에서 대표 Joint 또는 TCP Motion을 반복하고 Controller가 제공하는 가능한 데이터를 기록합니다. 먼저 Baseline을 확보한 뒤 Speed/Acceleration 또는 Payload 조건을 하나씩 변화시킵니다.

가장 중요한 그래프는 Command와 Actual을 같은 Time Axis에 겹치는 것입니다. Error가 Acceleration 구간, Constant Velocity, Deceleration, Settling 중 어디에서 커지는지를 보면 원인 후보가 크게 줄어듭니다.

Acceleration에서 증가하면 Dynamic Load/Torque Margin을, 정지 후 Oscillation이면 Resonance/Tuning/Compliance를, 항상 일정 Offset이면 Calibration/Frame 문제를 우선 의심할 수 있습니다. 이는 일반 Engineering Diagnostic Logic입니다.

17. Quality Evaluation → Correction → Re-evaluation

Quality Evaluation: Representative Motion에서 Command/Actual, Tracking Error, Settling Time, Error Log, Payload와 Robot Pose를 함께 기록합니다. Production Speed뿐 아니라 Low-speed Baseline도 확보합니다.

Correction: Mechanical/Load/Calibration 문제를 먼저 제거하고, 이후 Motion Profile과 지원되는 Servo Parameter를 조정합니다. 한 번에 여러 Parameter를 변경하지 않습니다.

Re-evaluation: 수정에 사용한 Motion뿐 아니라 다른 Workspace Position, Payload, Direction에서 재검증합니다.

Stabilization: 장시간 반복운전과 Power Cycle 후에도 Tracking/Settling/Error Log가 안정적인지 확인합니다. 합격기준은 공정 요구에 따라 Project-specific TBD로 정의합니다.

이번 편의 핵심
Motion Control의 핵심은 Motor를 움직이는 것이 아니라 Target과 Actual의 차이를 Feedback으로 계속 줄이면서, Mechanism이 안정적으로 따라갈 수 있는 Trajectory를 만드는 것입니다. 그리고 좋은 Troubleshooting은 Servo Gain을 먼저 바꾸는 것이 아니라 Error가 Control Loop의 어느 계층에서 시작됐는지 데이터로 찾는 것입니다.

18. 다음 편 예고

13편 — Motion Profile and Trajectory Planning
다음 편에서는 Velocity, Acceleration, Deceleration, Jerk, Trapezoidal Profile, S-curve와 Cycle Time의 관계를 본격적으로 다룹니다. ‘속도를 높였는데 왜 Tact가 줄지 않는가?’라는 실제 장비 문제를 Motion Profile 관점에서 분석합니다.

Manual Basis

PF400/PF3400 Guidance Controller 구성, Absolute Encoder, commanded/actual position의 2000 Hz monitoring 및 Tracking Error 보호 개념은 제공된 Brooks Automation PreciseFlex 300/400/3400 Robots, P/N PF40-DI-00010 Rev 5.6.0을 기준으로 했습니다. GDE/GDS의 Datalogger Viewer는 제공된 Guidance Development Environment, P/N GDE0-DI-S0010 Rev 5.0.0에 근거합니다. Controller.ErrorLog 및 비동기 Error 관련 내용은 제공된 GPL Dictionary Pages에 근거합니다. 일반적인 Cascaded Position/Velocity/Current Loop, Trajectory와 Servo Tuning 설명은 Engineering Foundation이며 공개 자료가 지원하지 않는 내부 Loop Frequency나 PreciseFlex 고유 제어식을 임의로 단정하지 않았습니다.

Tags

#RobotExpertAcademy #PreciseFlex #GuidanceController #MotionControl #ServoLoop #ClosedLoopControl #TrajectoryGeneration #TrackingError #AbsoluteEncoder #ServoTuning #Datalogger #GPL #RobotDiagnostics #SCARA #IndustrialRobot #Automation #RobotEngineering