Walk Detour » Histórico » Versão 5
André Vidal, 22/08/2021 19:46 h
1 | 1 | André Vidal | h1. Walk Detour |
---|---|---|---|
2 | 2 | André Vidal | |
3 | 4 | André Vidal | Essa função determina o tanto que o robô deve andar em linha reta após não ter nada a sua frente a uma distância menor que uma constante atribuída. 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 | 2 | André Vidal | |
5 | 4 | André Vidal | *distancia a ser percorrida* = (*ultima distancia registrada* / *cos(inclinação instantânea)* ) * *cos(inclinação instantânea- fase fixa)* |
6 | 3 | André Vidal | tempo de caminhada = *distancia a ser percorrida* / *velocidade*, |
7 | 1 | André Vidal | |
8 | 5 | André Vidal | onde a *velocidade* é calculada de antemão e passada para o sistema como uma constante. |
9 | 3 | André Vidal | 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 | 4 | 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 | 1 | André Vidal | |
18 | 4 | André Vidal | Onde *R* indica a posição do robô, *In* a angulação em que o robô foi deixado após a função "direcao_desvio", *Fase* é a *fase fixa*, *Dmin* é a distância a partir da qual o robô considera que há um obstáculo em sua frente e entra no loop de desvio, *Datual* é a ultima distancia captada pelo robô após sair da funcao "direcao desvio" e *Final* é a posição em que a função mandará o robô caminhar. Para esse In pequeno, 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 e objeto. |
19 | 1 | André Vidal | |
20 | 4 | André Vidal | 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. |
21 | 3 | André Vidal | |
22 | 4 | André Vidal | |
23 | O arquivo da simulação está disponível em: https://www.geogebra.org/m/e8cnrjsp |
||
24 | |||
25 | Aparentemente, o robô pode sair da função "direcao_desvio" sem está apontado para obstáculo algum. Nessa situação, *Datual* passa a ser infinita. Isso resulta em um bug que inviabilizaria o funcionamento dessa função. |