ADRC 제어기 튜닝, 중력보상, 그리고 버추얼 토크 센서 — 기술 회의록

성능 지표 기반 튜닝 가이드 상품화, 개체별 하드웨어 물성 차이 대응, ESO 외란 추정의 사업적 확장까지


회의 개요

이 글은 ADRC(Active Disturbance Rejection Control) 제어기 도입과 관련된 기술 회의 내용을 정리한 것이다. 단순한 알고리즘 설명이 아니라, 제어 파라미터와 성능 지표의 관계를 어떻게 상품화할 것인지, 하드웨어 개체차를 어떻게 다룰 것인지, 그리고 ESO(Extended State Observer)의 추정값을 어떤 제품 가치로 전환할 수 있는지까지 다룬다.

회의는 크게 네 파트로 나뉜다.

  1. ADRC 컨트롤러 튜닝과 성능 지표
  2. 튜닝 가이드 상품화와 강화학습 활용
  3. 중력 보상 모델과 하드웨어 개체차 분리
  4. ESO 외란 추정의 사업적 확장 — 버추얼 토크 센서

1. ADRC 컨트롤러 튜닝과 성능 지표

반응성과 안정성의 트레이드오프

ADRC도 결국 일반적인 제어기 튜닝과 동일한 근본 문제를 갖는다.

  • 이득을 키우면 → 목표값을 빨리 따라가지만 → 진동 가능성 증가
  • 이득을 줄이면 → 진동은 줄지만 → 응답이 둔해짐

이건 PD 제어에서 Kp를 올릴 때와 구조적으로 같다. ADRC라고 해서 이 트레이드오프가 사라지지 않는다.

Kp와 Kd의 역할

ADRC 안에서도 Kp, Kd 관점으로 이해할 수 있다.

파라미터역할키우면과도하면
Kp오차 → 빠른 보정반응성 증가오버슈트, 진동
Kd변화율 억제감쇠·수렴성 증가노이즈 민감, 응답 무거워짐

핵심 원칙: Kp와 Kd는 같이 키워야 한다.

Kp만 올리면 빨라지지만 흔들린다. 이때 Kd도 적절히 올려주면 흔들림을 잡으면서 빠른 응답을 유지할 수 있다. 하나만 키우고 다른 하나만 줄이면 성능 지표가 한쪽으로 쏠린다.

실무적 튜닝 순서는 보통 이렇다:

  1. Kp를 올려서 원하는 반응 속도에 가깝게 맞춤
  2. 진동이 생기면 Kd를 올려 감쇠 추가
  3. 너무 둔해지면 다시 Kp, Kd 균형 재조정

성능 지표의 의미

회의에서 언급된 성능 지표는 Kp, Kd를 넣었을 때 계산되는 sigma(σ)와 omega(ω) 같은 값에서 파생된다.

  • 지표가 음수 방향 → 불안정 영역, 진동 확률 높음
  • 지표가 양수 방향 → 안정 영역, 진동 감소하나 응답 둔해질 수 있음

이건 폐루프 극점의 실수부, 안정도 여유, 감쇠 관련 지표 등으로 볼 수 있다. 정확한 수식보다 중요한 건, 이 지표가 “지금 튜닝이 얼마나 공격적인지”를 보는 기준이라는 점이다.

ESO(Extended State Observer) 이득: L1, L2, L3

ADRC의 옵저버 쪽으로 넘어가면 L1, L2, L3 이득이 등장한다.

이득연결 상태역할
L1x₁ (위치/상태1)위치 추정 오차 보정
L2x₂ (속도/상태2)속도 추정 오차 보정
L3x₃ (확장상태/총외란)외란 추정 오차 보정

이들은 ESO의 특성방정식이 항상 노말 폼(canonical form) 형태를 갖기 때문에, 차수가 늘어나도 직관적으로 “각 상태변수에 대한 피드백 이득”으로 볼 수 있다.

옵저버 이득을 키우면:

  • ✅ 외란 추정이 빨라짐
  • ✅ 모델 불일치에 빨리 대응
  • ❌ 노이즈에 민감해짐
  • ❌ 추정값이 거칠어질 수 있음

