Ferramentas do usuário

Ferramentas do site


cursos:introrobotica:2016-1:grupo03:controle

Trabalho Prático 04 - Controle

1. Introdução

O trabalho prático 4 consiste na utilização de sensores e atuadores para formação de uma malha fechada de controle de velocidade, além de realizar processamento de sinais para localização do robô e para identificação de blocos.

Controle é um ramo interdisciplinar da engenharia e matemática que lida com o comportamento de sistemas dinâmicos. Através das técnicas de Controle é possível fazer com que o sistema apresente a resposta desejada da melhor forma possível, seja com erro em estado estacionário nulo, com menor tempo de acomodação, menor overshoot, dentre outras características de desempenho. Uma malha fechada de controle é apresentada abaixo:

Ao introduzir sensores, obter suas medidas e atuar por software (controle digital) de forma que o sistema apresente a resposta desejada, as tarefas foram realizadas utilizando controle em malha fechada.

Neste trabalho também foram desenvolvidas técnicas de odometria. Odometria consiste no uso de sensores de movimento para estimar a mudança de posição enquanto as tarefas de locomoção são executadas. O uso da odometria permite que os robôs estimem sua posição em relação a uma posição inicial. Para que a odometria seja realizada efetivamente, é preciso que, dentre os aspectos básicos, haja rápida e precisa aquisição de dados, controle e calibração dos sensores.

2. Objetivos

O objetivo deste projeto é a contrução de um robô móvel para realização de algumas tarefas específicas. As tarefas foram separadas em Localização, Shaft-encoders e Tomada de Decisão.

A Localização consiste no uso do conceito do LDR diferencial de forma que o robô seja capaz de alinhar com as duas fontes de luz, que apresentam polarizações distintas, presentes em um campo que apresenta a seguinte estrutura:

A tarefa de Shaft-encoders consiste no uso de break-beams para construir shaft-encoders para realização da odometria. Como não é possível garantir o comportamento semelhante dos motores, foi requisitado a implementação de um controlador PD (Proporcional Derivativo) para controlar a velocidade do robô. O robô deve movimentar em trajetórias em formato de uma Reta, Quadrado e Triângulo, podendo selecionar a desejada, podendo os comprimentos serem selecionados via menu.

Na Tomada de Decisão, o robô deverá locomover por uma trajetória em linha reta e aguardar pelo aparecimento de um obstáculo, que será um bloco que pode ter três cores diferentes: Azul, Amarelo, Vermelho e Verde. O robô deve identificar a presença de um desses blocos, identificar sua cor e realizar a tarefa associada a cor do bloco. As tarefas associadas a cada cor encontram-se especificadas abaixo:

Azul - virar a direita 90º e andar para frente.
Amarelo - virar a esquerda 90º e andar para frente.
Vermelho - girar 180º e andar para frente.
Verde - emitir sinal sonoro.

A presença de um menu adequado para cada tarefa também é solicitado.

3. Metodologia

3.1 Tarefa de Localização

Na tarefa de Localização é importante que o robô consiga encontrar a fonte de luz mais próxima a ele e se alinhar a esta. Como as fontes de luz apresentam polarizações distintas, é possível, por meio do uso de filtros polarizadores em conjunto com um LDR diferencial, identificar a fonte de luz mais próxima.

Um dos LDR que compõem o LDR diferencial é associado a uma lente polarizadora com polarização no mesmo sentido de uma das fontes, enquanto o outro é associado a uma lente polarizadora com polarização no sentido da outra fonte. Desta forma ao se apontar para uma das duas fontes, é possível distinguir qual dos LDR estão recebendo mais luminosidade e, consequentemente, qual a fonte mais próxima.

O algorítimo foi implementado seguindo a seguinte lógica:

* Dar um giro para calibrar o sensor, ou seja, obter os valores máximo e mínimo obtidos durante o giro.
* Item de lista não ordenadaNo segundo giro encontrar a faixa em que se encontra a faixa dos valores máximos ou mínimos lidos do sensor, parando na primeira que encontrar. Portanto, o robô alinha-se à fonte do lado em que se encontra.

3.2 Shaft-encoders

