trabalho computacional pd1 resgate de pessoas por robôs em terrenos acidentados romário espíndula...

17
Trabalho Computacional PD1 Resgate de pessoas por robôs em terrenos acidentados Romário Espíndula Camilo Avancini

Upload: rodrigo-miranda

Post on 07-Apr-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Trabalho Computacional PD1 Resgate de pessoas por robôs em terrenos acidentados Romário Espíndula Camilo Avancini

Trabalho ComputacionalPD1

Resgate de pessoas por robôs em terrenos acidentados

Romário EspíndulaCamilo Avancini

Page 2: Trabalho Computacional PD1 Resgate de pessoas por robôs em terrenos acidentados Romário Espíndula Camilo Avancini

Porquê robôs?

Prós:• Não se machucam• Podem fazer coisas que humanos não fazem• Não colocam mais pessoas em riscoContras:• Não tomam decisões sozinhos, a não ser que a

decisão esteja expressada no código.• As decisões tem que ser expressadas através de

cálculos matemáticos, muitas vezes complexas.

Page 3: Trabalho Computacional PD1 Resgate de pessoas por robôs em terrenos acidentados Romário Espíndula Camilo Avancini

Primeira etapa – Definição do Plano

Para que o robô possa andar, primeiro devemos descrever como ele se movimentará no plano onde se encontra.

Os robôs podem utilizar câmeras, sensores ( sonoros, infra-vermelho,etc... ), entre outros dispositivos que lhe forneçam um “overview” do plano onde se encontra.

No nosso caso limitamos o plano à formas geométricas em 2D.

Page 4: Trabalho Computacional PD1 Resgate de pessoas por robôs em terrenos acidentados Romário Espíndula Camilo Avancini

Primeira etapa – Definição do Plano

Nosso maior problema em relação ao plano era como verificar se um ponto poderia ser utilizado pelo robô em seu movimento, ou se ele estava ocupado por algum polígono.

Para definirmos o plano de forma facilitada, decidimos utilizar polígonos regulares ( triangulo, circulo e quadrado ) , e estipulamos um tipo de dado de entrada padrão a todos a ser dado, como mostrado no próximo slide.

Page 5: Trabalho Computacional PD1 Resgate de pessoas por robôs em terrenos acidentados Romário Espíndula Camilo Avancini

Primeira etapa – Definição do Plano

Os polígonos são definidos de acordo com os desenhos acima.

O plano é definido por uma lista de tuplas do tipo: (nomedopoligono,(Xi,Yi),lado)

Exemplo: [(“circ”,(3,3),2)]Isso gerará um circulo de centro em x=3 e y=3, com raio=2

Page 6: Trabalho Computacional PD1 Resgate de pessoas por robôs em terrenos acidentados Romário Espíndula Camilo Avancini

Primeira etapa – Verificação no plano

Como fizemos a entrada de forma generalizada, possibilitou criar uma função que dado um ponto (X,Y) faz um “scan” em todo o plano e verifica se aquele ponto pertence à algum polígono, retornando um valor booleano (False) caso isso ocorra.

Permitindo que pudéssemos analisar os passos do robô para que ele não executasse nenhum movimento que não era possível.

Page 7: Trabalho Computacional PD1 Resgate de pessoas por robôs em terrenos acidentados Romário Espíndula Camilo Avancini

Segunda etapa – Movimento do robô

Como expressar através de uma lógica matemática um movimento que deve demonstrar um certo grau de inteligência?

Idéias básicas:• Deve perseguir o local onde deseja estar• Deve desviar dos obstáculos no caminho• Deve buscar o melhor caminho, ou mais

próximo que puder disso.

Page 8: Trabalho Computacional PD1 Resgate de pessoas por robôs em terrenos acidentados Romário Espíndula Camilo Avancini

Segunda etapa – Movimento do robô

Após várias tentativas e lógicas diferentes, construímos um conceito de movimento que segue algumas etapas.

Page 9: Trabalho Computacional PD1 Resgate de pessoas por robôs em terrenos acidentados Romário Espíndula Camilo Avancini

Segunda etapa – Movimento do robô

O primeiro passo da lógica é sempre tentar se aproximar o máximo que puder do ponto a ser perseguido. Neste caso são as setas que NÃO estão circuladas de vermelho.

Page 10: Trabalho Computacional PD1 Resgate de pessoas por robôs em terrenos acidentados Romário Espíndula Camilo Avancini

Segunda etapa – Movimento do robô

O segundo é que caso esses movimentos não sejam possíveis, retornar a um ponto anterior ( movimentos circulados de vermelho ) e tentar seguir por outro ponto.

Page 11: Trabalho Computacional PD1 Resgate de pessoas por robôs em terrenos acidentados Romário Espíndula Camilo Avancini

Segunda etapa – Movimento do robô

