• Nenhum resultado encontrado

3.5 Estratégias de controle

3.5.9 Polinômio cúbico

A equação polinomial cúbica que gera o caminho que o robô precisa seguir para alcan- çar sua configuração desejada foi baseada no trabalho realizado por [Pedrosa et al. 2003] e tem suas coordenadas ao longo do plano de movimento, estabelecido pelos eixos

X

w e

Y

wde mundo, dado por

xp(λ) = a0+ a1λ + a2λ2+ a3λ3 yp(λ) = b0+ b1λ + b2λ2+ b3λ3.

Na equação xp(λ) e yp(λ) representam cada coordenada de cada ponto dos pertencen-

tes ao caminho gerado, λ é um parâmetro usado para descrever o caminho e representa a posição absoluta de um determinado ponto ao longo do caminho, tal que o ponto inicial é dado por λ = 0 que aumenta ao longo do caminho de forma que o ponto final do mesmo esteja localizado em λ = 1. Em teoria λ é uma variável contínua, mas nas implementações com microcontroladores digitais seus valores devem ser discretizados.

A estratégia de geração de caminho é necessária pelo fato de que o robô deve satisfazer as restrições angulares não-holonômicas impostas sobre ele durante seus movimentos, portanto, a orientação do robô ao longo do caminho é dada por θp(λ), que é descrito por

θp(λ) = tan−1(dyp/dxp)

= tan−1((dyp/dλ)/(dxp/dλ)).

(3.15) Esta equação é usada em conjunto com (3.14) e as condições de contorno para obter os parâmetros aie bi, com i = {0, 1, 2, 3}, que descreve os polinômios que representam o

caminho.

Definindo o parâmetro α(λ) da seguinte forma α(λ) = tan(θp(λ)) =

b1+ 2b2λ + 3b3λ2

a1+ 2a2λ + 3a3λ2

(3.16) e considerando que o robô irá sempre avançar, como já estipulado, uma solução para os parâmetros dos polinômios pode ser tomada como sendo a seguinte

a1= xf (coef. livre.) a2= 0 (coef. livre.) a0= 0 a3= xf− a1− a2 b0= 0 b1= αia1 b2 = 3(yf− αfxf) + 2αfa1+ αfa2 b3= 3αfxf− 2yf− 2αfa1− αfa2 (3.17)

que é simplificado a partir das equações originais apresentadas em [Pedrosa et al. 2003], dado o fato de que a posição inicial do caminho é sempre [xp(0), yp(0)] = [0, 0] e que

α(0) = 0 porque o caminho é sempre construído de forma que o ponto de partida é sempre na origem do sistema de referência da câmera em qualquer iteração.

Na equação (3.17) [xf, yf] = [xp(1), yp(1)] representa a posição do caminho quando

λ = 1, αf = α(λ) quando λ = 1. Uma descrição mais detalhada de cada variável e do

procedimento adotado para se chegar nas equações mostradas é feita no trabalho original [Pedrosa et al. 2003].

As restrições presentes para certos valores iniciais nas condições de contorno que são citadas no trabalho [Pedrosa et al. 2003] não se aplicam nesse caso. A orientação inicial no caminho será sempre 0, pois robô só pode se mover na direção de seu eixo

X

r. Da

mesma forma a orientação no ponto final do caminho deve ser a mesma orientação do alvo que, pelo fato do mesmo ser um alvo planar, nunca vai chegar a ser −90◦ ou 90◦ segundo as limitações do sistema de detecção.

O método de perseguição de alvo utilizado aqui procura garantir que o robô vai tender a gerar o melhor caminho possível para perseguir o alvo dadas suas condições de restri- ção de movimento. O algoritmo de controle também vai sempre tentar reduzir qualquer discrepância angular entre o robô e o alvo que aparecer ao longo do movimento.

Apesar do método ter sido descrito em relação ao referencial de mundo quando o mesmo é implementado no algoritmo de controle o referencial utilizado para o caminho na prática é o referencial de câmera (ou um outro referencial temporário baseado no refe- rencial de câmera) portanto a mudança das coordenadas xwp e ywp deve ser feita de acordo com o novo referencial, que no caso correspondem a zcpe xcprespectivamente.