제어기 이득과 마찬가지로 옵저버 이득도 너무 작으면 느리고, 너무 크면 시끄럽고 불안정해질 수 있다.


2. 튜닝 가이드 상품화

왜 튜닝 가이드가 제품의 일부여야 하는가

이 회의에서 가장 실무적으로 중요한 논의는 “알고리즘만 파는 게 아니라 튜닝 설명서까지 제품화하자”는 부분이다.

고객은 “오메가가 어떻고 극점이 어떻고”를 알고 싶어하지 않는다. 고객이 궁금한 건:

  • 지금 진동 위험이 큰지
  • 응답이 빠른지
  • 어느 값을 바꿔야 하는지

따라서 내부 수학 변수를 그대로 노출하지 않고, 고객 친화적 지표명으로 변환해야 한다.

Performance Index 설계 방향

내부적으로 sigma, omega로 계산하되, 고객에게는 이런 식으로 보여줄 수 있다:

Vibration Index

  • 음수 → 진동 가능성 증가
  • 양수 → 진동 감소 경향
  • 절대값 → 진동수/진동 강도와 관련

Stability Index

  • 값이 커지면 안정성 높아짐
  • 대신 응답성과 반비례 가능

Response Index

  • 목표값 추종 속도 반영
  • 과도하면 Vibration Index가 음수로 이동

이런 식으로 인덱스를 정리하면, 튜닝 가이드를 아래와 같은 형태로 제공할 수 있다:

“응답이 느리면 → Kp 계열 올리세요 → Response Index 확인”

“진동이 심하면 → Kd 계열 올리세요 → Vibration Index 확인”

“안정성은 좋은데 둔하면 → 균형 재조정 → 세 지표 동시 확인”

인터랙티브 시뮬레이터의 필요성

“직접 해 봐야 감이 는다”는 발언의 기술적 함의는 명확하다. 파라미터를 바꾸면 파형과 지표가 즉시 바뀌는 인터랙티브 시뮬레이터가 필요하다.

이 시뮬레이터는 내부 개발 도구이자, 나중에 고객 튜닝 UI의 기반이 된다.

강화학습의 활용 범위

튜닝에 강화학습을 쓸 수 있다는 논의도 나왔다. 단, 범위 제한이 중요하다.

하지 말아야 할 것:

  • RL이 처음부터 제어기 구조를 전부 만드는 것 → 안정성 보장 불가

해볼 만한 것:

  • 사람이 안정적인 제어 구조를 설계하고
  • 그 안에서 파라미터 탐색만 RL로 수행
  • 진동, 오버슈트, 정착시간 등에 penalty를 걸어두고 찾게 함

즉, 제어 구조 설계는 사람이, 파라미터 서치는 RL이 보조하는 형태다. 이건 실제로도 합리적인 접근이며, 나중에 개체별 자동 튜닝 프로세스로 확장할 수 있다.


3. 중력 보상과 하드웨어 개체차

문제 정의: “중력 보상이 안 잡힌다”

현재 KDL 같은 라이브러리 기반 중력 보상 모델을 사용 중이고, 링크 정보·질량·관성 등 파라미터도 입력되어 있다. 그런데 같은 모델인데도 개체마다 결과가 다르게 나온다.

여기서 먼저 해야 할 건 원인 분리다.

경우 A: 모델 출력값부터 다르다

→ 소프트웨어 문제일 가능성

  • 링크 파라미터 입력 오류
  • 질량/COM/관성 설정 차이
  • 좌표계 정의 차이
  • 라이브러리 사용 방식 문제

경우 B: 모델 출력값은 비슷한데 실제 움직임이 다르다

→ 하드웨어 동특성 차이일 가능성

  • 정지마찰(static friction) 차이
  • 조립 편차 (볼트 체결 토크)
  • 감속기/베어링 프리로드
  • 케이블 장력
  • 제조 공차

회의 참가자들의 견해는 점점 “하드웨어 물성 차이가 상당하다” 쪽으로 수렴했다.

정지마찰의 영향이 특히 크다

특히 프리드라이브/중력보상 상황에서는 속도가 거의 0 근처이므로, 동마찰보다 정지마찰(breakaway friction)의 영향이 지배적이다.

