diff --git a/examples/rac/rac_data_collection_openarms.py b/examples/rac/rac_data_collection_openarms.py index 2ee797ea8..63fb4c236 100644 --- a/examples/rac/rac_data_collection_openarms.py +++ b/examples/rac/rac_data_collection_openarms.py @@ -275,10 +275,7 @@ def rac_rollout_loop( if events["correction_active"]: # Human controlling - record correction data with soft gains robot_action = teleop.get_action() - # Use lower gains for smoother human control - soft_kp = {k.removesuffix(".pos"): 60.0 for k in robot_action if k.endswith(".pos")} - soft_kd = {k.removesuffix(".pos"): 1.5 for k in robot_action if k.endswith(".pos")} - robot.send_action(robot_action, custom_kp=soft_kp, custom_kd=soft_kd) + robot.send_action(robot_action) stats["correction_frames"] += 1 # Record this frame diff --git a/src/lerobot/datasets/lerobot_dataset.py b/src/lerobot/datasets/lerobot_dataset.py index ac0b930ca..41581d2d0 100644 --- a/src/lerobot/datasets/lerobot_dataset.py +++ b/src/lerobot/datasets/lerobot_dataset.py @@ -1202,42 +1202,8 @@ class LeRobotDataset(torch.utils.data.Dataset): if has_video_keys and not use_batched_encoding: video_paths = self._encode_multiple_temporary_episode_videos(self.meta.video_keys, episode_index) - for (video_key, video_path) in zip(self.meta.video_keys, video_paths): + for video_key, video_path in zip(self.meta.video_keys, video_paths): ep_metadata.update(self._save_episode_video(video_key, episode_index, video_path)) - num_cameras = len(self.meta.video_keys) - if parallel_encoding and num_cameras > 1: - # TODO(Steven): Ideally we would like to control the number of threads per encoding such that: - # num_cameras * num_threads = (total_cpu -1) - with concurrent.futures.ProcessPoolExecutor(max_workers=num_cameras) as executor: - future_to_key = { - executor.submit( - _encode_video_worker, - video_key, - episode_index, - self.root, - self.fps, - ): video_key - for video_key in self.meta.video_keys - } - - results = {} - for future in concurrent.futures.as_completed(future_to_key): - video_key = future_to_key[future] - try: - temp_path = future.result() - results[video_key] = temp_path - except Exception as exc: - logging.error(f"Video encoding failed for {video_key}: {exc}") - raise exc - - for video_key in self.meta.video_keys: - temp_path = results[video_key] - ep_metadata.update( - self._save_episode_video(video_key, episode_index, temp_path=temp_path) - ) - else: - for video_key in self.meta.video_keys: - ep_metadata.update(self._save_episode_video(video_key, episode_index)) # `meta.save_episode` need to be executed after encoding the videos self.meta.save_episode(episode_index, episode_length, episode_tasks, ep_stats, ep_metadata) diff --git a/src/lerobot/teleoperators/openarms_mini/openarms_mini.py b/src/lerobot/teleoperators/openarms_mini/openarms_mini.py index d0eb22740..7297b1293 100644 --- a/src/lerobot/teleoperators/openarms_mini/openarms_mini.py +++ b/src/lerobot/teleoperators/openarms_mini/openarms_mini.py @@ -293,7 +293,7 @@ class OpenArmsMini(Teleoperator): start = time.perf_counter() # Motors to flip (invert direction) - different for each arm - right_motors_to_flip = ["joint_1", "joint_2", "joint_3", "joint_4", "joint_5"] + right_motors_to_flip = ["joint_1", "joint_2", "joint_3", "joint_4", "joint_5", "joint_7"] left_motors_to_flip = ["joint_1", "joint_3", "joint_4", "joint_5", "joint_6", "joint_7"] # Joint mapping: leader joint 6 -> follower joint 7, leader joint 7 -> follower joint 6 @@ -330,7 +330,7 @@ class OpenArmsMini(Teleoperator): feedback: Dictionary with motor positions (e.g., "right_joint_1.pos", "left_joint_2.pos") """ # Motors to flip (invert direction) -> matches get_action() - right_motors_to_flip = ["joint_1", "joint_2", "joint_3", "joint_4", "joint_5"] + right_motors_to_flip = ["joint_1", "joint_2", "joint_3", "joint_4", "joint_5", "joint_7"] left_motors_to_flip = ["joint_1", "joint_3", "joint_4", "joint_5", "joint_6", "joint_7"] # Reverse joint mapping: follower joint 7 -> leader joint 6, follower joint 6 -> leader joint 7 @@ -397,7 +397,7 @@ class OpenArmsMini(Teleoperator): # Reverse joint mapping for target (follower joint 7 -> leader joint 6) joint_remap = {"joint_7": "joint_6", "joint_6": "joint_7"} - right_motors_to_flip = ["joint_1", "joint_2", "joint_3", "joint_4", "joint_5"] + right_motors_to_flip = ["joint_1", "joint_2", "joint_3", "joint_4", "joint_5", "joint_7"] left_motors_to_flip = ["joint_1", "joint_3", "joint_4", "joint_5", "joint_6", "joint_7"] # Parse target and apply remapping/flipping