로봇 마찰보상 효과 검증: AI 자동화 실험 사례
Neuromeka Indy7 협동로봇에 두 가지 보상 기법을 적용했습니다:
- 마찰보상(Friction Compensation): 관절의 기계적 마찰 보상
- 가속도 피드포워드(Acceleration FF): 가속 시 관성력 사전 보상
궁금증이 생겼습니다. "각 기법이 실제로 얼마나 기여하는가? 하나로 충분한가, 둘 다 필요한가?"
이 질문에 답하기 위해 160회 2×2 실험을 수행했습니다. 사전에 AI 에이전트(ralph-loop)로 마찰 계수를 튜닝한 후, 자동화 스크립트로 검증 실험을 진행했습니다.
문제 상황: 보상 적용 전
보상 기법 적용 전, 특히 J1(어깨 관절)에서 심각한 위치 추종 오차가 관찰되었습니다. J1은 대형 감속기와 전체 팔 하중을 지지하는 구조로 인해 마찰이 가장 큰 관절입니다.

보상 적용 전 J1 위치 추종. 명령(cmd)과 실제(actual) 사이에 명확한 지연과 오차 발생

보상 적용 전 J1 토크. 마찰로 인한 큰 토크 변동이 관찰됨
이러한 마찰 문제를 해결하기 위해 마찰보상 기법을 적용했고, 본 실험에서는 그 효과를 정량적으로 검증합니다.
결론 먼저
| 조건 | Position RMSE | 개선율 | p-value | Cohen's d |
|---|---|---|---|---|
| B0 (기준) | 1.526 mrad | - | - | - |
| B1 (마찰만) | 0.974 mrad | 36.1% | p<0.01 | 1.49 |
| B2 (FF만) | 1.450 mrad | 5.0% | p<0.05 | 0.80 |
| B3 (둘 다) | 0.932 mrad | 38.9% | p<0.01 | 1.44 |
마찰보상만으로 총 개선의 93%를 달성했습니다. 가속도 FF의 기여는 5%에 불과했습니다.
실험 설계
4가지 조건을 조합하여 각 기법의 독립적 효과와 상호작용을 분석했습니다:
| 조건 | 마찰보상 | 가속도 FF | 설명 |
|---|---|---|---|
| B0 | OFF | OFF | 기준선 |
| B1 | ON | OFF | 마찰보상만 |
| B2 | OFF | ON | FF만 |
| B3 | ON | ON | 둘 다 |
테스트 궤적
- 5개 관절: J0~J4 (J5는 마찰 Fc=1Nm로 미미하여 제외)
- 2개 속도: SLOW (vel=0.1), FAST (vel=0.3)
- 총 10개 궤적: 각 4회 반복 (방향 균형 2회씩)
- 총 실험 횟수: 4조건 × 10궤적 × 4반복 = 160회
마찰 계수 (Fc)
| 관절 | Fc (Nm) | 특성 |
|---|---|---|
| J1 (어깨) | 35.0 | 최대 마찰 - 전체 팔 하중 지지 |
| J2 (팔꿈치) | 10.0 | 중간 마찰 - 중력 부하 |
| J0 (베이스) | 5.0 | 수직축 - 중력 방향 마찰 적음 |
| J3, J4 (손목) | 2.0 | 낮은 마찰 - 소형 관절 |
| J5 (말단) | 1.0 | 최소 마찰 |
AI 자동화 실험 파이프라인
사용 도구
| 도구 | 역할 |
|---|---|
| Claude Code | AI 에이전트 - 코드 수정, 빌드, 실행, 분석 |
| ralph-loop | 반복 실행 플러그인 - 완료까지 자동 반복 |
| run_experiment.py | 단일 실험 자동화 스크립트 |
| motion_analyzer.py | 결과 분석 및 메트릭 추출 |
2단계 워크플로우
1단계: 마찰 계수 튜닝 (ralph-loop 활용)
AI 판단 필요: 오차 분석 → 조정 방향 → 코드 수정 → 반복
2단계: 160회 검증 실험 (스크립트 반복)
B0 (40회) → B1 (40회) → B2 (40회) → B3 (40회)
조건 변경은 수동으로 진행
주요 결과
효과 분해
| 비교 | 개선량 | 비율 |
|---|---|---|
| 전체 (B0→B3) | 0.594 mrad | 100% |
| 마찰만 (B0→B1) | 0.551 mrad | 93% |
| FF만 (B0→B2) | 0.076 mrad | 13% |
마찰보상이 핵심입니다.
속도별 분석

SLOW(vel=0.1)와 FAST(vel=0.3)에서의 개선율 비교
| 조건 | SLOW 개선 | FAST 개선 | 차이 | 이론 검증 |
|---|---|---|---|---|
| B1 (마찰) | 42.3% | 31.3% | +11.0% | 확인 |
| B2 (FF) | 4.7% | 5.1% | +0.4% | 기각 |
| B3 (둘 다) | 42.9% | 35.8% | +7.1% | - |
이론 검증 결과:
- ✅ 마찰보상은 저속에서 더 효과적 (정지 마찰이 두드러지는 영역)
- ❌ FF가 고속에서 더 효과적이라는 예상은 기각됨
관절별 분석: 마찰 계수와 개선율의 상관관계

Coulomb 마찰 계수(Fc)와 B1 개선율의 상관관계. J0은 수직축이라 이상점(outlier)
| 관절 | Fc (Nm) | 축 방향 | B1 개선율 |
|---|---|---|---|
| J1 | 35.0 | 수평 | 73.5% |
| J2 | 10.0 | 수평 | 46.7% |
| J0 | 5.0 | 수직 | 10.1% (이상점) |
| J3 | 2.0 | - | 39.5% |
| J4 | 2.0 | - | 39.0% |
J0은 수직축이라 중력 방향 마찰 부하가 적어, Fc가 J3/J4보다 높음에도 개선율이 낮습니다.
예상치 못한 발견: j3_fast 이상 현상

j3_fast 궤적에서 B2(FF만)가 오히려 성능을 악화시킴
현상: j3_fast에서 B2(FF만) 조건이 기준선보다 13.8% 악화
| 통계 | 값 |
|---|---|
| 모든 4회 실행에서 B2 > B0 | 일관된 악화 |
| t-test | t=20.7, p=0.0002 |
| 판정 | 우연이 아닌 체계적 현상 |
같은 Fc=2Nm인 J4는 정상 동작 → J3 특유의 현상
시사점: FF를 마찰보상 없이 단독 적용하면 일부 조건에서 성능이 악화될 수 있습니다. B3(둘 다)에서는 정상 동작합니다.
마찰 모델 구현
채터링 방지: tanh vs sign
기존 sign() 함수는 속도 영점 근처에서 토크가 급변합니다:
| 속도 (rad/s) | sign() 출력 | 토크 변화 |
|---|---|---|
| +0.001 | +1 | +35 Nm |
| -0.001 | -1 | -35 Nm |
| 차이 | - | 70 Nm 점프 |
연속 tanh() 함수를 사용하여 부드러운 전환:
constexpr double kTransitionVelocity = 0.05; // rad/s (~3 deg/s)
τ_compensation = Fc × tanh(velocity / kTransitionVelocity)
| 속도 (rad/s) | tanh() 출력 | 토크 변화 |
|---|---|---|
| +0.001 | +0.02 | +0.7 Nm |
| -0.001 | -0.02 | -0.7 Nm |
| 차이 | - | 1.4 Nm (연속) |
kTransitionVelocity의 의미
kTransitionVelocity는 "속도 0 근처에서 얼마나 빠르게 마찰 방향을 결정할 것인가"를 정의합니다:
| 값 | 특성 | 트레이드오프 |
|---|---|---|
| 작을수록 | sign()에 가까움 (급격한 전이) | 정확하지만 채터링 위험 |
| 클수록 | 완만한 S자 곡선 | 안정적이지만 저속에서 보상 부정확 |
0.05 rad/s ≈ 3°/s의 경험적 의미:
- 이 속도 이하: 마찰 방향이 "불확실"하다고 간주
- 이 속도 이상: tanh ≈ ±1이므로 원래 쿨롱 모델과 거의 동일
이 값은 시스템 노이즈, 속도 측정 분해능, 구동계 특성에 따라 튜닝이 필요합니다.
토크 사용량 변화
| 조건 | Torque RMSE | vs B0 | Torque MAX | vs B0 |
|---|---|---|---|---|
| B0 | 1.94 Nm | - | 22.2 Nm | - |
| B1 | 2.04 Nm | +5.1% | 23.2 Nm | +4.5% |
| B2 | 2.10 Nm | +7.9% | 27.5 Nm | +23.7% |
| B3 | 2.08 Nm | +7.2% | 28.4 Nm | +27.6% |
마찰보상(B1)은 토크 증가가 미미하지만, FF(B2)는 최대 토크가 24% 증가합니다.
운영 권장사항
| 시나리오 | 권장 설정 | 이유 |
|---|---|---|
| 일반 운영 | B1 (마찰만) | 핵심 효과만, 단순성, 안정성 |
| 최대 정밀도 필요 | B3 (둘 다) | 추가 3% 개선 |
| 고속 작업 | B1 (마찰만) | FF 효과 미미, 노이즈 위험 |
| FF 단독 | 주의 | j3_fast 악화 현상 관측됨 |
FF 효과가 제한적이었던 이유
- 단순 수치 미분의 한계: 2개 샘플만 사용, 노이즈 증폭
- PD 게인의 간접 보상: 기존 PD 컨트롤러가 관성을 부분 보상
- 저관성 관절에 불필요: J3, J4는 관성이 미미
- 마찰보상 없는 비대칭 효과: 가감속 토크 불균형
실험의 한계
- 고정된 조건 순서 (B0→B1→B2→B3): 온도/시간 드리프트 가능
- Paired t-test 사용: 2-way ANOVA 대신 사용, 상호작용 유의성 미검정
- 다중 비교 보정 없음: Bonferroni 보정 후 B2 유의성 의문
- 샘플 구조: 160회를 10개 궤적 평균으로 요약 (df=9)
핵심 정리
- 마찰보상이 핵심 요인입니다. 36.1% 개선(p<0.01, Cohen's d=1.49)으로 총 개선의 93%를 차지합니다.
- 가속도 FF의 효과는 제한적입니다. 5.0% 개선에 그쳤고, 고속에서 더 효과적이라는 예상은 기각되었습니다.
- 두 효과는 대체로 독립적입니다. 상호작용 효과 ≈ 0.033 mrad로 무시할 수준입니다.
- 마찰 계수가 높은 관절(J1)에서 최대 효과를 보입니다. J1(Fc=35Nm)에서 73.5% 개선.
- FF 단독 적용은 주의가 필요합니다. j3_fast에서 13.8% 악화 현상이 관측되었습니다.