Este repositório contém o código-fonte para o projeto da disciplina de Sistemas de Tempo Real (2025/01) da Universidade de Brasília.
Autores: Gabriel Rabelo, Aysamake Ribeiro e Pedro Brum.
Este projeto consiste na simulação e controle de um robô aspirador autônomo. O objetivo é desenvolver um sistema reativo com comportamento determinístico, aplicando conceitos de sistemas de tempo real. A arquitetura é modular, implementada em
C++ com o middleware ROS 2, e o robô opera em um ambiente de simulação Gazebo.
As tarefas críticas de controle são gerenciadas com PThreads (POSIX Threads) e a integridade de dados concorrentes é garantida pelo uso de mutexes, assegurando que os requisitos temporais do sistema sejam atendidos.
- Navegação Autônoma: O robô é projetado para navegar em ambientes desconhecidos.
- Detecção e Desvio de Obstáculos: Utiliza dados de um sensor LIDAR simulado para identificar e desviar de obstáculos em tempo real.
- Controle de Tempo Real: Emprega uma arquitetura multithread com PThreads para gerenciar tarefas com diferentes prioridades e períodos.
- Mapeamento (SLAM): A arquitetura prevê a integração com um nó de SLAM para construção de mapa em tempo real.
- Gerenciamento de Bateria: Uma thread dedicada monitora o nível de bateria simulado para acionar um comportamento de retorno à base.
-
Ubuntu 22.04 LTS
-
ROS 2 Humble Hawksbill instalado
-
Gazebo e pacotes de integração com ROS 2:
sudo apt update sudo apt install ros-humble-gazebo-ros-pkgs ros-humble-gazebo-plugins ignition-fortress
-
Clone este repositório para o diretório src do seu workspace ROS 2:
cd ~/ros2_ws/src git clone https://github.com/GRabelo23/TrabalhoSTR.git
-
Navegue para a raiz do workspace e compile o projeto:
cd ~/ros2_ws colcon build
Para executar o projeto, você precisará de dois terminais.
-
Terminal 1: Iniciar a Simulação do Gazebo
# Navegue até a pasta do seu workspace cd ~/ros2_ws # Ative o ambiente do ROS 2 source install/setup.bash # Inicie a simulação (Gazebo com o mapa e o robô) ros2 launch trabalhoSTR gazebo_world.launch.py
-
Terminal 2: Iniciar o Nó de Controle do Robô
# Navegue até a pasta do seu workspace cd ~/ros2_ws # Ative o ambiente do ROS 2 neste novo terminal source install/setup.bash # Inicie o seu nó de controle ros2 run trabalhoSTR controller_node