Fixes for Koch robot
This commit is contained in:
parent
5ab418dbeb
commit
418866007e
|
@ -4,8 +4,8 @@ from pathlib import Path
|
||||||
|
|
||||||
from huggingface_hub.constants import HF_HOME
|
from huggingface_hub.constants import HF_HOME
|
||||||
|
|
||||||
OBS_ENV = "observation.environment_state"
|
OBS_ENV_STATE = "observation.environment_state"
|
||||||
OBS_ROBOT = "observation.state"
|
OBS_STATE = "observation.state"
|
||||||
OBS_IMAGE = "observation.image"
|
OBS_IMAGE = "observation.image"
|
||||||
OBS_IMAGES = "observation.images"
|
OBS_IMAGES = "observation.images"
|
||||||
ACTION = "action"
|
ACTION = "action"
|
||||||
|
|
|
@ -16,10 +16,6 @@ class KochRobotConfig(RobotConfig):
|
||||||
# the number of motors in your follower arms.
|
# the number of motors in your follower arms.
|
||||||
max_relative_target: int | None = None
|
max_relative_target: int | None = None
|
||||||
|
|
||||||
# Sets the leader arm in torque mode with the gripper motor set to this angle. This makes it possible
|
|
||||||
# to squeeze the gripper and have it spring back to an open position on its own.
|
|
||||||
gripper_open_degree: float = 35.156
|
|
||||||
|
|
||||||
mock: bool = False
|
mock: bool = False
|
||||||
|
|
||||||
# motors
|
# motors
|
||||||
|
|
|
@ -21,6 +21,7 @@ import time
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
from lerobot.common.cameras.utils import make_cameras_from_configs
|
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.errors import DeviceAlreadyConnectedError, DeviceNotConnectedError
|
||||||
from lerobot.common.motors.dynamixel import (
|
from lerobot.common.motors.dynamixel import (
|
||||||
DynamixelMotorsBus,
|
DynamixelMotorsBus,
|
||||||
|
@ -118,8 +119,8 @@ class KochRobot(Robot):
|
||||||
self.arm.read("Present_Position")
|
self.arm.read("Present_Position")
|
||||||
|
|
||||||
# Connect the cameras
|
# Connect the cameras
|
||||||
for name in self.cameras:
|
for cam in self.cameras.values():
|
||||||
self.cameras[name].connect()
|
cam.connect()
|
||||||
|
|
||||||
self.is_connected = True
|
self.is_connected = True
|
||||||
|
|
||||||
|
@ -156,13 +157,13 @@ class KochRobot(Robot):
|
||||||
|
|
||||||
# Read arm position
|
# Read arm position
|
||||||
before_read_t = time.perf_counter()
|
before_read_t = time.perf_counter()
|
||||||
obs_dict["observation.state"] = self.arm.read("Present_Position")
|
obs_dict[OBS_STATE] = self.arm.read("Present_Position")
|
||||||
self.logs["read_pos_dt_s"] = time.perf_counter() - before_read_t
|
self.logs["read_pos_dt_s"] = time.perf_counter() - before_read_t
|
||||||
|
|
||||||
# Capture images from cameras
|
# Capture images from cameras
|
||||||
for cam_key, cam in self.cameras.items():
|
for cam_key, cam in self.cameras.items():
|
||||||
before_camread_t = time.perf_counter()
|
before_camread_t = time.perf_counter()
|
||||||
obs_dict[f"observation.images.{cam_key}"] = cam.async_read()
|
obs_dict[f"{OBS_IMAGES}.{cam_key}"] = cam.async_read()
|
||||||
self.logs[f"read_camera_{cam_key}_dt_s"] = cam.logs["delta_timestamp_s"]
|
self.logs[f"read_camera_{cam_key}_dt_s"] = cam.logs["delta_timestamp_s"]
|
||||||
self.logs[f"async_read_camera_{cam_key}_dt_s"] = time.perf_counter() - before_camread_t
|
self.logs[f"async_read_camera_{cam_key}_dt_s"] = time.perf_counter() - before_camread_t
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue