Você está na página 1de 4

o

6 Congresso de Iniciação Científica e Tecnológica do IFSP - CINTEC


10 a 12 de Novembro de 2015, Itapetininga, São Paulo.

OTIMIZAÇÃO DO ALGORITMO DE CONTROLE DE ROBÔS


UTILIZANDO MÁQUINAS DE ESTADOS FINITOS PARA COMPETIÇÕES
DE ROBÓTICA EDUCACIONAIS.

Carlos Eduardo Palmieri Teixeira, edu-palmieri@hotmail.com - Bolsista de Iniciação Tecnológica e Industrial


do CNPq - Nível A
Alexandre Brincalepe Campo, brinca@ifsp.edu.br
Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - Campus São Paulo. Rua Pedro Vicente, 625 - Canindé - São
Paulo – SP.

RESUMO. Neste trabalho será mostrado como a utilização do método de programação por máquinas de estado e o
desenvolvimento de uma placa de controle colaboraram para o desenvolvimento de robôs por parte de estudantes do
Instituto Federal do Campus São Paulo do nível médio-técnico. Por meio de aulas expositivas e práticas em
laboratório, foi apresentado aos alunos o método de projeto baseado em Máquina de Estados Finitos (MEF’s) para
que fossem utilizadas na programação de seus robôs, desenvolvidos para participar das Olimpíada Brasileira de
Robótica (OBR). Em conjunto foi também desenvolvida uma placa com objetivo de padronizar o dispositivo. A placa
possui um controlador e periféricos necessários para o funcionamento do robô. A utilização desta ferramenta de
programação propiciou maior confiabilidade ao protótipo, garantindo que a tomada de decisões para as tarefas
designadas ao robô se tornasse mais clara. Utilizando uma lógica baseada nas MEFs o código permite a
reinicialização para uma condição conhecida e assim prosseguir novamente com a execução da tarefa em caso de
falha. Notou-se melhores resultados nos robôs programados através deste método quando comparados com os que
tiveram sua programação feita de modo heurístico.

Palavras-chave: Controle. Robô. OBR. Programação. MEF.

1. INTRODUÇÃO

Sabendo da necessidade de melhoria na programação do controle de robôs para a Olimpíada Brasileira de Robótica
(OBR), foi então pensada a utilização de uma ferramenta lógica para a otimização do algoritmo usado. Tal técnica
abordada foi apresentada aos alunos participantes da OBR: três equipes compostas por estudantes do Instituto Federal
do Campus São Paulo do nível médio-técnico, entre eles estudantes de eletrônica e mecânica. Após confeccionarem
seus robôs durante as aulas expositivas e práticas sobre robótica e eletrônica, se iniciou o processo da programação dos
dispositivos.
Com o método heurístico de se escrever o código utilizado pelos alunos ocorriam muitos erros lógicos e dificuldade
de interpretação por não seguirem uma lógica sequencial para detectar erros, decidiu-se então abordar o método de
máquinas sequenciais para a otimização. Equipamentos sequenciais são utilizados em diversos problemas, sendo que de
fato a experiência com esse dispositivos está bastante disseminada. A lista de máquinas sequenciais que estão presentes
em nossos dias está constantemente crescendo. Os automóveis, por exemplo, utilizam Máquina de Estados Finitos
(MEF’s) para controlar a partida, frenagem , injeção de combustível. (TINDER,2000).Antes mesmo do inicio da
programação, foi desenvolvida uma placa para os estudantes. Esta placa compõe-se de um microcontrolador, e um
circuito integrado de ponte H, responsável por intermediar entre o sinal de controle e o dos motores com uma maior
capacidade de potência, e também com conectores de fácil acesso para que os sensores e atuadores sejam conectados
facilmente, podendo assim ser possível reparos sem dificuldades em caso de quebra do periférico.
Nessa etapa, o método de Máquina de Estados Finitos (MEF’s) foi explicado aos estudantes. Ela trata de um método
de programação sequencial utilizado em sistemas digitais onde há necessidade de trabalhar em estados, sabendo qual o
estado futuro que acontecerá dependendo de sua combinação de entrada, visando otimização do algoritmo. Uma das
vantagens dos sistemas sequenciais é que eles podem representar uma solução eficaz do ponto de vista de custo, pois
um mesmo circuito pode ser usado repetida vezes (KARIM; CHEN, 2009), para que com isso, pudessem melhorar o
programa, afim de que este ficasse mais claro e objetivo. A partir de exemplos simples e do cotidiano, foi explicado aos
alunos como elaborar e programar a máquina de estados referente ao controle do robô. Começou-se listando as entradas
e saídas, elaborando o funcionamento de cada estado e enfim o diagrama de estados. Depois de construído, cada estado
foi descrito como uma combinação de entradas e saídas. Com isso puderam transformar a máquina de estados em um
programa para o robô.
o
6 Congresso de Iniciação Científica e Tecnológica do IFSP - CINTEC
10 a 12 de Novembro de 2015, Itapetininga, São Paulo.

