by The Robot Learning Company
TRLC-DK1 v0.2.0 Follower CAD (Fusion)
|
TRLC-DK1 v0.2.0 Leader CAD (Fusion)
|
conda create -n dk1 python=3.10
conda activate dk1
pip install -e .
(This should also install TRLC's fork of LeRobot and use branch trlc-dk1)
Use LeRobot's CLI to identify your teleop and robot ports:
lerobot-find-port
Teleoperation
lerobot-teleoperate \
--robot.type=dk1_follower \
--robot.port=/dev/tty.usbmodem00000000050C1 \
--robot.joint_velocity_scaling=0.5 \
--robot.cameras="{
context: {type: opencv, index_or_path: 0, width: 1280, height: 720, fps: 30},
wrist: {type: opencv, index_or_path: 1, width: 1280, height: 720, fps: 30}
}" \
--teleop.type=dk1_leader \
--teleop.port=/dev/tty.usbmodem58FA0824311 \
--display_data=trueRecording
lerobot-record \
--robot.type=dk1_follower \
--robot.port=/dev/tty.usbmodem00000000050C1 \
--robot.joint_velocity_scaling=1.0 \
--robot.cameras="{
context: {type: opencv, index_or_path: 0, width: 640, height: 360, fps: 30},
wrist: {type: opencv, index_or_path: 1, width: 640, height: 360, fps: 30}
}" \
--teleop.type=dk1_leader \
--teleop.port=/dev/tty.usbmodem58FA0824311 \
--display_data=true \
--dataset.repo_id=$USER/my_dataset \
--dataset.push_to_hub=false \
--dataset.num_episodes=50 \
--dataset.episode_time_s=30 \
--dataset.reset_time_s=15 \
--dataset.single_task="My task description." --resume=trueInference
lerobot-record \
--robot.type=dk1_follower \
--robot.port=/dev/tty.usbmodem00000000050C1 \
--robot.joint_velocity_scaling=0.5 \
--robot.cameras="{
context: {type: opencv, index_or_path: 0, width: 640, height: 360, fps: 30},
wrist: {type: opencv, index_or_path: 1, width: 640, height: 360, fps: 30}
}"
--display_data=true \
--dataset.repo_id=$USER/eval_my_model \
--dataset.single_task="My task description." \
--dataset.push_to_hub=false \
--policy.path=outputs/my_model/checkpoints/last/pretrained_modelBimanual Teleoperation
lerobot-teleoperate \
--robot.type=bi_dk1_follower \
--robot.right_arm_port=/dev/ttyACM0 \
--robot.left_arm_port=/dev/ttyACM1 \
--robot.joint_velocity_scaling=1.0 \
--robot.cameras="{
context: {type: opencv, index_or_path: 2, width: 640, height: 360, fps: 30},
right_wrist: {type: opencv, index_or_path: 4, width: 640, height: 360, fps: 30},
left_wrist: {type: opencv, index_or_path: 0, width: 640, height: 360, fps: 30},
}" \
--teleop.type=bi_dk1_leader \
--teleop.right_arm_port=/dev/ttyACM2 \
--teleop.left_arm_port=/dev/ttyACM3 \
--display_data=true \
--display_url=100.88.6.81Bimanual Recording
lerobot-record \
--robot.type=bi_dk1_follower \
--robot.right_arm_port=/dev/ttyACM0 \
--robot.left_arm_port=/dev/ttyACM1 \
--robot.joint_velocity_scaling=1.0 \
--robot.cameras="{
context: {type: opencv, index_or_path: 2, width: 640, height: 360, fps: 30},
right_wrist: {type: opencv, index_or_path: 4, width: 640, height: 360, fps: 30},
left_wrist: {type: opencv, index_or_path: 0, width: 640, height: 360, fps: 30},
}" \
--teleop.type=bi_dk1_leader \
--teleop.right_arm_port=/dev/ttyACM2 \
--teleop.left_arm_port=/dev/ttyACM3 \
--dataset.repo_id=$USER/disassemble_lego \
--dataset.push_to_hub=false \
--dataset.num_episodes=40 \
--dataset.episode_time_s=180 \
--dataset.reset_time_s=120 \
--dataset.single_task="Disassemble the Lego and sort it." \
--dataset.reset_time_s=120 \
--resume=trueA high-quality URDF file was developed by community member Andreas Köpf: andreaskoepf/trlc-dk1-follower-urdf
- GELLO by Philipp Wu et al.
- Low-Cost Robot Arm by Alexander Koch
- LeRobot by HuggingFace, Inc.
- SO-100 by TheRobotStudio
- OpenArm by Enactic, Inc.


