From 4a6d7f44f1dc132cdc83cb355aeb5cac420a0ee4 Mon Sep 17 00:00:00 2001 From: Nikodem Bartnik Date: Mon, 18 May 2026 09:37:16 +0200 Subject: [PATCH] update teleoperate with cameras --- docs/source/il_robots.mdx | 44 ++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/docs/source/il_robots.mdx b/docs/source/il_robots.mdx index a12bda1ee..a99938c70 100644 --- a/docs/source/il_robots.mdx +++ b/docs/source/il_robots.mdx @@ -122,34 +122,48 @@ lerobot-teleoperate \ ```python +import time +from lerobot.teleoperators.so_leader import SO101Leader, SO101LeaderConfig +from lerobot.robots.so_follower import SO101Follower, SO101FollowerConfig from lerobot.cameras.opencv import OpenCVCameraConfig -from lerobot.teleoperators.koch_leader import KochLeader, KochLeaderConfig -from lerobot.robots.koch_follower import KochFollower, KochFollowerConfig +from lerobot.utils.visualization_utils import init_rerun, log_rerun_data, shutdown_rerun -camera_config = { - "front": OpenCVCameraConfig(index_or_path=0, width=1920, height=1080, fps=30) -} - -robot_config = KochFollowerConfig( - port="/dev/tty.usbmodem585A0076841", - id="my_red_robot_arm", - cameras=camera_config +robot_config = SO101FollowerConfig( + port="/dev/tty.usbmodem5AB90687491", + id="my_follower_arm", + cameras={ + "wrist": OpenCVCameraConfig(index_or_path=0, width=640, height=480, fps=30), + "top": OpenCVCameraConfig(index_or_path=1, width=640, height=480, fps=30) + } ) -teleop_config = KochLeaderConfig( - port="/dev/tty.usbmodem58760431551", - id="my_blue_leader_arm", +teleop_config = SO101LeaderConfig( + port="/dev/tty.usbmodem5AB90689011", + id="my_leader_arm", ) -robot = KochFollower(robot_config) -teleop_device = KochLeader(teleop_config) +init_rerun(session_name="teleoperation") + +robot = SO101Follower(robot_config) +teleop_device = SO101Leader(teleop_config) robot.connect() teleop_device.connect() +TARGET_HZ = 30 +TIME_PER_FRAME = 1.0 / TARGET_HZ + while True: + start_time = time.perf_counter() + observation = robot.get_observation() action = teleop_device.get_action() robot.send_action(action) + log_rerun_data(observation=observation, action=action) + + elapsed_time = time.perf_counter() - start_time + sleep_time = TIME_PER_FRAME - elapsed_time + if sleep_time > 0: + time.sleep(sleep_time) ```