This module contains the real-world deployment and data collection pipeline for Ψ₀.
Create the conda environment from the provided YAML file. This installs all required dependencies, including inverse kinematics libraries and CUDA bindings.
conda env create -f psi_deploy_env.yamlActivate the environment
conda activate psi_deployClone and install our modified version of the Unitree SDK2 Python package:
git clone git@github.com:physical-superintelligence-lab/unitree_sdk2_python.git
cd unitree_sdk2_python
pip install -e .
cd ..pip install -e .On G1's PC, install the image server's requirements
conda create -n vision python=3.8
conda activate vision
pip install pyrealsense2 opencv-python zmq numpyCopy realsense_server.py in the real/teleop/image_server directory to the PC of Unitree G_1, and execute the following command in the PC:
conda activate vision
python realsense_server.pyconda activate psi_deploy
cd real
bash ./scripts/deploy_psi0-rtc.shApple 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 inetSuppose the local ip address of the ubuntu machine is 192.168.123.2
- create certificate:
mkcert -install && mkcert -cert-file cert.pem -key-file key.pem 192.168.123.2 localhost 127.0.0.1ps. place the generated cert.pem and key.pem files in teleop.
cp cert.pem key.pem teleop/- open firewall on server:
sudo ufw allow 8012- 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.123.2:8012?ws=wss://192.168.123.2:8012
-
Click
Enter VRandAllowto start the VR session.
conda activate vision
python realsense_server.py- Write down the task information in a json file inside
teleop/task_defsdirectory - In the
teleop/directory, runpython taskcreator.pyto generate the task metadata. Take a look atteleop/task_defs/example.jsonfor an example task's json format.
Warning : All persons must maintain an adequate safety distance from the robot to avoid danger!
- Connect your host computer to G1. Then, set up your local IP address to 192.168.123.123 with netmask 255.255.255.0 on G1's network interface.
- Connect both your computer and AVP to the same local router wifi in which you set up your cert with.
- Open robot and set to sports mode (using remote control by pressing L1 + A, then L1 + UP, and lastly R1 + X when the G1 is gently touching the ground).
- On G1 PC: start the image server as above.
- On host computer: run
export CYCLONEDDS_URI="<CycloneDDS><Domain><General><NetworkInterfaceAddress>192.168.123.123</NetworkInterfaceAddress></General></Domain></CycloneDDS>"- On host computer: run
python main.py --robot g1under theteleop/directory and wait until the robot is standing in ready state. The terminal should signal both "master" and "worker" processes are waiting for starting signal. - On AVP, connect to robot using https://<host_ip_address_on_your_local_router>:8012/?ws=wss://<host_ip_address_on_your_local_router>:8012. Then, press
Enter VRand thenAllowto enter the web interface for teleoperating the G1. - Back on host computer, enter
sto start recording an episode. - Type
qand enter if the episode is successful, otherwisedand enter to discard the last session. - Repeat by pressing
sto start recording the next episode. Record 40 episodes for each task. - Type
exitto shut down the program.
This code builds upon following open-source code-bases. Please visit the URLs to see the respective LICENSES:
- https://github.com/unitreerobotics/avp_teleoperate
- https://github.com/OpenTeleVision/TeleVision
- https://github.com/dexsuite/dex-retargeting
- https://github.com/vuer-ai/vuer
- https://github.com/stack-of-tasks/pinocchio
- https://github.com/casadi/casadi
- https://github.com/meshcat-dev/meshcat-python
- https://github.com/zeromq/pyzmq
- https://github.com/unitreerobotics/unitree_dds_wrapper
- https://github.com/tonyzhaozh/act
- https://github.com/facebookresearch/detr
- https://github.com/OpenTeleVision/AMO