Guia Prático de ROS 2 e Robótica Móvel

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?

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.

Logo do ROS 2
Figura 1 - Logo oficial do ROS 2.

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

Passos de Instalação

  1. Atualizar o sistema:
    sudo apt update && sudo apt upgrade
  2. Adicionar o repositório ROS 2:
    sudo apt install software-properties-common
    sudo add-apt-repository universe
  3. 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 -
  4. Instalar ROS 2 (por exemplo, a versão Humble):
    sudo apt update
    sudo apt install ros-humble-desktop
  5. 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
Instalação do ROS 2
Figura 2 - ROS 2 instalado e funcionando.

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

Estrutura de Pacote
Figura 3 - Estrutura de um pacote ROS 2 Python.

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:

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
Exemplo do RViz
Figura 4 - Interface do RViz mostrando tópicos e frames.

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.

TurtleBot3 no Gazebo
Figura 5 - TurtleBot3 simulado no ambiente Gazebo.

Comandos Úteis no Gazebo

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

Boas Práticas

  1. Organizar o workspace em pacotes modulares e reaproveitáveis.
  2. Documentar cada nó e tópico que seu sistema publica ou subscreve.
  3. Usar o controle de versão (Git) para gerenciar alterações de código e configuração.
  4. 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.

Trabalhos práticos em ROS 2
Figura 6 - Demonstração de simulação e visualização de movimento em ROS 2.

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:

Formulário de Comentários