2. MATERIAIS E MÉTODOS

Para o desenvolvimento do novo método de programação utilizou-se de plataforma robótica construída pelos
alunos, placa de controle e programação. Um controlador da família ATMEL, ATmega328, com bootloader do arduino
e sensores infravermelhos. A escolha desse microcontrolador, por parte dos alunos, se deve ao fato de sua versatilidade
e facilidade de operação e programação.
Como o projeto foi baseado para o uso do método na Olimpíada Brasileira de Robótica, onde o equipamento deve
seguir linha, bem como outros desafios para controlar sua direção, seu princípio de funcionamento é o de um robô
seguidor de linha, tendo por tanto, que se manter na faixa de cor diferente do plano, conforme apresentado na Figura 1.

Figura 1 – Trajetória a ser seguida.

No caso, a faixa é constituída de fita isolante na cor preta. Esse percurso é feito pelo ajuste da velocidade dos
motores. Esse controle provem da leitura dos sensores que indicam para qual lado o motor deve avançar mais rápido
para que se mantenha na linha. Com a utilização de um numero maior de sensores, pode-se obter maior grau de precisão
durante esse controle. Vejamos abaixo um exemplo de controle para a seguinte situação: 1(um) botão de iniciar, 2 (dois)
motores , 2 (dois) sensores.
A máquina mais simples de controle desse robô segue a seguinte lógica: ao se ligar o robô por uma chave, caso os
dois sensores estejam no piso branco, o robô deve andar para frente; quando detectado a faixa preta por um sensor, o
motor contrário a este sensor deve continuar acionado e o motor do mesmo lado deve ser desligado para que compense
o oposto. O mesmo vale para o outro motor.
Essa lista de instruções pode ser transformada em uma tabela de transição de estados e também em um grafo de
transição, como um fluxograma, para que com isso possamos transformar esta máquina de estados, agora já definidos e
assinalados, em um programa, afim de que seja gravado no microcontrolador e executado pelo robô. Vejamos abaixo os
passos para implementação.

2.1 Definições de Entradas, Saídas e Assinalamento de Estados.

Nesta etapa devemos dizer a maquina quais os valores lógicos que ela receberá dos sensores quando ativos. Também
é de suma importância registrar os estados de saída, podendo assim, dizer ao sistema qual o estado lógico que a saída
deverá ter após o processamento ”Tab. 1”. Na etapa de assinalamento de estados devemos escrever as combinações das
saídas de acordo com o estado pedido. Fazemos isso por meio das determinações de saídas “Tab. 2”.

Tabela 1. Determinações das entradas do robô.

Entradas Estado
S_ESQ (Sensor Esquerda) 0 para sensor sobre o piso branco.
S_DIR (Sensor Direita) 1 para s sobre a faixa preta.
INICIO (Botão de início ) 0 para desligado e 1 para ligado.
Saídas
M_ESQ (Motor Esquerdo) 0 para desligado
M_DIR (Motor Direita) 1 para ligado.
o
6 Congresso de Iniciação Científica e Tecnológica do IFSP - CINTEC
10 a 12 de Novembro de 2015, Itapetininga, São Paulo.
Tabela 2. Assinalamento de estados

Estado Definição Saída (M_ESQ;M_DIR)


