teleoperation for all kinds of robots remotely or locally with immersive VR
Project description
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}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file opentv-0.1.2-py3-none-any.whl.
File metadata
- Download URL: opentv-0.1.2-py3-none-any.whl
- Upload date:
- Size: 39.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.8.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1cd00d8d586e90b4d2d9654bdc47787f82e1a0d27d1605bb300d5bb760449e6d
|
|
| MD5 |
c476e9bf64b839aef33412ea7db94500
|
|
| BLAKE2b-256 |
7018dd237172d9514740ff017da433b2dda2ff6425caa4b951ea5908f9cb529c
|