Projeto

Geral

Perfil

Walk Detour » Histórico » Revisão 4

Revisão 3 (André Vidal, 22/08/2021 15:29 h) → Revisão 4/5 (André Vidal, 22/08/2021 15:40 h)

h1. Walk Detour 

 Essa função determina o tanto que o robô deve andar em linha reta após não nao ter nada a sua frente a uma distância distancia menor que uma constante atribuída. 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 instantânea)* instantanea)* )    * *cos(inclinação instantânea- 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 walk Detour). 

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

 !http://redmine.roboime.com.br/attachments/download/5640/walkdetour.png! 


 Onde *R* indica a posição do robô, robo, *In* a angulação em que o robô robo foi deixado após a função funcao "direcao_desvio", *Fase* é a *fase fixa*, *Dmin* é a distância a partir da qual o robô considera que há um obstáculo obstaculo em sua frente e entra no loop de desvio, desvi, *Datual* é a ultima distancia captada pelo robô robo após sair da funcao "direcao desvio" e *Final* é a posição posicão em que a função funcao mandará o robô robo caminhar. Para esse In pequeno, 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ção detecçãod e objeto. 

 O *In* igual a 12.5º foi uma medida geométrica estimada para a posição final ser conveniente com o tamanho do robô e do obstáculo após um desvio no qual o E fica próximo a quina do objeto. 


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

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