찹쌀이네 공부 공간

[VLA] SO-ARM 101 Smol-VLA 구현해보기 본문

Vision Language Action, VLA

[VLA] SO-ARM 101 Smol-VLA 구현해보기

호떡공돌이 2025. 12. 27. 21:55

SO-ARM 101로 Smol-VLA를 구현해보기 위해 첫째 아들이 갖고 노는 빨간 블럭을 옮기는 데이터셋을 tele-operation으로 만들었다.

 

참고로, 각 관절 값을 카메라뷰와 함께 확인하는 코드는 아래와 같다.

lerobot-teleoperate \
  --robot.type=so101_follower \
  --robot.port=/dev/ttyACM1 \
  --robot.id=my_awesome_follower_arm \
  --robot.cameras="front:
    type: opencv
    index_or_path: 0
    width: 640
    height: 480
    fps: 30" \
  --teleop.type=so101_leader \
  --teleop.port=/dev/ttyACM0 \
  --teleop.id=my_awesome_leader_arm \
  --display_data=true

tele-operation 시연

 

 

데이터셋을 모으는 코드는 아래와 같다.

lerobot-record \
  --robot.type=so101_follower \
  --robot.port=/dev/ttyACM1 \
  --robot.id=so101_follower \
  --teleop.type=so101_leader \
  --teleop.port=/dev/ttyACM0 \
  --teleop.id=so101_leader \
  --robot.cameras="front:
    type: opencv
    index_or_path: 0
    width: 640
    height: 480
    fps: 30" \
  --dataset.repo_id=local/so101_dataset_251224 \
  --dataset.single_task="Pick up the red block and place it on the transparent box." \
  --dataset.num_episodes=30 \
  --dataset.episode_time_s=11 \
  --dataset.reset_time_s=3 \
  --dataset.video=true \
  --dataset.push_to_hub=false \
  --display.data = true

 

위 명령어 실행 시, 아래와 같이 카메라와 각 관절 값까지 Display해준다.

 

Display 명령어는 위 명령어 중 --display.data = true 이다.

 

Train 명령어는 아래와 같다.

lerobot-train \
  --policy.type=smolvla \
  --dataset.repo_id=local/so101_dataset_251224 \
  --dataset.video_backend=pyav \
  --policy.device=cuda \
  --output_dir=outputs/smolvla_so101_pick_place_v1 \
  --batch_size=16 \
  --steps=8000 \
  --save_freq=1000 \
  --policy.push_to_hub=false

 

Inference 명령어는 아래와 같다.

lerobot-record \
  --robot.type=so101_follower \
  --robot.port=/dev/ttyACM1 \
  --robot.id=so101_follower \
  --robot.cameras="front:
    type: opencv
    index_or_path: 0
    width: 640
    height: 480
    fps: 30" \
  --dataset.repo_id=local/eval_so101_pick_place \
  --dataset.single_task="Pick up the red block and place it on the transparent box." \
  --dataset.num_episodes=1 \
  --dataset.episode_time_s=10 \
  --dataset.reset_time_s=2 \
  --dataset.video=true \
  --dataset.push_to_hub=false \
  --display_data=true \
  --policy.path=outputs/smolvla_so101_pick_place_v1/checkpoints/last/pretrained_model \
  --policy.device=cuda

Inference 결과

 

다음엔 multi cam(Front cam, Gripper cam)으로 시도할 예정이고, 각 경량 VLA 모델마다 차이점과 성능 비교도 해보려고 한다.

끝.