Rename CalibrationMode -> MotorNormMode
This commit is contained in:
@@ -1 +1 @@
|
||||
from .motors_bus import CalibrationMode, Motor, MotorsBus
|
||||
from .motors_bus import Motor, MotorNormMode, MotorsBus
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
import numpy as np
|
||||
|
||||
from ..motors_bus import CalibrationMode, MotorsBus
|
||||
from ..motors_bus import MotorNormMode, MotorsBus
|
||||
from .dynamixel import TorqueMode
|
||||
from .tables import MODEL_RESOLUTION
|
||||
|
||||
@@ -133,13 +133,13 @@ def run_arm_calibration(arm: MotorsBus, robot_type: str, arm_name: str, arm_type
|
||||
print()
|
||||
|
||||
# Joints with rotational motions are expressed in degrees in nominal range of [-180, 180]
|
||||
calib_mode = [CalibrationMode.DEGREE.name] * len(arm.names)
|
||||
calib_mode = [MotorNormMode.DEGREE.name] * len(arm.names)
|
||||
|
||||
# TODO(rcadene): make type of joints (DEGREE or LINEAR) configurable from yaml?
|
||||
if robot_type in ["aloha"] and "gripper" in arm.names:
|
||||
# Joints with linear motions (like gripper of Aloha) are expressed in nominal range of [0, 100]
|
||||
calib_idx = arm.names.index("gripper")
|
||||
calib_mode[calib_idx] = CalibrationMode.LINEAR.name
|
||||
calib_mode[calib_idx] = MotorNormMode.LINEAR.name
|
||||
|
||||
calib_data = {
|
||||
"homing_offset": homing_offset.tolist(),
|
||||
|
||||
@@ -76,7 +76,7 @@ def assert_same_address(model_ctrl_table: dict[str, dict], motor_models: list[st
|
||||
)
|
||||
|
||||
|
||||
class CalibrationMode(Enum):
|
||||
class MotorNormMode(Enum):
|
||||
DEGREE = 0
|
||||
RANGE_0_100 = 1
|
||||
RANGE_M100_100 = 2
|
||||
@@ -87,7 +87,7 @@ class CalibrationMode(Enum):
|
||||
class Motor:
|
||||
id: int
|
||||
model: str
|
||||
calibration: CalibrationMode
|
||||
norm_mode: MotorNormMode
|
||||
|
||||
|
||||
class JointOutOfRangeError(Exception):
|
||||
|
||||
@@ -22,7 +22,7 @@ from typing import Any
|
||||
from lerobot.common.cameras.utils import make_cameras_from_configs
|
||||
from lerobot.common.constants import OBS_IMAGES, OBS_STATE
|
||||
from lerobot.common.errors import DeviceAlreadyConnectedError, DeviceNotConnectedError
|
||||
from lerobot.common.motors import CalibrationMode, Motor
|
||||
from lerobot.common.motors import Motor, MotorNormMode
|
||||
from lerobot.common.motors.dynamixel import (
|
||||
DynamixelMotorsBus,
|
||||
OperatingMode,
|
||||
@@ -53,12 +53,12 @@ class KochRobot(Robot):
|
||||
self.arm = DynamixelMotorsBus(
|
||||
port=self.config.port,
|
||||
motors={
|
||||
"shoulder_pan": Motor(1, "xl430-w250", CalibrationMode.RANGE_M100_100),
|
||||
"shoulder_lift": Motor(2, "xl430-w250", CalibrationMode.RANGE_M100_100),
|
||||
"elbow_flex": Motor(3, "xl330-m288", CalibrationMode.RANGE_M100_100),
|
||||
"wrist_flex": Motor(4, "xl330-m288", CalibrationMode.RANGE_M100_100),
|
||||
"wrist_roll": Motor(5, "xl330-m288", CalibrationMode.RANGE_M100_100),
|
||||
"gripper": Motor(6, "xl330-m288", CalibrationMode.RANGE_0_100),
|
||||
"shoulder_pan": Motor(1, "xl430-w250", MotorNormMode.RANGE_M100_100),
|
||||
"shoulder_lift": Motor(2, "xl430-w250", MotorNormMode.RANGE_M100_100),
|
||||
"elbow_flex": Motor(3, "xl330-m288", MotorNormMode.RANGE_M100_100),
|
||||
"wrist_flex": Motor(4, "xl330-m288", MotorNormMode.RANGE_M100_100),
|
||||
"wrist_roll": Motor(5, "xl330-m288", MotorNormMode.RANGE_M100_100),
|
||||
"gripper": Motor(6, "xl330-m288", MotorNormMode.RANGE_0_100),
|
||||
},
|
||||
)
|
||||
self.cameras = make_cameras_from_configs(config.cameras)
|
||||
|
||||
@@ -23,7 +23,7 @@ import numpy as np
|
||||
from lerobot.common.cameras.utils import make_cameras_from_configs
|
||||
from lerobot.common.constants import OBS_IMAGES, OBS_STATE
|
||||
from lerobot.common.errors import DeviceAlreadyConnectedError, DeviceNotConnectedError
|
||||
from lerobot.common.motors import CalibrationMode, Motor
|
||||
from lerobot.common.motors import Motor, MotorNormMode
|
||||
from lerobot.common.motors.calibration import find_min_max, find_offset, set_calibration
|
||||
from lerobot.common.motors.feetech import (
|
||||
FeetechMotorsBus,
|
||||
@@ -53,12 +53,12 @@ class SO100Robot(Robot):
|
||||
self.arm = FeetechMotorsBus(
|
||||
port=self.config.port,
|
||||
motors={
|
||||
"shoulder_pan": Motor(1, "sts3215", CalibrationMode.RANGE_M100_100),
|
||||
"shoulder_lift": Motor(2, "sts3215", CalibrationMode.RANGE_M100_100),
|
||||
"elbow_flex": Motor(3, "sts3215", CalibrationMode.RANGE_M100_100),
|
||||
"wrist_flex": Motor(4, "sts3215", CalibrationMode.RANGE_M100_100),
|
||||
"wrist_roll": Motor(5, "sts3215", CalibrationMode.RANGE_M100_100),
|
||||
"gripper": Motor(6, "sts3215", CalibrationMode.RANGE_0_100),
|
||||
"shoulder_pan": Motor(1, "sts3215", MotorNormMode.RANGE_M100_100),
|
||||
"shoulder_lift": Motor(2, "sts3215", MotorNormMode.RANGE_M100_100),
|
||||
"elbow_flex": Motor(3, "sts3215", MotorNormMode.RANGE_M100_100),
|
||||
"wrist_flex": Motor(4, "sts3215", MotorNormMode.RANGE_M100_100),
|
||||
"wrist_roll": Motor(5, "sts3215", MotorNormMode.RANGE_M100_100),
|
||||
"gripper": Motor(6, "sts3215", MotorNormMode.RANGE_0_100),
|
||||
},
|
||||
)
|
||||
self.cameras = make_cameras_from_configs(config.cameras)
|
||||
|
||||
@@ -13,7 +13,7 @@ import numpy as np
|
||||
from lerobot.common.cameras.utils import make_cameras_from_configs
|
||||
from lerobot.common.constants import OBS_IMAGES, OBS_STATE
|
||||
from lerobot.common.errors import DeviceAlreadyConnectedError, DeviceNotConnectedError
|
||||
from lerobot.common.motors import CalibrationMode, Motor, TorqueMode
|
||||
from lerobot.common.motors import Motor, MotorNormMode, TorqueMode
|
||||
from lerobot.common.motors.dynamixel import (
|
||||
DynamixelMotorsBus,
|
||||
run_arm_calibration,
|
||||
@@ -43,15 +43,15 @@ class ViperXRobot(Robot):
|
||||
self.arm = DynamixelMotorsBus(
|
||||
port=self.config.port,
|
||||
motors={
|
||||
"waist": Motor(1, "xm540-w270", CalibrationMode.RANGE_M100_100),
|
||||
"shoulder": Motor(2, "xm540-w270", CalibrationMode.RANGE_M100_100),
|
||||
"shoulder_shadow": Motor(3, "xm540-w270", CalibrationMode.RANGE_M100_100),
|
||||
"elbow": Motor(4, "xm540-w270", CalibrationMode.RANGE_M100_100),
|
||||
"elbow_shadow": Motor(5, "xm540-w270", CalibrationMode.RANGE_M100_100),
|
||||
"forearm_roll": Motor(6, "xm540-w270", CalibrationMode.RANGE_M100_100),
|
||||
"wrist_angle": Motor(7, "xm540-w270", CalibrationMode.RANGE_M100_100),
|
||||
"wrist_rotate": Motor(8, "xm430-w350", CalibrationMode.RANGE_M100_100),
|
||||
"gripper": Motor(9, "xm430-w350", CalibrationMode.RANGE_0_100),
|
||||
"waist": Motor(1, "xm540-w270", MotorNormMode.RANGE_M100_100),
|
||||
"shoulder": Motor(2, "xm540-w270", MotorNormMode.RANGE_M100_100),
|
||||
"shoulder_shadow": Motor(3, "xm540-w270", MotorNormMode.RANGE_M100_100),
|
||||
"elbow": Motor(4, "xm540-w270", MotorNormMode.RANGE_M100_100),
|
||||
"elbow_shadow": Motor(5, "xm540-w270", MotorNormMode.RANGE_M100_100),
|
||||
"forearm_roll": Motor(6, "xm540-w270", MotorNormMode.RANGE_M100_100),
|
||||
"wrist_angle": Motor(7, "xm540-w270", MotorNormMode.RANGE_M100_100),
|
||||
"wrist_rotate": Motor(8, "xm430-w350", MotorNormMode.RANGE_M100_100),
|
||||
"gripper": Motor(9, "xm430-w350", MotorNormMode.RANGE_0_100),
|
||||
},
|
||||
)
|
||||
self.cameras = make_cameras_from_configs(config.cameras)
|
||||
|
||||
@@ -21,7 +21,7 @@ import time
|
||||
import numpy as np
|
||||
|
||||
from lerobot.common.errors import DeviceAlreadyConnectedError, DeviceNotConnectedError
|
||||
from lerobot.common.motors import CalibrationMode, Motor
|
||||
from lerobot.common.motors import Motor, MotorNormMode
|
||||
from lerobot.common.motors.dynamixel import (
|
||||
DynamixelMotorsBus,
|
||||
OperatingMode,
|
||||
@@ -51,12 +51,12 @@ class KochTeleop(Teleoperator):
|
||||
self.arm = DynamixelMotorsBus(
|
||||
port=self.config.port,
|
||||
motors={
|
||||
"shoulder_pan": Motor(1, "xl330-m077", CalibrationMode.RANGE_M100_100),
|
||||
"shoulder_lift": Motor(2, "xl330-m077", CalibrationMode.RANGE_M100_100),
|
||||
"elbow_flex": Motor(3, "xl330-m077", CalibrationMode.RANGE_M100_100),
|
||||
"wrist_flex": Motor(4, "xl330-m077", CalibrationMode.RANGE_M100_100),
|
||||
"wrist_roll": Motor(5, "xl330-m077", CalibrationMode.RANGE_M100_100),
|
||||
"gripper": Motor(6, "xl330-m077", CalibrationMode.RANGE_0_100),
|
||||
"shoulder_pan": Motor(1, "xl330-m077", MotorNormMode.RANGE_M100_100),
|
||||
"shoulder_lift": Motor(2, "xl330-m077", MotorNormMode.RANGE_M100_100),
|
||||
"elbow_flex": Motor(3, "xl330-m077", MotorNormMode.RANGE_M100_100),
|
||||
"wrist_flex": Motor(4, "xl330-m077", MotorNormMode.RANGE_M100_100),
|
||||
"wrist_roll": Motor(5, "xl330-m077", MotorNormMode.RANGE_M100_100),
|
||||
"gripper": Motor(6, "xl330-m077", MotorNormMode.RANGE_0_100),
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ import time
|
||||
import numpy as np
|
||||
|
||||
from lerobot.common.errors import DeviceAlreadyConnectedError, DeviceNotConnectedError
|
||||
from lerobot.common.motors import CalibrationMode, Motor
|
||||
from lerobot.common.motors import Motor, MotorNormMode
|
||||
from lerobot.common.motors.calibration import find_min_max, find_offset, set_calibration
|
||||
from lerobot.common.motors.feetech import (
|
||||
FeetechMotorsBus,
|
||||
@@ -48,12 +48,12 @@ class SO100Teleop(Teleoperator):
|
||||
self.arm = FeetechMotorsBus(
|
||||
port=self.config.port,
|
||||
motors={
|
||||
"shoulder_pan": Motor(1, "sts3215", CalibrationMode.RANGE_M100_100),
|
||||
"shoulder_lift": Motor(2, "sts3215", CalibrationMode.RANGE_M100_100),
|
||||
"elbow_flex": Motor(3, "sts3215", CalibrationMode.RANGE_M100_100),
|
||||
"wrist_flex": Motor(4, "sts3215", CalibrationMode.RANGE_M100_100),
|
||||
"wrist_roll": Motor(5, "sts3215", CalibrationMode.RANGE_M100_100),
|
||||
"gripper": Motor(6, "sts3215", CalibrationMode.RANGE_0_100),
|
||||
"shoulder_pan": Motor(1, "sts3215", MotorNormMode.RANGE_M100_100),
|
||||
"shoulder_lift": Motor(2, "sts3215", MotorNormMode.RANGE_M100_100),
|
||||
"elbow_flex": Motor(3, "sts3215", MotorNormMode.RANGE_M100_100),
|
||||
"wrist_flex": Motor(4, "sts3215", MotorNormMode.RANGE_M100_100),
|
||||
"wrist_roll": Motor(5, "sts3215", MotorNormMode.RANGE_M100_100),
|
||||
"gripper": Motor(6, "sts3215", MotorNormMode.RANGE_0_100),
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ import time
|
||||
import numpy as np
|
||||
|
||||
from lerobot.common.errors import DeviceAlreadyConnectedError, DeviceNotConnectedError
|
||||
from lerobot.common.motors import CalibrationMode, Motor, TorqueMode
|
||||
from lerobot.common.motors import Motor, MotorNormMode, TorqueMode
|
||||
from lerobot.common.motors.dynamixel import (
|
||||
DynamixelMotorsBus,
|
||||
run_arm_calibration,
|
||||
@@ -47,15 +47,15 @@ class WidowXTeleop(Teleoperator):
|
||||
self.arm = DynamixelMotorsBus(
|
||||
port=self.config.port,
|
||||
motors={
|
||||
"waist": Motor(1, "xm430-w350", CalibrationMode.RANGE_M100_100),
|
||||
"shoulder": Motor(2, "xm430-w350", CalibrationMode.RANGE_M100_100),
|
||||
"shoulder_shadow": Motor(3, "xm430-w350", CalibrationMode.RANGE_M100_100),
|
||||
"elbow": Motor(4, "xm430-w350", CalibrationMode.RANGE_M100_100),
|
||||
"elbow_shadow": Motor(5, "xm430-w350", CalibrationMode.RANGE_M100_100),
|
||||
"forearm_roll": Motor(6, "xm430-w350", CalibrationMode.RANGE_M100_100),
|
||||
"wrist_angle": Motor(7, "xm430-w350", CalibrationMode.RANGE_M100_100),
|
||||
"wrist_rotate": Motor(8, "xl430-w250", CalibrationMode.RANGE_M100_100),
|
||||
"gripper": Motor(9, "xc430-w150", CalibrationMode.RANGE_0_100),
|
||||
"waist": Motor(1, "xm430-w350", MotorNormMode.RANGE_M100_100),
|
||||
"shoulder": Motor(2, "xm430-w350", MotorNormMode.RANGE_M100_100),
|
||||
"shoulder_shadow": Motor(3, "xm430-w350", MotorNormMode.RANGE_M100_100),
|
||||
"elbow": Motor(4, "xm430-w350", MotorNormMode.RANGE_M100_100),
|
||||
"elbow_shadow": Motor(5, "xm430-w350", MotorNormMode.RANGE_M100_100),
|
||||
"forearm_roll": Motor(6, "xm430-w350", MotorNormMode.RANGE_M100_100),
|
||||
"wrist_angle": Motor(7, "xm430-w350", MotorNormMode.RANGE_M100_100),
|
||||
"wrist_rotate": Motor(8, "xl430-w250", MotorNormMode.RANGE_M100_100),
|
||||
"gripper": Motor(9, "xc430-w150", MotorNormMode.RANGE_0_100),
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ from unittest.mock import Mock, call, patch
|
||||
import pytest
|
||||
import scservo_sdk as scs
|
||||
|
||||
from lerobot.common.motors import CalibrationMode, Motor
|
||||
from lerobot.common.motors import Motor, MotorNormMode
|
||||
from lerobot.common.motors.calibration import find_min_max, find_offset, set_min_max, set_offset
|
||||
from lerobot.common.motors.feetech import FeetechMotorsBus
|
||||
from tests.mocks.mock_feetech import MockMotors, MockPortHandler
|
||||
@@ -31,9 +31,9 @@ def mock_motors() -> Generator[MockMotors, None, None]:
|
||||
@pytest.fixture
|
||||
def dummy_motors() -> dict[str, Motor]:
|
||||
return {
|
||||
"dummy_1": Motor(1, "sts3215", CalibrationMode.RANGE_M100_100),
|
||||
"wrist_roll": Motor(2, "sts3215", CalibrationMode.RANGE_M100_100),
|
||||
"dummy_3": Motor(3, "sts3215", CalibrationMode.RANGE_M100_100),
|
||||
"dummy_1": Motor(1, "sts3215", MotorNormMode.RANGE_M100_100),
|
||||
"wrist_roll": Motor(2, "sts3215", MotorNormMode.RANGE_M100_100),
|
||||
"dummy_3": Motor(3, "sts3215", MotorNormMode.RANGE_M100_100),
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ from unittest.mock import patch
|
||||
import dynamixel_sdk as dxl
|
||||
import pytest
|
||||
|
||||
from lerobot.common.motors import CalibrationMode, Motor
|
||||
from lerobot.common.motors import Motor, MotorNormMode
|
||||
from lerobot.common.motors.dynamixel import MODEL_NUMBER, DynamixelMotorsBus
|
||||
from tests.mocks.mock_dynamixel import MockMotors, MockPortHandler
|
||||
|
||||
@@ -30,9 +30,9 @@ def mock_motors() -> Generator[MockMotors, None, None]:
|
||||
@pytest.fixture
|
||||
def dummy_motors() -> dict[str, Motor]:
|
||||
return {
|
||||
"dummy_1": Motor(1, "xl430-w250", CalibrationMode.RANGE_M100_100),
|
||||
"dummy_2": Motor(2, "xm540-w270", CalibrationMode.RANGE_M100_100),
|
||||
"dummy_3": Motor(3, "xl330-m077", CalibrationMode.RANGE_M100_100),
|
||||
"dummy_1": Motor(1, "xl430-w250", MotorNormMode.RANGE_M100_100),
|
||||
"dummy_2": Motor(2, "xm540-w270", MotorNormMode.RANGE_M100_100),
|
||||
"dummy_3": Motor(3, "xl330-m077", MotorNormMode.RANGE_M100_100),
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ from unittest.mock import patch
|
||||
import pytest
|
||||
import scservo_sdk as scs
|
||||
|
||||
from lerobot.common.motors import CalibrationMode, Motor
|
||||
from lerobot.common.motors import Motor, MotorNormMode
|
||||
from lerobot.common.motors.feetech import MODEL_NUMBER, FeetechMotorsBus
|
||||
from tests.mocks.mock_feetech import MockMotors, MockPortHandler
|
||||
|
||||
@@ -30,9 +30,9 @@ def mock_motors() -> Generator[MockMotors, None, None]:
|
||||
@pytest.fixture
|
||||
def dummy_motors() -> dict[str, Motor]:
|
||||
return {
|
||||
"dummy_1": Motor(1, "sts3215", CalibrationMode.RANGE_M100_100),
|
||||
"dummy_2": Motor(2, "sts3215", CalibrationMode.RANGE_M100_100),
|
||||
"dummy_3": Motor(3, "sts3215", CalibrationMode.RANGE_M100_100),
|
||||
"dummy_1": Motor(1, "sts3215", MotorNormMode.RANGE_M100_100),
|
||||
"dummy_2": Motor(2, "sts3215", MotorNormMode.RANGE_M100_100),
|
||||
"dummy_3": Motor(3, "sts3215", MotorNormMode.RANGE_M100_100),
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user