Pular para o conteúdo principal

💻 Introdução à Programação de Humanoides

Objetivo do Módulo

Entender o que significa programar um robô humanoide, preparar o ambiente de desenvolvimento completo, e compreender a arquitetura de software moderna para robôs humanoides.


🎯 O Que é Programar um Humanoide?

Níveis de Programação

Programação de Tarefas e Comportamentos

# Exemplo: Comando de alto nível
robot.walk_to_location("kitchen")
robot.pick_object("cup")
robot.return_to_base()

Quem faz: Engenheiros de aplicação, integradores Linguagens: Python, JavaScript Abstração: Alta (não precisa saber como andar)

Casos de Uso:

  • Aplicações de serviço (delivery, limpeza)
  • Assistência residencial
  • Demonstrações e POCs
  • Integração com sistemas empresariais

Neste Tier: Foco em médio e alto nível (Python + ROS2)


🏗️ Arquitetura de Software para Humanoides

Camadas da Stack

┌─────────────────────────────────────────────┐
│ Layer 5: Applications & Behaviors │ ← Python/JavaScript
├─────────────────────────────────────────────┤
│ Layer 4: Planning & Decision Making │ ← ROS2 Navigation/MoveIt
├─────────────────────────────────────────────┤
│ Layer 3: Perception & Sensing │ ← Computer Vision/SLAM
├─────────────────────────────────────────────┤
│ Layer 2: Control & Actuation │ ← Controllers/PID
├─────────────────────────────────────────────┤
│ Layer 1: Hardware Abstraction (HAL) │ ← Drivers/Firmware
└─────────────────────────────────────────────┘

Exemplo: "Pegar uma Xícara"

Como cada camada participa:

  1. Layer 5 (Application): Recebe comando "pegar xícara na mesa"
  2. Layer 4 (Planning): Calcula trajetória do braço, sequência de movimentos
  3. Layer 3 (Perception): Detecta xícara com câmera, estima pose 3D
  4. Layer 2 (Control): Envia comandos de torque para cada junta
  5. Layer 1 (HAL): Converte torques em sinais elétricos para motores

Tempo total típico: 2-5 segundos


🛠️ Stack de Desenvolvimento Completa

Sistema Operacional

Por que Ubuntu 22.04?

  • ROS2 Humble oficialmente suportado
  • Kernel RT-PREEMPT disponível (baixa latência)
  • Maior compatibilidade com drivers
  • Comunidade ativa

Instalação:

# Download ISO
wget https://releases.ubuntu.com/22.04/ubuntu-22.04.3-desktop-amd64.iso

# Criar USB bootável (Linux)
sudo dd if=ubuntu-22.04.3-desktop-amd64.iso of=/dev/sdX bs=4M status=progress

# Ou usar Rufus (Windows) / Etcher (macOS)

Particionamento recomendado:

  • / (root): 50GB mínimo
  • /home: Resto do disco
  • swap: 16GB (se RAM < 32GB)

Ferramentas Essenciais

FerramentaUsoInstalaçãoVersão Mín.
Ubuntu 22.04Sistema operacionalISO oficial22.04.3
ROS2 HumbleFramework de robóticaapt install ros-humble-desktopHumble Hawksbill
Python 3.10Linguagem principalIncluído no Ubuntu 22.043.10.x
VS CodeEditor de códigosnap install code --classic1.85+
GitControle de versãoapt install git2.34+
TerminatorTerminal avançadoapt install terminator-
RViz2Visualização 3DIncluído no ROS2 Desktop-
GazeboSimulador físicoapt install gazebo11.x

Instalação Passo a Passo

1. Preparar Sistema Base

# Atualizar sistema
sudo apt update && sudo apt upgrade -y

# Instalar ferramentas básicas
sudo apt install -y \
build-essential \
curl \
wget \
git \
vim \
terminator \
htop \
net-tools

# Configurar locale
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

2. Instalar ROS2 Humble

# Adicionar repositório ROS2
sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install curl -y

sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key \
-o /usr/share/keyrings/ros-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) \
signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] \
http://packages.ros.org/ros2/ubuntu \
$(. /etc/os-release && echo $UBUNTU_CODENAME) main" \
| sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

