Teledex
teledex lets you control robot frames and hands using your iOS device's AR data.
Installation
You can install teledex package using pip:
pip install teledex
You can download the app from the App Store.
Before You Get Started
You can use Teledex in phone-only mode (streams only the device pose) or with an optional 3D-printed holder to track finger motion while teleoperating. All printable parts are available inprintables folder.
See ASSEMBLY_GUIDE for assembly notes and SETUP_GUIDE to get started with your phone and robot setup.
Basic Usage
Basic Setup
import teledex
session = teledex.Session()
session.start()
Retrieve AR data
data = session.get_latest_data()
Returns: {"position": (3,), "rotation": (3, 3), "button": bool, "button_secondary": bool, # "toggle": bool}
MuJoCo Setup
Control MuJoCo frames (body, geom, or site) with Teledex:
import teledex
session = teledex.Session()
mujoco_handler = teledex.MujocoHandler(model=my_model, data=my_data)
session.add_handler(mujoco_handler)
mujoco_handler.link_body(name="eef_target")
session.start()
MuJoCo Studio Setup
Drive a mocap body in MuJoCo Studio and get a TeleDex panel (QR code, connection status, live pose, pause/recenter) inside the viewer. Requires a mujoco build that ships mujoco.studio.
from mujoco.studio import launch_passive, viewer_app, viewer_protocol
from teledex.studio import TeleDexSim, TeleDexPanel
launch_passive.run(
viewer_protocol.ViewerConfig(gfx="web", open_browser=True),
model_path="scene.xml",
plugins=[viewer_app.ViewerApp(), *viewer_app.SIM_PLUGINS,
TeleDexSim(body="target", scale=1.5), TeleDexPanel()],
)
Or from the command line, driving the model's first mocap body:
python -m mujoco.studio.viewer --model=demos/studio_scene.xml --gfx=web --plugins=demos/studio_plugin.py
TeleDexSim(mode="delta", max_dpos=0.02) follows pose changes with a per-step cap instead of the absolute pose. See demos/studio_demo.py.
Additional Functions
session.vibrate(sharpness=0.8, intensity=0.4, duration=0.01)
session.pause_updates()
session.resume_updates()
session.reset_position()
Acknowledgment
The CAD is based on the models from ACE Teleop.
Citation
If you use Teledex in your research, please cite:
```bibtex @article{rayyan2026teledex, title={TeleDex: Accessible Dexterous Teleoperation}, author={Rayyan, Omar and Gilles, Maximilian and Cui, Yuchen}, journal={arXiv preprint arXiv:2603.17065}, year={2026} }