• Nenhum resultado encontrado

4.2 Controlador de velocidade

4.3.1 Campos vetoriais

Esta t´ecnica, primeiramente apresentada no artigo Olivi et al. (2013), consiste em determinar um campo de vetores que determinar˜ao tr^es op¸c˜oes de velocidade: linear, rotacional a esquerda e rotacional a direita. Essas velocidades s˜ao determinadas conforme o ambiente e s˜ao escolhidas conforme o encaminhamento desejado pelo usu´ario.

Como os autores destacam em seu trabalho, esta t´ecnica n˜ao pretende ser um planejador de trajet´orias como a t´ecnica desenvolvida no trabalho de Khatib (1985), chamada de Campos Potenciais. Uma das diferen¸cas mais marcantes entre as duas t´ecnicas ´

e a necessidade da segunda possuir um ponto objetivo que serve como ponto de atra¸c˜ao do rob^o, enquanto na primeira n˜ao existe tal ponto e quem decide em cada momento qual movimento a cadeira deve realizar ´e o usu´ario.

A t´ecnica de Campos Vetoriais a todo momento calcula as velocidade linear (ve- locidade no eixo 𝑥 do ve´ıculo) e rotacional, mas estas velocidades calculadas somente ser˜ao passadas para o ve´ıculo quando o usu´ario assim decidir. Portanto, a todo instante esta t´ecnica permitir ao usu´ario escolher uma de das tr^es velocidades (velocidade linear, rotacional a esquerda e rotacional a direita) calculadas pelo algoritmo.

A t´ecnica, como ser´a visto adiante, utiliza os conceitos de velocidade rotacional a esquerda e velocidade rotacional a direita, pois conforme a configura¸c˜ao do ambiente esses comandos podem possuir valores distintos. Existe, tamb´em, o conceito de velocidade padr˜ao que deve ser interpretado como o valor que a velocidade linear ou rotacional deve assumir na aus^encia de obst´aculos.

A seguir apresenta-se como a t´ecnica calcula a velocidade linear, 𝑉𝑙𝑖𝑛, a velocidade

Velocidade linear

Para definir a velocidade linear (velocidade no eixo 𝑥 do ve´ıculo) a t´ecnica dos campos vetoriais utiliza uma zona de prote¸c˜ao em que obst´aculos dentro desta ir˜ao repelir o ve´ıculo, diminuindo a velocidade conforme a configura¸c˜ao dos obst´aculos. De maneira mais espec´ıfica a t´ecnica utiliza a Equa¸c˜ao (4.19) para definir o vetor ⃗𝑐, respons´avel por repelir o ve´ıculo dos obst´aculos.

⃗𝑐 = −𝛽 𝑁 ∑︁ 𝑖=1 (︃ 𝑅 𝑑𝑖 [︃ cos 𝜑𝑖 sin 𝜑𝑖 ]︃)︃ (4.19) em que 𝛽 ´e um fator ajuste, 𝑖 o i-´esimo obst´aculo dentro da zona de prote¸c˜ao definida pelo raio 𝑅, 𝑁 ´e o n´umero de obst´aculos, 𝑑𝑖 ´e a dist^ancia do obst´aculo ao rob^o e 𝜑𝑖 ´e o

^

angulo que o obst´aculo guarda em rela¸c˜ao ao centro do rob^o (OLIVI et al., 2013).

A partir de um vetor ⃗𝑣 que representa a velocidade linear padr˜ao do ve´ıculo, e portanto possui somente componente em 𝑥 no referencial do rob^o, ´e feita a proje¸c˜ao de ⃗𝑐 em ⃗𝑣, ⃗𝑐𝑝, e ent˜ao ´e calculada a velocidade linear final subtraindo a proje¸c˜ao ⃗𝑐𝑝 de ⃗𝑣. Com

isso apenas a componente em 𝑥 de ⃗𝑐 ir´a influenciar a velocidade linear.

𝑉𝑙𝑖𝑛 = |⃗𝑣 − ⃗𝑐𝑝|

