Pular para o conteúdo principal

📡 Comunicação e Conectividade

Objetivo

Dominar as opções de comunicação do G1: WiFi, Ethernet, 4G, controle remoto e coordenação multi-robô.


📶 Opções de Conectividade

WiFi Integrado

Hardware: Intel AX200 WiFi 6 (802.11ax)

Especificações:
├─ Bandas: 2.4GHz + 5GHz dual-band
├─ Velocidade: Até 2.4 Gbps (teórico)
├─ Real: 300-600 Mbps (depende distância)
├─ Latência: ~5-10ms (local)
├─ Alcance: 50m indoor, 150m outdoor
└─ Antenas: 2x2 MIMO integradas no torso

Modos de Operação:

G1 como Hotspot:

# Config padrão ao ligar
SSID: Unitree-G1-XXXX # XXXX = serial number
Password: (fornecida com robô)
IP do G1: 192.168.123.1
DHCP range: 192.168.123.10-254

# Conexão:
# Laptop/PC → WiFi "Unitree-G1-XXXX"
# SSH: ssh unitree@192.168.123.1

Vantagens:

  • ✅ Zero configuração
  • ✅ Funciona em qualquer lugar
  • ✅ Controle direto (sem internet)

Limitações:

  • ❌ Apenas 1-5 clientes simultâneos
  • ❌ Sem acesso à internet (a menos que compartilhe via USB tethering)

Ethernet Gigabit

2x Portas GbE:

Port 1 (eth0): Sensores (LIDAR, câmeras)
Port 2 (eth1): Rede externa (disponível)

# Usar para:
- Conexão com switch/router
- Uplink estável (alternativa a WiFi)
- PoE reverse (G1 fornece energia - NÃO RECOMENDADO)

Configurar IP estático:

# Editar netplan
sudo nano /etc/netplan/01-netcfg.yaml

network:
version: 2
ethernets:
eth1:
addresses:
- 10.0.0.100/24
gateway4: 10.0.0.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]

# Aplicar
sudo netplan apply

4G/5G LTE (Opcional)

USB Modem Support:

# Compatível com modems:
- Quectel EC25 (4G LTE)
- Huawei E3372 (4G stick)
- SixFab HAT (Raspberry Pi compatible)

# Instalação:
1. Conectar modem USB à porta do torso
2. Instalar drivers
sudo apt install usb-modeswitch modemmanager

3. Configurar APN
sudo nmcli connection add type gsm ifname '*' con-name '4G' \
apn 'your.apn.com'

4. Conectar
sudo nmcli connection up '4G'

# G1 agora tem internet móvel!

Casos de Uso:

  • 🏭 Robôs em campo sem WiFi
  • 🚛 Robôs móveis outdoor
  • ☁️ Telemetria em tempo real para cloud
  • 📹 Streaming de vídeo remoto

Custo Estimado:

  • Hardware (modem): $50-150
  • Plano de dados: $20-50/mês (10-50GB)

🎮 Controle Remoto

Controle Físico (RC)

Incluído na caixa: Controle Unitree RC

Layout do Controle:
┌────────────────────────┐
│ [L2] [R2] │ ← Triggers (emergency stop)
│ │
│ [Joystick L] [Joystick R] │
│ (move) (camera) │
│ │
│ [L1] [START] [R1] │
│ [SELECT] │
└────────────────────────┘

Comandos:
• L1 + UP: Levantar (stand up)
• L1 + DOWN: Sentar (sit down)
• L stick: Mover (X=frente/trás, Y=esquerda/direita)
• R stick: Olhar (controla cabeça)
• L2 + R2: Emergency stop

Alcance: 100m (2.4GHz), 300m (433MHz upgrade)

Protocolo: SBUS (Serial Bus) - 16 canais


App Móvel (iOS/Android)

Unitree Go App:

📱 Unitree Go 2.0 App
━━━━━━━━━━━━━━━━━━━━━━━━━
📹 Live Camera Feed
• Stream 1080p @ 30fps
• Latência: 150-300ms

🎮 Virtual Joystick
• Move robot via touchscreen
• Sensitivity ajustável

🤖 Pose Control
• Pre-programmed poses
• "Sit", "Stand", "Wave", "Dance"

📊 Telemetry
• Battery %
• Motor temps
• Speed, position

🗺️ Waypoint Navigation
• Tap no mapa para ir
• Evita obstáculos automaticamente

