Sistema Avançado de Robô Humanóide para Futebol - YOLOv8 Simplificado Otimizado para NVIDIA Jetson Orin Nano Super + ROS2 Humble
- 🔍 Visão Geral
- 🏗️ Arquitetura do Sistema
- 💻 Requisitos do Sistema
- 🚀 Instalação e Uso
▶️ Executando o Sistema- 🔄 Desenvolvimento
- 📡 Sincronização com Jetson
- 🔍 Solução de Problemas
- 📜 Licença
O RoboIME HSL2025 é um sistema completo de robô humanóide para futebol desenvolvido para a Humanoid Soccer League 2025.
- 🧠 Sistema de Percepção YOLOv8 Simplificado: Detecção de 7 classes essenciais focadas em estratégia e localização
- 🤖 Arquitetura Modular ROS2: Comportamento, navegação, movimento e percepção independentes
- ⚡ Otimização NVIDIA: Aceleração CUDA no Jetson Orin Nano Super
- 🐳 Deploy com Docker: Ambiente consistente e reproduzível
- 📡 Comunicação Customizada: Sistema roboime_msgs para alta performance
Utiliza YOLOv8 com 7 classes essenciais divididas em dois propósitos:
- 🏐 Ball - Bola de futebol (elemento principal)
- 🤖 Robot - Robôs (sem distinção de cor - unificado)
- 📍 Penalty Mark - Marca do penalty (landmark preciso)
- 🥅 Goal Post - Postes do gol (unificados)
- ⭕ Center Circle - Círculo central (referência central)
- 📐 Field Corner - Cantos do campo (landmarks de borda)
- 🔲 Area Corner - Cantos da área (landmarks internos)
RoboIME HSL2025/
├── 📡 roboime_msgs # Sistema de comunicação customizada
├── 👁️ perception # YOLOv8 simplificado (7 classes)
│ ├── ⚽ Estratégia # Ball + Robot detection
│ └── 🧭 Localização # Landmarks para navegação
├── 🧭 navigation # Localização usando landmarks + planejamento
├── 🤖 behavior # Comportamento e estratégia de jogo
├── 🚶 motion # Controle de movimento e caminhada
├── 🚀 bringup # Sistema de inicialização
├── 🐳 docker # Containerização para Jetson
└── 📜 scripts # Automação e utilitários
- NVIDIA Jetson Orin Nano Super (8GB RAM)
- Câmera CSI IMX219 ou USB Logitech C930
- Servomotores Dynamixel (recomendado)
- Cartão microSD 64GB+ (Classe 10)
- NVIDIA JetPack 6.2+ (Ubuntu 22.04 LTS)
- ROS2 Humble Hawksbill
- Python 3.10+
- CUDA 12.2+
- Docker 24.0+
A instalação via Docker garante ambiente consistente e dependências corretas:
# Clone o repositório
git clone https://github.com/RoboIME/HSL2025.git
cd HSL2025
# Verificar sistema Jetson
sudo jetson_release
# Instalar Docker (se necessário)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER# Construir imagem otimizada para Jetson
chmod +x scripts/docker-helpers/docker-build.sh
./scripts/docker-helpers/docker-build.sh
# Ou manualmente:
docker build -t roboime_hsl2025:latest -f docker/Dockerfile.jetson .# Iniciar container com GPU e câmera
chmod +x scripts/docker-helpers/docker-run.sh
./scripts/docker-helpers/docker-run.sh
# Ou manualmente:
docker run -it --runtime nvidia --privileged \
--device=/dev/video0 \
--network host \
--name roboime_container \
-v $(pwd):/workspace \
roboime_hsl2025:latestPara desenvolvedores que preferem controle total:
# Adicionar repositório ROS2
sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistrib/master/ros.asc | sudo apt-key add -
sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'
# Instalar ROS2 Humble
sudo apt update
sudo apt install ros-humble-desktop python3-argcomplete
# Configurar ambiente
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc# Dependências do sistema
sudo apt install python3-pip python3-colcon-common-extensions
# YOLOv8 e PyTorch para Jetson
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip3 install ultralytics>=8.0.0
pip3 install opencv-python>=4.8.0 numpy>=1.24.0 pyyaml>=6.0As mensagens roboime_msgs são construídas automaticamente pelo colcon build. Não é necessário instalar via pip.
# Navegar para workspace
cd /workspace # No container
# cd HSL2025 # Instalação manual
# Configurar links de bibliotecas (se necessário)
chmod +x src/perception/setup_library_links.sh
sudo src/perception/setup_library_links.sh
# Configurar rosdep customizado
chmod +x src/perception/setup_rosdep.sh
sudo src/perception/setup_rosdep.sh# Instalar dependências
rosdep update
rosdep install --from-paths src --ignore-src -r -y
# Compilar workspace
colcon build --symlink-install
# Configurar ambiente
source install/setup.bash
echo "source $(pwd)/install/setup.bash" >> ~/.bashrc# Sistema completo (recomendado)
ros2 launch bringup robot.launch.py
# Com debug visual
ros2 launch bringup robot.launch.py debug:=true
# Sistema com câmera específica
ros2 launch bringup robot.launch.py camera_type:=csi # CSI IMX219
ros2 launch bringup robot.launch.py camera_type:=usb # USB C930# Câmera CSI (padrão)
ros2 launch perception perception.launch.py
# Câmera USB
ros2 launch perception perception.launch.py camera_type:=usb
# Múltiplas câmeras
ros2 launch perception dual_camera.launch.py
# Com modelo customizado (7 classes)
ros2 launch perception perception.launch.py \
model_path:=/path/to/robocup_yolov8.pt \
confidence_threshold:=0.6# Ver todas as detecções
ros2 topic echo /unified_detections
# Detecções estratégicas
ros2 topic echo /ball_detection # Bola
ros2 topic echo /robot_detections # Robôs
# Detecções para localização
ros2 topic echo /goal_detections # Gols
ros2 topic echo /localization_landmarks # Landmarks
# Visualização
ros2 run rqt_image_view rqt_image_view /debug_image_3d# Sistema de comportamento
ros2 run roboime_behavior behavior_node
# Controlador de movimento
ros2 run motion walking_controller.py
# Sistema de navegação (quando implementado)
ros2 run roboime_navigation localization# Montar diretório para edição (Docker)
docker run -it --runtime nvidia \
-v $(pwd):/workspace \
roboime_hsl2025:latest
# Em outro terminal, edite normalmente
code . # VS Code
nano src/perception/perception/yolov8_detector_node.py# Recompilar pacote específico
cd /workspace # ou HSL2025
colcon build --symlink-install --packages-select perception
# Recarregar ambiente
source install/setup.bash
# Testar mudanças
ros2 launch perception perception.launch.py debug:=true# Teste interativo do sistema de percepção
chmod +x src/perception/test_perception.sh
./src/perception/test_perception.sh
# Testes individuais
ros2 run perception csi_camera
ros2 run perception yolov8_detector# Configurar IP da Jetson no script
nano scripts/sync_jetson.sh
# Sincronizar
chmod +x scripts/sync_jetson.sh
./scripts/sync_jetson.sh# Via rsync (rápido)
rsync -avz --exclude 'build/' --exclude 'install/' --exclude '.git/' \
./ jetson@192.168.1.100:/home/jetson/HSL2025/
# Via scp (alternativo)
scp -r src/ jetson@192.168.1.100:/home/jetson/HSL2025/# Verificar CUDA
nvidia-smi
nvcc --version
# Verificar PyTorch
python3 -c "import torch; print(f'CUDA: {torch.cuda.is_available()}')"
# Reinstalar PyTorch (se necessário)
pip3 uninstall torch torchvision
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu121# Verificar modelo de 7 classes
ls -la src/perception/resources/models/robocup_yolov8.pt
# Baixar modelo base (temporário - REQUER RETREINAMENTO!)
cd src/perception/resources/models/
wget https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt
# Usar modelo padrão
ros2 launch perception perception.launch.py model_path:=yolov8n.pt# Verificar dispositivos de vídeo
ls /dev/video*
v4l2-ctl --list-devices
# Testar câmera CSI
gst-launch-1.0 nvarguscamerasrc ! nvoverlaysink
# Testar câmera USB
gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! xvimagesink# Limpar e recompilar
rm -rf build/ install/ log/
rosdep update
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
# Verificar msgs customizadas
ros2 interface list | grep roboime# CPU e memória
htop
jtop # Jetson específico
# GPU
nvidia-smi
watch -n 1 nvidia-smi
# FPS do sistema (melhor com 7 classes)
ros2 topic hz /camera/image_raw
ros2 topic hz /debug_image_3d| Métrica | 11 Classes | 7 Classes | Melhoria |
|---|---|---|---|
| FPS | 15-20 | 20-25 | +25-30% |
| Latência | 15-20ms | 10-15ms | -25-33% |
| GPU Usage | 70-80% | 60-70% | -10-15% |
| RAM Usage | 2-3GB | 1.5-2GB | -25-30% |
Este projeto é licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
🤖 Desenvolvido pela Equipe RoboIME
📍 Instituto Militar de Engenharia (IME) - Rio de Janeiro, Brasil
🎯 YOLOv8 Simplificado • 7 Classes Essenciais • Estratégia + Localização
🏆 Humanoid Soccer League 2025