Projeto

Geral

Perfil

Ações

Walk Detour » Histórico » Revisão 3

« Anterior | Revisão 3/5 (diff) | Próximo »
André Vidal, 22/08/2021 15:29 h


Walk Detour

Essa função determina o tanto que o robô deve andar em linha reta após nao ter nada a sua frente a uma distancia menor que uma constante atribuida. Essa constante atribuída no momento se encontra sendo o próprio Dmin usado na função de definir o desvio. No futuro talvez isso mude. A implementação em sua forma original é feita da seguinte forma:

distancia a ser percorrida = (ultima distancia registrada / cos(inclinação instantanea) ) * cos(inclinação instantanea- fase fixa)
tempo de caminhada = distancia a ser percorrida / velocidade,

, onde a velocidade é calculada de antemão e passada para o sistema como uma constante.
A fase fixa é uma cte que foi calculada no intuito de o código funcionar de uma maneira que descreverei mais a frente.

Quando se passar um intervalo um intervalo de tempo = tempo de caminhada, o estado atual passa a ser parado (até o momento o estado atual era o estado caminhando -foi setado isso imediatamente antes da chamada da função walk Detour).

Quando o robô girou após estar de frente com um o obstáculo, a geometria fica descrita dessa maneira:

Onde R indica a posição do robo, In a angulação em que o robo foi deixado após a funcao "direcao_desvio", Fase é a fase fixa, Dmin é a distância a partir da qual o robô considera que há um obstaculo em sua frente e entra no loop de desvi, Datual é a ultima distancia captada pelo robo após sair da funcao "direcao desvio" e Final é a posicão em que a funcao mandará o robo caminhar. Para esse In pequeneo, resultante de um Datual levemente maior que o Dmin, constata-se que a posição final implica em uma colisão com o robô. Acredito que isso possa ser evitado se na função "direcao_desvio" usarmos uma distancia de segurança para o giro maior que a distancia para detecçãod e objeto.

O arquivo da simulação está disponível em: https://www.geogebra.org/calculator/e8cnrjsp

Aparentemente, o robo pode sair da função "direcao_desvio" sem está apontado para obstaculo algum. Nessa situação, Datual Passa a ser infinita. Isso resulta em um bug que invibializaria o funcionamento dessa função.

Atualizado por André Vidalquase 3 anos · 3 revisões