Método para seguir caminho

A geração de caminhos e algoritmos de perseguição são coisas já disponíveis na li- teratura para resolver o problema de manter um robô de acionamento diferencial num dado caminho, algumas referências podem ser vistas em [Laghrouche et al. 2012], [Ito et al. 2012] e [Koh & Cho 1999]. Como esta área de pesquisa está bem estabelecida, no presente trabalho um algoritmo já existente foi escolhido como solução para fazer o robô do sistema desenvolvido aqui ser capaz de seguir o caminho gerado. O algoritmo sofreu leves modificações para se encaixar no problema de perseguição de alvo discutido aqui.

A forma de seguir caminho que foi usado no algoritmo de controle proposto aqui foi uma versão modificada do método proposto por Samson em[Samson 1995]. A versão original do método já está bem estabelecida, ele é adequado para robôs terrestres não- holonômicos, tem custo computacional baixo e sua prova de estabilidade já existe.

A lei de controle usada no algoritmo de acompanhamento de caminho mantém ba- sicamente a velocidade linear desejada ˆv do robô constante e determina sua velocidade

angular de acordo com a lei dada por

u= −(kθ∆θs+ ˆvkl∆lssin (∆θs)/∆θs) (3.18)

onde kθ e kv São parâmetros constantes de controle, ∆θs é a diferença angular e ∆ls a

diferença de distância entre o robô e um ponto próximo pertencente ao caminho. A ve- locidade angular ω(t) do robô é então controlada utilizando ˆω pelo valor de u de acordo com a equação (3.19), onde κ(s) representa a curvatura do caminho.

ˆ

ω = u − κ(s) ˆvcos (∆θs)/(1 − κ(s)∆ls) (3.19)

A lei para seguir caminho introduzida por Samson utiliza velocidade constante para definir a estabilidade do robô ao se deslocar para o caminho, mas, no cenário de persegui- ção de alvo, um caso com velocidade variável deve ser considerado uma vez que, mesmo que o alvo se mova com velocidade constante, o robô deve variar sua velocidade para re- duzir a distância entre eles. No caso geral, é considerado que o alvo tem uma velocidade variável quando se movimenta.

Lei de controle modificada

A principal modificação realizada na lei de controle de Samson foi a introdução da variação na velocidade linear do robô de acordo com a posição do alvo. A posição e ori- entação do alvo é conhecida pelo sistema de detecção e rastreamento de alvo, de modo que um sinal vetorial de erro ∆e = [∆z ∆x∆θ] é calculado sobre a diferença entre a confi-

guração do alvo e a configuração desejada para ele, dados em coordenas de câmera. A distância de erro entre o alvo e a posição desejada εlserá então dada por

εl =

q

∆z2+ ∆x2. (3.20)

que corresponde ao mesmo valor εlutilizado no algoritmo de controle PID.

A velocidade ˆvaplicada à lei de controle será calculada sendo proporcional a esse valor da forma vista em

ˆ

v= kvεl (3.21)

onde kvé um parâmetro constante de controle a ser ajustado.

A velocidade ajustada é então aplicada a (3.18) e (3.19) para que o robô possa seguir o caminho com uma velocidade que o torna capaz de acompanhar o movimento do alvo. Como a velocidade do robô móvel é agora variável, a prova de estabilidade da lei de con-

trole não é mais válida, o que significa que dado um caminho, a lei de controle não garante que o robô irá alcançá-lo da forma desejada, especialmente se as variações na velocidade do robô não são conhecidas. Os testes de simulação do algoritmo revelaram que a lei de controle proposta funciona bem se o alvo não apresentar quaisquer deslocamentos súbitos especialmente que envolvam as restrições de movimento do robô.

Como os caminhos gerados para o robô são dinâmicos, e mudam a cada instante de amostragem do sistema, ao se calcular o caminho dinâmico para o robô pode-se restringir o cálculo a apenas os primeiros termos da curva do caminho, visto que os termos seguintes serão recalculados na próxima iteração do algoritmo.

