LeRobot各種コマンド
各種認識
Jetsonの場合はSO-101は、/dev/ttyUSB0や/dev/ttyACM0で認識、MacBookは、/dev/tty.usbmodem58FA1026181などで認識
SO-101の接続先を確認できたら、次に、OpenCVに対応したカメラデバイスを探します。
lerobot-find-cameras opencv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 --- Detected Cameras ---
Camera #0:
Name: OpenCV Camera @ 0
Type: OpenCV
Id: 0
Backend api: AVFOUNDATION
Default stream profile:
Format: 16.0
Fourcc:
Width: 1920
Height: 1080
Fps: 24.000038
--------------------
Camera #1:
Name: OpenCV Camera @ 1
Type: OpenCV
Id: 1
Backend api: AVFOUNDATION
Default stream profile:
Format: 16.0
Fourcc:
Width: 1920
Height: 1080
Fps: 15.0
--------------------
ここでは使用するカメラのIdをメモしておきます。
コマンドの作成
全項目で判明したSO-101のデバイス名と、使用するカメラ IDを下記フォームに入力します。
「Hugging Faceにアップ」チェック: --dataset.push_to_hub=true(未チェックなら false)
「wandbにアップ」チェック: --wandb.enable=true(未チェックなら false)
作業フォルダの作成・移動
作業フォルダの作成
mkdir -p {{ WORKSPACE_DIR }} /
作業フォルダへの移動
キャリブレーション(Leader)
Info
すでにキャリブレーション実施済みの場合は、質問時にcを入力することで再度キャリビュレーション実施できます。
SO101
lerobot-calibrate \
--teleop.type= so101_leader \
--teleop.port={{ TELEOP_PORT }} \
--teleop.id= my_leader_arm
キャリブレーション結果は、~/.cache/huggingface/lerobot/calibration/teleoperators/so_leader/my_leader_arm.jsonに保存されます。
キャリブレーション(Follower)
Info
すでにキャリブレーション実施済みの場合は、質問時にcを入力することで再度キャリビュレーション実施できます。
SO101
lerobot-calibrate \
--robot.type= so101_follower \
--robot.port={{ ROBOT_PORT }} \
--robot.id= my_follower_arm
キャリブレーション結果は、~/.cache/huggingface/lerobot/calibration/robots/so_follower/my_follower_arm.jsonに保存されます。
Teleportation
lerobot-teleoperate \
--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
データセット収集(新規)
Info
データセットを新規で収集する場合に、すでに同じ名前のデータセットが存在しているとエラーが出ますので、先にフォルダ毎削除します。
Info
dataset.episode_time_sが収集秒数、dataset.reset_time_sが次のepisodeまでのじかん、dataset.num_episodesが収集する回数となります。
Jetson MacBook(conda)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 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 \
--dataset.repo_id={{ DATASET_REPO_ID }} \
--dataset.root={{ DATASET_DIR }} \
--dataset.push_to_hub= false \
--dataset.single_task= "Pick up the red cube" \
--robot.cameras= "{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: 'MJPG'}}" \
--display_data= true \
--dataset.episode_time_s= 10 \
--dataset.reset_time_s= 5 \
--dataset.num_episodes= 30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 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 \
--dataset.repo_id={{ DATASET_REPO_ID }} \
--dataset.root={{ DATASET_DIR }} \
--dataset.push_to_hub= false \
--dataset.single_task= "Pick up the red cube" \
--robot.cameras= "{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: 'MJPG'}}" \
--dataset.vcodec= h264 \
--display_data= true \
--dataset.episode_time_s= 10 \
--dataset.reset_time_s= 5 \
--dataset.num_episodes= 30
データセット収集(追加)
Info
--resume=trueを指定する事で、既存データセットに追加でデータセットを追加可能です。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 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 \
--dataset.repo_id={{ DATASET_REPO_ID }} \
--dataset.root={{ DATASET_DIR }} \
--dataset.push_to_hub= false \
--dataset.single_task= "Pick up the red cube" \
--robot.cameras= "{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: 'MJPG'}}" \
--display_data= true \
--dataset.episode_time_s= 10 \
--dataset.reset_time_s= 5 \
--dataset.num_episodes= 5 \
--resume= true
学習(新規)
Info
環境にffmpegが入っていない場合は、
conda install -c conda-forge ffmpeg=7.1.1 でインストールしてください。
学習回数は、lerobot/lerobot/configs/train.pyのsteps数で調整。Jetsonの場合、4000 stepsぐらいで試していくといいでしょう。1万〜2万Stepsぐらいを目安に調整していきます。
目安の学習時間
デバイス
GPU
学習時間
M4 Mac
mps
3時間
学習(継続)
{{ TRAIN_CONFIG_PATH }}
のstepsの項目に、学習(新規)で指定したstepsが記載されているので、その部分を修正し再学習します。
# "steps" : 10000 ,
"steps" : 15000 ,
lerobot-train \
--config_path={{ TRAIN_CONFIG_PATH }} \
--resume= true
推論実行
rm -rf {{ EVAL_DATASET_DIR }}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 lerobot-record \
--robot.type= so101_follower \
--robot.port={{ ROBOT_PORT }} \
--robot.id= my_follower_arm \
--robot.cameras= "{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: 'MJPG'}}" \
--display_data= true \
--dataset.root={{ EVAL_DATASET_DIR }} \
--dataset.repo_id={{ EVAL_DATASET_REPO_ID }} \
--dataset.single_task= "Grasp a lego block and put it in the bin." \
--dataset.fps= 30 \
--dataset.episode_time_s= 120 \
--dataset.reset_time_s= 30 \
--dataset.num_episodes= 10 \
--dataset.tags= '["tutorial"]' \
--dataset.push_to_hub= false \
--policy.path={{ POLICY_PATH }}
リファレンス
https://huggingface.co/docs/lerobot/so101