Tamandutech / LineFollower_Braia_Code

Repositório de códigos do robô segue linha Braia
5 stars 1 forks source link

Seguidor de linha - Braia

O algoritmo para esse seguidor de linha tem suas classes e arquivos separados em pastas de acordo com as suas funções e responsabilidades que podem ser as listadas abaixo:

Drivers

Atualmente, os drivers para cada componente de hardware do robô estão armazenados na pasta robot/components, sendo os drivers responsáveis por se comunicar ou receber informações dos hardwares instalados no robô, abaixo estão listadas as pastas que contém drivers e a sua função:

Serviços

Os serviços do robô estão em sua maioria na pasta robot/services, neles que a lógica utilizada no robô para executar as suas tarefas é implementada, eles possuem cada um a sua função e geralmente executam paralelamente no microcontrolador, atráves das tasks do FreeRTOS, ou auxiliam outros serviços nas suas funções, os serviços utilizados atualmente pelo robô e suas tarefas principais estão listadas abaixo:

Gerenciamento e armazenamento de dados

Os parâmetros do robô e mapeamento são armazenados na memória flash permitindo que eles sejam salvos no robô, entretanto para possibilitar o gerenciamento desses parâmetros e facilitar o armazenamento e carregamento deles da memória flash, criamos a pasta DataObjects, onde se encontram as classes encarregadas de gerenciar os dados e parâmetros armazenados nas estruturas de dados do robô e também de lidar com o armazenamento do ESP32 para facilitar o uso da flash, as classes que estão nessas pastas são lisatadas abaixo:

Estrutura de dados

Os dados utilizados pelo robô são armazenados em classes, em que, cada classe tratará dos dados de sistemas ou funções específicas, sendo essas classes as listadas abaixo:

Todas essas classes de dados relacionadas ao robô estão localizadas na pasta RobotData que também armazena algumas enums e maps (dicionários) do robô.

Tratamento e execução de comandos do bluetooth

O robô também possui uma dashboard hospedada no firebase que permite a edição e backup de parâmetros, alteração e backup do mapeamento da pista e geração de gráficos em tempo real, e com o intuito de possibilitar a comunicação à distância da dash com o robô, utilizamos comunicação bluetooth (BLE GATT), sendo o serviço BLEService responsável por tratar dessa comunicação sem fio com a dashboard, sendo ele responsável pela interpretação dos comandos enviados pela dash e retorno dos dados solicitados. Os comandos recebidos e enviados pelo robô são comandos de texto e para simplificar a interpretação deles utilizamos a biblioteca BetterConsole para extrair as partes importantes dos comandos e executar as funções relativas à esses comandos que estão na pasta CMDWrapper que encapsula a função executada por cada comando.

Para mais informações sobre o dashboard, acesse o repositório a seguir: LineFollower_CCenter_Code