Para a construção dos shaft-encoders foram utilizadas chaves ópticas em conjunto com uma peça circular do Kit Lego Dacta que possui 6 furos. Ao encaixar essa peça no eixo das rodas e colocar as chaves ópticas de forma a essa peça passar pelo meio do emissor e receptor da chave, foi possível ler quando havia a passagem de um buraco. Deste modo, foi possível determinar o número de buracos que foram passados, e associando essa medida com o tempo foi possível obter a velocidade dos motores.

Ao obter as medidas de velocidade foi possível realizar a implementação de um controlador PD. A malha de controle desenvolvida segue a figura esquemática da Introdução.

O controlador proporcional foi necessário para ampliar o sinal de erro de forma a obter sinais de potência para o motor, que consiste no sistema a ser controlado. Desta forma este controlador pôde reduzir o erro em regime estacionário. O controlador derivativo foi utilizado de forma a reduzir o overshoot do sinal de velocidade, obtendo em paralelo a redução da oscilação do sinal.

O erro é calculado pela diferença do sinal de velocidade desejado (referência) e o sinal de velocidade obtido (saída). Para realização do controlador diferencial, foi mantida a medida anterior de erro. O erro e a diferença do erro atual e erro anterior são multiplicados pela constante proporcional e derivativa respectivamente. Desta forma obtém-se a potência (esforço de controle) que tentará fazer com que o motor atinja o desempenho necessário para atingir a velocidade desejada.

O robô, com sua velocidade controlada, realiza as trajetórias em Reta, Triângulo e Quadrado. Foram desenvolvidas funções que realizassem essas formas em partes, uma função para andar em linha reta, e outras para realizar os ângulos necessários. A função para realizar a linha reta foi parametrizada para receber os comprimentos definidos pelo usuário.

3.3 Tomada de decisão

Utilizando a propriedade multitarefa do Interactive C, foram realizadas a tarefa de andar reto em paralelo com a busca por um bloco. Para a busca foi utilizado um LDR, que, quanto mais próximo do bloco, menor é sua leitura. Sendo assim, um bloco é identificado ao ultrapassar um limiar definido por calibração.

Como tentativa de eliminar a influência das fontes de luz do campo e como tentativa de capturar o bloco, foi desenvolvida uma estrutura em volta de onde se encontram o LRD e os LEDs utilizados na identificação de cores.

Ao identificar o robô a rotina de identificação de cores é chamada. Esta foi implementada em trabalhos práticos anteriores. Resumidamente, incidi-se a luz vermelha e lê a luminosidade obtida, em seguida incide-se a luz verde e lê a luminosidade obtida, por fim incide-se a luz azul e lê a luminosidade obtida. Desta forma, o bloco é identificado quando a leitura de cada cor passa um limiar, sendo que o bloco amarelo é identificado ao se obter a identificação de vermelho e verde, que consistem em suas cores primárias.

Após a identificação de cor, foram desenvolvidas funções para cada uma das ações relacionadas a cada cor que deveriam ser realizadas em sequência. Por comodidade as ações são especificadas novamente abaixo:

Azul - virar a direita 90º e andar para frente. (função para girar 90º + função para andar pra frente)
Amarelo - virar a esquerda 90º e andar para frente. (função para girar 90º + função para andar pra frente)
Vermelho - girar 180º e andar para frente. (função para girar 180º + função para andar pra frente)
Verde - emitir sinal sonoro. (beep())

4. Menu

Um menu foi desenvolvido para acessar de forma fácil e interativa cada uma das tarefas a serem realizadas.

5. Resultados

5.1 Montagem

As seguintes imagens descrevem a montagem final do robô

6. Conclusão

Com esse trabalho foi possível perceber a importância e a diferença da integração de uma lógica de controle para manter os motores do robô com potências que gerassem as velocidades desejadas, que, no caso, foram as mesmas para andar reto e opostas para girar, independentemente da diferença de funcionamento entre os dois.

A implementação do algorítimo de controle se apresentou um grande desafio, ao precisar gerar uma lógica associada com a leitura dos breakbeams de forma a calcular a velocidade das rodas.

7. Videos

cursos/introrobotica/2016-1/grupo03/controle.txt · Última modificação: por 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki