🧪 새 튜토리얼이 계속 업데이트 중 — 로봇 팔부터 센서까지
본문으로 건너뛰기

8단계: 커맨드라인 설명 ​

버전 설명(중요, 먼저 읽어 주세요) ​

LeRobot 0.6.0부터는 학습한 모델을 lerobot-rollout으로 배포해야 합니다. 기존의 lerobot-record --policy.path=... 표기는 0.5.2 버전에서 이미 제거되었습니다.

이 튜토리얼의 1단계는 git clone으로 LeRobot을 설치하므로 현재 최신 버전을 받게 됩니다. 따라서 아래 lerobot-rollout 커맨드라인을 사용해 주세요. 굳이 lerobot-record를 쓰면 프로그램이 곧바로 오류를 내고 lerobot-rollout으로 바꾸라고 안내합니다.

두 커맨드의 역할 분담은 다음과 같습니다:

  • lerobot-record: 시연 데이터 수집만 담당하며(6단계에서 사용한 것이 이것입니다), 이제 eval_로 시작하는 dataset 이름을 거부합니다
  • lerobot-rollout: 학습한 모델 배포를 담당하며, --strategy.type으로 동작 방식을 선택합니다

rollout 커맨드라인 파라미터 ​

파라미터설명
--strategy.type동작 방식입니다. base는 모델만 실행하고 데이터를 녹화하지 않으며, 현장에서 효과를 확인할 때 사용합니다. episodic은 episode별로 녹화하고 reset 단계를 포함하며, 구버전 lerobot-record에 가까운 동작을 합니다
--policy.path모델 경로로, 학습 출력의 checkpoints/last/pretrained_model을 가리킵니다
--task작업 설명으로, --strategy.type=base와 함께 사용합니다
--duration실행 시간(초)이며, 0은 시간 제한 없음을 의미합니다
--interactive중간에 개입해야 할 때 추가하며, 터미널에서 /stop, /reset 등의 명령으로 제어할 수 있습니다
--display_datarerun.io 시각화 인터페이스를 시작할지 여부입니다
--policy.device계산 장치로, 예를 들어 cuda, cpu입니다

카메라 파라미터는 수집 시와 일치해야 합니다 ​

아래 모든 커맨드의 --robot.cameras는 1280×720@30을 사용하며, 이는 시연 dataset 수집과 통일한 값입니다. 배포할 때는 수집 시의 해상도, fps, 가로세로 비율을 그대로 따라야 합니다: 해상도는 dataset 메타데이터에 기록되어 검증에 사용되므로 일치하지 않으면 곧바로 오류가 납니다. 설령 통과하더라도 시야가 다르면 모델이 "보는 세계"가 시연할 때와 달라져 효과가 눈에 띄게 나빠집니다.

시각화에 대하여 ​

--display_data=true는 rerun.io의 시각화 인터페이스를 시작하고, 동시에 /Users/<사용자명>/.cache/huggingface/lerobot/rollout_lerobot_my_dataset_a/images/observation.images.front/episode-000000 디렉터리에 매 프레임의 이미지를 저장하므로 공간을 꽤 차지합니다. 정식으로 사용할 때는 --display_data=false로 설정해도 됩니다.

오렌지 집기 작업을 예로 ​

  • 현장 평가(실시간 시각화 포함)
Shell
lerobot-rollout  \
  --strategy.type=base \
  --robot.type=so101_follower \
  --robot.port=/dev/tty.usbmodem5AAF2193061 \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 1280, height: 720, fps: 30, fourcc: "MJPG"}}" \
  --robot.id=my_follower_arm \
  --policy.path=/Users/<사용자명>/Downloads/7-lerobot/checkpoints/last/pretrained_model \
  --task="Grab Oranges" \
  --duration=60 \
  --display_data=true
  • 현장 평가(실시간 시각화 미포함)
Shell
lerobot-rollout  \
  --strategy.type=base \
  --robot.type=so101_follower \
  --robot.port=/dev/tty.usbmodem5AAF2193061 \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 1280, height: 720, fps: 30, fourcc: "MJPG"}}" \
  --robot.id=my_follower_arm \
  --policy.path=/Users/<사용자명>/Downloads/7-lerobot/checkpoints/last/pretrained_model \
  --task="Grab Oranges" \
  --duration=60 \
  --display_data=false
  • HuggingFace 모델 Repo의 모델 추론
Shell
lerobot-rollout  \
  --strategy.type=base \
  --robot.type=so101_follower \
  --robot.port=/dev/tty.usbmodem5AAF2193061 \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 1280, height: 720, fps: 30, fourcc: "MJPG"}}" \
  --robot.id=my_follower_arm \
  --policy.path=<사용자명>/lerobot_my_model_a \
  --task="Grab Oranges" \
  --duration=60 \
  --display_data=true

실행 후 모델을 다운로드합니다

image.png

  • 데이터 평가 및 녹화(--strategy.type=episodic)

실행하면서 과정을 dataset으로 녹화하려면 base를 episodic으로 바꾸면 됩니다. 이 모드에서는 --task를 쓰지 않고 --dataset.single_task를 사용하며, 반드시 --dataset.repo_id를 지정해야 합니다:

Shell
lerobot-rollout  \
  --strategy.type=episodic \
  --robot.type=so101_follower \
  --robot.port=/dev/tty.usbmodem5AAF2193061 \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 1280, height: 720, fps: 30, fourcc: "MJPG"}}" \
  --robot.id=my_follower_arm \
  --policy.path=/Users/<사용자명>/Downloads/7-lerobot/checkpoints/last/pretrained_model \
  --dataset.repo_id=<사용자명>/rollout_lerobot_my_dataset_a \
  --dataset.num_episodes=10 \
  --dataset.single_task="Grab Oranges" \
  --display_data=false