Manobra para recuperação de alvo

Deseja-se que o sistema de controle do robô tenha pleno conhecimento da posição atual do alvo durante todo o percurso, porém, devido às suas restrições de movimentação sabe-se que isso pode não ser possível para todos os casos. Como forma de manter o controle atuando sempre, propõe-se a implementação de uma forma inteligente de mano- brar que seria acionada nos casos em que o robô perde a noção da posição do alvo. Esse sistema iria se basear na última configuração obtida para o alvo, para assim calcular a melhor trajetória que o robô poderia fazer a fim de recuperar o rastreamento do mesmo e retomar à perseguição.

O sistema que realiza as manobras foi pensado para atuar em ambientes livres de obstáculos, pois, como o sistema de controle não possui nenhuma informação sobre o ambiente e desconhece a posição atual do alvo durante a manobra seria arriscado agir em casos onde existem obstáculos. Durante a manobra o sistema de controle não possui nenhuma informação do alvo, portanto as manobras não podem ser muito longas para não causar problemas na perseguição.

O sistema de manobras proposto é bem simples e será acionado uma vez que o sistema de rastreamento de alvo perca o alvo por algum motivo, normalmente relacionado às restrições de movimentação do robô ou visibilidade do alvo, que são inerentes do processo de detecção e rastreamento do alvo. Neste caso o sistema de controle, supondo a ausência de obstáculos no ambiente, deve se manter no atual caminho calculado, baseado na última posição conhecida do alvo e na velocidade atual de perseguição, e permanecer à procura do mesmo durante o percurso. Realizar esse tipo de manobra garante a continuidade dos sinais de controle no acionamento das rodas do robô para os casos em que há perdas rápidas do rastreamento do alvo devido à imperfeições na imagem.

Figura 3.13: Ilustração do sistema de manobras para tentativa de recuperação de alvo representando o referencial fixo da câmera no instante em que o alvo foi visto pela última vez.

Considerou-se que, no caso geral, o algoritmo de controle não possui conhecimento da posição do robô relativa ao referencial de mundo

F

w, apenas da posição da câmera relativa

ao alvo dada pelo sistema de detecção de alvo. Nesse caso, durante a execução de uma manobra é criado um eixo temporário

F

0= [

Z

0,

X

0] no ponto inicial do último caminho

gerado, que pode ser observado na Figura 3.13. As coordenadas de posição do robô para aplicação do algoritmo de seguir caminho serão calculadas então com base nesse sistema de referencial fixo e não mais no sistema de referencial variável da câmera. Para que o robô possa aplicar a lei de seguir caminho modificada apresentada aqui é necessário que o mesmo possua conhecimento de sua posição e orientação relativos ao caminho fixo.

Como o robô não possui informação nenhuma de sua localização quando não é ca- paz de identificar o alvo, então deve-se adotar uma outra estratégia para tentar estimar a posição do robô em relação ao sistema de referencial fixo do caminho. A ideia é utili- zar informação de algum outro tipo de sensor disponível, como odometria, para realizar a estimativa da configuração do robô em relação ao sistema de referencial fixo. Como o sistema desenvolvido neste trabalho foi desenvolvido para ser independente de outros sensores presentes no robô além da câmera, então optou-se por utilizar uma estratégia pouco confiável para realizar tal estimativa. Assim as estimativas da posição e orientação atual do robô são feitas com base no modelo dinâmico do mesmo e nas velocidades cal- culadas para serem aplicadas às rodas, mais especificamente o modelo já apresentado em (3.11).

Se após o robô alcançar o ponto final do caminho fixo ele não recuperar a visualização do alvo, pode-se cessar o acionamento das rodas no intuito de parar o robô como medida

de segurança. Obviamente é fácil de se perceber que se houver qualquer mudança de com- portamento do alvo durante uma dessas manobras esse comportamento não vai ser levado em consideração no controle do robô, dessa forma optou-se por restringir o sistema de manobras a atuações curtas, apenas para compensar os casos em que há descontinuidade no sistema de rastreamento de alvo devido às imperfeições na imagem da câmera.

De uma forma geral notou-se um aumento do desempenho do algoritmo de perse- guição com a introdução dessa estratégia de manobra, permitindo sinais mais suaves no acionamento do robô.

Algoritmo de controle

O algoritmo que comanda o movimento do robô também considera a posição atual do alvo. A lei modificada apresentada na equação (3.21) é aplicada somente quando o alvo está na frente do robô, no alcance visual da câmera, e fora da distância mínima definida para a operação do controle. Quando o alvo está próximo do robô, ou seja, quando o valor εl está abaixo do limiar de distância mínima τ, a lei de controle fará o robô ficar estático

em sua posição, mas mudará sua orientação de acordo com a posição do alvo para tentar manter o rastreamento. No caso descrito, a lei de controle será dada por

ˆ v= 0 ˆ

ω = kwϕ

(3.22) onde ϕ(t) é o ângulo entre o eixo principal da câmera e o vetor que conecta a posição da mesma e a posição do alvo, como já apresentado na Figura 3.11.

Por razões de segurança quando o alvo está fora de vista, isto é, quando o mesmo não for detectado pelo sistema de detecção de alvo, o robô tenderá a permanecer imóvel esperando o surgimento do alvo. Essa regra não se aplica nos casos em que o robô está realizando uma manobra de recuperação de visada de alvo.

Uma vez que o sensor da câmera montado no robô é destinado a permanecer imóvel em relação ao chassi do mesmo, para simplificar a implementação de hardware, às vezes o alvo se moverá de uma maneira que se torna impossível para o robô seguir um caminho que mantém a visualização do alvo dentro de suas restrições de movimentação.

O algoritmo de controle proposto é apresentado em Algoritmo 2. O algoritmo toma como argumentos de entrada a configuração do alvo, qt, dada pelo sistema de estimação

de posição e de orientação, essa configuração corresponde à posição 2D alvo, [zt, xt] e

orientação, θ nas coordenadas do eixo da câmera. Os outros argumentos de entrada são a configuração desejada para o alvo, qd, dada pela distância que deseja-se que o robô esteja

do alvo d e que serve como referência para o controle, e por último o limiar de distância mínima, τ, definido segundo o critério de distância próxima apresentado na Seção 3.5.8.

Ao ser iniciado o algoritmo de controle verifica se o alvo foi ou não detectado pelo sistema de estimativa de configuração de alvo. Em caso positivo, o erro de configuração dado entre a configuração atual do alvo e a configuração de referência para o mesmo é calculado. Se o termo correspondente ao eixo

Z

cdo erro de configuração for positivo sig-

nifica que o robô deve se aproximar do alvo e se a distância do alvo até sua referência for maior do que o limiar de distância próxima τ o controle por geração de caminhos é inici- ado. Para se calcular os parâmetros de geração de caminho é necessário o conhecimento da posição desejada para o robô, dada por qdr, mas o mesmo pode ser obtido através da

distância d.

Se o alvo estiver muito próximo da referência, a uma distância menor que o limiar τ estipulado, não adianta gerar uma curva de caminho, então o robô deve permanecer imóvel e tentar manter a visibilidade do alvo até que o mesmo se desloque.

Se o termo correspondente ao eixo

Z

c do erro de configuração for negativo significa

que o robô deve se afastar do alvo, portanto aplica-se uma velocidade retilínea negativa nos atuadores das rodas dada pela equação (3.21) com kv < 0. Em qualquer outro caso

deve-se manter o robô imóvel por medida de segurança. Caso o alvo seja perdido durante a perseguição, o sistema de geração de manobra é acionado e se comporta da forma descrita na seção 3.5.9. Se o alvo não for mais detectado o robô será mantido imóvel.

Os resultados da implementação e testes do algoritmo proposto estão disponíveis no Capítulo 4, onde as diferenças entre esse algoritmo e o algoritmo de controle PID são analisadas.

