< Return to Video

6.1: Autonomous Agents and Steering - The Nature of Code

  • 0:09 - 0:13
    Bem vindos a outro video da série Natureza do Código
  • 0:18 - 0:20
    Hoje daremos um grande salto adiante
  • 0:20 - 0:23
    Então se você realmente assistiu a todos os outros vídeos
  • 0:23 - 0:25
    Ou pelomenos a maioria deles
  • 0:25 - 0:31
    Você deve ter percebido que em todas as simulações tem círculos ou outras formas na tela
  • 0:31 - 0:35
    São sempre objetos inanimados, não têm habilidade de decisão
  • 0:35 - 0:40
    Não têm vida, esperanças, sonhos ou medos. Está só la parado e forças no ambiente estão o movendo
  • 0:40 - 0:50
    O que queremos fazer neste momento é começar a construir simulações em que objetos tomam decidoes
  • 0:50 - 1:03
    Eu acho que no primeiro vídeo eu falei sobre uma bola que está em uma mesa quer pular dela para fugir de uma criatura, hoje seremos esta bola
  • 1:03 - 1:07
    Que é capaz de perceber o ambiente e tomar uma decisão de para onde deve ir
  • 1:07 - 1:16
    Queremos fazer isso só porque é interessante e porque nos permite fazer diferentes tipos de comportamento de movimentos que ainda não fizemos
  • 1:16 - 1:28
    Mas, também temos outro objetivo. Então quero vir aqui por um segundo e .....
  • 1:28 - 1:38
    O que temos aqui é um exemplo encontrado no processing. É um simulador de flocking (reunião), e vamos chegar nele no final deste capítulo.
  • 1:38 - 1:44
    Mas a razão pela qual eu quero olhar para este exemplo é porque é um exemplo de um sistema complexo. O que é um sistema complexo?
  • 1:44 - 1:55
    É um sistema que é mais do que a soma das suas partes. Qual é a parte aqui? São estes pequenos triângulos se movendo pela tela de acordo com estas 3 regras bem simples.
  • 1:55 - 2:01
    Não trombar no meu vizinho, ficar junto ao grupo, ir na direção do grupo. E mais para frente vamos olhar para estas regras mais detalhadamente.
  • 2:01 - 2:14
    Mas estas regras simples, podemos entende-las separadamente mas globalmente temos este comportamente imprevisível, altamente inteligente, ordenado porém caótico.
  • 2:14 - 2:33
    É realmente incrível e tem vários exemplos disto na natureza: raios, terremotos, o clima, a bolsa de valores, poderíamos continuar, os exemplos são muitos onde pequenos agentes colocados juntos geram uma inteligência global.
  • 2:33 - 2:51
    ... enfim
  • 2:51 - 3:10
    Mas antes de olhar para sistemas complexos, vamos olhar para estes agentes simples. Quero chegar nos detalhes mas este vídeo é introdutório à este tópico e eu queria apontar umas coisas que podem ser úteis para você pensar.
  • 3:13 - 3:34
    Vamos parar um momento e definir o que queremos dizer com Agentes Autônomos. Quais são os princípios que vamos pensar para construir essas simulações que envolvem estas entidades que parecem vivas.
  • 3:34 - 3:47
    Um princípio é que um agente autonomo tem uma habilidade LIMITADA de perceber seu ambiente.
  • 3:47 - 4:09
    Isso pode parecer trivial mas vai se tornar um fator importante. Sao todas as coisas da tela capazes de perceber as coisas com 25 pixels de distancia ou somente na sua frente numa certa distancia?
  • 4:09 - 4:43
    O que é esta habilidade limitada? O que ele pode ver, cheirar, sentir na tela? Uma vez que ele percebe, ele vai processar o ambiente e calcular uma ação. O ponto chave é o calculo da acao.
  • 4:44 - 5:04
    Eu sou uma entidade e vejo que tem varias coisas na minha frente e elas parecem assustadoras entao calculo minha acao que é fugir destas coisas. O meu cálculo vai resultar em uma força.
  • 5:04 - 5:18
    O que é importante no que estamos fazendo aqui é que nao e nada de novo, so estamos pensando diferentemente e pensando em formulas, logicas e regras nas quais aplicamos forcas aos objetos.
  • 5:18 - 5:23
    Entao ainda que estamos pensando conceitualmente diferente: esta coisa esta viva, esta nao.
  • 5:27 - 5:33
    Uma força externa como vento contra uma interna como medo. No final elas são forças.
  • 5:33 - 6:07
    E a ultima coisa que quero colocar nesta lista é que nao tem um plano ou lider global. Não é uma regra obrigatoria que te impede de ter um lider, mas é importante perceber que aqui estamos fazendo entidades que decidem de acordo com o que percebem
  • 6:07 - 6:25
    Nao baseado em lideres, voce pode querer usar isto mas agentes autonomos nao tem lider. Estes são os conceitos que você vai querer utilizar nos programas que vamos fazer.
  • 6:27 - 6:46
    O que sao esses exemplos que vamos fazer e de onde elas vem? Tem muitas coisas que poderiamos fazer, e os nossos trabalhos vao ser baseados nos trabalhos de Craig Reynolds e um artigo que ele fez chamado Steering Behaviors for Autonomous Characters.
  • 6:47 - 7:07
    Vamos olhar para alguns exemplos, este video é de um projeto do Casey Reas, link na descrição. Onde você ve o elemento e suas regras. Eu sugiro que você veja o vídeo.
  • 7:08 - 7:18
    Aqui estes elementos que estao operando com estas regras bem simples, percebem o ambiente, do que estão perto, se bateram em algo vira, se não vai reto
  • 7:18 - 7:35
    E todas estas obras de arte maravilhosas sao criadas a partir destas regras extremamente simples. Vou voltar no video e esta simulacao é um exemplo melhor.
  • 7:36 - 8:01
    A razao pela qual eu quis referenciar o Casey Reas é porque muito da sua inspiracao vem deste livro: Veiculos, do Valentino Braitenberg. Esta é uma pagina do livre no google books
  • 8:01 - 8:24
    E voce pode ver, o que é legal neste livro é que ele cria ideias de robos com sensores que veem uma luz e um tem medo da luz o outro e atraido. Ele pensa nestes robos como pequenas criaturas qu e respondem a sensacoes como medo, amor, etc..
  • 8:24 - 8:34
    E isso é uma coisa importante de se pensar, uma fonte de inspiracao de como voce pode pensar em criar agentes autonomos.
  • 8:34 - 8:40
    Eu colocarei links na descricao para ver como inspiracao.
  • 8:41 - 8:50
    Mas a razao pela qual estou falando disso, é porque este livro foi uma grande inspiracao para o artigo Steering Behaviors.
  • 8:50 - 9:00
    Entao agora vamos olhar para e construir programas de processing que sao puras implementacoes dos algoritmos do artigo Steering Behaviors.
  • 9:01 - 9:33
    Este é um artigo que foi escrito em 1999. Te encorajo a dar uma olhada. Mas o que Reynolds fez foi simplificar o funcionamento das coisas no mundo real para transformar em coisas vivas se mechendo na tela.
  • 9:36 - 9:46
    Tem um enorme set de comportamentos como procurar, seguir um caminho. Um que acho que ilustra bem é o de fazer filas em um corredor.
  • 9:48 - 9:58
    Voce pode ver aqui que tem varios elementos tentando chegar neste corredor e quando eles chegam perto eles tem que diminuir a velocidade e parar. Qual a sua percepção do ambiente?
  • 9:59 - 10:05
    Como ele sabe onde esta a porta? Como ele tenta chegar la? Como ele ve as coisas à sua volta? Porque ele escolhe diminuir a velocidade quando chega perto do corredor?
  • 10:06 - 10:17
    Este é o tipo de coisa que vamos ver passo a passo. Entao, vamos olhar para esta ideia de força de direção (steering force), como calcular esta força em diferentes cenários.
  • 10:18 - 10:32
    Por que precisamos destas forças, que tipo de forças queremos. Um predador pegando sua presa? Ou escapar de uma sala cheia porque está muito claustrofobico.
  • 10:33 - 10:49
    Tem um otimo paper e simulação que saiu recentemente, foi o Mosh Pit Simulator, o que um Mosher em um Mosh deseja? Que tipo de decisoes ele faz baseado no que os outros que estao na Mosh estao fazendo?
  • 10:49 - 11:03
    Voce pode se fazer esta pergunta, fazer uma serie de regras e simular isso. Te encorajo a ver essa simulacao, link na descricao.
  • 11:04 - 11:30
    O que eu quero fazer agora é falar sobre como Reynolds pensa em no que seus veiculos fazem. Reynolds pensa em seus veiculos operando em 3 passos:
  • 11:31 - 11:50
    Ação/Selecao, Direcionamento e locomoção. Entao nossos objetos que faremos em processing vao seguir esses 3 passos.
  • 11:51 - 11:55
    Acao e direcao é olhar para o ambiente e escolher uma acao.
  • 12:05 - 12:19
    Temos que escolher um desejo e aqui a palavra desejo é chave. Todos os objetos que vamos construir vao ter uma velocity desejada, uma direção e velocidade (diferente de velocity) para onde querem ir naquele momento.
  • 12:20 - 12:39
    Uma vez que tem-se a velocity desejada vamos calcular a força de direção baseada nela. A força de direcao é uma força, é somente um vetor. Da mesma maneira que em outros videos calculamos a forca de atracao, de friccao, agora calcularemos a força de direção.
  • 12:39 - 12:48
    E vamos ter uma formula específica para isso que é simples, elegante e poderosa que é a inovação de Reynolds.
  • 12:49 - 12:54
    E a boa notícia é que uma vez que temos a força de direção, é só aplicá-la à locomoção do objeto,
  • 12:54 - 12:57
    Quais sao as opcoes para locomocao?
  • 12:58 - 13:09
    Podemos ter a integração de Euller: posição, velocity e aceleração. Podemos usar BOX2D, podemos usar toxiclibs. Este terceiro passo é a simulação de física
  • 13:10 - 13:20
    Entao tudo que estamos fazendo aqui é dizendo temos uma simulacao de fisica existente e vamos pensar na metodologia de escolher comportamentos e aplicar forcas.
  • 13:20 - 13:38
    Entao tudo que vimos nos videos até agora está sendo usado aqui, temos esse sistema de fisica, vamos usar PVectors e aplicar forças neles.
  • 13:39 - 14:09
    No proximo video vamos ver esse calculo simples de steering force, e vamos ver primeiro o comportamento de procurar algo, de como se movimentar naquela direção, o que é bem proximo de atracao gravitacional mas quero mostrar a diferenca entre estes modelos.
  • 14:09 - 14:19
    Como este é melhor para entidades que parecem estar vivas e decidem seus movimentos ao inves de somente experimentarem uma força.
  • 14:19 - 14:29
    Ok, Tchau e boa noite. Ok, tchau. =*
Title:
6.1: Autonomous Agents and Steering - The Nature of Code
Description:

more » « less
Video Language:
English
Duration:
14:29

Portuguese, Brazilian subtitles

Revisions