💬 Voice Commands (beta)
• "Go forward"
• "Turn left"
• "Come here"

Download:

  • iOS: App Store - "Unitree Go"
  • Android: Google Play - "Unitree Go"

🌐 API Remota

REST API

Controle via HTTP:

import requests

G1_IP = '192.168.123.1'
BASE_URL = f'http://{G1_IP}:8080/api/v1'

# 1. Obter status
response = requests.get(f'{BASE_URL}/status')
print(response.json())
# {'battery': 85, 'mode': 'standing', 'speed': 0.0}

# 2. Enviar comando
requests.post(f'{BASE_URL}/move', json={
'linear_x': 0.5,
'angular_z': 0.0
})

# 3. Executar pose
requests.post(f'{BASE_URL}/pose/wave')

# 4. Pegar foto
img_bytes = requests.get(f'{BASE_URL}/camera/front').content
with open('snapshot.jpg', 'wb') as f:
f.write(img_bytes)

ROS2 Remote (DDS)

Controlar ROS2 de outra máquina na mesma rede:

# No seu laptop (Linux):

# 1. Instalar ROS2 Humble (mesma versão do G1)
sudo apt install ros-humble-desktop

# 2. Configurar ROS_DOMAIN_ID (match com G1)
echo "export ROS_DOMAIN_ID=1" >> ~/.bashrc
source ~/.bashrc

# 3. Descobrir nodes do G1
ros2 node list
# /camera_node (do G1!)
# /lidar_node

# 4. Enviar comandos
ros2 topic pub /cmd_vel geometry_msgs/Twist \
"{linear: {x: 0.5}, angular: {z: 0.0}}"

# 5. Ver câmera
ros2 run image_view image_view --ros-args \
-r image:=/camera/front/image_raw

Multi-Robot via DDS:

# Separar robôs por ROS_DOMAIN_ID

# G1 número 1:
export ROS_DOMAIN_ID=1

# G1 número 2:
export ROS_DOMAIN_ID=2

# Cada um em "rede" ROS separada
# Para comunicar entre eles, use bridge ou namespaces

🤝 Coordenação Multi-Robô

Fleet Management

Gerenciar 3+ G1s simultaneamente:

Interface web centralizada:

# Instalar ROSBoard
pip3 install rosboard

# Rodar no seu laptop
rosboard

# Acessar: http://localhost:8888
# Adicionar topics de cada G1:
# - /g1_01/battery
# - /g1_02/battery
# - /g1_01/camera
# etc.

🔒 Segurança

Autenticação

Proteger acesso ao G1:

# 1. Trocar senha SSH
passwd # Senha padrão '123' → senha forte

# 2. Desabilitar acesso root
sudo nano /etc/ssh/sshd_config
# PermitRootLogin no
sudo systemctl restart sshd

# 3. Habilitar firewall
sudo ufw enable
sudo ufw allow 22/tcp # SSH
sudo ufw allow 8080/tcp # API
sudo ufw deny 3389 # Block RDP

# 4. Gerar chave SSH
ssh-keygen -t ed25519
ssh-copy-id unitree@192.168.123.1

# Agora login sem senha (mais seguro que senha)

VPN para Acesso Remoto

Acessar G1 de qualquer lugar (internet):

# Instalar WireGuard no G1
sudo apt install wireguard

# Configurar
sudo nano /etc/wireguard/wg0.conf

[Interface]
Address = 10.0.0.2/24
PrivateKey = (gerada com 'wg genkey')
ListenPort = 51820

[Peer]
PublicKey = (da sua máquina)
AllowedIPs = 10.0.0.1/32

# Ativar
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0

# Agora você acessa G1 via 10.0.0.2 de qualquer lugar!

✅ Checklist de Conhecimento

Após este módulo, você deve saber:

  • WiFi 6 dual-band (50m indoor, 150m outdoor)
  • Modos: AP (padrão) vs Client
  • Controle via RC, App móvel, API REST, ROS2
  • Como conectar múltiplos G1s na mesma rede
  • Configurar 4G LTE opcional
  • Proteger acesso com SSH keys e firewall

🔗 Próximos Passos

Próximo Módulo

⚙️ Modos de Operação →

Damping, Preparation, Movement - entenda os estados do G1.


⏱️ Tempo de estudo: 45-55 minutos 📊 Nível: Intermediário 📡 Hands-on: Conectar ao G1 via WiFi, testar API