Introdução à Robótica Móvel e ao ROS 2
Bem-vindo ao nosso guia prático sobre Robótica Móvel e o uso do ROS 2 (Robot Operating System 2). Este material foi criado para estudantes universitários, professores, entusiastas da robótica, pesquisadores e qualquer pessoa interessada em aprender os fundamentos do controle, simulação e programação de robôs móveis.
A robótica móvel é uma área fascinante que envolve o estudo, o projeto e o desenvolvimento de robôs capazes de se locomover de maneira autônoma ou semi-autônoma em ambientes físicos. Ao longo das últimas décadas, ela se tornou essencial em aplicações industriais, agrícolas, logísticas, de pesquisa científica, e até mesmo em ambientes domésticos.
O ROS 2 é um framework moderno de software que fornece ferramentas, bibliotecas e convenções para construir aplicações de robótica robustas. Ele permite a comunicação entre múltiplos módulos de software (chamados nós), a troca de mensagens por meio de tópicos, serviços de chamadas remotas, simulação e integração com hardware real.
Por que aprender ROS 2?
- É um padrão aberto e utilizado mundialmente na pesquisa e na indústria robótica.
- Permite desenvolver rapidamente sistemas complexos, modularizando código em nós que comunicam entre si.
- Tem suporte para simulação 3D (Gazebo) e ferramentas visuais (RViz) para depuração e desenvolvimento.
- Oferece suporte nativo a sistemas distribuídos, comunicação em tempo real, e é construído sobre middleware DDS robusto.
Conteúdo do Guia
Este material está dividido em seções progressivas, começando pela instalação e configuração do ROS 2, passando pelos primeiros passos no desenvolvimento de nós e pacotes, utilização de ferramentas de depuração, simulação de robôs móveis com Gazebo, e encerrando com boas práticas e exemplos de trabalhos práticos. Ao final, incluímos um espaço para comentários e feedback do público, para que possamos aprimorar continuamente este conteúdo.

Como usar este Guia
Recomendamos que você leia cada seção na ordem, execute os exemplos práticos em seu próprio ambiente de desenvolvimento, e utilize o formulário ao final para enviar dúvidas, sugestões e comentários. Este é um material vivo, que evoluirá com a participação da comunidade.
Instalação e Configuração do ROS 2
Antes de começar a programar robôs móveis com ROS 2, é fundamental instalar corretamente o ambiente de desenvolvimento. Esta seção fornece um guia passo-a-passo para instalar o ROS 2 em sistemas baseados em Linux (Ubuntu), que é a plataforma recomendada para aprendizado e prototipagem.
Requisitos de Sistema
- Ubuntu 22.04 (ou 20.04) 64-bit.
- Espaço em disco de pelo menos 5 GB.
- Conexão de internet estável para baixar pacotes.
Passos de Instalação
-
Atualizar o sistema:
sudo apt update && sudo apt upgrade
-
Adicionar o repositório ROS 2:
sudo apt install software-properties-common
sudo add-apt-repository universe
-
Configurar a chave do repositório:
sudo apt update && sudo apt install curl -y
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
-
Instalar ROS 2 (por exemplo, a versão Humble):
sudo apt update
sudo apt install ros-humble-desktop
-
Adicionar o ambiente ROS ao bash:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
Configurando o Workspace
Depois de instalar o ROS 2, recomendamos criar um workspace para seus projetos:
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build
source install/setup.bash
Verificando a Instalação
Teste se o ROS 2 está funcionando corretamente:
ros2 run demo_nodes_cpp talker
Em outro terminal:
ros2 run demo_nodes_cpp listener

Com isso, o ROS 2 está pronto para ser utilizado. Na próxima seção, veremos como criar nós e pacotes para começar o desenvolvimento prático.
Criando Workspace, Pacotes e Nós no ROS 2
Agora que você tem o ROS 2 instalado e um workspace configurado, é hora de aprender como estruturar seus projetos criando pacotes e nós. Um nó é a unidade básica de execução no ROS 2 — ele realiza uma função específica e se comunica com outros nós via tópicos e serviços.
Criando um Pacote
Dentro do diretório
src
do seu workspace, crie um novo pacote. Por exemplo, para criar um pacote Python:
cd ~/ros2_ws/src
ros2 pkg create --build-type ament_python meu_primeiro_pacote
Isso cria a estrutura básica de diretórios e arquivos para seu pacote Python.
Escrevendo um Nó Simples
Abra o arquivo
meu_primeiro_pacote/meu_primeiro_pacote/talker.py
e adicione:
import rclpy
from rclpy.node import Node
class Talker(Node):
def __init__(self):
super().__init__('talker')
self.create_timer(1.0, self.timer_callback)
def timer_callback(self):
self.get_logger().info('Olá mundo do ROS 2!')
def main():
rclpy.init()
node = Talker()
rclpy.spin(node)
rclpy.shutdown()
if __name__ == '__main__':
main()
Construindo o Workspace
Volte para a raiz do workspace e construa tudo:
cd ~/ros2_ws
colcon build
Executando o Nó
Após construir, execute:
source install/setup.bash
ros2 run meu_primeiro_pacote talker
Exemplo de Estrutura de Pacote

