Walk Detour » Histórico » Versão 3
André Vidal, 22/08/2021 15:29 h
1 | 1 | André Vidal | h1. Walk Detour |
---|---|---|---|
2 | 2 | André Vidal | |
3 | 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: |
||
4 | |||
5 | 3 | André Vidal | *distancia a ser percorrida* = (*ultima distancia registrada* / *cos(inclinação instantanea)* ) * *cos(inclinação instantanea- fase fixa)* |
6 | tempo de caminhada = *distancia a ser percorrida* / *velocidade*, |
||
7 | 1 | André Vidal | |
8 | 3 | André Vidal | , onde a *velocidade* é calculada de antemão e passada para o sistema como uma constante. |
9 | A *fase fixa* é uma cte que foi calculada no intuito de o código funcionar de uma maneira que descreverei mais a frente. |
||
10 | 1 | André Vidal | |
11 | 3 | André Vidal | 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). |
12 | 1 | André Vidal | |
13 | Quando o robô girou após estar de frente com um o obstáculo, a geometria fica descrita dessa maneira: |
||
14 | |||
15 | 3 | André Vidal | !http://redmine.roboime.com.br/attachments/download/5640/walkdetour.png! |
16 | |||
17 | |||
18 | 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. |
||
19 | |||
20 | O arquivo da simulação está disponível em: https://www.geogebra.org/calculator/e8cnrjsp |
||
21 | |||
22 | 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. |