Teleop Devices#
A teleop device is the human input interface for teleoperation — it translates operator input (keyboard, SpaceMouse, or XR hand tracking) into robot commands during demonstration collection.
Arena’s teleop devices are a thin wrapper around Isaac Lab’s built-in devices, added so they can be registered by name and discovered from the device registry, the same way assets and embodiments are.
from isaaclab_arena.assets.register import register_device
@register_device
class KeyboardCfg(TeleopDeviceBase):
name = "keyboard"
def get_device_cfg(self, pipeline_builder=None, embodiment=None) -> Se3KeyboardCfg:
return Se3KeyboardCfg(pos_sensitivity=0.05, rot_sensitivity=0.05)
The @register_device decorator makes the device available by name. The wrapper
implements a single method, get_device_cfg(), that returns the underlying
Isaac Lab device configuration.
To add teleoperation to an environment, pick a device by name and pass it in:
teleop_device = device_registry.get_device_by_name("keyboard")()
environment = IsaacLabArenaEnvironment(
name="kitchen_pick_and_place",
embodiment=embodiment,
scene=scene,
task=task,
teleop_device=teleop_device,
)
env = ArenaEnvBuilder(environment, args_cli).make_registered()
teleop_device is optional — omit it for policy evaluation and include it
when collecting demonstrations.
Available devices#
- keyboard
WASD-style SE3 control with configurable sensitivity. Good for quick setup and simple manipulation tasks.
- spacemouse
6-DOF spatial control. More precise than the keyboard; suitable for fine manipulation.
- openxr
XR hand tracking via the
isaacteleopretargeting pipeline. Maps hand poses and controller input to robot joint commands.For a full walkthrough — collecting demonstrations on a static manipulation task using an Apple Vision Pro or Meta Quest — see Teleoperation Data Collection.