Com isso, você criou, compilou e executou seu primeiro nó no ROS 2. Na próxima seção, vamos explorar ferramentas importantes para depuração, visualização e análise de dados em ROS 2.
Ferramentas de Desenvolvimento – Consoles, Debug, Rosbag, RViz e Rqt
O ROS 2 oferece um conjunto robusto de ferramentas para auxiliar no desenvolvimento, depuração e análise de sistemas robóticos. Aqui destacamos algumas das mais utilizadas.
Consoles e Logs
O ROS 2 fornece utilitários de console para monitorar mensagens publicadas, tópicos ativos, serviços e parâmetros de configuração:
: lista todos os tópicos ativos.ros2 topic list
: exibe mensagens publicadas em um tópico.ros2 topic echo /nome_topico
: lista todos os nós ativos.ros2 node list
: lista parâmetros de nós ativos.ros2 param list
Rosbag
Rosbag é uma ferramenta para gravar e reproduzir tópicos de mensagem. Isso é útil para análise offline, reprodução de testes e criação de cenários de simulação.
ros2 bag record -o meu_log /topic1 /topic2
Para reproduzir:
ros2 bag play meu_log
RViz
RViz é um visualizador 3D para ROS 2. Ele permite observar dados de sensores, frames de referência, caminhos de movimento e muito mais. Para abrir o RViz:
rviz2
Dentro do RViz, você pode adicionar displays para tópicos específicos, como nuvens de pontos, mapas de ocupação, frames TF, entre outros.
Rqt
Rqt é uma interface gráfica modular para ROS 2. Com ele, você pode monitorar gráficos de tópicos, explorar graficamente árvores de nós e tópicos, depurar parâmetros, e até mesmo criar plugins personalizados.
rqt

Na próxima seção, aprenderemos a simular robôs móveis em ambientes virtuais usando o Gazebo e a integrar sensores e plugins simulados.
Simulação com Gazebo – Modelos, Plugins e Sensores
O Gazebo é um simulador 3D amplamente utilizado no desenvolvimento de robôs móveis. Ele permite criar ambientes realistas, testar modelos de robôs, sensores e plugins sem necessidade de hardware físico.
Instalando o Gazebo
Em distribuições recentes do ROS 2 (como Humble), o Gazebo pode ser instalado via:
sudo apt install ros-humble-gazebo-ros-pkgs
Executando um Mundo Simples
Para iniciar o Gazebo com um mundo de exemplo:
gazebo
Simulando um Robô (TurtleBot3)
O TurtleBot3 é um robô educacional popular com suporte nativo no ROS 2. Para rodar a simulação:
sudo apt install ros-humble-turtlebot3*
export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
Adicionando Sensores e Plugins
O Gazebo permite adicionar sensores virtuais como LIDAR, câmeras, IMU, e mais, para simular comportamentos realistas. Você pode modificar arquivos de descrição do robô (
.urdf
ou .xacro
) para incluir plugins que publicam dados em tópicos ROS 2.

Comandos Úteis no Gazebo
- Reset World: Reinicia o ambiente de simulação.
- Pause: Pausa a simulação para análise.
- Insert: Adiciona novos modelos ao ambiente.
Com a simulação configurada, podemos criar algoritmos de navegação, controle de movimento e testes em ambientes virtuais antes de passar para hardware real. Na próxima seção, exploraremos práticas, desafios comuns e dicas para desenvolver projetos robustos em ROS 2.
Trabalhos Práticos, Desafios e Conclusão
Durante o curso e as atividades práticas com ROS 2, é comum enfrentar desafios que vão desde configurações de ambiente até o desenvolvimento de algoritmos de controle complexos. Aqui destacamos algumas dificuldades comuns e boas práticas para contorná-las.
Desafios Frequentes
- Dependências quebradas: usar
e verificar orosdep
ajuda a resolver problemas de compilação.package.xml
- Comunicação entre nós: sempre verifique nomes de tópicos, namespaces e tipos de mensagens.
- Simulação vs. Real: os modelos de simulação podem ter pequenas diferenças de comportamento em relação ao robô físico; ajuste parâmetros de controle para cada contexto.
Boas Práticas
- Organizar o workspace em pacotes modulares e reaproveitáveis.
- Documentar cada nó e tópico que seu sistema publica ou subscreve.
- Usar o controle de versão (Git) para gerenciar alterações de código e configuração.
- Testar incrementalmente: valide cada parte do sistema antes de integrá-la ao conjunto.
Trabalhos Práticos
Ao longo do projeto de extensão, foram desenvolvidos exemplos de simulação, scripts de controle de movimento para robôs móveis, integração com sensores virtuais e análise de dados via RViz e Rqt. Esse conjunto de práticas reforça a importância de dominar tanto a parte teórica quanto a execução técnica de projetos de robótica.

Conclusão
Esperamos que este material ajude você a iniciar seus estudos e projetos em ROS 2 e robótica móvel. A robótica é uma área em constante evolução e cada contribuição da comunidade fortalece o ecossistema aberto do ROS 2. Encorajamos que compartilhe seu feedback usando o formulário abaixo.
Deixe seu Comentário
Clique no link abaixo para enviar suas impressões, sugestões ou relatar dificuldades encontradas: