콘텐츠로 이동
GitHub

시연 수집

시연은 두 손에 Hermit 을 하나씩 들고 하며, 녹화하는 동안 Pinkrab 은 움직이지 않습니다. 탑 카메라가 두 Hermit 의 UMI 마커와 책상의 테이블 마커를 함께 촬영하고, Hermit 의 카메라 두 대와 jaw 열림이 같은 시각에 함께 기록됩니다. 모든 시연은 두 손으로 하며, 한 손만 쓰는 작업도 다른 손에 Hermit 을 들고 있어야 합니다.

탑 카메라테이블 마커작업 자리시연자
옆에서 본 배치
가슴에서 약 40 cm탑 카메라 화면+Y테이블 마커왼손오른손시연자
위에서 본 배치
  • 탑 카메라: 헤드 스트랩으로 시연자 머리에 달고, 두 손이 작업할 자리와 테이블 마커가 모두 화면에 들어오게 고개를 숙입니다. Hermit pose 는 매 프레임 테이블 마커를 기준으로 계산하므로, 테이블 마커가 화면 밖으로 나간 프레임은 쓰이지 않습니다. 고개를 빨리 돌리면 마커가 번져 그 프레임을 놓치니 고개는 천천히 움직입니다.
  • 테이블 마커: 시연자 몸통 바로 앞 책상 위에 놓고 +Y 면이 시연자 반대쪽을 향하게 둡니다. 시연하는 동안에는 테이블 마커를 움직이지 않습니다.
  • 시연자: 로봇이 놓일 쪽에 서서, 로봇이 작업 자리를 보는 방향에서 시연합니다. Hermit 카메라에 찍히는 장면이 나중에 팔 카메라가 보게 될 장면과 같아야 하기 때문입니다.

Pinkrab 은 테이블 마커를 두 팔 사이, 보드 앞에 있는 것으로 계산합니다. 시연자의 가슴이 보드 자리에 있다고 보고 시연을 로봇 좌표계에 옮기는 것이라, 테이블 마커를 시연자 가까이 둘수록 팔이 보드 가까이에서 일하는 시연이 됩니다.

터미널 창
pinkrab-studio
실행 결과
  Pinkrab studio  ->  http://localhost:8730/
  reachable from: this machine only
  physics: scene.xml - 14 joints, 14 actuators, 500 Hz
  arms:    simulation until the page says otherwise - the robot switch
           on the page starts the bridge and the handheld loop beside
           it (the pedal starts with this server); the rig's own side
           is not started here:
           ros2 launch pinkrab_bringup robot.launch.py
  Ctrl+C to stop.

브라우저에서 http://localhost:8730/ 을 열고 Collect 페이지로 갑니다. Connect 를 누르면 탑 카메라, Hermit 카메라 두 대, 두 jaw 서보를 열고 마커 추적을 시작합니다. 카드마다 손별 추적 상태와 jaw 열림이 보이고, 탑 카메라 화면에는 찾은 마커가 그려집니다.

macOS 에서는 풋 스위치를 root 권한으로만 열 수 있어서 studio 가 sudo -n 으로 실행합니다. 처음에는 권한이 없어 실패하고, 화면에 sudoers 에 추가할 줄이 표시되니 그 줄을 sudo visudo 로 추가합니다. 풋 스위치는 studio 를 실행한 터미널 앱에 입력 모니터링 권한(시스템 설정 > 개인정보 보호 및 보안)도 있어야 읽힙니다.

탑 카메라가 열리지 않으면 USB 를 다시 꽂고 Retry top camera 를 누릅니다.

탑 카메라 화면에는 손마다 로봇 팔이 ready 자세일 때의 Hermit이 흰 선으로 겹쳐 그려집니다. Hermit 본체, jaw, 서보, 카메라 마운트, 마커 다면체의 윤곽과 모서리이고, 옆에 ready 까지 남은 거리와 각도가 나옵니다.

녹화를 시작하기 전에 두 손의 Hermit 을 이 그림에 겹칩니다. 거리와 각도가 100 mm, 20° 안으로 들어오면 그 손의 선이 초록으로 바뀝니다. 작업하지 않고 기다리는 손은 시연 내내 이 자리에 둡니다.

ready 는 시연자가 팔을 앞으로 내밀어 편하게 든 자세입니다. policy 를 실행하면 팔은 시연을 시작한 자세로 먼저 가는데, 시작 자세가 take 마다 비슷해야 policy 가 시작을 잘 배우고, ready 에서 많이 벗어나면 팔이 어깨를 크게 돌려야만 닿는 자세가 되기도 합니다. 그림 크기로 거리를 봅니다. 실제 Hermit 이 그림보다 크게 보이면 너무 가까이 든 것입니다.

페달 Collect 페이지에서의 동작
2 녹화 시작
3 녹화를 멈추고 저장

페달을 쓰므로 녹화하는 동안 손을 Hermit 에서 뗄 일이 없습니다. 녹화 중에는 상태 줄에 시연 이름, 경과 시간, 카메라별 프레임 수가 표시됩니다. 시연은 ~/pinkrab/episodes/<이름>/ 에 저장되고, 탑 카메라와 Hermit 카메라의 영상, 프레임마다의 마커 pose 와 jaw 열림이 함께 들어갑니다.

  • 두 Hermit 의 UMI 마커가 탑 카메라에 계속 보이게 합니다. 손이나 물체가 마커를 잠깐씩이라도 자주 가리면 그 시연은 판정에서 떨어집니다.
  • 작업은 보드에서 약 40 cm 안쪽에서 합니다. 그보다 멀면 팔이 끝까지 뻗어도 닿지 않는 자리가 생깁니다.
  • 물체를 놓은 뒤에는 그 자리에서 손을 뒤로 빼면서 위로 들어 올리고, 녹화를 멈춥니다. 놓은 뒤 바로 멈춘 시연이 많으면 policy 가 놓은 다음 동작을 배우지 못해서, 판정이 이것도 봅니다.
  • 같은 작업을 물체의 위치와 방향을 조금씩 바꿔 가며 여러 번 녹화합니다.

Episodes 목록에는 저장한 시연마다 판정이 붙습니다. 각 손의 시연을 Pinkrab 팔이 실제로 따라갈 수 있는지, 마커가 끊기지 않았는지를 시연마다 다시 계산한 결과이며, 한 손이라도 떨어지면 그 시연은 떨어집니다.

판정 기준
떨어짐 카메라 영상이 없거나, 제 fps 의 80 % 미만이거나, 0.25초 넘게 프레임이 끊기거나, 화면이 한 번도 바뀌지 않음 · 마커를 놓친 시간이 모두 합쳐 1/6초(30 fps 에서 5 프레임)를 넘음 · 마커를 찾은 시간이 1초 미만 · 팔이 따라갈 수 있는 프레임이 80 % 미만 · 팔의 관절이 실물 서보보다 빨리(300°/s 넘게) 돌아야 하는 순간이 있음 · 쥐고 있던 물체를 jaw 를 벌리지 않고 놓음 · 물체를 놓은 뒤 손을 20 mm 넘게 들어 올리지 않았거나 다가간 방향의 반대로 20 mm 넘게 빼지 않았고 ready 자세(가이드가 초록인 범위)로도 돌아오지 않음
경고 관절이 한계에 닿은 채 따라감(reach edge) · 팔이 손을 따라가려고 shoulder_pan 을 ready 에서 60° 넘게 돌림 · 시작 자세가 다른 시연들과 많이 다름 · jaw 를 읽지 못한 프레임이 10 % 넘음 · jaw 가 움직이지 않음

물체를 놓은 순간은 jaw 가 마지막으로 열린 때입니다. 마지막까지 물건을 쥔 채 끝나는 작업이면 pinkrab_umi config 의 keep_min_retract_mm 를 0 으로 두어 이 기준을 끕니다.

▶ 를 누르면 시연을 Pinkrab 팔이 따라 하는 모습을 영상 위에 겹쳐 재생합니다. 팔은 dataset 의 기본 fps(50)로, 시연의 실제 시간대로 움직입니다. 탑 카메라가 프레임을 놓친 시연도 빨라지지 않습니다. 팔이 닿지 못하는 자세에서 시작해 관절 한계에 접힌 뒤에도, 손이 닿는 자리로 오면 다시 따라가고, 그 사이 한 번에 크게 바뀐 관절은 jump 로 표시됩니다. tick failing 은 떨어진 시연을 모두 선택하고, delete ticked 는 선택한 시연을 지웁니다.

판정을 통과한 시연은 studio 의 Curate 페이지에서 LeRobot dataset 으로 변환합니다.