ROBOT ENGINEERING NOTES

로봇과 AMR의
전장 설계부터 인증까지

회로 실무, 산업자동화, Functional Safety, ISO 규격과 로봇 인증을 실제 설계 관점에서 정리합니다.

회로 실무 AMR / AGV Functional Safety ISO 13849 EMC / CE
AMR ENGINEERING GUIDE →

【로봇 제어 실무】 DC 모터 위치 제어가 흔들리는 이유 | Encoder Resolution과 Gear Backlash

 

【회로-전장 실무】 DC/DC 컨버터와 레귤레이터 선정 방법 | LDO, Buck, TI WEBENCH 설계

【회로 실무】 포토커플러 선정 방법 / CTR, 입력저항, 24V Digital Input 회로【ROBOT】페라이트 코어 조사 (표 첨부)페라이트 코어 로봇의 EMC 테스트를 진행하며, 제조사별 페라이트 코어 표를 정리하

terrypack.tistory.com

 

 

【Safety 기능안전】 ISO 13849-1 Category 2, 3, 4 차이 쉽게 이해하기

【통신 실무】 Managed Switch와 Unmanaged Switch 차이 | AMR에는 어떤 제품이 필요할까?산업용 Ethernet Switch를 선정하다 보면 Managed와 Unmanaged라는 구분을 만나게 된다. 가격 차이도 크기 때문에 “AMR에는 M

terrypack.tistory.com

MOTION TROUBLESHOOTING
PID를 아무리 만져도 위치가 흔들린다면, Encoder와 Gearbox부터 확인해야 한다

실제 델타로봇에서 Velocity Loop가 불안정했던 이유와 약 ±1° Gear Backlash를 어떻게 구분하고 대응했는지, 제어기보다 Hardware를 먼저 보는 방법을 설명한다.

Motor Position Control이 흔들리면 가장 먼저 PID Gain을 바꾸기 쉽다. Kp를 낮추고, Ki를 줄이고, Kd를 추가하면서 Oscillation이 줄어드는지 본다.

하지만 실제 Robot에서는 PID가 원인이 아닌 경우가 많다. Sensor가 충분한 정보를 주지 못하거나 Gearbox에 유격이 있으면 Controller가 아무리 좋아도 관측할 수 없는 영역과 제어할 수 없는 영역이 생긴다.

필자가 직접 제작한 델타로봇에서는 이 두 문제가 동시에 나타났다. Encoder Resolution이 낮아 Speed Loop가 제대로 동작하지 않았고, Gearbox에서는 약 ±1°의 Backlash가 측정됐다.

이 글의 핵심
Position Control 문제를 Software 문제, Sensor 문제, Mechanism 문제로 나눠서 봐야 한다.
모두 PID 문제로 처리하려고 하면 시간이 오래 걸리고 근본 원인을 놓치기 쉽다.

1. Encoder Resolution은 위치 정확도만의 문제가 아니다

Encoder Resolution이라고 하면 보통 "한 바퀴를 몇 Count로 나누는가"만 생각한다. 하지만 Motion Control에서는 Position뿐 아니라 Speed를 계산하는 데도 직접 영향을 준다.

한 Count당 회전각
Angle per Count = 360° / Counts per Revolution

Count 수가 많을수록 Position을 더 세밀하게 구분할 수 있다. 문제는 저속구간이다. 짧은 Sampling Period 안에 Encoder Pulse가 거의 들어오지 않으면 Speed 계산이 거칠어진다.

2. 위치는 읽히는데 속도제어는 왜 안 될 수 있을까?

Position은 누적 Count를 보면 된다. 반면 Speed는 일정 시간 동안 Count가 얼마나 변했는지를 봐야 한다.

가장 단순한 속도 추정
ω_est ∝ ΔCount / Δt

예를 들어 매우 느리게 움직이는 Motor에서 1ms마다 Speed를 계산한다고 생각해보자. 어떤 주기에는 Pulse가 0개, 다음 주기에는 1개가 들어올 수 있다. 실제 Motor Speed는 거의 일정해도 계산값은 0과 특정 값 사이를 뛰게 된다.