직접 밀어본 결과:

  • 처음 움직이기 시작할 때 필요한 힘이 개체마다 다르다
  • 한번 움직이기 시작하면 비슷하게 밀린다
  • 조립할 때 꽉 조이냐 안 조이냐에 따라 달라진다

이건 로봇의 제조 품질 편차와 직결된다. 자동차도 개체별 후처리 튜닝이 들어가듯이, 로봇도 마찬가지다.

오픈루프 실험으로 원인 분리

회의에서 가장 실무적인 제안은 오픈루프 토크 인가 실험이다.

피드백 제어가 걸려 있으면 하드웨어 차이가 가려진다. 에러를 계속 보고 보정하기 때문이다. 하지만 오픈루프에서는 같은 토크를 넣었을 때 실제로 얼마나 움직이는지가 직접 드러난다.

실험 설계:

  1. 기준 자세 선정 (예: 60도)
  2. 일정 토크를 일정 시간 인가 (예: 1Nm × 3초)
  3. 여러 개체에 동일 입력
  4. 최종 각도·움직임·응답 비교

이렇게 하면 소프트웨어 모델은 같은데 왜 개체마다 다르게 보이는지를 하드웨어 관점에서 진단할 수 있다.

캘리브레이션을 어디에 걸 것인가

여기서 중요한 논점이 나온다.

반론: 기존 모델(마찰·중력·코리올리) 자체가 완벽하지 않은데, 그 위에 캘리브레이션을 얹으면 결국 오차를 억지로 맞추는 것 아닌가?

답변: 캘리브레이션 위치가 중요하다.

  • ❌ 최종 피드백 제어단까지 전부 건드리는 보정
  • ✅ 앞단 피드포워드/프리드라이브용 보정만 분리

핵심 결론:

피드백 제어가 들어가면 에러가 계속 입력으로 들어오므로, 개체차가 있어도 대부분 덮어진다. 문제가 되는 건 프리드라이브/중력보상처럼 오픈루프 성격이 강한 구간이다. 따라서 이 구간만 개체별 보정값을 따로 적용하는 게 현실적이다.

보정 방식: 곱셈 스케일이 더 직관적

기존 gravity/coriolis 출력에 단순 덧셈보다는 곱셈 gain 형태의 보정이 더 실용적이다.

tau_compensated = alpha * tau_model

예를 들어 개체 A는 1.1배, 개체 B는 0.95배 같은 식이다. 이건 전체 동역학 재식별보다 훨씬 빠르고, 자동화도 쉽다.

권장 시스템 구조

[공통 모델] → gravity + coriolis + 기본 동역학

[개체별 보상 레이어] → 프리드라이브용 오프셋/gain (오픈루프 구간만)

[피드백 제어기] → PID / ADRC (일반 동작 시 오차 보정)

이 구조라면:

  • 프리드라이브/중력보상 → 개체별 튜닝 필요
  • 일반 피드백 제어 → 굳이 개체별 보정 불필요

4. ADRC가 개체차 문제를 어떻게 완화하는가

PID vs ADRC의 구조적 차이

현재 시스템은 중력보상 + 코리올리 + 마찰보상 + PID 여러 항의 조합으로 구성되어 있다. 각각의 모델이 불완전하면 전체 제어 성능이 떨어진다.

ADRC의 장점은 여기서 나온다:

  • PID는 외란과 미모델링 항을 직접 추정하지 못한다
  • ADRC는 ESO를 통해 이걸 확장 상태/총외란으로 흡수하려 한다
  • 따라서 앞단의 여러 보상 항을 줄이거나 단순화할 수 있다
  • 로봇이 달라져도 관절별 파라미터 튜닝 부담이 줄어든다

목표 구조 변화:

현재목표
중력 + 코리올리 + 마찰 + PID (각각 모델링 필요)ADRC 중심 구조 (ESO가 미모델링/외란 흡수)

ADRC가 줄여주는 것과 남는 것

줄여줄 수 있는 것:

  • 모델링 오차 민감도
  • 개체차에 대한 취약성
  • 관절별 세밀한 gain 의존성

그래도 남는 것:

  • 심한 정지마찰
  • 백래시
  • 기구 간섭
  • 센서 오프셋
  • 극단적 제조 편차

