Reorganize files
This commit is contained in:
parent
eecf32e77a
commit
21cd2940a9
|
@ -17,8 +17,8 @@ from threading import Thread
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
from lerobot.common.robot_devices.cameras.configs import IntelRealSenseCameraConfig
|
from lerobot.common.cameras.configs import IntelRealSenseCameraConfig
|
||||||
from lerobot.common.robot_devices.utils import (
|
from lerobot.common.utils.robot_utils import (
|
||||||
RobotDeviceAlreadyConnectedError,
|
RobotDeviceAlreadyConnectedError,
|
||||||
RobotDeviceNotConnectedError,
|
RobotDeviceNotConnectedError,
|
||||||
busy_wait,
|
busy_wait,
|
|
@ -15,8 +15,8 @@ from threading import Thread
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
from lerobot.common.robot_devices.cameras.configs import OpenCVCameraConfig
|
from lerobot.common.cameras.configs import OpenCVCameraConfig
|
||||||
from lerobot.common.robot_devices.utils import (
|
from lerobot.common.utils.robot_utils import (
|
||||||
RobotDeviceAlreadyConnectedError,
|
RobotDeviceAlreadyConnectedError,
|
||||||
RobotDeviceNotConnectedError,
|
RobotDeviceNotConnectedError,
|
||||||
busy_wait,
|
busy_wait,
|
|
@ -2,7 +2,7 @@ from typing import Protocol
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
from lerobot.common.robot_devices.cameras.configs import (
|
from lerobot.common.cameras.configs import (
|
||||||
CameraConfig,
|
CameraConfig,
|
||||||
IntelRealSenseCameraConfig,
|
IntelRealSenseCameraConfig,
|
||||||
OpenCVCameraConfig,
|
OpenCVCameraConfig,
|
||||||
|
@ -22,12 +22,12 @@ def make_cameras_from_configs(camera_configs: dict[str, CameraConfig]) -> list[C
|
||||||
|
|
||||||
for key, cfg in camera_configs.items():
|
for key, cfg in camera_configs.items():
|
||||||
if cfg.type == "opencv":
|
if cfg.type == "opencv":
|
||||||
from lerobot.common.robot_devices.cameras.opencv import OpenCVCamera
|
from lerobot.common.cameras.opencv import OpenCVCamera
|
||||||
|
|
||||||
cameras[key] = OpenCVCamera(cfg)
|
cameras[key] = OpenCVCamera(cfg)
|
||||||
|
|
||||||
elif cfg.type == "intelrealsense":
|
elif cfg.type == "intelrealsense":
|
||||||
from lerobot.common.robot_devices.cameras.intelrealsense import IntelRealSenseCamera
|
from lerobot.common.cameras.intelrealsense import IntelRealSenseCamera
|
||||||
|
|
||||||
cameras[key] = IntelRealSenseCamera(cfg)
|
cameras[key] = IntelRealSenseCamera(cfg)
|
||||||
else:
|
else:
|
||||||
|
@ -38,13 +38,13 @@ def make_cameras_from_configs(camera_configs: dict[str, CameraConfig]) -> list[C
|
||||||
|
|
||||||
def make_camera(camera_type, **kwargs) -> Camera:
|
def make_camera(camera_type, **kwargs) -> Camera:
|
||||||
if camera_type == "opencv":
|
if camera_type == "opencv":
|
||||||
from lerobot.common.robot_devices.cameras.opencv import OpenCVCamera
|
from lerobot.common.cameras.opencv import OpenCVCamera
|
||||||
|
|
||||||
config = OpenCVCameraConfig(**kwargs)
|
config = OpenCVCameraConfig(**kwargs)
|
||||||
return OpenCVCamera(config)
|
return OpenCVCamera(config)
|
||||||
|
|
||||||
elif camera_type == "intelrealsense":
|
elif camera_type == "intelrealsense":
|
||||||
from lerobot.common.robot_devices.cameras.intelrealsense import IntelRealSenseCamera
|
from lerobot.common.cameras.intelrealsense import IntelRealSenseCamera
|
||||||
|
|
||||||
config = IntelRealSenseCameraConfig(**kwargs)
|
config = IntelRealSenseCameraConfig(**kwargs)
|
||||||
return IntelRealSenseCamera(config)
|
return IntelRealSenseCamera(config)
|
|
@ -69,7 +69,7 @@ from lerobot.common.datasets.video_utils import (
|
||||||
encode_video_frames,
|
encode_video_frames,
|
||||||
get_video_info,
|
get_video_info,
|
||||||
)
|
)
|
||||||
from lerobot.common.robot_devices.robots.utils import Robot
|
from lerobot.common.robots.utils import Robot
|
||||||
|
|
||||||
CODEBASE_VERSION = "v2.1"
|
CODEBASE_VERSION = "v2.1"
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ from lerobot.common.datasets.backward_compatibility import (
|
||||||
BackwardCompatibilityError,
|
BackwardCompatibilityError,
|
||||||
ForwardCompatibilityError,
|
ForwardCompatibilityError,
|
||||||
)
|
)
|
||||||
from lerobot.common.robot_devices.robots.utils import Robot
|
from lerobot.common.robots.utils import Robot
|
||||||
from lerobot.common.utils.utils import is_valid_numpy_dtype_string
|
from lerobot.common.utils.utils import is_valid_numpy_dtype_string
|
||||||
from lerobot.configs.types import DictLike, FeatureType, PolicyFeature
|
from lerobot.configs.types import DictLike, FeatureType, PolicyFeature
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ from textwrap import dedent
|
||||||
|
|
||||||
from lerobot import available_datasets
|
from lerobot import available_datasets
|
||||||
from lerobot.common.datasets.v2.convert_dataset_v1_to_v2 import convert_dataset
|
from lerobot.common.datasets.v2.convert_dataset_v1_to_v2 import convert_dataset
|
||||||
from lerobot.common.robot_devices.robots.configs import AlohaRobotConfig
|
from lerobot.common.robots.configs import AlohaRobotConfig
|
||||||
|
|
||||||
LOCAL_DIR = Path("data/")
|
LOCAL_DIR = Path("data/")
|
||||||
|
|
||||||
|
|
|
@ -141,8 +141,8 @@ from lerobot.common.datasets.video_utils import (
|
||||||
get_image_pixel_channels,
|
get_image_pixel_channels,
|
||||||
get_video_info,
|
get_video_info,
|
||||||
)
|
)
|
||||||
from lerobot.common.robot_devices.robots.configs import RobotConfig
|
from lerobot.common.robots.configs import RobotConfig
|
||||||
from lerobot.common.robot_devices.robots.utils import make_robot_config
|
from lerobot.common.robots.utils import make_robot_config
|
||||||
|
|
||||||
V16 = "v1.6"
|
V16 = "v1.6"
|
||||||
V20 = "v2.0"
|
V20 = "v2.0"
|
||||||
|
|
|
@ -8,8 +8,8 @@ from copy import deepcopy
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import tqdm
|
import tqdm
|
||||||
|
|
||||||
from lerobot.common.robot_devices.motors.configs import DynamixelMotorsBusConfig
|
from lerobot.common.motors.configs import DynamixelMotorsBusConfig
|
||||||
from lerobot.common.robot_devices.utils import RobotDeviceAlreadyConnectedError, RobotDeviceNotConnectedError
|
from lerobot.common.utils.robot_utils import RobotDeviceAlreadyConnectedError, RobotDeviceNotConnectedError
|
||||||
from lerobot.common.utils.utils import capture_timestamp_utc
|
from lerobot.common.utils.utils import capture_timestamp_utc
|
||||||
|
|
||||||
PROTOCOL_VERSION = 2.0
|
PROTOCOL_VERSION = 2.0
|
|
@ -3,12 +3,12 @@
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
from lerobot.common.robot_devices.motors.dynamixel import (
|
from lerobot.common.motors.dynamixel import (
|
||||||
CalibrationMode,
|
CalibrationMode,
|
||||||
TorqueMode,
|
TorqueMode,
|
||||||
convert_degrees_to_steps,
|
convert_degrees_to_steps,
|
||||||
)
|
)
|
||||||
from lerobot.common.robot_devices.motors.utils import MotorsBus
|
from lerobot.common.motors.utils import MotorsBus
|
||||||
|
|
||||||
URL_TEMPLATE = (
|
URL_TEMPLATE = (
|
||||||
"https://raw.githubusercontent.com/huggingface/lerobot/main/media/{robot}/{arm}_{position}.webp"
|
"https://raw.githubusercontent.com/huggingface/lerobot/main/media/{robot}/{arm}_{position}.webp"
|
|
@ -8,8 +8,8 @@ from copy import deepcopy
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import tqdm
|
import tqdm
|
||||||
|
|
||||||
from lerobot.common.robot_devices.motors.configs import FeetechMotorsBusConfig
|
from lerobot.common.motors.configs import FeetechMotorsBusConfig
|
||||||
from lerobot.common.robot_devices.utils import RobotDeviceAlreadyConnectedError, RobotDeviceNotConnectedError
|
from lerobot.common.utils.robot_utils import RobotDeviceAlreadyConnectedError, RobotDeviceNotConnectedError
|
||||||
from lerobot.common.utils.utils import capture_timestamp_utc
|
from lerobot.common.utils.utils import capture_timestamp_utc
|
||||||
|
|
||||||
PROTOCOL_VERSION = 0
|
PROTOCOL_VERSION = 0
|
|
@ -5,12 +5,12 @@ import time
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
from lerobot.common.robot_devices.motors.feetech import (
|
from lerobot.common.motors.feetech import (
|
||||||
CalibrationMode,
|
CalibrationMode,
|
||||||
TorqueMode,
|
TorqueMode,
|
||||||
convert_degrees_to_steps,
|
convert_degrees_to_steps,
|
||||||
)
|
)
|
||||||
from lerobot.common.robot_devices.motors.utils import MotorsBus
|
from lerobot.common.motors.utils import MotorsBus
|
||||||
|
|
||||||
URL_TEMPLATE = (
|
URL_TEMPLATE = (
|
||||||
"https://raw.githubusercontent.com/huggingface/lerobot/main/media/{robot}/{arm}_{position}.webp"
|
"https://raw.githubusercontent.com/huggingface/lerobot/main/media/{robot}/{arm}_{position}.webp"
|
|
@ -1,6 +1,6 @@
|
||||||
from typing import Protocol
|
from typing import Protocol
|
||||||
|
|
||||||
from lerobot.common.robot_devices.motors.configs import (
|
from lerobot.common.motors.configs import (
|
||||||
DynamixelMotorsBusConfig,
|
DynamixelMotorsBusConfig,
|
||||||
FeetechMotorsBusConfig,
|
FeetechMotorsBusConfig,
|
||||||
MotorsBusConfig,
|
MotorsBusConfig,
|
||||||
|
@ -21,12 +21,12 @@ def make_motors_buses_from_configs(motors_bus_configs: dict[str, MotorsBusConfig
|
||||||
|
|
||||||
for key, cfg in motors_bus_configs.items():
|
for key, cfg in motors_bus_configs.items():
|
||||||
if cfg.type == "dynamixel":
|
if cfg.type == "dynamixel":
|
||||||
from lerobot.common.robot_devices.motors.dynamixel import DynamixelMotorsBus
|
from lerobot.common.motors.dynamixel import DynamixelMotorsBus
|
||||||
|
|
||||||
motors_buses[key] = DynamixelMotorsBus(cfg)
|
motors_buses[key] = DynamixelMotorsBus(cfg)
|
||||||
|
|
||||||
elif cfg.type == "feetech":
|
elif cfg.type == "feetech":
|
||||||
from lerobot.common.robot_devices.motors.feetech import FeetechMotorsBus
|
from lerobot.common.motors.feetech import FeetechMotorsBus
|
||||||
|
|
||||||
motors_buses[key] = FeetechMotorsBus(cfg)
|
motors_buses[key] = FeetechMotorsBus(cfg)
|
||||||
|
|
||||||
|
@ -38,13 +38,13 @@ def make_motors_buses_from_configs(motors_bus_configs: dict[str, MotorsBusConfig
|
||||||
|
|
||||||
def make_motors_bus(motor_type: str, **kwargs) -> MotorsBus:
|
def make_motors_bus(motor_type: str, **kwargs) -> MotorsBus:
|
||||||
if motor_type == "dynamixel":
|
if motor_type == "dynamixel":
|
||||||
from lerobot.common.robot_devices.motors.dynamixel import DynamixelMotorsBus
|
from lerobot.common.motors.dynamixel import DynamixelMotorsBus
|
||||||
|
|
||||||
config = DynamixelMotorsBusConfig(**kwargs)
|
config = DynamixelMotorsBusConfig(**kwargs)
|
||||||
return DynamixelMotorsBus(config)
|
return DynamixelMotorsBus(config)
|
||||||
|
|
||||||
elif motor_type == "feetech":
|
elif motor_type == "feetech":
|
||||||
from lerobot.common.robot_devices.motors.feetech import FeetechMotorsBus
|
from lerobot.common.motors.feetech import FeetechMotorsBus
|
||||||
|
|
||||||
config = FeetechMotorsBusConfig(**kwargs)
|
config = FeetechMotorsBusConfig(**kwargs)
|
||||||
return FeetechMotorsBus(config)
|
return FeetechMotorsBus(config)
|
|
@ -4,12 +4,12 @@ from typing import Sequence
|
||||||
|
|
||||||
import draccus
|
import draccus
|
||||||
|
|
||||||
from lerobot.common.robot_devices.cameras.configs import (
|
from lerobot.common.cameras.configs import (
|
||||||
CameraConfig,
|
CameraConfig,
|
||||||
IntelRealSenseCameraConfig,
|
IntelRealSenseCameraConfig,
|
||||||
OpenCVCameraConfig,
|
OpenCVCameraConfig,
|
||||||
)
|
)
|
||||||
from lerobot.common.robot_devices.motors.configs import (
|
from lerobot.common.motors.configs import (
|
||||||
DynamixelMotorsBusConfig,
|
DynamixelMotorsBusConfig,
|
||||||
FeetechMotorsBusConfig,
|
FeetechMotorsBusConfig,
|
||||||
MotorsBusConfig,
|
MotorsBusConfig,
|
|
@ -7,7 +7,7 @@ from pathlib import Path
|
||||||
import cv2
|
import cv2
|
||||||
import zmq
|
import zmq
|
||||||
|
|
||||||
from lerobot.common.robot_devices.robots.mobile_manipulator import LeKiwi
|
from lerobot.common.robots.mobile_manipulator import LeKiwi
|
||||||
|
|
||||||
|
|
||||||
def setup_zmq_sockets(config):
|
def setup_zmq_sockets(config):
|
||||||
|
@ -47,7 +47,7 @@ def calibrate_follower_arm(motors_bus, calib_dir_str):
|
||||||
calib_dir.mkdir(parents=True, exist_ok=True)
|
calib_dir.mkdir(parents=True, exist_ok=True)
|
||||||
calib_file = calib_dir / "main_follower.json"
|
calib_file = calib_dir / "main_follower.json"
|
||||||
try:
|
try:
|
||||||
from lerobot.common.robot_devices.robots.feetech_calibration import run_arm_manual_calibration
|
from lerobot.common.motors.feetech_calibration import run_arm_manual_calibration
|
||||||
except ImportError:
|
except ImportError:
|
||||||
print("[WARNING] Calibration function not available. Skipping calibration.")
|
print("[WARNING] Calibration function not available. Skipping calibration.")
|
||||||
return
|
return
|
||||||
|
@ -79,8 +79,8 @@ def run_lekiwi(robot_config):
|
||||||
- Processes incoming commands (arm and wheel commands) and sends back sensor and camera data.
|
- Processes incoming commands (arm and wheel commands) and sends back sensor and camera data.
|
||||||
"""
|
"""
|
||||||
# Import helper functions and classes
|
# Import helper functions and classes
|
||||||
from lerobot.common.robot_devices.cameras.utils import make_cameras_from_configs
|
from lerobot.common.cameras.utils import make_cameras_from_configs
|
||||||
from lerobot.common.robot_devices.motors.feetech import FeetechMotorsBus, TorqueMode
|
from lerobot.common.motors.feetech import FeetechMotorsBus, TorqueMode
|
||||||
|
|
||||||
# Initialize cameras from the robot configuration.
|
# Initialize cameras from the robot configuration.
|
||||||
cameras = make_cameras_from_configs(robot_config.cameras)
|
cameras = make_cameras_from_configs(robot_config.cameras)
|
|
@ -13,11 +13,11 @@ from pathlib import Path
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import torch
|
import torch
|
||||||
|
|
||||||
from lerobot.common.robot_devices.cameras.utils import make_cameras_from_configs
|
from lerobot.common.cameras.utils import make_cameras_from_configs
|
||||||
from lerobot.common.robot_devices.motors.utils import MotorsBus, make_motors_buses_from_configs
|
from lerobot.common.motors.utils import MotorsBus, make_motors_buses_from_configs
|
||||||
from lerobot.common.robot_devices.robots.configs import ManipulatorRobotConfig
|
from lerobot.common.robots.configs import ManipulatorRobotConfig
|
||||||
from lerobot.common.robot_devices.robots.utils import get_arm_id
|
from lerobot.common.robots.utils import get_arm_id
|
||||||
from lerobot.common.robot_devices.utils import RobotDeviceAlreadyConnectedError, RobotDeviceNotConnectedError
|
from lerobot.common.utils.robot_utils import RobotDeviceAlreadyConnectedError, RobotDeviceNotConnectedError
|
||||||
|
|
||||||
|
|
||||||
def ensure_safe_goal_position(
|
def ensure_safe_goal_position(
|
||||||
|
@ -228,9 +228,9 @@ class ManipulatorRobot:
|
||||||
self.leader_arms[name].connect()
|
self.leader_arms[name].connect()
|
||||||
|
|
||||||
if self.robot_type in ["koch", "koch_bimanual", "aloha"]:
|
if self.robot_type in ["koch", "koch_bimanual", "aloha"]:
|
||||||
from lerobot.common.robot_devices.motors.dynamixel import TorqueMode
|
from lerobot.common.motors.dynamixel import TorqueMode
|
||||||
elif self.robot_type in ["so100", "moss", "lekiwi"]:
|
elif self.robot_type in ["so100", "moss", "lekiwi"]:
|
||||||
from lerobot.common.robot_devices.motors.feetech import TorqueMode
|
from lerobot.common.motors.feetech import TorqueMode
|
||||||
|
|
||||||
# We assume that at connection time, arms are in a rest position, and torque can
|
# We assume that at connection time, arms are in a rest position, and torque can
|
||||||
# be safely disabled to run calibration and/or set robot preset configurations.
|
# be safely disabled to run calibration and/or set robot preset configurations.
|
||||||
|
@ -295,12 +295,12 @@ class ManipulatorRobot:
|
||||||
print(f"Missing calibration file '{arm_calib_path}'")
|
print(f"Missing calibration file '{arm_calib_path}'")
|
||||||
|
|
||||||
if self.robot_type in ["koch", "koch_bimanual", "aloha"]:
|
if self.robot_type in ["koch", "koch_bimanual", "aloha"]:
|
||||||
from lerobot.common.robot_devices.robots.dynamixel_calibration import run_arm_calibration
|
from lerobot.common.motors.dynamixel_calibration import run_arm_calibration
|
||||||
|
|
||||||
calibration = run_arm_calibration(arm, self.robot_type, name, arm_type)
|
calibration = run_arm_calibration(arm, self.robot_type, name, arm_type)
|
||||||
|
|
||||||
elif self.robot_type in ["so100", "moss", "lekiwi"]:
|
elif self.robot_type in ["so100", "moss", "lekiwi"]:
|
||||||
from lerobot.common.robot_devices.robots.feetech_calibration import (
|
from lerobot.common.motors.feetech_calibration import (
|
||||||
run_arm_manual_calibration,
|
run_arm_manual_calibration,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -322,7 +322,7 @@ class ManipulatorRobot:
|
||||||
|
|
||||||
def set_koch_robot_preset(self):
|
def set_koch_robot_preset(self):
|
||||||
def set_operating_mode_(arm):
|
def set_operating_mode_(arm):
|
||||||
from lerobot.common.robot_devices.motors.dynamixel import TorqueMode
|
from lerobot.common.motors.dynamixel import TorqueMode
|
||||||
|
|
||||||
if (arm.read("Torque_Enable") != TorqueMode.DISABLED.value).any():
|
if (arm.read("Torque_Enable") != TorqueMode.DISABLED.value).any():
|
||||||
raise ValueError("To run set robot preset, the torque must be disabled on all motors.")
|
raise ValueError("To run set robot preset, the torque must be disabled on all motors.")
|
|
@ -9,13 +9,13 @@ import numpy as np
|
||||||
import torch
|
import torch
|
||||||
import zmq
|
import zmq
|
||||||
|
|
||||||
from lerobot.common.robot_devices.cameras.utils import make_cameras_from_configs
|
from lerobot.common.cameras.utils import make_cameras_from_configs
|
||||||
from lerobot.common.robot_devices.motors.feetech import TorqueMode
|
from lerobot.common.motors.feetech import TorqueMode
|
||||||
from lerobot.common.robot_devices.motors.utils import MotorsBus, make_motors_buses_from_configs
|
from lerobot.common.motors.feetech_calibration import run_arm_manual_calibration
|
||||||
from lerobot.common.robot_devices.robots.configs import LeKiwiRobotConfig
|
from lerobot.common.motors.utils import MotorsBus, make_motors_buses_from_configs
|
||||||
from lerobot.common.robot_devices.robots.feetech_calibration import run_arm_manual_calibration
|
from lerobot.common.robots.configs import LeKiwiRobotConfig
|
||||||
from lerobot.common.robot_devices.robots.utils import get_arm_id
|
from lerobot.common.robots.utils import get_arm_id
|
||||||
from lerobot.common.robot_devices.utils import RobotDeviceNotConnectedError
|
from lerobot.common.utils.robot_utils import RobotDeviceNotConnectedError
|
||||||
|
|
||||||
PYNPUT_AVAILABLE = True
|
PYNPUT_AVAILABLE = True
|
||||||
try:
|
try:
|
|
@ -22,7 +22,7 @@ from stretch_body.gamepad_teleop import GamePadTeleop
|
||||||
from stretch_body.robot import Robot as StretchAPI
|
from stretch_body.robot import Robot as StretchAPI
|
||||||
from stretch_body.robot_params import RobotParams
|
from stretch_body.robot_params import RobotParams
|
||||||
|
|
||||||
from lerobot.common.robot_devices.robots.configs import StretchRobotConfig
|
from lerobot.common.robots.configs import StretchRobotConfig
|
||||||
|
|
||||||
|
|
||||||
class StretchRobot(StretchAPI):
|
class StretchRobot(StretchAPI):
|
|
@ -1,6 +1,6 @@
|
||||||
from typing import Protocol
|
from typing import Protocol
|
||||||
|
|
||||||
from lerobot.common.robot_devices.robots.configs import (
|
from lerobot.common.robots.configs import (
|
||||||
AlohaRobotConfig,
|
AlohaRobotConfig,
|
||||||
KochBimanualRobotConfig,
|
KochBimanualRobotConfig,
|
||||||
KochRobotConfig,
|
KochRobotConfig,
|
||||||
|
@ -54,15 +54,15 @@ def make_robot_config(robot_type: str, **kwargs) -> RobotConfig:
|
||||||
|
|
||||||
def make_robot_from_config(config: RobotConfig):
|
def make_robot_from_config(config: RobotConfig):
|
||||||
if isinstance(config, ManipulatorRobotConfig):
|
if isinstance(config, ManipulatorRobotConfig):
|
||||||
from lerobot.common.robot_devices.robots.manipulator import ManipulatorRobot
|
from lerobot.common.robots.manipulator import ManipulatorRobot
|
||||||
|
|
||||||
return ManipulatorRobot(config)
|
return ManipulatorRobot(config)
|
||||||
elif isinstance(config, LeKiwiRobotConfig):
|
elif isinstance(config, LeKiwiRobotConfig):
|
||||||
from lerobot.common.robot_devices.robots.mobile_manipulator import MobileManipulator
|
from lerobot.common.robots.mobile_manipulator import MobileManipulator
|
||||||
|
|
||||||
return MobileManipulator(config)
|
return MobileManipulator(config)
|
||||||
else:
|
else:
|
||||||
from lerobot.common.robot_devices.robots.stretch import StretchRobot
|
from lerobot.common.robots.stretch3.stretch3_robot import StretchRobot
|
||||||
|
|
||||||
return StretchRobot(config)
|
return StretchRobot(config)
|
||||||
|
|
|
@ -19,8 +19,8 @@ from termcolor import colored
|
||||||
from lerobot.common.datasets.image_writer import safe_stop_image_writer
|
from lerobot.common.datasets.image_writer import safe_stop_image_writer
|
||||||
from lerobot.common.datasets.lerobot_dataset import LeRobotDataset
|
from lerobot.common.datasets.lerobot_dataset import LeRobotDataset
|
||||||
from lerobot.common.datasets.utils import get_features_from_robot
|
from lerobot.common.datasets.utils import get_features_from_robot
|
||||||
from lerobot.common.robot_devices.robots.utils import Robot
|
from lerobot.common.robots.utils import Robot
|
||||||
from lerobot.common.robot_devices.utils import busy_wait
|
from lerobot.common.utils.robot_utils import busy_wait
|
||||||
from lerobot.common.utils.utils import get_safe_torch_device, has_method
|
from lerobot.common.utils.utils import get_safe_torch_device, has_method
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ from pathlib import Path
|
||||||
|
|
||||||
import draccus
|
import draccus
|
||||||
|
|
||||||
from lerobot.common.robot_devices.robots.configs import RobotConfig
|
from lerobot.common.robots.configs import RobotConfig
|
||||||
from lerobot.common.utils.utils import auto_select_torch_device, is_amp_available, is_torch_device_available
|
from lerobot.common.utils.utils import auto_select_torch_device, is_amp_available, is_torch_device_available
|
||||||
from lerobot.configs import parser
|
from lerobot.configs import parser
|
||||||
from lerobot.configs.policies import PreTrainedConfig
|
from lerobot.configs.policies import PreTrainedConfig
|
|
@ -18,8 +18,8 @@ import time
|
||||||
|
|
||||||
def get_motor_bus_cls(brand: str) -> tuple:
|
def get_motor_bus_cls(brand: str) -> tuple:
|
||||||
if brand == "feetech":
|
if brand == "feetech":
|
||||||
from lerobot.common.robot_devices.motors.configs import FeetechMotorsBusConfig
|
from lerobot.common.motors.configs import FeetechMotorsBusConfig
|
||||||
from lerobot.common.robot_devices.motors.feetech import (
|
from lerobot.common.motors.feetech import (
|
||||||
MODEL_BAUDRATE_TABLE,
|
MODEL_BAUDRATE_TABLE,
|
||||||
SCS_SERIES_BAUDRATE_TABLE,
|
SCS_SERIES_BAUDRATE_TABLE,
|
||||||
FeetechMotorsBus,
|
FeetechMotorsBus,
|
||||||
|
@ -28,8 +28,8 @@ def get_motor_bus_cls(brand: str) -> tuple:
|
||||||
return FeetechMotorsBusConfig, FeetechMotorsBus, MODEL_BAUDRATE_TABLE, SCS_SERIES_BAUDRATE_TABLE
|
return FeetechMotorsBusConfig, FeetechMotorsBus, MODEL_BAUDRATE_TABLE, SCS_SERIES_BAUDRATE_TABLE
|
||||||
|
|
||||||
elif brand == "dynamixel":
|
elif brand == "dynamixel":
|
||||||
from lerobot.common.robot_devices.motors.configs import DynamixelMotorsBusConfig
|
from lerobot.common.motors.configs import DynamixelMotorsBusConfig
|
||||||
from lerobot.common.robot_devices.motors.dynamixel import (
|
from lerobot.common.motors.dynamixel import (
|
||||||
MODEL_BAUDRATE_TABLE,
|
MODEL_BAUDRATE_TABLE,
|
||||||
X_SERIES_BAUDRATE_TABLE,
|
X_SERIES_BAUDRATE_TABLE,
|
||||||
DynamixelMotorsBus,
|
DynamixelMotorsBus,
|
||||||
|
|
|
@ -129,15 +129,8 @@ from pprint import pformat
|
||||||
# from safetensors.torch import load_file, save_file
|
# from safetensors.torch import load_file, save_file
|
||||||
from lerobot.common.datasets.lerobot_dataset import LeRobotDataset
|
from lerobot.common.datasets.lerobot_dataset import LeRobotDataset
|
||||||
from lerobot.common.policies.factory import make_policy
|
from lerobot.common.policies.factory import make_policy
|
||||||
from lerobot.common.robot_devices.control_configs import (
|
from lerobot.common.robots.utils import Robot, make_robot_from_config
|
||||||
CalibrateControlConfig,
|
from lerobot.common.utils.control_utils import (
|
||||||
ControlPipelineConfig,
|
|
||||||
RecordControlConfig,
|
|
||||||
RemoteRobotConfig,
|
|
||||||
ReplayControlConfig,
|
|
||||||
TeleoperateControlConfig,
|
|
||||||
)
|
|
||||||
from lerobot.common.robot_devices.control_utils import (
|
|
||||||
control_loop,
|
control_loop,
|
||||||
init_keyboard_listener,
|
init_keyboard_listener,
|
||||||
log_control_info,
|
log_control_info,
|
||||||
|
@ -148,10 +141,17 @@ from lerobot.common.robot_devices.control_utils import (
|
||||||
stop_recording,
|
stop_recording,
|
||||||
warmup_record,
|
warmup_record,
|
||||||
)
|
)
|
||||||
from lerobot.common.robot_devices.robots.utils import Robot, make_robot_from_config
|
from lerobot.common.utils.robot_utils import busy_wait, safe_disconnect
|
||||||
from lerobot.common.robot_devices.utils import busy_wait, safe_disconnect
|
|
||||||
from lerobot.common.utils.utils import has_method, init_logging, log_say
|
from lerobot.common.utils.utils import has_method, init_logging, log_say
|
||||||
from lerobot.configs import parser
|
from lerobot.configs import parser
|
||||||
|
from lerobot.configs.control import (
|
||||||
|
CalibrateControlConfig,
|
||||||
|
ControlPipelineConfig,
|
||||||
|
RecordControlConfig,
|
||||||
|
RemoteRobotConfig,
|
||||||
|
ReplayControlConfig,
|
||||||
|
TeleoperateControlConfig,
|
||||||
|
)
|
||||||
|
|
||||||
########################################################################################
|
########################################################################################
|
||||||
# Control modes
|
# Control modes
|
||||||
|
@ -368,7 +368,7 @@ def control_robot(cfg: ControlPipelineConfig):
|
||||||
elif isinstance(cfg.control, ReplayControlConfig):
|
elif isinstance(cfg.control, ReplayControlConfig):
|
||||||
replay(robot, cfg.control)
|
replay(robot, cfg.control)
|
||||||
elif isinstance(cfg.control, RemoteRobotConfig):
|
elif isinstance(cfg.control, RemoteRobotConfig):
|
||||||
from lerobot.common.robot_devices.robots.lekiwi_remote import run_lekiwi
|
from lerobot.common.robots.lekiwi.lekiwi_remote import run_lekiwi
|
||||||
|
|
||||||
run_lekiwi(cfg.robot)
|
run_lekiwi(cfg.robot)
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,8 @@ import numpy as np
|
||||||
import torch
|
import torch
|
||||||
|
|
||||||
from lerobot.common.datasets.lerobot_dataset import LeRobotDataset
|
from lerobot.common.datasets.lerobot_dataset import LeRobotDataset
|
||||||
from lerobot.common.robot_devices.control_utils import (
|
from lerobot.common.robots.utils import Robot, make_robot
|
||||||
|
from lerobot.common.utils.control_utils import (
|
||||||
init_keyboard_listener,
|
init_keyboard_listener,
|
||||||
init_policy,
|
init_policy,
|
||||||
is_headless,
|
is_headless,
|
||||||
|
@ -90,8 +91,7 @@ from lerobot.common.robot_devices.control_utils import (
|
||||||
sanity_check_dataset_robot_compatibility,
|
sanity_check_dataset_robot_compatibility,
|
||||||
stop_recording,
|
stop_recording,
|
||||||
)
|
)
|
||||||
from lerobot.common.robot_devices.robots.utils import Robot, make_robot
|
from lerobot.common.utils.robot_utils import busy_wait
|
||||||
from lerobot.common.robot_devices.utils import busy_wait
|
|
||||||
from lerobot.common.utils.utils import init_hydra_config, init_logging, log_say
|
from lerobot.common.utils.utils import init_hydra_config, init_logging, log_say
|
||||||
|
|
||||||
raise NotImplementedError("This script is currently deactivated")
|
raise NotImplementedError("This script is currently deactivated")
|
||||||
|
|
|
@ -20,7 +20,7 @@ import pytest
|
||||||
from serial import SerialException
|
from serial import SerialException
|
||||||
|
|
||||||
from lerobot import available_cameras, available_motors, available_robots
|
from lerobot import available_cameras, available_motors, available_robots
|
||||||
from lerobot.common.robot_devices.robots.utils import make_robot
|
from lerobot.common.robots.utils import make_robot
|
||||||
from tests.utils import DEVICE, make_camera, make_motors_bus
|
from tests.utils import DEVICE, make_camera, make_motors_bus
|
||||||
|
|
||||||
# Import fixture modules as plugins
|
# Import fixture modules as plugins
|
||||||
|
|
|
@ -24,7 +24,7 @@ pytest -sx 'tests/test_cameras.py::test_camera[intelrealsense-True]'
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from lerobot.common.robot_devices.utils import RobotDeviceAlreadyConnectedError, RobotDeviceNotConnectedError
|
from lerobot.common.utils.robot_utils import RobotDeviceAlreadyConnectedError, RobotDeviceNotConnectedError
|
||||||
from tests.utils import TEST_CAMERA_TYPES, make_camera, require_camera
|
from tests.utils import TEST_CAMERA_TYPES, make_camera, require_camera
|
||||||
|
|
||||||
# Maximum absolute difference between two consecutive images recored by a camera.
|
# Maximum absolute difference between two consecutive images recored by a camera.
|
||||||
|
@ -185,9 +185,9 @@ def test_camera(request, camera_type, mock):
|
||||||
def test_save_images_from_cameras(tmp_path, request, camera_type, mock):
|
def test_save_images_from_cameras(tmp_path, request, camera_type, mock):
|
||||||
# TODO(rcadene): refactor
|
# TODO(rcadene): refactor
|
||||||
if camera_type == "opencv":
|
if camera_type == "opencv":
|
||||||
from lerobot.common.robot_devices.cameras.opencv import save_images_from_cameras
|
from lerobot.common.cameras.opencv import save_images_from_cameras
|
||||||
elif camera_type == "intelrealsense":
|
elif camera_type == "intelrealsense":
|
||||||
from lerobot.common.robot_devices.cameras.intelrealsense import save_images_from_cameras
|
from lerobot.common.cameras.intelrealsense import save_images_from_cameras
|
||||||
|
|
||||||
# Small `record_time_s` to speedup unit tests
|
# Small `record_time_s` to speedup unit tests
|
||||||
save_images_from_cameras(tmp_path, record_time_s=0.02, mock=mock)
|
save_images_from_cameras(tmp_path, record_time_s=0.02, mock=mock)
|
||||||
|
|
|
@ -30,7 +30,7 @@ import pytest
|
||||||
|
|
||||||
from lerobot.common.policies.act.configuration_act import ACTConfig
|
from lerobot.common.policies.act.configuration_act import ACTConfig
|
||||||
from lerobot.common.policies.factory import make_policy
|
from lerobot.common.policies.factory import make_policy
|
||||||
from lerobot.common.robot_devices.control_configs import (
|
from lerobot.configs.control import (
|
||||||
CalibrateControlConfig,
|
CalibrateControlConfig,
|
||||||
RecordControlConfig,
|
RecordControlConfig,
|
||||||
ReplayControlConfig,
|
ReplayControlConfig,
|
||||||
|
|
|
@ -41,7 +41,7 @@ from lerobot.common.datasets.utils import (
|
||||||
)
|
)
|
||||||
from lerobot.common.envs.factory import make_env_config
|
from lerobot.common.envs.factory import make_env_config
|
||||||
from lerobot.common.policies.factory import make_policy_config
|
from lerobot.common.policies.factory import make_policy_config
|
||||||
from lerobot.common.robot_devices.robots.utils import make_robot
|
from lerobot.common.robots.utils import make_robot
|
||||||
from lerobot.configs.default import DatasetConfig
|
from lerobot.configs.default import DatasetConfig
|
||||||
from lerobot.configs.train import TrainPipelineConfig
|
from lerobot.configs.train import TrainPipelineConfig
|
||||||
from tests.fixtures.constants import DUMMY_CHW, DUMMY_HWC, DUMMY_REPO_ID
|
from tests.fixtures.constants import DUMMY_CHW, DUMMY_HWC, DUMMY_REPO_ID
|
||||||
|
|
|
@ -30,7 +30,7 @@ import time
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from lerobot.common.robot_devices.utils import RobotDeviceAlreadyConnectedError, RobotDeviceNotConnectedError
|
from lerobot.common.utils.robot_utils import RobotDeviceAlreadyConnectedError, RobotDeviceNotConnectedError
|
||||||
from lerobot.scripts.find_motors_bus_port import find_port
|
from lerobot.scripts.find_motors_bus_port import find_port
|
||||||
from tests.utils import TEST_MOTOR_TYPES, make_motors_bus, require_motor
|
from tests.utils import TEST_MOTOR_TYPES, make_motors_bus, require_motor
|
||||||
|
|
||||||
|
|
|
@ -26,8 +26,8 @@ pytest -sx 'tests/test_robots.py::test_robot[aloha-True]'
|
||||||
import pytest
|
import pytest
|
||||||
import torch
|
import torch
|
||||||
|
|
||||||
from lerobot.common.robot_devices.robots.utils import make_robot
|
from lerobot.common.robots.utils import make_robot
|
||||||
from lerobot.common.robot_devices.utils import RobotDeviceAlreadyConnectedError, RobotDeviceNotConnectedError
|
from lerobot.common.utils.robot_utils import RobotDeviceAlreadyConnectedError, RobotDeviceNotConnectedError
|
||||||
from tests.utils import TEST_ROBOT_TYPES, mock_calibration_dir, require_robot
|
from tests.utils import TEST_ROBOT_TYPES, mock_calibration_dir, require_robot
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -23,10 +23,10 @@ import pytest
|
||||||
import torch
|
import torch
|
||||||
|
|
||||||
from lerobot import available_cameras, available_motors, available_robots
|
from lerobot import available_cameras, available_motors, available_robots
|
||||||
from lerobot.common.robot_devices.cameras.utils import Camera
|
from lerobot.common.cameras.utils import Camera
|
||||||
from lerobot.common.robot_devices.cameras.utils import make_camera as make_camera_device
|
from lerobot.common.cameras.utils import make_camera as make_camera_device
|
||||||
from lerobot.common.robot_devices.motors.utils import MotorsBus
|
from lerobot.common.motors.utils import MotorsBus
|
||||||
from lerobot.common.robot_devices.motors.utils import make_motors_bus as make_motors_bus_device
|
from lerobot.common.motors.utils import make_motors_bus as make_motors_bus_device
|
||||||
from lerobot.common.utils.import_utils import is_package_available
|
from lerobot.common.utils.import_utils import is_package_available
|
||||||
|
|
||||||
DEVICE = os.environ.get("LEROBOT_TEST_DEVICE", "cuda") if torch.cuda.is_available() else "cpu"
|
DEVICE = os.environ.get("LEROBOT_TEST_DEVICE", "cuda") if torch.cuda.is_available() else "cpu"
|
||||||
|
|
Loading…
Reference in New Issue