Teleop Devices Design#
Teleop devices defined in Arena are a thin wrapper around the Isaac Lab teleop devices. We define this wrapper to allow for easy registration and discovery of teleop devices.
Core Architecture#
Teleop devices use the TeleopDeviceBase abstract class with automatic registration:
class TeleopDeviceBase(ABC):
name: str | None = None
@abstractmethod
def get_teleop_device_cfg(self, embodiment: object | None = None):
"""Return Isaac Lab DevicesCfg for the specific device."""
@register_device
class KeyboardTeleopDevice(TeleopDeviceBase):
name = "keyboard"
def get_teleop_device_cfg(self, embodiment=None):
return DevicesCfg(devices={"keyboard": Se3KeyboardCfg(...)})
Devices are automatically discovered through decorator-based registration and provide Isaac Lab-compatible configurations.
Teleop Devices in Detail#
- Available Devices
Three primary input modalities for different use cases:
Keyboard: WASD-style SE3 manipulation with configurable sensitivity parameters
SpaceMouse: 6DOF precise spatial control for manipulation tasks
Hand Tracking: OpenXR-based hand tracking with GR1T2 retargeting for humanoid control
- Registration and Discovery
Decorator-based system for automatic device management:
@register_device: Automatic registration during module import
Device Registry: Central discovery mechanism for available devices
Environment Integration#
# Device selection during environment creation
teleop_device = device_registry.get_device_by_name(args_cli.teleop_device)()
# Environment composition with teleop support
environment = IsaacLabArenaEnvironment(
name="manipulation_task",
embodiment=embodiment,
scene=scene,
task=task,
teleop_device=teleop_device # Optional human control interface
)
# Automatic device configuration and integration
env = env_builder.make_registered() # Handles device setup internally
Usage Examples#
Keyboard Teleoperation
# Basic keyboard control
python isaaclab_arena/scripts/teleop.py --teleop_device keyboard kitchen_pick_and_place
SpaceMouse Control
# Precise manipulation with SpaceMouse
python isaaclab_arena/scripts/teleop.py --teleop_device spacemouse kitchen_pick_and_place --sensitivity 2.0
Hand Tracking
# VR hand tracking for humanoid control
python isaaclab_arena/scripts/teleop.py --teleop_device avp_handtracking gr1_open_microwave