3.4 Leader-Follower 캘리브레이션

3.4.1 데이터 경로

Leader-Follower 제어는 단순 복사처럼 보이지만 실제 경로는 다음과 같다.

qFcmd=Safe⁡(S fC(rL)+b).q_F^{cmd}=\operatorname{Safe}\left(S\,f_C(r_L)+b\right).
  • rLr_L: Leader의 원시 엔코더 값
  • fCf_C: 캘리브레이션 CC에 따른 정규화 또는 각도 변환
  • SS: 관절 순서와 방향을 나타내는 부호/순열 변환
  • bb: 기구 조립과 영점 차이를 보정하는 오프셋
  • Safe: 위치·속도·작업 공간·통신 상태 제한

12-bit 엔코더라면 한 회전을 4096 카운트로 표현할 수 있지만, 실제 유효 범위와 래핑 방식은 서보 설정에 의존한다. “2048이 항상 0 rad”처럼 하드코딩하지 않는다.

3.4.2 LeRobot 캘리브레이션 절차

공식 SO-101 안내의 핵심은 Leader와 Follower가 같은 물리 자세일 때 같은 의미의 위치 값을 갖도록 각각 캘리브레이션하는 것이다. 중앙 자세를 기록한 뒤 모든 관절을 전체 안전 범위로 움직여 범위를 수집한다.[Hugging Face SO-101]

# 포트 이름은 예시다. 한 번에 한 장치만 연결해 식별한다.
lerobot-find-port

lerobot-setup-motors \
  --robot.type=so101_follower \
  --robot.port=/dev/ttyACM0

lerobot-calibrate \
  --robot.type=so101_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=lab_follower_01

lerobot-calibrate \
  --teleop.type=so101_leader \
  --teleop.port=/dev/ttyACM1 \
  --teleop.id=lab_leader_01

id는 캘리브레이션 파일을 찾는 키이므로 이후 명령에서도 동일하게 사용한다. 캘리브레이션 중에는 기계 스토퍼를 세게 누르지 말고 관절을 안전 범위 안에서 천천히 훑는다.

3.4.3 그리퍼 표현의 함정

공식 SO-101 시뮬레이션 설명에서 LeRobot 그리퍼는 0을 완전 닫힘, 100을 완전 열림으로 나타낸다. 그러나 이 매핑이 URDF/MJCF에 그대로 반영되지 않을 수 있다.[TheRobotStudio SO-101 Simulation]

따라서 다음 세 값을 구분한다.

  • 원시 서보 tick
  • LeRobot 정규화 값(예: 0~100)
  • URDF의 회전 또는 선형 관절 위치(rad 또는 m)

그리퍼 변환은 일반 팔 관절의 radian 배열에 섞지 말고 명시적인 함수와 단위로 관리한다.

3.4.4 첫 프레임 정렬

Leader가 접힌 상태이고 Follower가 펼쳐진 상태에서 1:1 복사를 시작하면 첫 명령 한 번으로 큰 이동이 발생한다. 안전한 시작 절차는 다음과 같다.

  1. 두 암의 현재 상태를 읽는다.
  2. 관절 이름, 개수, 유한값, 캘리브레이션 ID를 검증한다.
  3. Follower를 Leader의 첫 자세로 제한 속도 보간(slew)한다.
  4. 정렬 오차가 임계값 아래일 때만 실시간 미러링을 연다.
  5. 데드맨 입력이 놓이면 마지막 명령이 아니라 측정된 현재 자세를 유지한다.

LeRobot의 공식 Isaac Teleop 예제도 기본적으로 Follower를 Leader의 첫 자세까지 일정 시간에 걸쳐 정렬하고, 입력 스트림이 오래되면 측정 자세를 유지하는 계약을 둔다.[Hugging Face Isaac Teleop]

잠깐 점검 — Leader 값을 곧바로 복사해도 될까?

  1. 두 로봇의 관절 이름은 같지만 한 관절의 회전 방향이 반대라면 어느 변환을 확인해야 하는가?
  2. Leader 메시지가 제한 시간보다 오래되었다면 Follower는 마지막 명령을 계속 실행해야 하는가?

확인 포인트: 첫 질문은 부호·순열 변환 SS와 영점 오프셋 bb를 확인해야 한다. 두 번째는 아니다. 워치독(watchdog)이 오래된 명령을 거부하고 측정 자세 유지 또는 정지 상태로 전환해야 한다.

이 장의 예제 코드·설정 파일 (6)

이 장의 자가 점검·가상실습