Este repositório contém o código fonte para a aula de introdução ao ROS 2, onde o objetivo é programar o Perse para competir em uma partida de sumô.
O objetivo é desenvolver o "cérebro" do Perse para que ele consiga, de forma autônoma:
- Localizar um cone (seu oponente) dentro de um ringue de sumô (dohyo).
- Mover-se em direção ao cone.
- Empurrar o cone para fora do ringue.
- Evitar cair para fora do ringue, detectando a linha branca que delimita a arena.
Você pode configurar o ambiente de desenvolvimento de duas maneiras: usando Docker (recomendado) ou em uma instalação nativa do Ubuntu.
O Docker simplifica a configuração do ambiente, garantindo que todas as dependências estejam corretas.
- Construa a imagem Docker:
docker compose build
- Inicie o container:
docker compose up -d
- Acesse o terminal do container:
O serviço é nomeado
perseno arquivodocker compose.yml.docker compose exec perse bash - Dentro do container, compile o projeto:
O código já estará no diretório
/home/ros/perse_ws.cd /home/ros/perse_ws colcon build
Se preferir instalar em sua própria máquina, você precisará do Ubuntu 22.04 e do ROS 2 Humble.
-
Instale o ROS 2 Humble: Siga as instruções oficiais para instalação via pacotes Debian.
🔗 Link Oficial: Instalação do ROS 2 Humble (Ubuntu)
-
Clone este repositório: Crie um workspace e clone o projeto na pasta
src.mkdir -p ~/perse_ws/src cd ~/perse_ws/src git clone https://github.com/ThundeRatz/aula-ros-2025.git .
-
Instale as dependências do ROS: Use a ferramenta
rosdeppara instalar todas as dependências listadas nos arquivospackage.xml.cd ~/perse_ws rosdep install -i --from-path src --rosdistro humble -y
-
Compile o workspace: Use
colconpara compilar os pacotes.cd ~/perse_ws colcon build
Após a compilação, abra dois terminais. Em ambos, certifique-se de estar no ambiente correto:
- Se estiver usando Docker, acesse o container com
docker compose exec perse bash. - Se for instalação nativa, execute
source ~/perse_ws/install/setup.bashem cada terminal.
-
Terminal 1: Inicie a Simulação Este comando inicia o simulador Webots com o robô Perse no dohyo.
ros2 launch perse_sumo sim_launch.py
-
Terminal 2: Inicie o Cérebro do Robô Este comando executa o nó de controle que você irá modificar.
ros2 launch perse_brain brain.launch
Agora você está pronto para modificar o código em src/perse_brain/src/brain.cpp e ver o resultado na simulação!
O workspace está organizado em dois pacotes principais:
.
├── perse_brain/ # Pacote com a lógica de controle do robô
│ ├── CMakeLists.txt
│ ├── package.xml
│ ├── config/
│ │ └── brain_parameters.yaml # Parâmetros de configuração do cérebro
│ ├── include/
│ │ └── perse_brain/
│ │ └── brain.hpp # Arquivo de cabeçalho do nó
│ ├── launch/
│ │ └── brain.launch # Arquivo de lançamento para o cérebro
│ └── src/
│ └── brain.cpp # Onde a mágica acontece! Código principal do robô
└── perse_sumo/ # Pacote da simulação
├── CMakeLists.txt
├── package.xml
├── launch/
│ └── sim_launch.py # Arquivo de lançamento para a simulação
├── protos/ # Modelos 3D para o Webots
├── resource/
│ └── perse.urdf # Descrição do robô (sensores, links)
├── src/
│ └── PerseDriver.cpp # Driver que conecta o Webots com o ROS 2
└── worlds/
└── world.wbt # Arquivo do mundo da simulação
Os slides dessa aulinha foram feitos utilizando o processador de texto Typst
O código fonte dos slides estão localizados na pasta Slides ROS 2025. Para compilar basta executar o comando abaixo
cd "Slides ROS 2025"
typst compile main.typIsso vai gerar um arquivo main.pdf
Nota: Os slides utilizam a fonte Barlow. Se você estiver compilando localmente e a fonte não estiver instalada, a renderização pode ficar diferente. Para instalar a fonte no Linux:
mkdir -p ~/.local/share/fonts cd ~/.local/share/fonts for variant in Regular Bold Italic BoldItalic Medium SemiBold; do wget -q https://github.com/google/fonts/raw/main/ofl/barlow/Barlow-${variant}.ttf done fc-cache -f
Caso queira uma experiência mais parecida com o overleaf, acesse o site oficial typst.app e importe os arquivos como um projeto.
O editor online tem um preview de compilação rápida, é multiplayer e tem várias outras funções de qualidade de vida.
Os slides dessa aulinha contém alguns gifs. Para poder visualizá-los é necessário compilar os slides para html.
Isso é feito utilizando a ferramenta touying-exporter. Com ela instalada, execute o comando abaixo
cd "Slides ROS 2025"
touying compile main.typIsso vai gerar um arquivo main.html que pode ser visualizado num navegador web.
Os slides são automaticamente compilados e publicados no GitHub Pages sempre que há alterações na pasta Slides ROS 2025 na branch main.
Você pode acessar os slides online em:
- Apresentação HTML: https://thunderatz.github.io/aula-ros-2025/
- Download PDF: https://thunderatz.github.io/aula-ros-2025/slides.pdf
O processo de build e deploy é feito automaticamente via GitHub Actions.
