aniblue07_bendlr_back.gifaniblue07_bendlr_next.gif

Funcionamento do código no PC  no modo de Debug

 

Introdução

 

Já foi referido que o código que executa no PC está responsável pela decisão de controlo do microrato com base no estado actual do mesmo, e com base no objectivo a cumprir.

Esse objectivo está directamente ligado aos objectivos da prova do microrato. Em termos gerais o kerukejo tem de ir ter a um farol, que está num recinto rectangular de 10m/5m com obstáculo desconhecidos. Após chegar a esse ponto tem de voltar ao início. O farol encontra-se no centro do rectângulo, e o ponto de partida do microrato é num ponto incerto no limite do recinto.

O que o kerukejo tem de conhecer para atingir estes objectivos é: detectar o farol; detectar e evitar obstáculos; detectar quando chega à zona de farol; e saber em que posição é que está em relação à partida, e assim poder voltar ao início.

Já foi explicado no capítulo de hardware que sensores existem no Kerukejo, tendo em conta os objectivos a cumprir vamos tentar associar os sensores às respectivas utilidades em termos de objectivos gerais da prova. Para detectar o farol, o kerukejo possui um sensor de infra-vermelhos no comprimento de onda do farol emissor. Para detectar obstáculos possui 5 sensores no pára-choques. Detecta a zona de farol através de dois sensores infra-vermelhos, sensíveis à variação da reflecção no solo, visto que a zona de farol  é preta ao contrário do resto do recinto que é branco. O kerukejo para saber a sua posição em qualquer momento (hodómetria) usa a informação que vem dos motores. Essa informação é a velocidade a que andou cada um dos motores durante o intervalo de tempo.

Assim temos de desenvolver o software de controlo do microrato com base no estado, e seguindo uma estratégia que leve passo a passo, o microrato a cumprir o objectivo geral.

 

Estratégia

 

A estratégia adoptada passa por individualizar o objectivo geral que é concluir a prova em objectivos parciais a que chamamos de missões, e estas compostas por tarefas e, cada tarefa usa várias acções sobre o microrato.

Deste modo o software desenvolvido torna-se mais simples e de fácil interpretação.

Ao nível das missões o seu funcionamento é o seguinte:

 

 

 

 

 

 


A Missão Parado é a missão em que o kerukejo está em “stand-by”, quer seja o inicio da prova, quer seja qualquer interrupção que haja a meio da prova. Após a missão ser retomada, a missão seguinte será a Missão Atingir Farol, no caso de ser o início, ou a missão que foi interrompida pelo interruptor de pausa.

A Missão Atingir Farol, como o próprio nome indica, tem por objectivo levar o robot da casa de partida até à zona de farol. As estratégias para conduzir o kerukejo da casa de partida até farol podiam ser variadas. A que apresenta a figura seguinte é apenas uma, que nos pareceu adequada e simples.

 

 

 

 

A tarefa Busca Farol consiste na rotação de 360º sobre o seu próprio eixo com o fim de captar o ângulo de maior captação do sinal infra-vermelho do farol. Se captado algum sinal superior a um valor que é considerado ruído, é guardado num elemento de vector a seguinte informação (x,y,q). Cada elemento é uma recta.

Sempre que existir um par de rectas pode-se achar a sua intercepção, e daí ter uma estimativa do ponto onde está o farol. Tendo essa intercepção a Tarefa Vai Ponto tenta alcançar esse ponto. Se não tivermos um par de rectas, o microrato gera um ponto que fica a um metro de distância, e é perpendicular à última recta captada. Deste modo garante-se que o próximo varrimento não origina uma recta paralela, e também garante-se que o microrato não se afasta muito do ponto onde estava, até ter uma estimativa mais precisa da localização do farol.

A decisão de ter ou não chegado à zona de farol, não é da responsabilidade destas tarefas, mas sim das missões. Assim quando o microrato atinge o ponto, faz novo varrimento.

Para proteger o microrato de andar à procura de um ponto indefinidamente, existe um tempo limite para que ele atinja esse objectivo. Esse tempo é três vezes o tempo que o microrato levava para atingir o ponto se a sua trajectório fosse rectilinea.  Após o termino desse tempo, a tarefa passa a ser a Tarefa Busca Farol.

A Missão Espera apenas serve para fazer uma temporização de três segundos na zona do Farol. Mais uma vez, faz parte da especificação do concurso.

A Missão Voltar ao Início, usa a Tarefa Vai Ponto, mas sem limite de tempo para atingi-lo.