O problema é que como a primeira lógica manda ele se aproximar o máximo possível do ponto desejado, logo o robô executará o passo novamente para o ponto, finalizando o movimento do robô em um loop “infinito” de ida e volta para aquele mesmo ponto.

Para evitar problemas desse tipo utilizamos várias funções para evitar redundâncias nos movimentos. Tornando-o de certa forma “inteligente”.

Page 12: Trabalho Computacional PD1 Resgate de pessoas por robôs em terrenos acidentados Romário Espíndula Camilo Avancini

Exemplos do programa – Sem OpenGL[("Resgate 1","45 metros percorridos aproximadamente","33s a uma velocidade de 2m/s, adicionado

de 10s (tempo de captura)","Pontos por onde o robo passou para executar o resgate da vitima: [(12.0,-12.0),(11.0,-11.0),(10.0,-10.0),(10.0,-9.0),(9.0,-8.0),(8.0,-7.0),(7.0,-6.0),(6.0,-7.0),(5.0,-8.0),(4.0,-9.0),(3.0,-9.0),(2.0,-9.0),(1.0,-9.0),(0.0,-9.0),(-1.0,-9.0),(-2.0,-8.0),(-3.0,-7.0),(-4.0,-8.0),(-4.0,-9.0),(-4.0,-8.0),(-3.0,-7.0),(-2.0,-8.0),(-1.0,-9.0),(0.0,-9.0),(1.0,-9.0),(2.0,-9.0),(3.0,-9.0),(4.0,-9.0),(5.0,-8.0),(6.0,-7.0),(7.0,-6.0),(8.0,-7.0),(9.0,-8.0),(10.0,-9.0),(10.0,-10.0),(11.0,-11.0),(12.0,-12.0)]"),("Resgate 2","35 metros percorridos aproximadamente","28s a uma velocidade de 2m/s, adicionado de 10s (tempo de captura)","Pontos por onde o robo passou para executar o resgate da vitima: [(12.0,-12.0),(11.0,-11.0),(10.0,-10.0),(10.0,-9.0),(9.0,-8.0),(8.0,-7.0),(7.0,-6.0),(6.0,-5.0),(5.0,-4.0),(4.0,-3.0),(3.0,-2.0),(2.0,-1.0),(1.0,0.0),(1.0,1.0),(1.0,0.0),(2.0,-1.0),(3.0,-2.0),(4.0,-3.0),(5.0,-4.0),(6.0,-5.0),(7.0,-6.0),(8.0,-7.0),(9.0,-8.0),(10.0,-9.0),(10.0,-10.0),(11.0,-11.0),(12.0,-12.0)]"),("Resgate 3","67 metros percorridos aproximadamente","44s a uma velocidade de 2m/s, adicionado de 10s (tempo de captura)","Pontos por onde o robo passou para executar o resgate da vitima: [(12.0,-12.0),(11.0,-11.0),(10.0,-10.0),(10.0,-9.0),(9.0,-8.0),(8.0,-7.0),(7.0,-6.0),(6.0,-5.0),(5.0,-4.0),(4.0,-3.0),(3.0,-2.0),(2.0,-1.0),(1.0,0.0),(0.0,1.0),(-1.0,2.0),(-2.0,2.0),(-3.0,3.0),(-4.0,4.0),(-5.0,5.0),(-6.0,6.0),(-7.0,7.0),(-8.0,8.0),(-9.0,8.0),(-10.0,9.0),(-11.0,10.0),(-11.0,11.0),(-11.0,10.0),(-10.0,9.0),(-9.0,8.0),(-8.0,8.0),(-7.0,7.0),(-6.0,6.0),(-5.0,5.0),(-4.0,4.0),(-3.0,3.0),(-2.0,2.0),(-1.0,2.0),(0.0,1.0),(1.0,0.0),(2.0,-1.0),(3.0,-2.0),(4.0,-3.0),(5.0,-4.0),(6.0,-5.0),(7.0,-6.0),(8.0,-7.0),(9.0,-8.0),(10.0,-9.0),(10.0,-10.0),(11.0,-11.0),(12.0,-12.0)]")....

Page 13: Trabalho Computacional PD1 Resgate de pessoas por robôs em terrenos acidentados Romário Espíndula Camilo Avancini

Exemplos do programa – Com OpenGL

Page 14: Trabalho Computacional PD1 Resgate de pessoas por robôs em terrenos acidentados Romário Espíndula Camilo Avancini

Exemplos do programa – Plano esperado

Page 15: Trabalho Computacional PD1 Resgate de pessoas por robôs em terrenos acidentados Romário Espíndula Camilo Avancini

Outros exemplos

Page 16: Trabalho Computacional PD1 Resgate de pessoas por robôs em terrenos acidentados Romário Espíndula Camilo Avancini

Outros exemplos

Page 17: Trabalho Computacional PD1 Resgate de pessoas por robôs em terrenos acidentados Romário Espíndula Camilo Avancini

Outros exemplos