# Instalar ROS2
sudo apt update
sudo apt install -y ros-humble-desktop-full

# Instalar ferramentas de desenvolvimento
sudo apt install -y \
python3-colcon-common-extensions \
python3-rosdep \
python3-vcstool

# Inicializar rosdep
sudo rosdep init
rosdep update

3. Configurar Ambiente ROS2

# Adicionar source automático
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc

# Configurar DDS (middleware de comunicação)
echo "export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp" >> ~/.bashrc

# Configurar aliases úteis
cat << 'EOF' >> ~/.bashrc
alias cb='colcon build --symlink-install'
alias cs='source install/setup.bash'
alias killros='killall -9 gzserver gzclient; killall -9 rviz2'
EOF

source ~/.bashrc

4. Criar Workspace ROS2

# Criar estrutura de diretórios
mkdir -p ~/humanoid_ws/src
cd ~/humanoid_ws

# Build inicial (vazio)
colcon build

# Source workspace
echo "source ~/humanoid_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc

5. Instalar Pacotes Adicionais

# Navegação (Nav2)
sudo apt install -y ros-humble-navigation2 ros-humble-nav2-bringup

# Manipulação (MoveIt2)
sudo apt install -y ros-humble-moveit

# Visão computacional
sudo apt install -y ros-humble-vision-msgs ros-humble-image-transport-plugins

# Simuladores
sudo apt install -y ros-humble-gazebo-ros-pkgs

# Ferramentas úteis
sudo apt install -y \
ros-humble-rqt-* \
ros-humble-plotjuggler-ros

📚 Pré-Requisitos Detalhados

Conhecimento Necessário

✅ OBRIGATÓRIO:
- Python básico (variáveis, funções, loops)
- Linux terminal (cd, ls, mkdir)
- Tier 1 e 2 completos
- Compreensão de sistemas de coordenadas (x, y, z)

🟡 RECOMENDADO:
- Git (clone, commit, push)
- Matemática (álgebra linear, geometria)
- Física (cinemática, dinâmica)
- Docker (para ambientes isolados)

❌ NÃO NECESSÁRIO:
- C++ (usaremos Python)
- ROS1 (começaremos direto no ROS2)
- Machine Learning (ensinado no módulo 8)
- Eletrônica (abstração via ROS2)

Quiz de Auto-Avaliação

Teste se você está pronto:

  1. Python: Consigo criar classes e usar herança?
  2. Linux: Sei editar arquivos com vim/nano no terminal?
  3. Matemática: Entendo o que é um vetor e uma matriz?
  4. Física: Sei calcular velocidade a partir de posição/tempo?
  5. Git: Consigo clonar um repositório e criar branches?

Se respondeu "sim" para 1-3: Você está pronto! Se respondeu "não" para 1-2: Revise Python e Linux básico primeiro


🎓 Estrutura do Tier 3

10 Módulos Progressivos

#MóduloTempoFocoOutputs
1💻 Introdução à Programação15 minSetup, conceitos, ambienteWorkspace configurado
2🐍 Python para Robótica25 minNumPy, classes, asyncScripts de controle
3🤖 ROS2 Fundamentos30 minNodes, topics, servicesPublisher/Subscriber
4🚀 ROS2 Avançado30 minActions, lifecycle, parametersAction server completo
5👁️ Visão Computacional35 minOpenCV, detecção, trackingDetector de objetos
6🗺️ Navegação Autônoma30 minNav2, SLAM, path planningRobô navegando
7🦾 Manipulação30 minMoveIt, inverse kinematicsBraço pegando objetos
8🧠 IA e Aprendizado35 minRL, LLMs, imitation learningComportamento aprendido
9🔗 Integração de Sistemas25 minMulti-node, deploymentSistema completo
10🏆 Projeto Final40 minRobô autônomo completoPortfólio deployado

Total: ~4.5 horas


🧪 Primeiro Programa: Hello Humanoid

Teste de Instalação

#!/usr/bin/env python3
# test_installation.py

import sys
import rclpy
from rclpy.node import Node

class HelloHumanoid(Node):
def __init__(self):
super().__init__('hello_humanoid')
self.get_logger().info('🤖 Hello from Humanoid Robot!')
self.get_logger().info(f'ROS2 Version: {rclpy.__version__}')
self.get_logger().info(f'Python Version: {sys.version}')