Sampling을 빠르게 한다고 항상 좋아지는 것은 아니다.
Encoder Resolution이 충분하지 않은데 Sampling Period만 짧게 하면 한 주기당 Count 수가 더 줄어 Speed Quantization이 심해질 수 있다.

3. 실제 프로젝트에서는 Velocity Loop를 제거했다

당시에는 일반적인 Servo 구조처럼 Current-Speed-Position 3중 Cascade Control을 시도했다.

하지만 실제 Encoder Resolution이 충분하지 않아 Velocity Feedback이 원하는 수준으로 안정되지 않았다. Position Feedback 자체는 사용할 수 있었지만 Speed Loop를 닫기에는 정보의 품질이 부족했다.

결국 Speed Loop를 제외하고 Current-Position Cascade로 Control Architecture를 변경했다.

처음 계획과 실제 적용 구조
PLANPositionOuter Loop
PLANVelocityMiddle Loop
PLANCurrentInner Loop
ACTUALPositionOuter Loop
ACTUALCurrentInner Loop
COMPRise LimitCommand 제한

이 경험에서 중요한 것은 "원래 Servo는 3중 Loop니까 반드시 Velocity Loop가 있어야 한다"는 식으로 설계하지 않았다는 점이다. Sensor가 제공할 수 있는 정보 수준에 맞게 구조를 단순화했다.

4. Speed Loop를 제거하면 Command Profile이 더 중요해진다

Velocity Loop가 없으면 Position Reference가 갑자기 크게 바뀔 때 Position Controller가 큰 Current Command를 만들 수 있다.

그래서 당시에는 Position Command가 한 번에 Step으로 변하지 않도록 Rise Limit Algorithm을 추가했다.

01큰 Step

Position Error 급증

02PID Output

Current Command 증가

03Motor

급가속과 충격

04Rise Limit

Reference 변화율 제한

05Result

Motion 완만화

지금 표현으로는 Slew Rate Limiter 또는 간단한 Trajectory Generator와 비슷한 역할이다. PID Gain을 무작정 낮춰 응답을 둔하게 만드는 대신 입력 Command 자체를 물리적으로 수행 가능한 형태로 바꾼 것이다.

5. Gear Backlash는 Encoder가 보고 있어도 안 보일 수 있다

두 번째 문제는 Gearbox였다. 실제 측정에서 약 ±1° 수준의 Backlash가 있었다.

특히 Encoder가 Motor Shaft 쪽에 있고 Backlash가 Gear 이후에 존재한다면 Encoder는 Motor가 움직였다고 보고하지만 실제 Output Link는 아직 움직이지 않을 수 있다.

Backlash 구간에서 발생하는 일
01Direction Change회전방향 전환
02Motor ShaftEncoder Count 변화
03Gear Gap출력축 정지
04PIDError 증가
05Gear Contact유격 끝 도달
06Output Jump기구 급반응

6. 이 현상은 PID Hunting처럼 보일 수 있다

Backlash가 있으면 방향전환 직후 Controller가 명령을 내는데 Output이 움직이지 않는다. Position Error가 남아 있으므로 PID Output이 계속 커질 수 있다.

그러다 Gear Tooth가 반대편에 닿는 순간 그동안 쌓인 Command가 실제 기구에 전달되면서 overshoot가 발생할 수 있다. 다시 반대방향으로 보정하면 또 Backlash Zone을 통과한다.

결과만 보면 PID가 계속 좌우로 흔드는 Hunting처럼 보일 수 있다.

이때 Gain만 낮추면 증상은 줄어도 원인은 남는다.
Backlash 자체가 없어지는 것이 아니므로 Position Accuracy와 Direction Reversal 문제는 계속 남을 수 있다.

7. 당시에는 Preload 성격의 하중으로 Backlash 방향을 한쪽에 몰았다

프로젝트에서는 복잡한 Backlash Compensation Algorithm보다 기구적인 방법을 사용했다. 일정한 방향으로 하중을 걸어 양방향으로 나타나던 Gear 유격을 한쪽 방향으로 Bias시켰다.

이 방법은 모든 Robot에 적용할 정답은 아니다. 하지만 작업방향과 Load가 비교적 일정했던 Prototype에서는 실제 문제를 빠르게 줄일 수 있는 방법이었다.

