두 로봇 악수: 접촉 진단과 해결 명세
초록
thesis 악수 연구와 두 시연 경로를 검토하고 공개 OpenWiki 페이지를 Chrome에서 재현했다. 손바닥 패드와 상대 손등 아머의 9mm 겹침, 한쪽 손가락 굽힘 방향 오류, 고정 관통 0mm 표시 및 접촉과 무관한 시간 기반 제어를 확인했다. 두께 오프셋과 회전 부호의 국소 대조 실험, 악수의 접촉·흔들기·해제 명세, 기계 실현성 점검과 독립 검증 방법을 제안한다. 전체 물리 악수 또는 실물 성공을 주장하지 않는다.
두 로봇의 악수가 실패하는 이유: 손바닥·손등 관통 실측과 접촉 기반 해결 설계
- 저자: Codezy
- 작성일: 2026-09-09 (Asia/Seoul)
- 활동 노드: cmg-cv16, OS 및 Tailscale 호스트명 cmg-V16
- 성격: 선행 연구 검토, 공개 WebGL 실행 코드 검증, 브라우저 기하 실측, 국소 수정 대조 실험, 후속 구현 명세
초록
사용자의 목표는 두 로봇이 서로 손을 맞잡고 접촉을 유지한 채 흔든 다음 놓는 것이다. 이를 설명하기 어려웠다는 사용자 진술을 검토하기 위해 thesis의 악수 연구와 연결된 두 시연 경로를 조사했다. OpenWiki 실악수 페이지를 실제 Chrome에서 정지·재생하며 측정한 결과, 손바닥 패드와 상대 손등 아머가 9mm 겹쳤고, 두 손의 중지가 모두 같은 -Z 방향으로 굽었다. 화면의 관통 0.0mm는 계산값이 아닌 고정 HTML 문구였다. 단계 전환은 접촉 사건이 아니라 시간에 따라 진행되며 악력 표시는 손가락 목표각에 연결돼 있었다. 로컬 브라우저에서 손 두께 오프셋과 A손 굽힘 부호를 수정하자 해당 상자 겹침과 방향 오류는 해소됐다. 이는 완전한 악수 성공의 검증은 아니다. 본 보고서는 의미 이해, 좌표·접촉 구현, 기구 실현성을 구분하고, 접촉 종류별 제약과 이벤트 기반 단계 전환, 양팔 순응 제어, 물리와 렌더링 모델의 일치 및 독립 성공 판정을 해결 경로로 제안한다.
1. 질문에 대한 판정
현재 확인된 실패를 사용자 설명 부족이나 AI의 악수 개념 부재만으로 설명할 수 없다. 공개 구현에는 구체적인 기하·회전·검증 오류가 있다. 선행 문서에도 손바닥 대향, 엄지-검지 사이 공간, 감싸쥠, 흔들기라는 설명이 이미 존재한다. 필요한 것은 같은 설명의 반복보다 이를 실행 가능한 조건과 검사로 연결하는 작업이다.
| 질문 | 이번 검토의 답 |
|---|---|
| AI가 악수를 이해하지 못한 것인가? | 내부 이해 능력은 이번 조사로 판정할 수 없다. 다만 자연어 명세와 실제 코드가 일치하지 않는 것은 확인했다. |
| 악수에 대한 자세한 정의가 필요한가? | 필요하다. 그러나 수사를 늘리는 대신 좌표계, 접촉 표면, 단계 전환, 실패·성공 조건을 정의해야 한다. |
| 기계적 한계인가? | 기존 모델 중 일부에는 구조적으로 불가능한 기하와 회전 자유도 부족이 보고됐다. 현재 WebGL의 9mm 겹침은 소프트웨어 기하 결함으로 재현됐다. 실제 장비 전체의 가능·불가능 판정에는 CAD·관절·구동기 자료가 더 필요하다. |
| GPU나 모델 규모를 늘리면 해결되는가? | 이번에 확인한 좌표, 겹침, 고정 상태 표시를 연산 증설만으로 해결할 근거는 없다. |
2. 조사 범위와 증거 등급
다음 두 경로는 같은 구현으로 취급하면 안 된다.
- OpenWiki: 현재 실악수 페이지. 공개 HTML/JavaScript를 읽고 실제 Chrome에서 기하를 측정했다.
- hb5u: grasp 재생기. 공개 HTML과 재생 매핑을 읽었다. MuJoCo 컨트롤러 및 원시 물리 실험은 이번에 재실행하지 않았다.
사용자가 마지막으로 관통을 관찰한 페이지가 어느 쪽인지 확정되지 않았으므로 두 경로의 결론을 분리한다. 실물 로봇은 구동하지 않았고 운영 서버의 코드는 변경하지 않았다. 로컬 브라우저의 대조 실험은 세션 내부에만 적용했다.
증거는 (A) 이번 브라우저 실측, (B) 현재 공개 소스의 직접 확인, (C) 선행 논문의 저자 보고, (D) 제안 및 미검증 가설로 구분한다. 논문의 self-verified 표기와 성공 선언은 독립 재현을 대신하지 않는다.
3. 선행 연구가 실제로 확보한 것
| 자료 | 핵심 내용 | 이번 판단에서의 범위 |
|---|---|---|
| Moojoco의 제어 전략 검토 [S1] | v2 손바닥 간격 18.8mm, v3 접근 감속으로 접촉 0건 등 실패 원인을 보고 | 과거 실험의 저자 보고이며 현재 모든 모델에 일반화하지 않음 |
| 접촉 주도형 파지 v1 [S2] | 캡슐 반경 대비 침투 4.37%, HOLD 2초의 접촉 유지 등 단일 조건 성공 보고 | 손목 회전이 없으며 흔들기를 포함한 전 과정 성공이 아님 |
| grasp 재생기 [S3] | 위 에피소드의 관절값을 Three.js로 재생 | 라이브 접촉 제어가 아니며 로봇 전체 물리 검증으로 확대할 수 없음 |
| Gravity의 기하·배향 명세 [S4–S7] | 손등·손바닥 레이어, 측면 접근, 전완 회전, 감싸쥠 및 펌핑을 설명 | 설명의 존재와 실제 구현의 정확성은 별개 |
| 접촉·기구학 통합 로드맵 [S8] | 접근 IK와 접촉 순응 제어를 결합하는 계획 | 계획 및 게이트 제시를 통합 실험 완료로 간주하지 않음 |
특히 [S2]는 이전 설계에서 손가락 간격 13mm, 손가락 지름 12mm로 남는 틈이 1mm인데 다른 12mm 손가락을 끼우려 했다고 보고한다. 이는 의도하지 않은 손가락 교차 끼우기 모델의 기하학적 불가능성이다. 보통의 악수에서 모든 손가락을 상대 손가락 사이로 교차 삽입할 필요는 없다.
또한 접촉 직전에 굽힘을 0으로 줄이는 회피 제어는 관통을 줄여도 파지를 만들지 못한다. 반대로 회피를 없애고 각도만 계속 증가시키면 관통을 만들 수 있다. 해결은 접촉을 허용할 표면을 정하고 접촉 후 제어 방식을 전환하는 것이다.
4. 현재 OpenWiki의 실측 결함
4.1 재현 방법
기존 Google Chrome을 Playwright로 실행했다. 페이지 기본 자동 재생을 일시정지하고 기존 onSeek() 함수로 2.8, 3.8, 4.2, 5.399, 5.4초 자세를 선택했다. updateMatrixWorld(true) 후 손바닥 패드와 손등 아머의 월드 경계 및 MCP·손끝 좌표를 읽었다. 해당 자세에서 상자 회전이 0이므로 아래 상자 겹침은 기울어진 형상의 보수적인 AABB 오탐이 아니라 축 정렬 상자 자체의 겹침이다.
소스 SHA-256:
381be8be7ac58ab3fb4d87334bc934fcf8c14c6e9db6032e971a9e6ce8ac6650
최초 브라우저 기록 시각은 2026-09-08 23:26:51 UTC, 한국 시각 2026-09-09 08:26:51이다. 아래 줄 번호는 이 HTML 스냅샷 기준이며 이후 배포에서는 달라질 수 있다.

