Estabilidade e Controle de um Micromouse

CONAENGE » Arduino » Estabilidade e Controle de um Micromouse

Modelos matemático-computacionais

Estabilidade e Controle de um Micromouse
Modelos matemático-computacionais

Gustavo T. Yamashita*
[email protected]

Cristiano N. Tonéis**
[email protected]

Centro Universitário FIAP/SP

Link para vídeo do projeto: <https://www.youtube.com/watch?v=Bpw74yZVNro&t=1s>.

Resumo: Nosso projeto de Iniciação Científica tem como objetivo descrever os modelos matemático-computacionais que emergem na produção de um micromouse. Ao compreender essas relações de estabilidade e controle para um micromouse expressamos uma maneira de desenhar contextos básicos para o desenvolvimento de robôs móveis ao localizar-se e mapear espaços de navegação.

1. Introdução: O Micromouse

No Brasil a cultura das competições Micromouse não são muito populares, mas essas competições existem desde 1980 (Micromouse Competition) de acordo com David (2001, p.1) as competições envolviam equipes que tinham que montar um robô que fosse capaz de resolver um labirinto de 16×16 células com o objetivo ou destino no centro desse labirinto . A gente pode interpretar o Micromouse como um robô móvel que possui a capacidade de explorar e mapear um labirinto com o propósito de encontrar um destino, seja o centro do labirinto ou qualquer marcação por exemplo. Está é uma pesquisa de iniciação científica e tem como objetivo produzir um micromouse – robô móvel – capaz de, ao percorrer um labirinto, identificar objetos pré-determinados – cores – bem como seu destino final (qualquer que seja a marcação). E descrever e mapear a cinemática deste micromouse em seus modelos matemático-computacionais.

Protótipo em Arduino do Micromouse

Figura 1: Protótipo em Arduino. Fonte: Autoria Própria.

Um Micromouse (Figura 1) se apresenta como um robô autômato com a capacidade de explorar – mapear espaços e localizar-se – sem a necessidade de estabelecer mapas prévios e partir disso tomar decisões. A aplicabilidade para isto é muito vasta, podemos utilizar um micromouse ou mimouses – com comportamento coletivo ou “de colmeia” – para a exploração de um prédio em chamas com o objetivo de encontrar vítimas; ou, por exemplo, um robô explorador que encontra minas terrestres em regiões pós conflitos; um robô com a capacidade de entrar em espaços pequenos como escombros ou até mesmo um robô para te orientar em uma cidade. É a necessidade de estudar as relações matemáticas-computacionais de um Micromouse se apresenta como um amplo modelo de aplicações robóticas.

Nosso protótipo inicialmente foi construído com kit Arduino Mega e utilizamos Chassi/corpo do robô; motores DC; rodas; sensores ultrassônicos HC-SR04; Giroscópio MPU-6050; Sensor de velocidade (encoder); Ponte H L298N; Bateria e uma roda boba.

Learning by doing (aprender fazendo) indica uma teoria da Educação (chamada progressista) inaugurada pelo filósofo americano John Dewey (1859 – 1952). Ao estudarmos os modelos matemático-computacionais visando um protótipo de um Micromouse delimitamos uma matemática aplicada e contextualizada, ressignificando conteúdos clássicos da “matemática escolar”. Enquanto que os algoritmos computacionais que emergem nesta produção de um robô móvel denotam a contemporaneidade do conhecimento humano no qual ultrapassamos o “saber fazer” para “ensinar a máquina como fazer”. Desmistificando a inteligência artificial e compreendendo processos que envolvem nosso mundo vivencial atualizado.

2. As relações matemático-computacionais de um Micromouse

