##portの検索 lerobot-find-port
##カメラを探す lerobot-find-cameras
##モーターの登録
#follower
lerobot-setup-motors
--robot.type=so101_follower
--robot.port=/dev/ttyACM1
#leader
lerobot-setup-motors
--teleop.type=so101_leader
--teleop.port=/dev/ttyACM1
##calibrationの実行
#follower
lerobot-calibrate
--robot.type=so101_follower
--robot.port=/dev/ttyACM0
--robot.id=my_follower
#leader
lerobot-calibrate
--teleop.type=so101_leader
--teleop.port=/dev/ttyACM1
--teleop.id=my_leader
##テレオペ(録画なし)
lerobot-teleoperate
--robot.type=so101_follower
--robot.port=/dev/ttyACM0
--robot.id=my_follower
--robot.cameras="{ front: {type: opencv, index_or_path: 8, width: 640, height: 480, fps: 30, fourcc: MJPG}, side: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: MJPG}, gripper: {type: opencv, index_or_path: 6, width: 640, height: 480, fps: 30, fourcc: MJPG}}"
--teleop.type=so101_leader
--teleop.port=/dev/ttyACM1
--teleop.id=my_leader
--display_data=true
##テレオペ(録画あり)
lerobot-record
--robot.type=so101_follower
--robot.port=/dev/ttyACM0
--robot.id=my_follower
--robot.cameras="{ front: {type: opencv, index_or_path: 8, width: 640, height: 480, fps: 30, fourcc: MJPG}, side: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: MJPG}, gripper: {type: opencv, index_or_path: 6, width: 640, height: 480, fps: 30, fourcc: MJPG}}"
--teleop.type=so101_leader
--teleop.port=/dev/ttyACM1
--teleop.id=my_leader
--dataset.repo_id=local/20260609_pick_bin_and_place_v043_00
--dataset.single_task="pick a white object and place it in circle"
--dataset.num_episodes=25
--dataset.episode_time_s=60
--dataset.reset_time_s=15
--dataset.push_to_hub=False
#結果の再生
lerobot-replay
--robot.type=so101_follower
--robot.port=/dev/ttyACM0
--robot.id=my_follower
--dataset.repo_id=local/20260609_pick_bin_and_place_v043_00
--dataset.episode=0
--display_data=true
#学習
lerobot-train
--dataset.repo_id=local/20260609_pick_bin_and_place_v043_00
--policy.type=act
--policy.repo_id=local/20260609_act_pick_bin_and_place_v043_round00
--output_dir=outputs/train/20260609_act_pick_bin_and_place_v043_round00
--job_name=20260609_act_pick_bin_and_place_v043_round00
--policy.device=cuda
--wandb.enable=false
--steps=20000
--save_checkpoint=true
--save_freq=5000
#推論
lerobot-record
--robot.type=so101_follower
--robot.port=/dev/ttyACM0
--robot.id=my_follower
--teleop.type=so101_leader
--teleop.port=/dev/ttyACM1
--teleop.id=my_leader
--robot.cameras="{ front: {type: opencv, index_or_path: 8, width: 640, height: 480, fps: 30, fourcc: MJPG}, side: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: MJPG}, gripper: {type: opencv, index_or_path: 6, width: 640, height: 480, fps: 30, fourcc: MJPG}}"
--policy.path=outputs/train/20260609_act_pick_bin_and_place_v043_round00/checkpoints/last/pretrained_model
--policy.device=cuda
--dataset.repo_id=local/eval_20260609_pick_bin_and_place_v043_round00_1
--dataset.single_task="pick a white object and place it in circle"
--dataset.num_episodes=5
--dataset.episode_time_s=60
--dataset.reset_time_s=15
--dataset.push_to_hub=false
python serl_test/hil_record_policy_pause_0.4.3.py
--robot.type=so101_follower
--robot.port=/dev/ttyACM0
--robot.id=my_follower
--robot.cameras="{ front: {type: opencv, index_or_path: 8, width: 640, height: 480, fps: 30, fourcc: MJPG}, side: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: MJPG}, gripper: {type: opencv, index_or_path: 6, width: 640, height: 480, fps: 30, fourcc: MJPG}}"
--teleop.type=so101_leader
--teleop.port=/dev/ttyACM1
--teleop.id=my_leader
--policy.path=outputs/train/20260609_act_pick_bin_and_place_v043_round00/checkpoints/last/pretrained_model
--dataset.repo_id=local/eval_hil_act_043_test_00
--dataset.single_task="pick a white object and place it in circle"
--dataset.num_episodes=1
--dataset.episode_time_s=60
--dataset.reset_time_s=10
--dataset.push_to_hub=false
--display_data=false
python serl_test/replay_motor_log_viewer.py
--repo_id=local/motor_log_save_test
--episode_index=2
--motor_status Present_Current
--real_time
--no_action
--no_state
--session_name=motor_only_viewer
python serl_test/hil_record_hil_alignment_0.4.3.py --robot.type=so101_follower --robot.port=/dev/ttyACM0 --robot.id=my_follower --robot.cameras="{ front: {type: opencv, index_or_path: 8, width: 640, height: 480, fps: 30, fourcc: MJPG}, top: {type: opencv, index_or_path: 6, width: 640, height: 480, fps: 30, fourcc: MJPG}, gripper: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: MJPG}}" --teleop.type=so101_leader --teleop.port=/dev/ttyACM1 --teleop.id=my_leader --policy.path=outputs/train/20260618_act_pick_and_place_round03_500k/checkpoints/300000/pretrained_model --dataset.repo_id=local/eval_hil_auto_align_test_06 --dataset.single_task="pick a white object and place it in circle" --dataset.num_episodes=1 --dataset.episode_time_s=180 --dataset.reset_time_s=10 --dataset.push_to_hub=false --display_data=false --leader_alignment_mode=auto_optional --dataset_save_mode=policy_and_intervention --motor_log=true
python serl_test/make_hil_presentation_video.py --repo_id=local/eval_hil_auto_align_test_05 --episode_index=0 --output=episode_000000_presentation.mp4 --motor_names gripper shoulder_lift wrist_flex --motor_status Present_Position Present_Velocity Present_Load Present_Current --y_buffer_ratio=0.08 --timeline_panel_height=150 --frame_stride=3