コンテンツにスキップ

データセットの収集

1. データセット収集(新規)

既存の同名データセットがあると新規作成に失敗します。削除対象が空文字やルートディレクトリでないことを確認してから削除します。

1
rm -rf "{{ DATASET_DIR }}"

dataset.episode_time_sは1エピソードの収集時間、dataset.reset_time_sは次のエピソードまでのリセット時間、dataset.num_episodesは収集するエピソード数です。

SSH接続時は、Rerun GUIを起動しないように--display_data=falseを使用します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
cd "{{ PROJECT_DIR }}"

lerobot-record \
  --robot.type=so101_follower \
  --robot.port={{ ROBOT_PORT }} \
  --robot.id=my_follower_arm \
  --teleop.type=so101_leader \
  --teleop.port={{ TELEOP_PORT }} \
  --teleop.id=my_leader_arm \
  --robot.cameras="{front: {type: opencv, index_or_path: '/dev/video0', backend: 200, width: 640, height: 480, fps: 30, fourcc: 'MJPG'}}" \
  --dataset.repo_id={{ DATASET_REPO_ID }} \
  --dataset.root={{ DATASET_DIR }} \
  --dataset.push_to_hub=false \
  --dataset.single_task="Pick up the red cube" \
  --dataset.fps=30 \
  --dataset.episode_time_s=10 \
  --dataset.reset_time_s=5 \
  --dataset.num_episodes=30 \
  --dataset.streaming_encoding=false \
  --display_data=false \
  --play_sounds=true

Note

Jetsonのデスクトップ上のターミナルで実行し、DISPLAYまたはWAYLAND_DISPLAYが設定されている場合のみ、必要に応じて--display_data=trueへ変更できます。SSHではfalseのまま使用してください。

Macのカメラ番号が0の場合の例です。AVFoundationでMJPGが表示されないカメラもあるため、Mac用コマンドではfourccを固定していません。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
cd "{{ PROJECT_DIR }}"

lerobot-record \
  --robot.type=so101_follower \
  --robot.port={{ ROBOT_PORT }} \
  --robot.id=my_follower_arm \
  --teleop.type=so101_leader \
  --teleop.port={{ TELEOP_PORT }} \
  --teleop.id=my_leader_arm \
  --robot.cameras="{front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
  --dataset.repo_id={{ DATASET_REPO_ID }} \
  --dataset.root={{ DATASET_DIR }} \
  --dataset.push_to_hub=false \
  --dataset.single_task="Pick up the red cube" \
  --dataset.fps=30 \
  --dataset.episode_time_s=10 \
  --dataset.reset_time_s=5 \
  --dataset.num_episodes=30 \
  --dataset.streaming_encoding=false \
  --display_data=true

H.264を明示する場合、LeRobot 0.6.0では旧引数--dataset.vcodec=h264ではなく、次を追加します。

1
--dataset.rgb_encoder.vcodec=h264

2. データセット収集(追加)

1の操作で収集したデータセットをさらに追加したい場合に、下記コマンドで追加収集可能です。

既存データセットへ追加するときは、初回収集時と同じrepo_idroot、カメラ構成、FPS、タスク名を使用し、--resume=trueを指定します。次の例では5エピソードを追加します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
cd "{{ PROJECT_DIR }}"

lerobot-record \
  --robot.type=so101_follower \
  --robot.port={{ ROBOT_PORT }} \
  --robot.id=my_follower_arm \
  --teleop.type=so101_leader \
  --teleop.port={{ TELEOP_PORT }} \
  --teleop.id=my_leader_arm \
  --robot.cameras="{front: {type: opencv, index_or_path: '/dev/video0', backend: 200, width: 640, height: 480, fps: 30, fourcc: 'MJPG'}}" \
  --dataset.repo_id={{ DATASET_REPO_ID }} \
  --dataset.root={{ DATASET_DIR }} \
  --dataset.push_to_hub=false \
  --dataset.single_task="Pick up the red cube" \
  --dataset.fps=30 \
  --dataset.episode_time_s=10 \
  --dataset.reset_time_s=5 \
  --dataset.num_episodes=5 \
  --dataset.streaming_encoding=false \
  --display_data=false \
  --play_sounds=true \
  --resume=true

追加収集後、「収集データセットの完成確認」をもう一度実行します。

リファレンス