As técnicas matemáticas visam solucionar problemas, modelar soluções e buscar aplicações (Tonéis, 2017). Neste sentido, em nosso projeto, utilizamos dos modelos matriciais e vetoriais para uma análise matemática de um ambiente de modo que o robô consiga se orientar e determinar sua próxima ação. Da álgebra linear e geometria analítica (sistema SLAM – localização e mapeamento), do cálculo diferencial-integral (controle PID) em sistemas de controles e da interpolação para gerar funções que possibilitem predizer dados de um sensor, como por exemplo, o infravermelho ou sensor de cores.Nos modelos computacionais temos as lógicas computacionais (booleana; fuzzy; redes neurais; quântico) bem como as linguagens de programação (C; C#; C++; linguagem de programação Arduino; etc.). Dessa forma nosso algoritmo de solução em “encontrar o destino em labirintos” escolhido foi o FloodFill. Neste algoritmo dividimos o labirinto em células e para cada célula atribuímos um valor correspondente à quantidade de passos necessários para se chegar até ali partindo da primeira posição do robô, desta forma é possível mapear o labirinto e aplicar um modelo matricial para descobrir o caminho mais rápido ao destino, o resultado deste algoritmo pode ser observado na figura 2: (-1) são paredes; (10) caminhos livres e (98) a marcação do destino.

A esquerda Labirinto mapeado utilizando o algoritmo Flood Fill. A direita modelo matricial do código desenvolvido para Arduino.

Figura 2: A esquerda Labirinto mapeado utilizando o algoritmo Flood Fill. A direita modelo matricial do código desenvolvido para Arduino. Fonte: Autoria Própria.

2.1 A estabilidade e precisão

Para que o Micromouse consiga efetuar o Algoritmo de exploração de maneira eficiente dentro do labirinto é necessário garantir que seus movimentos sejam executados com maior precisão possível, sendo o suficiente para evitar erros grosseiros, dessa forma o estudo de sistemas e algoritmos de controle são extremamente importantes neste projeto.

Para a engenharia mecatrônica dois grandes desafios surgem ao projetor e construir algum robô ou máquina que possua a capacidade de se movimentar: a estabilidade e a precisão dos movimentos. É muito comum notarmos defeitos em componentes que estamos utilizando em algum projeto, e de fato sabemos que não existem “peças perfeitas” e essas imperfeições implicam em erros na execução das ações desse robô.

Podemos demonstrar esses erros com um protótipo Micromouse feito em Arduino em nosso projeto. Em nosso caso era evidente os erros de hardware, por exemplo, as rodas do robô não estavam muito bem alinhadas, gerando uma diferença na rotação e alterando seu sincronismo (defeito de fábrica); o sensor de distância (ultrassônico) mesmo com o robô parado oscilava muito entre outros problemas. O maior desafio com as rodas não sincronizadas foi fazer com que o robô se movimentasse em uma direção retilínea (figura 3), por mais que pareça “fácil” esse sincronismo se torna complexo quando enfrentamos as imperfeições de cada peça.

Erros encontrados na movimentação do Micromouse

Figura 3: Erros encontrados na movimentação. Fonte: Autoria Própria.

Observamos pela figura 3 que os movimentos realizados pelo micromouse enquanto programado para seguir em frente não coincidiam com o desejado (representado pela seta em vermelho). Podemos ler as rotações de cada motor a fim de sincronizá-los, o problema dessa hipótese surge quando não existe um padrão regular, além de que eventos externos como uma pedra no caminho podem atrapalhar este sincronismo. Desse modo, para ser eficiente em sua autocorreção temos que desenvolver um sistema que a partir de uma leitura constante ou em “loop” seja capaz de dimensionar esses erros para aplicar uma correção, um algoritmo de controle chamado PID – proporcional, integral e derivativo – pode contribuir para esse efeito desejado.

2.2 O Controle PID

O controle PID utiliza das técnicas do cálculo diferencial-integral em seu desenvolvimento, o
sistema é simples em seu conceito e em seu modelo computacional. O PID pode ser concebido
em 3 partes:
      • O feedback: leitura de algum sensor, em nosso caso ultrassom;
      • O setpoint: a medida que se deseja atingir ou manter;
      • E o controle: temos o cálculo proporcional (“P”), integral (”I”) e derivativo (”D”).
PID

Podemos utilizar o exemplo anterior para demonstrar o PID, queremos então que o robô seja capaz de andar reto mesmo com as imperfeições de cada peça, para isso precisamos de algum sensor que consiga informar se o robô está se movimentando de forma reta ou não, no caso desse protótipo estamos utilizando um giroscópio, ou seja, um sensor capaz de medir a variação/mudança dos eixos x,y e z de um robô. Assim que o robô fosse ligado ele definiria sua direção como o ângulo 0°, ao virar para a esquerda esse ângulo aumenta (10 graus) por exemplo.

Orientação do robô com o giroscópio (Micromouse)

Figura 4: Orientação do robô com o giroscópio. Fonte: Autoria Própria.

O que podemos interpretar como erro então? Basicamente, o erro é a diferença do setpoint (ângulo 0) com o feedback (leitura do giroscópio).

Erro

Temos no P do PID a correção sendo proporcional ao erro, por exemplo, caso o erro seja de 30 graus, logo a correção deve ser de -30 graus para então o robô chegar ao zero, daí surge a primeira equação.

Proporcional

Dessa forma o movimento do robô fica mais perto do desejado, pois cada erro é tratado de forma única com sua correção proporcional. A constante Kp (figura 5) serve para controlar a importância/peso dessa equação no sistema de forma que você consiga modificá-la para atender as características do robô e do ambiente onde ele está atuando.

Interferência do Kp na correção (Micromouse)

Figura 5: Interferência do Kp na correção. Fonte: Autoria Própria.

O proporcional, como qualquer correção, não é perfeito, se o robô estiver muito longe do setpoint então é possível que ao aplicar a correção isso gere algumas oscilações, essas oscilações são extremamente perigosas caso o robô precise de uma precisão extraordinária, por exemplo, em algum robô cirurgião. O parâmetro visa sempre a redução dos erros e a minimização da variação no deslocamento.

Oscilação gerada pelo proporcional

Figura 6: Oscilação gerada pelo proporcional. Fonte: Autoria Própria.

Por vezes o setpoint se modifica de forma que o robô precisa aplicar uma nova correção e é possível que essa correção esteja tão longe do primeiro setpoint que o controle “estoura” fazendo com que o robô entre em um loop infinito desenhando um círculo.

Robô “estourando” a correção e entrando em um loop circula (Micromouse)

Figura 7: Robô “estourando” a correção e entrando em um loop circular. Fonte: Autoria Própria.

Uma forma de corrigir este tipo de erro está em utilizar o “D” do PID, a derivada! A derivada mede a diferença da última medida com a medida atual e partir daí se soma com o P (proporcional da equação) diminuindo a força de correção, podemos dizer então que estamos verificando a derivada do erro em relação ao tempo (o tempo pode ser interpretado com o loop de leitura do sensor na programação).

Derivativo

Interferência do Kd na correção (Micromouse)

Figura 8: Interferência do Kd na correção. Fonte: Autoria Própria.

Outro problema que interfere na estabilidade do robô são os eventos “externos” ou inerentes ao sistema. Por exemplo: uma pedra no caminho; um vento forte; um deslize do chão com a roda e algum obstáculo que empurre o robô. Esses eventos são imprevisíveis e podem alterar a rota do robô de forma que ocorra um erro seja este maior ou menor. O controle proporcional e o derivativo conseguem dar conta dos erros grandes, mas existem os erros infinitesimais (tendem a zero).

Alguns erros são representados por valores mínimos, muito pequenos e consequentemente não geram força suficiente para o motor, isso pode representar um problema dependendo da precisão que o robô deve atender, imagine por exemplo um robô pintor que desenha algum logo em camisetas, e por algum motivo alguém acaba esbarrando nesse robô de forma que ele saia do setpoint, o robô aplica o proporcional e o derivativo para aplicar a correção mas mesmo assim um erro muito pequeno continua, as próximas camisetas terão o logo desalinhado ou levemente torto, um grande desperdício para a empresa com certeza, mas então para corrigir esse erro infinitesimal, surge a Integral para nos ajudar.

O I do PID leva em consideração os erros infinitesimais de forma que ao longo do tempo são somados para gerarem a força necessária de correção para o motor que atua no robô.

Integral

Temos então a integração dos erros ao longo do Loop do sensor, acumulando esses erros que são ignorados pelo motor, desta forma depois de um tempo esse erro se torna grande o suficiente para uma correção.

À esquerda Interferência do Ki na correção. À direita excerto do código (Arduino, ‘void loop()’) .

Figura 9: À esquerda Interferência do Ki na correção. À direita excerto do código (Arduino, ‘void loop()’). Fonte: Autoria Própria.

A utilização do controle PID torna-se mais eficaz na medida em que evita oscilações. Os controladores PID (proporcional-integral-derivativo) são bastante empregados no controle de processos (sistemas a serem controlados). A característica básica deste tipo de controlador está no fato de que, quando adequadamente ajustados, eles geralmente fornecem ao sistema um desempenho satisfatório (PHILLIPS, 1997). Estes controladores utilizam a realimentação (Figura 10) de modo a modificar as funções existentes no sistema, ou seja, verificam se os dados de entrada (recebidos pelo sistema) são adequados ao feedback retornados. Em nosso caso (controle do motor e direção), faz com que o controlador verifique se a potência fornecida ao motor é a ideal diante de uma situação na qual se encontra ou se é necessário aumentar ou diminuir sua velocidade (alterando as rotações do motor no caso) e evitando uma colisão, por exemplo.

Diagrama do controle PID

Figura 10: Diagrama do controle PID. Fonte: Autoria Própria.

3 Considerações finais

Nosso projeto encontra-se na etapa de produção de um protótipo com kit Arduino, pois em sua versão final utilizaremos um sistema embarcado logo com uma placa dedicada, reduzindo as suas dimensões.Percebemos que conceitos matemáticos do ensino fundamental até o ensino superior podem ser utilizados em aplicações robóticas, seja para criar um protótipo ou para corrigir erros. Veiga et al. (2011) e Lima da Silva (2009) apresentaram considerações consonantes quanto a importância da robótica para a aplicação de conhecimentos nos diferentes níveis de ensino, apontando para prática e articulação das ciências como necessárias para a ressignificação dos espaços escolares. Neste sentido, construindo; programando ou simulando encontramos no micromouse distintas esferas de significações e produções de conhecimentos matemáticos, oportunidade de encontros, de descobertas, de diálogos e pesquisa.

A técnica de controle PID apresentada não se limita apenas em um sistema de controle de estabilidade, mas seu algoritmo também está sendo utilizado neste projeto com o objetivo de controle de velocidade, de forma que o robô seja capaz de ter uma aceleração proporcional ao obstáculo, melhorando a eficiência de seus movimentos.

Nas próximas etapas de nosso projeto iniciaremos a montagem do hardware e os testes ampliados com os modelos eletrônicos: software e hardware. Estamos organizando também o material desta etapa da produção que será open source oferecendo fomento a pesquisas futuras que avancem em comportamentos autômatos e robôs móveis.

* Graduando em Engenharia Mecatrônica e aluno de Iniciação cientifica sob orientação do Prof. Dr. Cristiano N. Tonéis.

** Doutor em Educação Matemática e Novas Tecnologias. Docente junto ao curso de Engenharia Mecatrônica da FIAP/SP e pesquisador junto ao grupo de “Fenomenologia em Educação Matemática” – FEM/Unesp Rio Claro; desenvolve trabalho em games e processos de gamificação e matemática aplicada a novas tecnologias digitais.

 

Referências Bibliográficas

LIMA DA SILVA, Kleber. Embarcados. Micromouse: Um robô solucionador de labirinto. jun. 2016. Disponível em <https://www.embarcados.com.br/micromouse/>. Acesso em jan. 2020.

MATARIĆ, Maja J. Introdução à Robótica. São Paulo: Editora Blucher, 2014.

PHILLIPS, Charles L.; HARBOR, Royce D. Sistemas de controle e realimentação. Makron, 1997.

SECCHI, Humberto Alejandro. Uma introdução aos robôs móveis. Instituto de Automática–INAUT-Universidade Nacional de San Juan–UNSJ. Argentina, 2008.

TONÉIS, Cristiano N. Os games na sala de aula: Games na educação ou a gamificação da educação?. São Paulo: Bookess Editora LTDA-ME, 2017.

VEIGA, Ernesto Fonseca; ARAÚJO, Wendi Müller; DA SILVEIRA JR, Carlos Roberto. Projeto de um robô de baixo custo para utilização como ferramenta de robótica educativa para escolas públicas. Brazilian Journal of Education, Technology and Society, v. 2, n. 1, p. 128-131, 2011.

WILLARDSON, David M. Analysis of micromouse maze solving algorithm. Learning from Data, 2001.

Inscreva-se no 6º Congresso Nacional Online de Engenharia Mecânica e Automação! (de 06 a 08/10/2025)