90 lines
3.0 KiB
Python
90 lines
3.0 KiB
Python
from dataclasses import dataclass, field
|
|
|
|
from lerobot.common.cameras.configs import CameraConfig
|
|
from lerobot.common.cameras.opencv.configuration_opencv import OpenCVCameraConfig
|
|
from lerobot.common.motors.configs import FeetechMotorsBusConfig, MotorsBusConfig
|
|
from lerobot.common.robots.config import RobotConfig
|
|
|
|
|
|
@RobotConfig.register_subclass("lekiwi")
|
|
@dataclass
|
|
class LeKiwiRobotConfig(RobotConfig):
|
|
# `max_relative_target` limits the magnitude of the relative positional target vector for safety purposes.
|
|
# Set this to a positive scalar to have the same value for all motors, or a list that is the same length as
|
|
# the number of motors in your follower arms.
|
|
max_relative_target: int | None = None
|
|
|
|
# Network Configuration
|
|
ip: str = "192.168.0.193"
|
|
port: int = 5555
|
|
video_port: int = 5556
|
|
|
|
cameras: dict[str, CameraConfig] = field(
|
|
default_factory=lambda: {
|
|
"front": OpenCVCameraConfig(
|
|
camera_index="/dev/video0", fps=30, width=640, height=480, rotation=90
|
|
),
|
|
"wrist": OpenCVCameraConfig(
|
|
camera_index="/dev/video2", fps=30, width=640, height=480, rotation=180
|
|
),
|
|
}
|
|
)
|
|
|
|
calibration_dir: str = ".cache/calibration/lekiwi"
|
|
|
|
leader_arms: dict[str, MotorsBusConfig] = field(
|
|
default_factory=lambda: {
|
|
"main": FeetechMotorsBusConfig(
|
|
port="/dev/tty.usbmodem585A0077581",
|
|
motors={
|
|
# name: (index, model)
|
|
"shoulder_pan": [1, "sts3215"],
|
|
"shoulder_lift": [2, "sts3215"],
|
|
"elbow_flex": [3, "sts3215"],
|
|
"wrist_flex": [4, "sts3215"],
|
|
"wrist_roll": [5, "sts3215"],
|
|
"gripper": [6, "sts3215"],
|
|
},
|
|
),
|
|
}
|
|
)
|
|
|
|
follower_arms: dict[str, MotorsBusConfig] = field(
|
|
default_factory=lambda: {
|
|
"main": FeetechMotorsBusConfig(
|
|
port="/dev/ttyACM0",
|
|
motors={
|
|
# name: (index, model)
|
|
"shoulder_pan": [1, "sts3215"],
|
|
"shoulder_lift": [2, "sts3215"],
|
|
"elbow_flex": [3, "sts3215"],
|
|
"wrist_flex": [4, "sts3215"],
|
|
"wrist_roll": [5, "sts3215"],
|
|
"gripper": [6, "sts3215"],
|
|
"left_wheel": (7, "sts3215"),
|
|
"back_wheel": (8, "sts3215"),
|
|
"right_wheel": (9, "sts3215"),
|
|
},
|
|
),
|
|
}
|
|
)
|
|
|
|
teleop_keys: dict[str, str] = field(
|
|
default_factory=lambda: {
|
|
# Movement
|
|
"forward": "w",
|
|
"backward": "s",
|
|
"left": "a",
|
|
"right": "d",
|
|
"rotate_left": "z",
|
|
"rotate_right": "x",
|
|
# Speed control
|
|
"speed_up": "r",
|
|
"speed_down": "f",
|
|
# quit teleop
|
|
"quit": "q",
|
|
}
|
|
)
|
|
|
|
mock: bool = False
|