def main():
rclpy.init()
node = HelloHumanoid()
print("\n✅ Instalação funcionando corretamente!")
print("🎉 Você está pronto para programar humanoides!\n")
node.destroy_node()
rclpy.shutdown()

if __name__ == '__main__':
main()

Rodar:

cd ~/humanoid_ws/src
python3 test_installation.py

Output esperado:

[INFO] [hello_humanoid]: 🤖 Hello from Humanoid Robot!
[INFO] [hello_humanoid]: ROS2 Version: 0.x.x
[INFO] [hello_humanoid]: Python Version: 3.10.x

✅ Instalação funcionando corretamente!
🎉 Você está pronto para programar humanoides!

🔧 Troubleshooting Comum

Problema 1: ROS2 não encontrado

Erro:

bash: ros2: command not found

Solução:

source /opt/ros/humble/setup.bash
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc

Problema 2: Colcon build falha

Erro:

Package 'xxx' not found

Solução:

# Atualizar rosdep
rosdep update
rosdep install --from-paths src --ignore-src -y

# Limpar build e tentar novamente
rm -rf build install log
colcon build

Problema 3: Permissão negada

Erro:

Permission denied: /dev/ttyUSB0

Solução:

# Adicionar usuário aos grupos corretos
sudo usermod -a -G dialout $USER
sudo usermod -a -G video $USER

# Logout e login novamente

💼 Oportunidades de Carreira

Salários (EUA, 2025)

CargoJúniorPlenoSêniorStaff+
Robotics Software Engineer$80k$120k$180k$250k+
ROS2 Developer$75k$110k$160k$220k
Computer Vision Engineer$90k$130k$200k$300k+
AI/ML Robotics Engineer$100k$150k$250k$400k+

Empresas contratando:

  • 🚗 Tesla: Optimus team (Palo Alto, CA)
  • 🤖 Boston Dynamics: Software engineers (Waltham, MA)
  • 🏃 Agility Robotics: Digit development (Albany, OR)
  • 🦾 Figure AI: Humanoid development (Sunnyvale, CA)
  • 🐕 Unitree: International team (China/Remote)
  • 🏭 Sanctuary AI: Phoenix robot (Vancouver, Canada)
  • 🤖 Apptronik: Apollo robot (Austin, TX)

Habilidades Mais Valorizadas (2025)

SkillDemandaSalário Premium
ROS2 + Nav2🔥🔥🔥🔥🔥+$25k
MoveIt2🔥🔥🔥🔥+$20k
PyTorch + RL🔥🔥🔥🔥🔥+$40k
Isaac Sim🔥🔥🔥+$15k
Whole-Body Control🔥🔥🔥🔥+$30k
Computer Vision (3D)🔥🔥🔥🔥🔥+$35k

Portfólio ideal:

  • GitHub com 5+ projetos ROS2
  • Vídeos de robôs funcionando (YouTube)
  • Contribuições para projetos open-source
  • Blog técnico com posts sobre desafios resolvidos

📖 Recursos de Aprendizado

Documentação Oficial

Comunidades

Cursos Complementares

  • The Construct: ROS2 for Beginners
  • Udemy: ROS2 for Robotics Developers
  • Coursera: Modern Robotics (Northwestern)
  • MIT OCW: Underactuated Robotics

✅ Checklist de Conclusão

  • Ubuntu 22.04 instalado e funcionando
  • ROS2 Humble instalado (ros2 --version funciona)
  • Workspace ~/humanoid_ws criado e compilado
  • Hello Humanoid rodou com sucesso
  • Entendi os 5 layers da arquitetura de software
  • VS Code instalado com extensões ROS
  • Git configurado (nome e email)
  • Revisei pré-requisitos de Python e Linux

🔗 Próximos Passos

Próximo Módulo

🐍 Python para Robótica →

Aprenda Python avançado: NumPy, OOP, asyncio e boas práticas específicas para robótica.


⏱️ Tempo estimado: 40-60 min 🧠 Nível: Iniciante-Intermediário 💻 Hands-on: 70% prático, 30% teórico