Algoritmo 2: Algoritmo de controle proposto para o perseguidor de alvo, projetado para ser aplicado em robôs terrestres com rodas.

Entrada: Configuração do alvo: qt= [ztxt θ]; Configuração desejada para o alvo

qd = [d 0 0]; Limiar de distância τ > 0.

Saída: Velocidades v e ω a serem aplicadas aos atuadores do robô.

1 se Alvo foi detectado então

2 Calcular erro de configuração: ∆e = [∆z, ∆x, ∆θ] = qd− qt; 3 εlusando (3.20);

4 se ∆z< 0 e εl> τ então

5 Iniciar perseguição normal por geração de caminhos: 6 Criar caminho até configuração desejada;

7 Calcular velocidades usando (3.21) e (3.19); 8 retorna v e ω;

9 senão se ∆z< 0 e εl< τ então

10 Permanecer imóvel e tentar manter visada: 11 Calcular: ϕ = tan−1(xt/zt);

12 Calcular velocidades usando (3.22); 13 retorna v e ω;

14 senão se ∆z> 0 então

15 Alvo se aproximando, mover-se para trás: 16 Aplicar(3.21) com kv< 0; 17 ω = 0; 18 retorna v e ω; 19 senão 20 Permanecer imóvel: 21 v= 0; 22 ω = 0; 23 retorna v e ω; 24 fim

25 senão se Alvo perdido e robô em movimento então

26 Criar sistema de referencial fixo baseado no referencial atual da câmera; 27 Seguir o ultimo caminho gerado no referencial fixo;

28 retorna v e ω; 29 senão 30 Permanecer imóvel: 31 v= 0; 32 ω = 0; 33 retorna v e ω; 34 fim

RESULTADOS OBTIDOS

Esse capítulo agrega os principais resultados obtidos após testes e simulações dos sub- sistemas que compõem o sistema apresentado nesse documento. Os testes e simulações foram realizados após a definição de cada subsistema e serviram de base para realizar ajustes nos mesmos, bem como para avaliar seu funcionamento geral.

4.1

Processo de treinamento do detector de alvo

O processo de treinamento utilizado para se obter o classificador em cascata está dis- ponível no Computer Vision System Toolbox para MATLAB. Este Toolbox agrega uma série de rotinas para treinamento e utilização de classificadores em cascata, também dis- ponibiliza exemplos de classificadores já treinados para aplicações envolvendo rostos, olhos e corpo de pessoas. A função utilizada para treinar o classificador utilizado neste trabalho é chamada trainCascadeObjectDetector(), na qual alguns parâmetros de ajuste do treinamento são especificados pelo usuário de acordo com o desempenho do classifica- dor que se deseja obter ao fim do treinamento. Um procedimento similar de treinamento de detector em cascata está disponível também na biblioteca OpenCV para C++ e Python. A função trainCascadeObjectDetector() é bem prática de se utilizar e é capaz de trei- nar classificadores apenas com os dados básicos para se formar um. Neste caso, esses dados são as amostras de imagem positivas e as amostras de imagem negativas. Outros parâmetros relativos ao classificador podem também ser passados como parâmetros de função para tornar o treinamento mais específico. Alguns parâmetros como o número de estágio em cascata e a taxa de falsos alarmes são importantes na designação do detector e podem ser ajustados no processo de treinamento de cordo com a situação.

Uma série de treinamentos foram realizados e um classificador em cascata foi obtido para cada um deles. Cada treinamento foi feito no intuito de detectar um versão multi escala do alvo com média de cerca de 60 × 60 pixels, isso significa que padrões de alvo

maiores ou menores presentes na imagem podem ser identificados, porém de forma me- nos otimizada. A escolha do tamanho dado ao alvo desejado, em pixels, foi feita tendo em mente a resolução da câmera que se pretende utilizar e a distância ótima para a de- tecção do alvo de acordo com a aplicação. Geralmente, para se avaliar a performance do classificador obtido o mesmo precisa ser testado utilizando um detector de objeto.