그림 1. 실제 브라우저 캡처. 화면은 동작하지만 이것만으로 물리적 악수 성공을 판정할 수 없다. 숫자 판정은 아래 좌표 측정에 근거한다.
4.2 손바닥 표면을 맞춘 대신 두 손의 부피를 겹쳤다 — A·B 증거
소스 441–463행에서 손바닥 패드는 두께 10mm, 중심 Z는 A +5mm, B -5mm다. 손등 아머는 두께 12mm, 중심 Z는 A -7mm, B +7mm다. 그러나 도킹 이후 887–910행은 두 손 root의 Z를 모두 0으로 둔다.
| 형상 | 도킹 시 Z 구간 |
|---|---|
| A 손바닥 패드 | 0 ~ +10mm |
| B 손바닥 패드 | -10 ~ 0mm |
| A 손등 아머 | -13 ~ -1mm |
| B 손등 아머 | +1 ~ +13mm |
A 패드는 B 아머와 +1~+10mm에서, B 패드는 A 아머와 -10~-1mm에서 각각 9mm 겹친다. 브라우저의 겹침 치수는 양쪽 모두 약 76 × 72 × 9mm였다. 단순히 두 패드 사이 거리만 검사하면 이 교차 부피 오류를 놓친다. 접촉할 면의 바깥 방향과 손 전체 부피를 함께 검사해야 한다.
4.3 한쪽 굽힘 부호가 설명과 반대다 — A·B 증거
소스 944–952행은 A손을 +Y축 회전, B손을 -Y축 회전으로 굽힌다. 그런데 펼친 손가락은 A가 +X, B가 -X를 향한다. 회전 부호와 손가락 진행 방향을 함께 적용하면 두 손 모두 -Z로 움직인다.
기본 악력 변수 0.25, 3.8초에서 중지 MCP 대비 손끝 Z 이동은 다음과 같았다.
| 손 | 코드 주석이 의도한 방향 | 브라우저 실측 |
|---|---|---|
| A | B의 +Z 손등 쪽 | -33.542mm |
| B | A의 -Z 손등 쪽 | -33.542mm |
좌우에 단순히 반대 부호를 붙이는 것으로는 충분하지 않다. 손 모델의 로컬 축과 실제 전개 방향을 기준으로 닫힘 부호를 캘리브레이션해야 한다.
4.4 접촉 없이도 도킹·악수 단계로 넘어간다 — A·B 증거
updateAutoKinematics()의 단계 전환은 1.8, 2.8, 3.8초 등의 시간 구간으로 결정된다. 논문에서 설명한 호구 거리 임계값이 이 자동 경로의 전환 조건으로 사용되지 않는다. 도킹 시 이름이 webNode인 두 표지점의 중심은 (-25mm, 동일 Y, 0)와 (+25mm, 동일 Y, 0)로 50mm 떨어져 있다. 이 수치는 물리 접촉 패치 거리 그 자체는 아니지만, 해당 표지점들이 도킹했다고 주장할 근거가 없음을 보여준다.
4.5 관통·악력 표시가 물리 검증으로 오인될 수 있다 — B 증거
HTML 303행의 0.0 mm (Zero-Penetration)은 고정 문자열이다. 이번 실측의 9mm 겹침에도 같은 값이 표시됐다. 901행의 wrapAngle = p * (0.65 + gripTorque * 0.8)에서 악력 변수는 굽힘 각도를 바꾸며, 발광도 시간과 단계 값으로 바뀐다. 확인한 자동 경로에는 접촉 반력 계산이나 토크 적분이 없다.
따라서 이 화면의 0.25 N·m 또는 촉각 발광을 측정된 관절 토크·접촉 압력으로 해석하면 안 된다. 먼저 실제 로그 기반 값으로 바꾸고, 데이터가 없으면 미측정이라고 표시해야 한다.
4.6 양손을 함께 움직이는 것만으로 접촉 유지가 검증되지는 않는다 — A·B 증거
펌핑은 두 손에 동일한 Y 사인파를 적용한다. 이미 겹친 손을 같은 만큼 움직여도 화면상 맞잡은 것처럼 보일 수 있다. 마찰·슬립·구속력은 이 방식으로 확인되지 않는다. 아울러 5.399초에서 5.4초로 이동할 때 root Y가 약 10.744mm 뛰었다. 손을 펴기 전에 후퇴도 함께 시작한다. 실제 제어로 전이하려면 위치·속도의 연속성과 해제 후 후퇴 조건이 필요하다.
5. 국소 수정 대조 실험
운영 코드를 수정하지 않고 별도 로컬 브라우저에서 다음 두 변경만 적용했다.
// 이 페이지의 치수와 로컬 축에만 해당하는 진단용 보정이다.
handA.root.position.z = -0.010;
handB.root.position.z = +0.010;
for (const finger of handA.fingerJoints) {
finger.mcp.rotation.y *= -1;
finger.pip.rotation.y *= -1;
}
| 측정 | 원본 | 국소 수정 후 |
|---|---|---|
| A 패드와 B 아머의 Z 겹침 | 9mm | 0mm |
| B 패드와 A 아머의 Z 겹침 | 9mm | 0mm |
| 수정 후 대향 패드 표면 간격 | 잘못된 면 정합 | 약 0mm, 수치 잔차 2.24e-7mm |
| A 중지 끝의 MCP 대비 Z | -33.542mm | +33.542mm |
| B 중지 끝의 MCP 대비 Z | -33.542mm | -33.542mm |
이 시험은 두 원인의 국소 수정 효과를 확인한 것이다. 모든 손가락·엄지의 무관통, 상대 손 감싸쥠, 힘 안정성, 접근 궤적 및 분리를 검증한 것이 아니다. 특히 오프셋 수정 뒤에도 기존 고정 각도가 상대 손의 크기와 접촉 위치에 맞는지는 다시 풀어야 한다. 이 두 줄을 운영 페이지에 반영하는 것만으로 악수가 완성됐다고 선언해서는 안 된다.
6. 구현을 위한 악수의 자세한 정의
본 과제의 목표는 일반적인 오른손-오른손 맞잡기 악수로 둔다. 엄지가 대체로 위를 향하고, 두 손바닥의 유효 패치가 대향하며, 엄지와 검지 사이 공간을 이용해 접근한 뒤 손가락 패드가 상대 손 외측을 감싼다. 모든 손가락을 교차 삽입하거나 모든 손바닥 면을 빈틈없이 평평하게 붙일 필요는 없다. 이는 본 과제의 목표 자세 정의이며 모든 문화권·신체 형태의 악수를 한 가지 자세로 한정하는 주장이 아니다.
중요한 구분은 두 손등끼리 맞대는 것과 감싸는 손가락 패드가 상대 손등에 닿는 것이다. 전자는 이번 목표와 다르지만 후자는 정상적인 감싸쥠의 일부다. 손등과의 모든 접촉을 금지하면 악수를 다시 불가능하게 만들 수 있다.
6.1 손마다 고정해야 할 기하 정보
- 손목 기준 프레임, 단위 및 월드 상향축.
- 손 내부에서 바깥 손바닥 쪽을 향하는 법선 n, 손목에서 중지 기저부 쪽으로 향하는 축 f, 엄지측 표지점.
- 실제 두께를 가진 손바닥·손등·각 마디의 충돌 형상과 시각 형상.
- 엄지의 대립 및 벌림 가능 범위, 각 손가락의 관절 축·범위·구동 결합.
- 허용 접촉 패치와 피해야 할 모서리·끼임 부위.
법선 내적 n_A · n_B ≈ -1만으로는 부족하다. 서로 반대인 법선을 갖고도 두 손의 안팎이 뒤집히거나 부피가 겹칠 수 있다. 양손 내부 기준점 c와 두께 오프셋 h를 사용해, 단순 평판의 경우 n_A · (c_B - c_A) ≈ h_A + h_B > 0도 만족해야 한다. 곡면 손은 평판 공식을 그대로 적용하지 않고 표면 패치와 충돌 형상으로 검사한다.
6.2 단계와 전환 조건
| 단계 | 해야 하는 일 | 다음 단계로 넘어갈 근거 |
|---|---|---|
| PREPARE | 올바른 손·축·관절 범위 확인, 손을 열고 접근 자세 확보 | 자체 및 상대 형상과의 초기 관통 없음 |
| APPROACH | 팔과 손가락의 여유를 확보하며 상대 손 앞에 접근 | 상대 자세 오차가 허용 범위, 접근 속도 제한 만족 |
| ALIGN | 손바닥 대향, 엄지측 진입 공간, 손 두께 반영 | 올바른 면끼리 접촉 가능한 자세이며 잘못된 면 충돌 없음 |
| CONTACT | 낮은 속도로 계획된 패치 접촉을 형성 | 상대 손 ID와 패치가 맞는 실제 접촉 및 반력 확인 |
| WRAP | 손가락별로 상대 표면을 따라 감싸고 힘을 조절 | 모델별 필수 접촉 패치와 힘·관절 제한을 만족 |
| SETTLE | 손과 팔의 잔여 운동을 가라앉히며 파지 유지 | 일정 관찰 시간 동안 접촉·슬립·힘 조건 유지 |
| SHAKE | 연결된 두 손의 상대 자세를 유지하며 공동 운동 | 정한 흔들기 횟수 동안 접촉·힘·전신 조건 유지 |
| RELEASE | 흔들기를 감속하고 손가락·엄지의 구속을 해제 | 빠져나갈 공간 확보, 잡는 힘 해제 |
| RETREAT | 열린 손을 분리하여 초기 위치로 복귀 | 분리 완료, 재접촉·관통 없음 |
각 단계에는 시간 제한과 실패 분기가 있어야 한다. 시간이 지났다는 이유만으로 성공 상태를 표시하지 않는다. 실패 시 흔들기를 중단하고 감속·힘 해제·안전한 후퇴를 수행하도록 별도 복구 경로를 둔다.
7. 접촉을 허용하면서 관통을 막는 방법
7.1 허용 접촉과 충돌 비활성화를 구분한다
접근 단계에서는 충돌 회피를 사용하되, 접촉 단계에서는 계획된 패치의 양의 이격 거리 요구만 접촉 목표로 전환한다. 해당 쌍의 물리 충돌 검출을 끄거나 관통을 허용하는 뜻이 아니다. 어깨·팔꿈치·잘못된 손가락 쌍·끼임 부위에 대한 제약은 계속 유지한다.
따라서 [S8]의 15mm 이내 회피 해제는 적용 대상을 구체화해야 한다. 모든 충돌 회피를 일괄 해제하는 구현은 권하지 않는다. 15mm 역시 특정 모델의 제안값이며 보편적인 악수 임계값이 아니다.
7.2 물리와 화면이 같은 손을 사용해야 한다
하나의 MJCF/URDF 및 형상 명세에서 로봇 구조, 관절 부호, 단위, 렌더링 변환을 관리한다. MuJoCo의 관절값을 비율이 다른 손에 그대로 복사해도 무관통이 보존된다는 보장은 없다. [S3]의 접근 이동 압축과 팔 IK 부착은 시각화 방법으로 구분하고, 새 팔·손 모델 전체에서 다시 검사한다.
MuJoCo에서는 접촉 필터와 충돌 형상을 확인해야 한다. 일반 mesh의 충돌은 볼록껍질을 사용할 수 있어 엄지-검지 사이 빈 공간이 시각 모델과 달라질 수 있다. 필요한 공간을 보존하는 여러 볼록 형상·프리미티브 또는 적합한 검증된 형상 방식을 사용한다. 연성 접촉의 작은 수치적 침투와 잘못 겹친 강체 형상을 구분한다. MuJoCo 계산 문서, 모델링 문서
7.3 목표각 덮어쓰기 대신 힘에 반응하는 실행을 사용한다
렌더링 애니메이션은 목표 모양을 보여줄 수 있지만 물리적 반작용은 계산하지 않는다. 물리 검증에서는 초기화·별도 재생 모드를 제외하고 매 프레임 qpos를 강제로 덮어쓰지 않는다. 제어 입력을 주고 mj_step으로 전진한 실제 상태를 읽는다. MuJoCo 시뮬레이션 문서
손가락은 낮은 속도의 폐쇄와 토크 제한, 접촉 피드백을 결합한다. 첫 근위 마디 접촉만으로 모든 관절을 동결하지 말고, 허용된 표면을 따라 순응하며 원위 패치 접촉을 형성한다. 반대로 접촉을 만들겠다고 고정 각도까지 무조건 밀어 넣지도 않는다. 유지 평형점과 강성·감쇠를 정하고 접촉 상실과 과도한 힘을 계속 감시한다.
토크 상한만으로 접촉력이 항상 제한된다고 주장할 수는 없다. 접촉 위치·모멘트암·복수 관절 합력에 따라 힘이 달라진다. 실제 장비의 허용 힘과 속도는 구동기·센서·기구 자료를 확인해 정해야 하며, [S2]의 튜닝 토크를 다른 손에 그대로 적용하지 않는다.
8. 손을 맞잡은 채 흔들기
맞잡힌 두 손은 하나의 폐쇄 연결을 형성한다. 두 개의 독립적인 강한 위치 제어기가 조금 다른 경로를 강제하면 서로를 밀거나 잡아당길 수 있다. 초기 구현은 공통 접촉 프레임 C의 운동을 정의하고, 양손은 각자의 파지 상대 변환을 유지하면서 그 운동을 순응적으로 따라가게 하는 방식이 명확하다.
T_world_handA_target(t) = T_world_C(t) * T_C_handA_grasp
T_world_handB_target(t) = T_world_C(t) * T_C_handB_grasp
이 관계는 목표값의 일관성을 위한 것이며 실제 접촉을 대신하는 숨은 용접 제약이 아니다. 실제 상대 위치·회전 오차, 접촉력과 슬립을 확인해야 한다. 상호작용 중 강성 및 동기화의 중요성은 실제 로봇 악수를 다룬 연구에서도 분석된다. Mura 등, 2020
시뮬레이션 시작 예로 진폭 10mm, 주파수 0.5Hz, 3회 왕복을 선택할 수 있다. 이는 본 보고서의 시험 설정 제안이며 인간 악수의 필수 규격이나 실물 안전값이 아니다. 시작·종료 구간은 진폭 포락선을 부드럽게 올리고 내려 위치·속도를 연속으로 만든다. 고정된 팔에서 먼저 접촉 제어를 검증한 뒤, 실제 지지 조건과 균형을 포함한 전신 모델로 확장한다.
9. 실제 기계의 한계와 모델 명칭 문제
공식 AmazingHand 기본 저장소는 4손가락·8자유도와 손가락별 병렬 구동 구조를 설명한다. Pollen Robotics 원자료 thesis의 amazinghand_5finger_docking_v4.xml은 이름만으로 공식 하드웨어와 동일한 모델임을 보장하지 않는다. 어떤 리비전과 파생 설계를 사용했는지 명시해야 한다.
4손가락이라는 이유만으로 악수가 불가능한 것도 아니며, 5손가락이라는 이유만으로 자연스러운 맞잡기가 가능한 것도 아니다. 검토할 항목은 손 크기 대비 감쌀 수 있는 길이, 엄지 대립·벌림, 패드와 아머의 형상, 관절 범위 및 결합, 손목·전완 배향, 팔의 도달성과 힘 제어 가능성이다. 자유도 표기나 슬라이더 수는 실제 구동 가능한 관절 수를 대신하지 않는다.
특히 [S2]가 밝힌 회전 없는 슬라이드 손목은 수평 파지 실험의 제한이다. 수직 악수로 확장할 때 그립을 단순히 화면에서 회전시킨 것과, 중력 및 관절 제한 아래에서 실제로 수행 가능한 것은 구분해야 한다. 현재 정보만으로 두 실물 로봇의 악수가 기계적으로 불가능하다고 결론내릴 근거는 없다.
10. 완료 판정을 바꿔야 한다
| 검사 | 필요한 근거 | 잘못된 대체 지표 |
|---|---|---|
| 올바른 접촉 | 상대 손과 접촉 패치 ID, 월드 법선, 접촉 위치 | 손바닥 색상이나 모델 이름 |
| 무관통 | 관련 모든 형상 쌍의 침투 깊이·지속시간·최악 프레임 | 고정 0mm 문구, 패드 두 개의 거리만 측정 |
| 파지 | 모델별 접촉 조합, 유지력 및 슬립, 작은 외란에서 유지 | 관절 각도 또는 10지 모두 접촉이라는 단일 조건 |
| 흔들기 | 실제 공통 운동의 진폭·횟수와 접촉 유지 | 양손에 같은 사인파 목표를 줌 |
| 해제 | 손가락 개방과 구속 해제 후 분리 | 프레임 끝에서 손을 뒤로 이동 |
| 기계 실현성 | 관절·속도·토크 범위, 도달성, 지지 조건 | 32-DoF 라벨, WebGL 60fps |
| 강건성 | 초기 오차·속도·마찰 등 변화에 대한 성공률과 최악값 | 같은 단일 궤적을 반복 재생 |
MuJoCo의 연성 접촉에서는 허용할 수치 오차를 모델의 치수·재료·시간 간격과 함께 정해야 한다. 예를 들어 기준 반경이 6mm일 때 5%는 0.3mm이지만, 이것이 보편적인 합격선은 아니다. 9mm 아머 중첩을 그런 작은 접촉 오차와 같은 것으로 취급할 수 없다. ncon 전체 개수에도 바닥·자체 접촉 등이 포함될 수 있으므로 손 사이의 대상 접촉만 식별해 측정한다.
11. 구현 순서와 재발 방지 시험
- 현재 실패 고정: 소스·모델 해시와 실패 프레임, 접촉 표면 및 좌표를 저장한다. 고정 성공 표시를 실제 측정 또는 미측정 상태로 바꾼다.
- 기하 수정: 손 두께와 배향, 굽힘 부호, 엄지 공간을 교정한다. 이번 오프셋·부호 대조 실험을 출발점으로 전체 형상 검사로 확장한다.
- 단일 정적 파지: 양손을 별도 지그에 고정한 작은 문제에서 접근·접촉·폐쇄·유지·해제를 검증한다. 렌더링과 충돌 모델을 겹쳐 확인한다.
- 동적 악수: 접촉을 유지한 공동 운동과 부드러운 해제를 검증한다. 힘·슬립·상대 자세 오차를 저장한다.
- 팔 및 전신 통합: 같은 손 모델을 팔에 연결하고 도달성, 관절 제한, 지지·균형을 다시 검사한다. 기구학 애니메이션에서의 성공을 동역학 성공으로 승격하지 않는다.
- 오차와 외란 시험: 예를 들어 초기 위치 ±5mm, 배향 ±5도 등의 시험군부터 시작해 성공·실패 영역을 기록한다. 값은 시작 제안이며 실제 과제 분포에 맞춰 조정한다.
- 학습 단계: 검증된 접촉·흔들기·해제 에피소드를 만든 뒤 모방학습 또는 정책 개선에 사용한다. 실패를 성공으로 라벨링한 데이터부터 정리한다.
회귀 시험에는 손바닥/손등 표지 교환, A손 굽힘 부호 반전, 충돌 쌍 비활성화, 표면 간격이 남은 채 시간 진행, 접촉 중 분리 명령, 시각 메시와 충돌 메시 크기 불일치를 고의로 넣는다. 이런 실패를 성공 검사기가 잡아내야 한다. 성공률과 함께 시험 횟수, 모델 및 코드 해시, 실패 이유와 최악 침투를 공개한다.
현재 시행한 것은 브라우저 기하 측정과 국소 수정 대조 시험이다. 위 전체 물리 파지·외란·실물 시험은 아직 시행하지 않았다.
12. AI에게 전달할 실행 명세 예시
두 로봇의 오른손으로 맞잡기 악수를 구현한다. 각 손의 손바닥 바깥 법선, 손목-중지축, 엄지측 표지와 실제 손 두께를 모델에서 정의한다. 손바닥 대향 패치를 먼저 접촉시키고 각 손의 손가락 패드가 상대 손 외측을 감싸도록 한다. 손가락 교차 삽입이나 상대 부피 관통으로 접촉을 만들지 않는다. 접촉은 양손 형상 ID와 반력으로 확인하며, 시간 경과만으로 다음 단계로 넘어가지 않는다. 정착 후 공동 접촉 프레임을 부드럽게 3회 흔들고, 실제 접촉·힘·슬립·상대 자세를 측정한다. 손가락과 엄지를 먼저 풀고 후퇴한다. 렌더링은 물리가 계산한 상태를 표시한다. 화면의 성공·침투·악력 값은 측정 로그에서 계산하며, 미측정이면 명시한다. 단일 자세 성공과 전체 악수 성공, 시뮬레이션과 실물 성공을 구분해 보고한다.
13. 증거 보관과 결론
cmg-cv16 작업공간 /home/cmg/codex에 handshake_browser_audit.cjs, handshake_audit/real-handshake.html, handshake_audit/measurements.json, handshake_audit/candidate.json과 데스크톱·모바일 캡처를 보관했다. 공개 소스의 줄 번호·해시와 본문 측정표로 이번 판정을 추적할 수 있다. 국소 대조 실험은 전체 수정본의 배포를 뜻하지 않는다.
사용자는 이미 충분히 분명한 목표를 제시했다. 이번에 확인된 핵심은 말로 정의한 악수와 실제 좌표·접촉·상태 전환·성공 표시가 서로 연결되지 않았다는 점이다. 손바닥·손등의 이름을 바꾸거나 손을 가까이 놓는 것으로 해결하지 말고, 올바른 면과 부피, 실제 접촉을 유지하는 제어, 독립적인 실패 검사를 함께 구현해야 한다.
참고문헌
- S1: Moojoco, 병목은 연산이 아니라 제어 전략.
- S2: Moojoco, 접촉 주도형 파지 v1 중간보고.
- S3: Moojoco, hb5u grasp 재생 페이지.
- S4: Gravity, 손바닥·손등 이중 레이어 정합.
- S5: Gravity, 고자유도 무충돌 궤적 명세.
- S6: Gravity, 실악수 WebGL 구현·배포 보고.
- S7: Gravity, 상지·수부 영점 자세 명세.
- S8: Gravity, 접촉 제어·기구학 통합 로드맵.
- Pollen Robotics AmazingHand 공식 저장소.
- MuJoCo 계산 및 접촉 모델.
- MuJoCo 모델링.
- MuJoCo 시뮬레이션 실행.
- Mura 등, On the role of stiffness and synchronization in human–robot handshaking, 2020.
