Pular para o conteúdo principal

Quest cabeado

Esta seção resume os passos e verificações necessários para rodar a teleoperação, assumindo que a instalação, configuração e checklist já foram feitas.

É recomendado fazer primeiramente a teleoperação com o Quest via wifi

Seu setup deve estar assim para prosseguir, a principal vantagem da teleoperação cabeada é a total independência de internet:

Mise en place para prosseguir.

Topologia esperada​

Host: enp194s0 = 192.168.123.2 (Ethernet para LAN)
PC2 (G1): eth0 = 192.168.123.164 (Ethernet para LAN)
Robot G1 DDS: 192.168.123.161 (Ethernet para LAN)
Quest 3: Cabo USB-C conectado ao Host

PC2​

ssh 192.168.123.164
conda activate teleimager

Estando dentro do G1, rode o script de inicialização da câmera criado durante a Configuração do PC2

cd unitree/teleimager
./run_realsense_server.sh

Verá isso ser printado no terminal:

03:09:05:748194 INFO UVC driver reloaded successfully. image_server.py:535
03:09:05:757390 INFO [Responser] Camera Config Responser initialized at image_client.py:460
0.0.0.0:60000
03:09:06:313055 INFO [OpenCVCamera: head_camera] initialized with 480x640 @ image_server.py:1078
30 FPS.
ZMQ: enabled, zmq port=55555; WebRTC: enabled, webrtc
port=60001
03:09:06:313352 INFO [Image Server] Image server has started, waiting for image_server.py:1240
client connections...
03:09:06:345748 INFO [Image Server] head_camera is ready. image_server.py:1356
03:09:06:348130 INFO [Image Server] Running... Press Ctrl+C to exit. image_server.py:1431

Atenção: aguarde alguns segundos após ligar o robô antes de rodar este script.

HOST​

Agora no pc Host é necessário rodar o script de teleoperação que foi instalado durante a Configuração do Host

conda activate g1
cd ~/Desktop/Teleoperacao/xr_teleoperate/teleop
python

Esses são os parâmetros principais e mais utilizados, caso necessite, consulte a documentação oficial

ParâmetroDescriçãoOpçõesDefault
--input-modeEscolhe qual a forma de controlar o robôhand controllerhand
--display-modeEscolhe como ver a perspectiva do robôimmersive, ego, pass-throughimmersive
--img-server-ipO endereço IP de quem receberá a stream e as configurações WebRTCQualquer IPv4192.168.123.164
--eeSelecionar o end-effector (mãos)dex1 dex3 inspire_ftp inspire_dfx braincoNone
--motionHabilita o controle das pernas

Atenção: Para utilizar o modo motion o G1 deve estar em Regular mode (L2+B -> L2+UP -> R1+X), sem o --motion ele pode estar em Debug mode

python teleop_hand_and_arm.py --input-mode controller

Verá isso ser printado no terminal:

17:27:15.990775 INFO Received camera config from server image_client.py:638
192.168.123.164:60000
17:27:15.992203 INFO Saved camera config to local image_client.py:641
/home/infantaria/unitree_G1ws/xr_teleoperate/teleop/tel
eimager/cam_config_client.yaml
Serving file:///home/infantaria/unitree_G1ws/xr_teleoperate/teleop at /static
Visit: https://vuer.ai?grid=False
17:27:16.730450 INFO [G1_29_ArmIK] >>> Loading cached robot model: robot_arm_ik.py:37
g1_29_model_cache.pkl
17:27:16.747949 INFO Initialize G1_29_ArmController... robot_arm.py:69
17:27:16.964648 INFO [G1_29_ArmController] Subscribe dds ok. robot_arm.py:106
17:27:16.967171 INFO Lock all joints except two arms... robot_arm.py:117
17:27:16.967551 INFO Lock OK! robot_arm.py:137
17:27:16.969295 INFO Initialize G1_29_ArmController OK! robot_arm.py:145
17:27:16.969867 INFO ------------------------------------------------ teleop_hand_and_arm.py:267
----------------
17:27:16.969969 INFO 🟢 Press [r] to start syncing the robot with teleop_hand_and_arm.py:268
your movements.
17:27:16.970031 INFO 🔵 Recording is DISABLED (run with --record to teleop_hand_and_arm.py:272
enable).
17:27:16.970091 INFO 🔴 Press [q] to stop and exit the program. teleop_hand_and_arm.py:273
17:27:16.970142 INFO ⚠️ IMPORTANT: Please keep your distance and teleop_hand_and_arm.py:274
stay safe.

É muito comum haver erros neste terminal que no final envolvem os certificaods key.pem e cert.pem. Caso ocorra algum erro ou o robô não responda aos movimentos do seu braço é recomenda verificar se o caminha posto no bash esta correto para os certificados: gedit ~/.bashrc

Antes de pressionar a tecla 'r', é necessário que aparecça o seguinte texto no terminal:

websocket is connected. id:96ea0e51-a8e0-43ee-afa4-407b69b57fca
default socket worker is up, adding clientEvents
Uplink task running. id:96ea0e51-a8e0-43ee-afa4-407b69b57fca

É a confirmação de que o Meta Quest está operando, para conseguir ela siga os próximos passos:

QUEST​

Equanto os dois scripts anteriores estão rodando, iremos configurar o Meta Quest 3

Acesse o browser padrão do quest:

Acesse a o browser padrão do meta quest.

Acesse via localhost:8012, o vuer não irá funcionar pois necessita de internet.

Atenção: Se for a primeira vez acessando o site pode mostrar que ele não é seguro, avance mesmo assim.

Teleoperação completa​

Com todas as configurações anteriores feitas, siga a seguinte ordem para executar uma teleoperação bem sucedida, de forma totalmente análoga a teleoperação com o Quest via wifi:

  1. Rode o script do PC2
  2. Abra o localhost:8012 no Quest
  3. Rode o script no Host
  4. Recarregue a página do localhost no Quest
  5. websocket is connected deve aparecer no terminal do Host
  6. Clique Pass-Through
  7. Pressione 'r' no Host

Pressionar a tecla 'q' no Host encerra a teleoperação.