A express˜ao (4.19) leva em considera¸c˜ao todos os obst´aculos para ent˜ao calcular o vetor repulsivo da velocidade linear, efeito bastante parecido com o produzido pelos campos potenciais. Por´em, torna-se complicado de obter um compromisso de dist^ancia a ser mantida quando o obst´aculo `a frente ´e uma parede, que ter´a diversas contribui¸c˜oes no calculo de (4.19), e quando o obst´aculo ´e apenas o p´e de uma cadeira, que ter´a algumas poucas contribui¸c˜oes. Assim, ao se calibrar o vetor repulsivo para se aproximar de paredes, pode-se acabar por subestimar pequenos obst´aculos e colis˜oes podem ocorrer com este tipo de obst´aculo.

Para evitar esse tipo de situa¸c˜ao, mas, ao mesmo tempo ser capaz de se aproximar de obst´aculos com velocidades menores, utilizou-se outra configura¸c˜ao para obter o vetor ⃗𝑐. Nesta configura¸c˜ao ´e levado em conta apenas o obst´aculo mais pr´oximo e dentro da zona de prote¸c˜ao. Al´em disso, a zona de prote¸c˜ao foi ajustada para ser retangular como a frente da cadeira e, deste modo, apenas obst´aculos que estejam a frente da cadeira s˜ao levados em conta. A Figura 19(a) representa essa situa¸c˜ao.

A velocidade linear pode ser calculada pela express˜ao (4.20).

(a) Retˆangulo em azul representa a cadeira, retˆangulo vermelho a zona de prote¸c˜ao fron- tal e 𝑑 a distˆancia at´e o obst´aculo mais pr´oximo.

(b) Semi-circulo em amarelo representa o alcance do laser e a dire¸c˜ao de ⃗𝑛 usado no campo rotacional ob- tido a partir da maior abertura.

Figura 19 – Figuras representando elementos importantes dos campos vetoriais.

em que 𝑉𝑃

𝑙𝑖𝑛 ´e a velocidade linear padr˜ao, 𝐷𝑓 o comprimento da zona de prote¸c˜ao, 𝑑 a

dist^ancia do obst´aculo e 𝑉𝑚𝑖𝑛

𝑙𝑖𝑛 a m´ınima velocidade linear admitida.

Velocidade rotacional

Para definir a velocidade rotacional o trabalho original que define os Campos Vetoriais utiliza o conceito de ´area livre. A ´area livre ´e dada pelo diagrama de Voronoi, diagrama este que fornece linha equidistantes dos obst´aculos e portanto os pontos mais distantes dos obst´aculos. De posse das ´areas livres ´e ent˜ao tra¸cado um vetor, ⃗𝑛 que vai do centro do rob^o at´e a ´area livre mais pr´oxima. Com ⃗𝑛 definido s˜ao feitas as somas vetoriais deste vetor com os vetores padr˜ao de deslocamento a esquerda e a direita, ⃗𝑆𝑃

𝑙 e ⃗𝑆𝑟𝑃, e

assim obt´em-se o vetor do deslocamento `a esquerda e `a direita.

O processo de obten¸c˜ao do Diagrama de Voronoi ´e um processo intensivo compu- tacionalmente, pois ir´a calcular linhas que s˜ao equidistantes de todos os pontos passados para o algoritmo. Por esse motivo, optou-se por substituir esse diagrama pela t´ecnica Vector Field Histogram (VFH) (ULRICH; BORENSTEIN, 1998) que permite encontrar uma zona livre de obst´aculos de maneira simplificada.

A t´ecnica VFH consiste em obter a partir da leitura do sensor de dist^ancias, no caso o Laser Range Finder, um histograma das dist^ancias (Figura 20(a)). Ent˜ao ´e feita

Ângulo [°] -100 -80 -60 -40 -20 0 20 40 60 80 100 Distância [mm] 0 500 1000 1500 2000 2500 3000 3500 4000 Distâncias Limiar

(a) Histograma das distˆancias e limiar.

Ângulo [°] -100 -80 -60 -40 -20 0 20 40 60 80 100 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

Áreas com obstáculos Centro da zona livre

(b) Histograma binarizado com centro da maior ´

area livre assinalado. Figura 20 – Histogramas usados no VFH.

uma binariza¸c˜ao do histograma baseada em um valor limiar de dist^ancia, 𝐷𝑓, em que

valores maiores que o limiar s˜ao representados por 0 e valores menores por 1 (Figura 20(b)). A partir da binariza¸c˜ao ´e ent˜ao calculado se o rob^o ´e capaz de passar pelas aberturas encontradas, caso contr´ario, as aberturas s˜ao marcadas com 1. Com isso as zonas representadas pelos zeros s˜ao as zonas livres e o vetor ⃗𝑛 apontar´a na dire¸c˜ao do centro da maior zona livre (Figura 19(b)), segundo a Equa¸c˜ao (4.21).

⃗𝑛 = 𝛼𝐷𝑓 [︃ cos 𝜓 sin 𝜓 ]︃ (4.21) em que 𝛼 ´e um fator ajuste e 𝜓 ´e o ^angulo retornado pelo VFH.

Com isso ´e feita soma vetorial de ⃗𝑛 com os vetores das velocidades rotacionais padr˜ao a esquerda e a direita, ⃗𝜔𝑃

𝑙 e ⃗𝜔𝑃𝑟.

𝜔𝑙= ⃗𝜔𝑃𝑙 + ⃗𝑛 (4.22a)

𝜔𝑟= ⃗𝜔𝑟𝑃 + ⃗𝑛 (4.22b)

Com os vetores da Equa¸c˜ao (4.22) ´e ent˜ao obtido o ^angulo deste vetores com o vetor da velocidade linear e este ^angulo ser´a o valor da velocidade rotacional para esquerda e direita. 𝜔𝑙 = arccos (︂ ⃗ 𝜔𝑙· ⃗𝑣 ‖ ⃗𝜔𝑙‖‖⃗𝑣‖ )︂ (4.23a) 𝜔𝑟 = arccos (︂ ⃗ 𝜔𝑟· ⃗𝑣 ‖ ⃗𝜔𝑟‖‖⃗𝑣‖ )︂ (4.23b)

Ao final ´e verificado se depois da soma vetorial ⃗𝜔𝑙 e ⃗𝜔𝑟 tiveram seus ^angulos

invertidos. Por exemplo, ⃗𝜔𝑙 possui a componente 𝑦 < 0 ou ⃗𝜔𝑙 a componente 𝑦 > 0. Se

esse for o caso, as velocidades rotacionais s˜ao ajustadas para um valor m´ınimo, 𝜔𝑚𝑖𝑛, configurado previamente.

Caso o VFH n˜ao seja capaz de encontrar nenhuma zona livre e consequentemente nenhuma dire¸c˜ao para ⃗𝑛, as velocidade rotacionais assumir˜ao o menor valor admiss´ıvel, 𝜔𝑚𝑖𝑛. Faz-se isso para que sempre o comando do usu´ario seja atendido, e que mesmo

existindo risco de colis˜oes o comando seja atendido, por´em com velocidades mais conser- vadoras.

Com as velocidades linear e rotacional definidas a partir do Campos Vetoriais deseja-se que o rob^o seja capaz de manter um mapa local de obst´aculos.

Documentos relacionados