ADRC가 “개체마다 튜닝 필요 없다”는 건 약간 과장된 표현이다. 정확히는 “개체별 튜닝 민감도가 크게 줄어든다” 정도로 받아들이는 게 더 안전하다.

일정과 검증 계획

시점항목
다음 주모터 시뮬레이터 고도화, 튜닝 파라미터 감 익히기
다다음 주Isaac Sim 로봇 시뮬레이터에 ADRC 적용
시뮬 검증 후실 로봇 적용
~1개월고객 대응 가능 수준 목표

5. ESO 외란 추정의 사업적 확장

이 회의에서 가장 큰 인사이트는 **“ESO의 추정값을 단순 보상용 내부변수로 끝내지 말고, 제품 기능과 사업 가치로 확장하자”**는 부분이다.

추정 → 보상에서 끝내지 않는다

ESO의 동작 순서는 이렇다:

  1. 외란을 추정한다
  2. 필요하면 -d 형태로 보상해서 제거한다

핵심은 1단계에서 이미 보이지 않는 힘/오차가 관측 가능한 신호가 된다는 것이다. 이걸 꼭 2단계에서 제거하지 않아도, 다양한 방식으로 활용할 수 있다.

버추얼 토크 센서

토크 센서는 비싸다. 비용이 올라가고, 설계가 어려워지고, 통합이 복잡해진다.

만약 ESO로 추정한 외란/힘을 가공해서 “토크 센서와 유사한 정보”를 소프트웨어로 제공할 수 있다면, 하드웨어 BOM을 늘리지 않고도 토크 센싱 기능을 제공하는 셈이 된다.

정확도 100%는 아니더라도, 아래 수준이면 충분히 제품 가치가 생긴다:

  • 접촉이 발생했는지 감지
  • 외력의 방향과 대략적 크기 추정
  • 상태 변화 이벤트 트리거

자동차 업계의 선례

이건 이미 자동차 업계에서 검증된 패턴이다.

ABS — 타이어-노면 마찰 추정:

  • 타이어와 도로 사이 마찰력을 직접 센싱하긴 어려움
  • 휠 속도, 브레이크 토크 등으로 추정
  • 완벽히 맞진 않아도 ABS 동작에 충분

Steer-by-wire — 햅틱 피드백:

  • 핸들과 바퀴가 기계적으로 연결되지 않음
  • 사람은 노면 감각이 없으면 불안해함
  • 노면 마찰/상호작용을 추정해서 모터로 인위적 반력/진동 생성

노면 상태 분류:

  • 추정된 마찰 값 분포가 노면마다 다름
  • 얼음, 젖은 아스팔트, 마른 아스팔트 구분 가능
  • Bosch 등이 이런 소프트웨어를 완성차 업체에 판매 중

핵심 교훈: 추정값은 “정답”이 아니어도 된다. 사용자가 체감할 수 있는 기능과 가치로 연결되면 된다.

로봇에서의 응용 시나리오

기능설명
프리드라이브 보조사람이 밀어주는 힘을 추정 → 더 자연스럽게 따라오게 함
접촉/충돌 감지예상 외란 초과 시 안전 모드 전환
협동작업 감지로봇끼리 미는 힘을 외란으로 감지 → 별도 통신 없이 상호작용 이해
사람 개입 감지작업 중 사람이 끼어들면 “누군가 개입”으로 인식 → 모드 전환
엔드툴 힘 추정그리퍼 정보 + 자세 + 전류로 끝단 힘 근사 추정

특히 로봇 2대의 협동작업에 대한 비전이 흥미롭다:

로봇 A와 B가 서로 밀거나 당기면, 각각의 ESO는 상대방의 힘을 “외란”으로 감지한다. 별도 통신이 없어도 상호작용 상태를 이해할 수 있고, 이 신호를 기반으로 협동 모드 전환이나 힘 분배를 할 수 있다.

소프트웨어 사업 모델로의 확장

이건 단순 알고리즘이 아니라 **“센서 없는 센싱 소프트웨어”**로 포지셔닝할 수 있다.

[입력]
위치 / 속도 / 전류 / 명령 토크 / 로봇 파라미터

     ↓ ESO/ADRC 기반 처리

