Open-TeleVision: Teleoperation with
Immersive Active Visual Feedback
Xuxin Cheng*
·
Jialong Li*
·
Shiqi Yang
Ge Yang
·
Xiaolong Wang
Website | arXiv | Video | Summary
Introduction
This code contains implementation for teleoperation and imitation learning of Open-TeleVision.
Installation
conda create -n tv python=3.8
conda activate tv
pip install -r requirements.txt
cd act/detr && pip install -e .
Install ZED sdk: https://www.stereolabs.com/developers/release/
Install ZED Python API:
cd /usr/local/zed/ && python get_python_api.py
If you want to try teleoperation example in a simulated environment (teleop_hand.py):
Install Isaac Gym: https://developer.nvidia.com/isaac-gym/
Teleoperation Guide
Local streaming
Apple does not allow WebXR on non-https connections. To test the application locally, we need to create a self-signed certificate and install it on the client. You need a ubuntu machine and a router. Connect the VisionPro and the ubuntu machine to the same router.
- install mkcert: https://github.com/FiloSottile/mkcert
- check local ip address:
ifconfig | grep inet
Suppose the local ip address of the ubuntu machine is 192.168.8.102.
- create certificate:
mkcert -install && mkcert -cert-file cert.pem -key-file key.pem 192.168.8.102 localhost 127.0.0.1
- open firewall on server
sudo iptables -A INPUT -p tcp --dport 8012 -j ACCEPT
sudo iptables-save
sudo iptables -L
or can be done with ufw:
sudo ufw allow 8012
self.app = Vuer(host='0.0.0.0', cert="./cert.pem", key="./key.pem")
- install ca-certificates on VisionPro
mkcert -CAROOT
Copy the rootCA.pem via AirDrop to VisionPro and install it.
Settings > General > About > Certificate Trust Settings. Under "Enable full trust for root certificates", turn on trust for the certificate.
settings > Apps > Safari > Advanced > Feature Flags > Enable WebXR Related Features
-
open the browser on Safari on VisionPro and go to
https://192.168.8.102:8012?ws=wss://192.168.8.102:8012 -
Click
Enter VRandAllowto start the VR session.
Network Streaming
For Meta Quest3, installation of the certificate is not trivial. We need to use a network streaming solution. We use ngrok to create a secure tunnel to the server. This method will work for both VisionPro and Meta Quest3.
- Install ngrok: https://ngrok.com/download
- Run ngrok
ngrok http 8012
- Copy the https address and open the browser on Meta Quest3 and go to the address.
ps. When using ngrok for network streaming, remember to call OpenTeleVision with:
self.tv = OpenTeleVision(self.resolution_cropped, self.shm.name, image_queue, toggle_streaming, ngrok=True)
Simulation Teleoperation Example
- After setup up streaming with either local or network streaming following the above instructions, you can try teleoperating two robot hands in Issac Gym:
cd teleop && python teleop_hand.py
-
Go to your vuer site on VisionPro, click
Enter VRandAllowto enter immersive environment. -
See your hands in 3D!
Training Guide
-
Download dataset from https://drive.google.com/drive/folders/11WO96mUMjmxRo9Hpvm4ADz7THuuGNEMY?usp=sharing.
-
Place the downloaded dataset in
data/recordings/. -
Process the specified dataset for training using
scripts/post_process.py. -
You can verify the image and action sequences of a specific episode in the dataset using
scripts/replay_demo.py. -
To train ACT, run:
python imitate_episodes.py --policy_class ACT --kl_weight 10 --chunk_size 60 --hidden_dim 512 --batch_size 45 --dim_feedforward 3200 --num_epochs 50000 --lr 5e-5 --seed 0 --taskid 00 --exptid 01-sample-expt
- After training, save jit for the desired checkpoint:
python imitate_episodes.py --policy_class ACT --kl_weight 10 --chunk_size 60 --hidden_dim 512 --batch_size 45 --dim_feedforward 3200 --num_epochs 50000 --lr 5e-5 --seed 0 --taskid 00 --exptid 01-sample-expt\
--save_jit --resume_ckpt 25000
- You can visualize the trained policy with inputs from dataset using
scripts/deploy_sim.py, example usage:
python deploy_sim.py --taskid 00 --exptid 01 --resume_ckpt 25000
Citation
@article{cheng2024tv,
title={Open-TeleVision: Teleoperation with Immersive Active Visual Feedback},
author={Cheng, Xuxin and Li, Jialong and Yang, Shiqi and Yang, Ge and Wang, Xiaolong},
journal={arXiv preprint arXiv:2407.01512},
year={2024}
}
Metadata
Release files for opentv 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| opentv-0.1.2-py3-none-any.whl | Python 3 | none | any | Details for opentv-0.1.2-py3-none-any.whl |
Release files / opentv-0.1.2-py3-none-any.whl
| Download URL | opentv-0.1.2-py3-none-any.whl |
|---|---|
| Size | 39.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1cd00d8d586e90b4d2d9654bdc47787f82e1a0d27d1605bb300d5bb760449e6d
|
|
BLAKE2b-256 checksum How to use checksums |
7018dd237172d9514740ff017da433b2dda2ff6425caa4b951ea5908f9cb529c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.8.18
|
Security for opentv 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.