Quando Atinge esse ponto passa à Missao Fim, que apenas serve de referência para parar o microrato, e assinalar o fim da prova com o led respectivo.

A Tarefa Vai Ponto é uma tarefa muito complexa, visto deve conter toda a lógica de deslocamento desviando-se de obstáculos. Na figura de cima, temos a representação de todos os estados que esta tarefa podem ter, e de seguida teremos uma breve descrição dos estados, e um esboço representativo da situação real. Os esboços são feitos a partir de uma vista superior, e a recta no centro do microrato representa o ângulo que o microrato está virado.

Alinha – Alinha o ângulo do microrato com o ponto a seguir.

Seg_Ponto – Controla o movimento do microrato seguindo uma trajectória até atingir o ponto de destino.

 

 

 


Para – Trava o microrato até ele se imobilizar. Quando encontra um obstáculo.

 

 

 

 

Para_Fim – Trava o microrato no fim do destino (ponto a atingir)

Encontra_Obstáculo – Identifica o ponto da primeira observação de um obstáculo.

R_90_D  / R_90_E – Faz uma curva de 90 graus contornando uma curva em cotovelo para a direita/esquerda.

R_D / R_E – Roda em torno de si mesmo para a direita/esquerda.

 

 

 

 

 

 


Segue_P_E /Segue_P_D – Segue uma parede pela esquerda/direita.

 

 

 

 


Roda_D_ate_E_L / Roda_E_ate_D_L – Roda para o lado contrário do objecto com o propósito de se desligar do objecto e seguir para o ponto.

Usando os sensores e a hodometria é feita a iteração entre os estados, de modo a contornarem os obstáculos.

Na figura seguinte podemos verificar o trajecto do kerukejo para atingir um ponto. Na legenda estão descriminadas as cores e simbolos que representam os estados para a trajectória representada por essa côr ou simbolo.

 

 

 

 

 

 

 

 

 

 


O microrato após encontrar um objecto contorna-o até que haja uma condição de saída que seja activada. Esta condição de saída é muito importante para que o robot não faça trajectos desnecessários, e não fique preso ao objecto.

A condição de saída do objecto por nós usada foi a seguinte: Sempre que o microrato encontra um objecto guarda essas coordenadas (na verdade guarda as coordenadas 15cm à frente, para que esse ponto de situe ligeiramente dentro do objecto). O microrato deve apenas sair quando estiver no interior de uma elipse, a menos de uma quantidade (20cm no nosso caso), que une o ponto guardado ao encontrar o objecto, e o ponto de destino.

A equação que traduz esta condição é:

 

 

Em que P1 é o ponto de “impacto” com o objecto, P2 é o ponto a atingir, e PR é o ponto do microrato.

Esta condição funciona bem e é eficiente para a maior parte dos obstáculos. Para obstáculos grandes não é tão eficiente,  visto que tem de chegar ao outro ponto de intercepção da elipse.

Estes estados das duas tarefas (Tarefa Vai Ponto, e Tarefa Busca Farol), executam os movimentos com base em acções. Acções são funções que implementam um tipo de movimento ao microrato. As acções utilizadas são:

-void roda(float angulo)  //que roda até o microrato estar virado para  “angulo”

-void segue_ponto(float angulo,int x,int y, int V) // que compensa o movimento do rato de modo a seguir com a direcção que une o microrato ao ponto final; x e y são os pontos finais; e V a velocidade a que se deve deslocar.

-void segue_parede_esquerda() compensa as velocidade de modo a manter sempre a mesma distância à parede.

Existe um conjunto de outras funções que auxiliam o desenrolar das missões/tarefas, e que devido a serem muitas e algumas com interesse restrito, não vamos descrevê-las.

 

Hodometria

Uma função que é muito importante é a hodometria. Com a hodometria conseguimos saber a posição actual do microrato que é essencial para cumprir os objectivos da prova.

Para realizarmos a hodometria, como já foi dito no início do capítulo, usa-se a informação que é retornada pelo 8515 quando lhe enviamos nova ordem. A informação que é retornada são as velocidade a que andaram durante o intervalo de tempo que também é retornado.

As equações que regem o estado do microrato são:

 

 

 

 


Com:

v= velocidade linear

w= velocidade angular

v1=velocidade do motor 1

v2=velocidade do motor 2

k=constante que depende dos factores que influênciam o movimento rectilíneo, tais como: perimetro das rodas; precisão do motor passo-a-passo;

kb=constante que depende dos factores que influênciam o movimento com curvas.

b=distância entre eixos

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


aniblue07_bendlr_back.gifaniblue07_bendlr_next.gif