Implementação de um Sistema de Navegação
Por: flavioctm • 10/3/2016 • Relatório de pesquisa • 1.410 Palavras (6 Páginas) • 199 Visualizações
ROBÓTICA MÓVEL
Implementação de um sistema de navegação
Flávio Couvo Teixeira Maia - 200910003730
Professor: Eduardo Freire
São Cristóvão-SE
Sumário
1 Objetivo
2 Metodologia
2.1 Tratamento dos sensores
2.2 Funcionamento do sistema
3 Simulação
4 Resultados
5 Conclusões
6 Bibliografia
Objetivo
O principal objetivo deste trabalho foi a implementação e simulação de um sistema de navegação de um robô móvel. Tal sistema tem como finalidade fazer com que o robô, utilizando seus sensores de distância, chegue à um ponto de destino definido de forma mais eficiente possível, que torne possível ao robô sair de tais regiões de mínimos locais. É um sistema simples que trata apenas a ação do robô baseado nos dados de seus sensores. A implementação e simulação deste sistema foi realizada com o auxílio do software Matlab® utilizando o modelo de um robô com tração diferencial.
Metodologia
Tratamento dos sensores
O modelo utilizado possui oito sensores distribuídos ao longo que sua estrutura, espaçados entre si em um ângulo de 45º, conforme mostrado na figura 2.1.
[pic 1]
Figura 2.2: gráfico da equação de repulsão.
Foram utilizados os sensores ds1, ds2, ds3, ds7 e ds8. O sensor ds1 tem a função apenas de evitar que o robô colida frontalmente com um obstáculo. A ideia foi fazer com que a ação de repulsão do robô à um obstáculo fosse feita exponencialmente proporcional à distância entre ele e um obstáculo, ou seja, quanto mais próximo de um obstáculo, de forma exponencial, maior é sua repulsão. para isso, criou-se uma equação de segundo grau simples da forma da equação (1):
(1)[pic 2]
Onde:
- Repx - taxa de repulsão, onde x = 1 a 8;
- Dsen - distância nominal utilizada do sensor;
- Dsx - sensor, onde x = 1 a 8;
- a - peso;
A taxa de repulsão é utilizada para ajustar proporcionalmente o valor do ângulo de rotação e da velocidade do robô. O peso a é utilizado para diminuir a influência dessa taxa nos mesmos parâmetros.
A figura a seguir mostra a curva desta equação, onde o eixo das ordenadas é a distância máxima utilizada do sensor e o eixo das ordenadas é o valor da repulsão normalizado.
[pic 3]
Figura 2.2: gráfico da equação de repulsão
O sensor ds1 é tratado de forma diferente. O robô para quando o sensor detecta uma distância menor que 100cm.
Funcionamento do sistema
Com os dados dos sensores, faz-se a seleção de qual sensor está mais próximo de um obstáculo. Isso é feito indiretamente, selecionando o maior valor de repulsão angular WauxX, onde X é o número do sensor (nesse caso pode ser 2, 3, 7 e 8) o qual é a multiplicação do valor de repulsão (repx) pela velocidade angular máxima Wmax. Dessa forma o robô sofre a repulsão para um dos lados, conforme explicado mais adiante. A velocidade linear do robô também sofre a interferência dos dados do sensor (apenas sensores 2 e 8) e, da mesma forma, é selecionada a velocidade maior relacionada com o sensor que mais próximo está de um obstáculo.
Para que o robô desvie do obstáculo para o lado correto, como os sensores ds2 e ds3 estão em lados opostos aos sensores ds7 e ds8, o primeiro par, que fica do lado esquerdo, faz com que o robô gire para sua direita. Da mesma forma, o segundo par, que se encontra à direita, faz com que o robô gire para a esquerda. Isso é feito invertendo os valores de velocidades angulares de um dos pares: sensores ds2 e ds3 têm suas velocidades angulares negativas, enquanto ds7 e ds8 têm suas velocidades angulares positivas.
Assim, com os dados dos sensores tratados, os valores das velocidades linear e angular são enviadas para o modelo do robô através das seguintes linhas de comando:
Vx = V+2*Vaux; % Velocidade linear final
Wx = W+2*Waux; % Velocidade angular final
Ksir = [Vx ; 0 ; Wx]; Vetor com os dados acima
Ksi_I = R\Ksir; % Modelo do robô
O robô executa duas funções em paralelo: a primeira é a tentativa de chegar ao destino e a segunda é evitar a colisão com obstáculos. Mas, enquanto o robô executa a ação de desviar de obstáculos, o robô pode ficar sem rumo. Para contornar este problema, implementou-se o seguinte artifício: uma variável recebe o resto da divisão da variável de controle de tempo (i) com 2. Cada vez que esse resto for zero, o tratamento dos sensores é executado. Caso contrário apenas a função de ir ao ponto de destino é executada. Isso faz com que as duas funções sejam executadas de forma alternada.
...