마찰을 올렸는데 로봇이 더 못 도는 이유: 스키드스티어 스크럽의 기하학
궤도형 로봇의 시뮬레이션 회전 성능을 올리려고 3주 동안 마찰 계수 스윕을 여섯 번 돌렸습니다. 결과는 매번 같았습니다. 요레이트 캡처는 꿈쩍하지 않았고, 를 0.4/0.3에서 0.9/0.8로 올리자 회전은 좋아지기는커녕 나빠졌습니다.
수식을 유도해 보니 이유가 명확했습니다. 마찰 계수는 처음부터 답에 들어 있지 않았습니다.
이 글은 그 유도 과정과 실측 검증, 그리고 이 과정에서 얻은 계측 교훈을 공유합니다. 대상 차량(궤도형 스키드스티어, 접지장 600mm)의 시뮬레이션 모델 이야기는 앞선 글에 있습니다.
스키드스티어는 미끄러져야 돈다
자동차는 바퀴를 진행 방향에 정렬시켜 돕니다. 바퀴는 구르고, 횡슬립은 거의 없습니다. 스키드스티어는 그럴 수 없습니다. 접점들이 섀시에 고정되어 있으므로, 회전은 접점들을 강제로 옆으로 미끄러뜨립니다. 스크럽은 결함이 아니라 이 조향 방식의 태생적 비용입니다.
기하로 보면 더 분명합니다. 차량이 요레이트 로 돌 때, 순간회전중심(ICR)의 세로 좌표 와 같은 위치에 있는 접점만 횡슬립이 0입니다. 즉 접지면 위에서 슬립이 없는 세로 스테이션은 최대 한 곳이고, 600mm 접지면의 나머지 모든 접점은 옆으로 갈려야 합니다. 마찰을 어떻게 튜닝해도 이 사실은 변하지 않습니다. 순수하게 기하학입니다.
두 개의 모멘트
접점 가 하중 를 받고 마찰 계수가 일 때, 쿨롱 마찰력의 크기는 입니다. 제자리 회전에서 이 힘들이 만드는 모멘트는 두 종류입니다.
저항 모멘트 — 횡슬립 마찰이 세로 방향 팔길이에 작용합니다.
접지장 에 하중이 균일하면 , 하중이 양 끝 두 스테이션에 몰리면 — 두 배 나빠집니다. 하중 분배가 중요한 이유이고, 저희가 이 값을 가정하지 않고 실측한 이유입니다(실측 결과: 이상치의 1.27배).
구동 모멘트 — 좌우 트랙의 세로 방향 추력 차가 트랙 반게이지 에 작용합니다.
비율에서 와 가 소거된다
차량이 제자리에서 돌 수 있는지는 두 모멘트의 비가 결정합니다.
가 소거됩니다. 도 소거됩니다. 스키드스티어의 회전 능력은 접점이 얼마나 세게 잡는가도, 차량이 얼마나 무거운가도 아니고, 오직 잡는 접점들이 어디에 있는가로 결정됩니다.
이것이 여섯 번의 마찰 스윕이 전부 같은 결과를 낸 이유입니다. 는 구동 추력과 스크럽 저항을 같이 키우므로 비율을 바꾸지 못합니다. 올렸을 때 오히려 나빠진 것의 정확한 메커니즘은 아직 특정하지 못했습니다 — 다만 위 식이 말해주는 것은, 어느 방향이든 가 회전을 개선하는 레버가 아니라는 사실입니다.
대상 차량의 수치를 넣으면:
구동 모멘트가 스크럽 저항의 1.7배이므로 제자리 회전은 가능하고, 실제로 시뮬레이션에서 지령의 29~32% 요레이트로 돕니다(3회 독립 런, 양방향 대칭). 은 통상적인 궤도 차량(1.2~1.8)보다도 유리한 축에 듭니다.
진짜 레버는 '어느 접점이 잡느냐'
가 레버가 아니라면 무엇이 레버일까요? 위 식이 답합니다: 잡는 스테이션의 배치입니다. 접지 중심 근처로 그립을 모으면 평균 스크럽 팔길이가 짧아져 비율이 올라갑니다.
| 잡는 스테이션 | 평균 스크럽 팔길이 | 비율 | 현재 대비 |
|---|---|---|---|
| 12개 전부 (현재) | 0.179 m | 1.42 | — |
| 안쪽 8개 (끝단 미끄럽게) | 0.093 m | 2.74 | 1.9× |
| 안쪽 4개만 | 0.053 m | 4.86 | 3.4× |
| 단일 스테이션 | 0 | ∞ | (과거 4접점 모델) |
마지막 행이 핵심입니다. 그립이 한 스테이션뿐이면 스크럽 팔길이가 0이 되어 회전이 무손실이 됩니다. 과거 4접점 모델이 "완벽하게" 돌았던 이유가 바로 이것이고, 그래서 완벽함이 곧 오류였습니다.
전진하면서 돌 때: 두 개의 영역
전진 속도 이면 ICR이 차량 중심선에서 만큼 옆으로 이동합니다. 트랙 반게이지 와 비교하면 두 영역이 갈립니다.
| 조건 | 기하 | 결과 |
|---|---|---|
| 좌우 트랙이 ICR의 반대편에 위치 | 트랙이 서로 반대로 돎 | |
| 좌우 트랙이 ICR의 같은 편에 위치 | 두 트랙 모두 같은 방향 구동 |
두 번째 영역에서는 양쪽 마찰력이 모두 에 포화되어 같은 방향을 가리키므로, 요를 만드는 좌우 차이가 붕괴합니다. 인 저희 차량에서 (회전 반경 0.5m)은 이미 이 영역입니다.
실제 고무 트랙은 슬립에 비례해 횡력을 점진적으로 쌓기 때문에 이 경계를 부드럽게 넘습니다. 강체 쿨롱 접촉은 stick-slide 두 상태뿐이라 전환이 급격합니다. 저희 시뮬레이션에서 전진 중 회전이 ~0%로 붕괴하는 원인이 이것이라고 추정하고 있지만, 이는 가설이며 아직 측정으로 확인되지 않았습니다. 앞서 두 개의 다른 설명을 세웠다가 둘 다 측정으로 반박된 전적이 있어, 이번에는 가설을 가설이라 부릅니다.
파워로 하는 사니티 체크
제자리 회전의 스크럽 소산 파워는
실측 중량 , , 에서:
| 상황 | 파워 | 설치 출력 1000W 대비 | |
|---|---|---|---|
| 0.3 | 현재 시뮬레이션 값 | 47 W | 5% |
| 0.8 | 고무-콘크리트 | 126 W | 13% |
궤도 차량이 조향에 전력을 많이 쓰는 것으로 알려진 사실과 부합합니다. 모델이 맞는 물리 영역에 있다는 값싼 교차 검증입니다.
이 과정에서 배운 계측 교훈 두 가지
유도보다 값비쌌던 교훈입니다. 측정 버그 두 건이 상당한 작업을 무효화했습니다.
1. 벽시계와 시뮬레이션 시계. 진단 로거가 시뮬레이터 포즈(시뮬레이션 시간으로 진행)를 벽시계로 타임스탬프했습니다. 장면이 실시간의 약 0.24배로 돌았으므로 모든 파생 레이트가 3.8배 작게 나왔고, 그 위에서 약 3주간 "PhysX 스키드스티어 성능 한계"라는 결론이 자라났습니다. 물리적 손실이 있을 수 없는 직진 구간을 대조군으로 넣고서야 잡았습니다.
2. /joint_states 속도는 그대로 믿을 수 없었다. 로드휠 관절의 속도가 스핀 레이트가 아니라 세로 위치에 비례하는 값을 보고했습니다. 원인은 중첩된 카메라 에셋에 남아 있던 physics:rigidBodyEnabled 플래그였습니다.
여기서 채택한 표준 규칙: 시뮬레이션에서 나온 측정값은, 답을 독립적으로 아는 대조 조건을 통과하기 전에는 신뢰하지 않는다.
다음 단계: 시뮬레이션 튜닝보다 실차 측정
가장 뼈아픈 사실은 이것입니다. 실차의 회전 성능은 아무도 측정한 적이 없습니다. 회전 반경 스펙도, 최대 요레이트도, 주행 중 각속도 제약 문서도 없습니다. 저희는 측정된 적 없는 목표를 향해 시뮬레이션을 튜닝해 온 셈이고, 실차도 비슷한 한계를 가질 가능성이 충분히 있습니다.
다행히 측정은 쌉니다. 인코더는 구동 모터에만 있어 슬립에 눈이 멀지만, 자이로는 바퀴와 무관하게 실제 차체 회전을 잽니다. 둘 다 기본 드라이버가 발행하는 토픽이므로:
격자를 20분쯤 주행하며 이 비를 기록하면, 마찰 보정값과 실제 회전 한계를 동시에 얻습니다. 추가 하드웨어 없이, 모션캡처 없이.
정리
- 스키드스티어의 회전 능력비는 — 접지 기하만 남고 마찰과 중량은 소거됩니다. 회전을 바꾸려면 어느 접점이 잡는지를 바꿔야 합니다.
- 완벽하게 도는 스키드스티어 모델은 스크럽 팔길이가 0이라는 신호, 즉 모델이 잘못됐다는 신호입니다.
- 시뮬레이션 측정값은 대조 조건 없이는 믿지 않습니다. 저희는 이 규칙을 3주 비용을 치르고 샀습니다.
- 튜닝 목표 자체가 미측정이라면, 시뮬레이터를 더 만지기 전에 실물을 재는 것이 가장 싼 다음 수입니다.