fix direction and encoding

This commit is contained in:
Pepijn
2026-01-01 16:37:11 +01:00
parent aba42c805f
commit dfd229ae4f
3 changed files with 5 additions and 42 deletions
+1 -4
View File
@@ -275,10 +275,7 @@ def rac_rollout_loop(
if events["correction_active"]: if events["correction_active"]:
# Human controlling - record correction data with soft gains # Human controlling - record correction data with soft gains
robot_action = teleop.get_action() robot_action = teleop.get_action()
# Use lower gains for smoother human control robot.send_action(robot_action)
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)
stats["correction_frames"] += 1 stats["correction_frames"] += 1
# Record this frame # Record this frame
+1 -35
View File
@@ -1202,42 +1202,8 @@ class LeRobotDataset(torch.utils.data.Dataset):
if has_video_keys and not use_batched_encoding: if has_video_keys and not use_batched_encoding:
video_paths = self._encode_multiple_temporary_episode_videos(self.meta.video_keys, episode_index) 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)) 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 # `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) self.meta.save_episode(episode_index, episode_length, episode_tasks, ep_stats, ep_metadata)
@@ -293,7 +293,7 @@ class OpenArmsMini(Teleoperator):
start = time.perf_counter() start = time.perf_counter()
# Motors to flip (invert direction) - different for each arm # 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"] 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 # 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") feedback: Dictionary with motor positions (e.g., "right_joint_1.pos", "left_joint_2.pos")
""" """
# Motors to flip (invert direction) -> matches get_action() # 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"] 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 # 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) # Reverse joint mapping for target (follower joint 7 -> leader joint 6)
joint_remap = {"joint_7": "joint_6", "joint_6": "joint_7"} 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"] left_motors_to_flip = ["joint_1", "joint_3", "joint_4", "joint_5", "joint_6", "joint_7"]
# Parse target and apply remapping/flipping # Parse target and apply remapping/flipping