실무에서 배운 점
Software Compensation이 항상 먼저가 아니다. 기구에서 Preload, Gear 선택, Encoder 위치 변경으로 문제를 줄일 수 있다면 Control Algorithm보다 더 단순하고 안정적인 해결책이 될 수 있다.

8. Encoder Resolution 문제와 Backlash 문제를 어떻게 구분할까?

증상 Encoder Resolution 가능성 Backlash 가능성
저속 Speed 값이 계단형 높음 낮음
정지 근처 Speed가 0과 특정값을 반복 높음 낮음
방향전환 때만 Dead Zone 발생 낮음 높음
Motor Shaft는 움직이는데 Output이 늦게 반응 낮음 매우 높음
PID Gain을 낮추면 떨림만 줄고 오차는 남음 가능 가능

9. Encoder가 부족하면 어떤 대안이 있을까?

일반적으로는 Encoder Resolution을 높이는 것이 가장 직관적이다. 하지만 Hardware 변경이 어렵다면 Control Algorithm에서도 몇 가지 선택지가 있다.

일반적인 대안
  • Speed 계산 Window를 길게 잡아 Count 수를 늘린다.
  • Pulse Interval을 측정하는 방식으로 저속 Resolution을 높인다.
  • Low-pass Filter 또는 Observer를 사용한다.
  • Velocity Loop Bandwidth를 낮춘다.
  • 필요하면 Velocity Loop를 제거하고 Position Command Profile을 제한한다.

어떤 방법이 좋은지는 Encoder Type, MCU Timer, Required Speed Range와 Control Bandwidth에 따라 달라진다.

10. Backlash가 있으면 Encoder 위치도 다시 봐야 한다

Motor Shaft Encoder는 Motor 회전을 잘 측정하지만 Gearbox 이후 실제 Joint Angle을 항상 정확히 나타내는 것은 아니다.

정밀한 Joint Position이 중요하다면 Output-side Encoder, Direct Encoder, Dual Encoder 구조를 검토할 수 있다. 다만 비용과 구조가 복잡해지므로 요구 정확도에 따라 선택한다.

11. Troubleshooting은 이 순서로 하는 것이 빠르다

Position Control 점검 순서
  • Encoder Count가 정지상태에서 안정적인지 확인한다.
  • 수동으로 천천히 돌리며 Count가 연속적으로 증가하는지 확인한다.
  • 저속에서 Speed Estimation 값이 얼마나 거칠게 변하는지 기록한다.
  • Motor Shaft와 Output Shaft를 표시하고 방향전환 Dead Zone을 측정한다.
  • Current Limit 또는 PWM Saturation이 발생하는지 확인한다.
  • Position Command가 너무 급격한 Step인지 확인한다.
  • 마지막에 PID Gain을 조정한다.

12. 이 프로젝트에서 얻은 핵심 교훈

KEY 01Position Resolution과 Speed Resolution은 다르다

Position에 충분한 Encoder라도 빠른 Velocity Loop에는 부족할 수 있다.

KEY 02Sampling Time도 Sensor Resolution의 일부다

짧은 주기에서 Pulse가 너무 적으면 Speed Feedback 품질이 떨어진다.

KEY 03Backlash는 제어기가 만들지 않는다

기계적 Dead Zone을 Gain 문제로 오해하면 튜닝에 시간을 많이 쓴다.

KEY 04Sensor 위치를 생각한다

Motor Encoder가 보는 위치와 실제 Output Joint 위치가 다를 수 있다.

마무리

실제 Motion Control에서는 "PID를 어떻게 튜닝할까?"보다 "지금 Controller가 믿고 있는 Feedback이 실제 기구를 제대로 표현하고 있는가?"를 먼저 물어야 한다.

당시 프로젝트에서 Velocity Loop를 제거한 것도, Gear Backlash를 기구적으로 Bias한 것도 이 원칙에서 나온 선택이었다. 제어기를 복잡하게 만들기 전에 Sensor와 Mechanism이 제공하는 정보와 한계를 먼저 이해하는 것이 중요하다.

반응형
LIST