[출력]
• Virtual Torque Sensor
• Contact Detection
• Cooperation Signal
• Free-drive Compensation
• End-force Estimation
• State Classification

자동차 업계에서 Bosch가 이런 소프트웨어를 완성차 업체에 판매하고 있다. 로봇 분야에서는 아직 이런 사업자가 적다. 기회가 열려 있다는 뜻이다.


6. 액션 아이템 정리

즉시 실행

  • 같은 각도에서 중력 보상 토크값 비교 (모델 출력 로그)
  • 오픈루프 토크 인가 실험 설계 및 실행
  • 정지마찰/breakaway 특성 개체별 측정
  • 프리드라이브 전용 보상값 분리 설계

다음 주

  • 모터 시뮬레이터 고도화
  • ADRC 비교 시뮬레이션 준비 (동일 plant, 동일 외란, 동일 입력)
  • 튜닝 파라미터-성능 지표 맵 정리
  • Performance Index 명칭·해석 정의

다다음 주

  • Isaac Sim 로봇 시뮬레이터에 ADRC 적용
  • 시뮬레이션 검증 후 실 로봇 적용 판단

중기

  • ESO 추정값 로깅 및 시각화
  • Virtual Torque Sensor 기능 프로토타입
  • 개체별 자동 캘리브레이션 프로세스 설계
  • 강화학습 기반 파라미터 서치 파일럿

7. 기술적 견해

ADRC 도입은 타당하다

PID + 다중 보상항 조합은 각 모델의 정확도에 민감하다. 하나라도 틀리면 전체 성능이 흔들린다. ADRC는 이 민감도를 구조적으로 줄여주므로, 특히 다양한 관절/다양한 로봇을 하나의 제어 프레임워크로 커버해야 하는 상황에서 합리적이다.

다만 “ADRC만 있으면 다 된다”는 기대는 조심해야 한다. 심한 정지마찰, 백래시, 센서 문제 등은 ADRC만으로 해결되지 않는다. 기본적인 하드웨어 품질 관리와 모델링은 여전히 필요하다.

개체차 대응은 “프리드라이브 구간 분리”가 현실적이다

전체 동역학 모델을 개체별로 재식별하는 건 비용이 크다. 피드백 제어 상태에서는 어차피 에러가 보정되므로, 프리드라이브/중력보상만 있는 오픈루프 구간에서만 개체별 보정을 적용하는 게 ROI가 높다.

이 보정도 가능하면 자동화해야 한다. 드론도 초기 비행 전 pre-tuning이 있듯이, 로봇도 첫 구동 시 자동 캘리브레이션 시퀀스를 돌려서 개체별 보정값을 잡는 게 맞다.

ESO 추정값의 사업적 활용이 가장 큰 기회다

순수 제어 성능 개선은 기술적으로 의미 있지만, 사업적 차별화가 크지 않을 수 있다. 반면 ESO 추정값을 가공해서 만드는 소프트웨어 기능들 — 버추얼 토크 센서, 접촉 감지, 협동 신호 — 은 하드웨어 비용을 줄이면서 기능을 늘리는 구조라서 고객 입장에서 가치가 명확하다.

자동차 업계에서 Bosch가 이미 증명한 모델이다. 로봇 분야에서 이걸 먼저 잡는 회사가 소프트웨어 사업의 교두보를 확보하게 될 것이다.

튜닝 가이드 상품화는 반드시 해야 한다

알고리즘만 팔면 기술지원 비용이 계속 올라간다. 성능 지표를 직관적 인덱스로 바꾸고, 인터랙티브 시뮬레이터를 제공하면, 고객이 스스로 튜닝할 수 있게 된다. 이건 기술지원 비용 절감이자 제품 완성도 향상이다.


한 줄 결론

ADRC/ESO의 진짜 가치는 제어 성능 향상에서 끝나지 않는다. 외란 추정값을 가공해 버추얼 토크 센서, 접촉 감지, 협동 신호 같은 소프트웨어 기능으로 만들고, 성능 지표를 직관적 인덱스로 바꿔 튜닝 가이드까지 제품화하는 것이 이 기술의 사업적 완성이다.

← All posts