A Parado 0 0
B Frente 1 1
C Correção para Esquerda 0 1
D Correção para Direita 1 0

2.2 Criação da Tabela de Transição de Estados e Simplificação.

A tabela de transição de estados nos mostra como a máquina irá se comportar a partir de uma nova combinação de
entrada e seu estado anterior. É necessário realizar todas as combinações “2n”, sendo n o numero de entradas da
máquina para que possamos fazer todas as possibilidades de transição entre estados “Tab. 3”. Após isso simplificamos a
tabela minimizando-a com os estados equivalentes “Tab. 4”, ou seja, que tem uma mesma saída para duas ou mais
entradas diferentes, por exemplo, a entrada principal da máquina que somente habilita as transições ao estar ativa.

Tabela 3. Tabela de transição de estados

Estado Próximo Estado.


Atual Entradas ( S_ESQ ; S_DIR ; INICIO )
0;0;0 0;0;1 0;1;0 0;1;1 1;0;0 1;0;1 1;1;0 1;1;1
A A B A D A C A A
B A B A D A C A A
C A B A D A C A A
D A B A D A C A A

Tabela 4. Tabela de transição de estados simplificados

Estado Próximo Estado


Atual Entradas ( S_ESQ ; S_DIR ; INICIO )
X;X;0 0;0;1 0;1;1 1;0;1 1;1;1
A A B D C A
B A B D C A
C A B D C A
D A B D C A

2.3 Grafo de estados.

O grafo de estados é o desenho da máquina num formato que permite uma melhor visualização, onde usamos
símbolos para representar estados e transições. No projeto foi utilizado o modelo Moore para representar o problema,
conforme apresentado na Figura 2. De mesmo modo que na tabela, as entradas no grafo estão em ordem: S_ESQ;S_DIR
e INICIO e as saídas M_ESQ e M_DIR.

Figura 2 – Grafo de estados.


o
6 Congresso de Iniciação Científica e Tecnológica do IFSP - CINTEC
10 a 12 de Novembro de 2015, Itapetininga, São Paulo.
2.4 Programa em C e upload para a placa.

Após o entendimento do grafo, o programa foi facilmente estruturado pelos alunos. Construindo-se primeiro a lógica
de entrada, que determinam o próximo estado à partir das quatro combinações de entradas (sensores) “Fig.3”. Após isso
foi criada a estrutura da máquina com o comando switch, case, break “Fig.4”.
A funções de saída : FRENTE, DIREITA, ESQUERDA e PARADO representam combinações de saída para os
motores. O código, após ser compilado, foi gravado na placa desenvolvida utilizando um conversor USB para
comunicação Serial.

Figura 3 – Lógica de entrada feita a partir da leitura dos sensores.

Figura 4 – Estrutura da máquina de estados em linguagem C

3. RESULTADOS

Nos testes realizados com a implantação do código baseados em máquinas de estado, a execução física do algoritmo
mostrou que o comportamento do robô se mostrou otimizado. Ao ocorrer algum desvio da rota, o robô executou
corretamente as tarefas de correção seguindo a lógica de funcionamento.

4. CONCLUSÕES

A utilização do método de máquina de estados finitos contribuiu muito para o desenvolvimento do projeto,
propiciando mais organização e facilidade em estruturar o programa e com isso melhorando a interpretação lógica pelo
microcontrolador, evitando loops de falha de lógica, uma vez que é extinto com o sistema de MEFS, que apenas deve
comutar a saída de acordo com as entradas de transição determinadas, e implementadas em funções que representam
cada estado, deixando o algoritmo mais claro e objetivo.

5. REFERÊNCIAS
KARIM, M.A. CHEN, X. Synchronous sequential logic. Digital Design, v. 1, Cap. 7, p. 288, 2009.
OBR, Manual da modalidade prática. Seguidor de linha. P 7-8 Disponivel em < http://www.obr.org.br/?page_id=326>
Acesso em 5 de Julho de 2015
TINDER, R.F. Introduction to Synchronous State Machine Design and Analysis. Engineering Digital Design, v. 2,
Cap. 10, p. 419, 2000.

Você também pode gostar