ó já abriu ali o o trem de Pous E errou errou á lá lá o desespero dele tentando corrigir o ângulo ó o Jatinho aqui ó o Jatinho aqui desesperado tentando pelo amor de Deus não cai não lá já era foi Eita a agora vai hein Agora vai hein ó como ele vai tranquilo e e perfeito mano tranquilo demais aí Sara chega aí que foi tem coragem do quê de pilotar um foguete quando agora Óbvio Então bora seja muito bem-vindo ao universo programado eu sou o Vitor dias e nesse vídeo nós vamos colocar uma inteligência
artificial para aprender a Decolar pilotar e pousar um foguete nós vamos ver desde a criação do simulador de foguetes até o treinamento das redes neurais com direito a uma disputa humano versus máquina no final do vídeo o primeiro passo é encontrar uma imagem para representar o Foguete depois de procurar um pouco eu gostei dessa daqui agora a gente precisa fazer o Foguete se mexer pro movimento dele ficar o mais realista possível nós vamos tentar replicar o movimento de um foguete real a técnica usada para movimentar um foguete real é basicamente ejetar uma grande quantidade de
gás em alta velocidade através de uma saída chamada de bocal de exaustão essa técnica funciona graças a um princípio da física muito famoso chamado de terceira lei de Newton essa lei afirma que para toda ação existe uma reação com a mesma intensidade porém no sentido oposto Ou seja quando o Foguete empurra o gás para baixo o gás empurra o foguete para cima com a mesma intensidade Então nesse simulador nós vamos reproduzir essa técnica toda vez que o jogador apertar a tecla de acelerar nós vamos desenhar um foguinho aqui no bocal de exaustão e vamos adicionar
uma aceleração na direção oposta a esse foguinho só que se a gente fizer só isso o Foguete não vai conseguir se movimentar na horizontal muito menos corrigir a inclinação caso ele precise Então nós vamos ter que adicionar mais um recurso pro foget conseguir se movimentar na horizontal nós vamos usar uma técnica chamada first vectoring o first vectoring consiste em adicionar mobilidade ao bocal de exaustão para que ele consiga direcionar o gás que sai do Foguete dessa forma uma pequena parte da aceleração vertical do foguete vai ser redirecionada pra horizontal então além do jogador poder acelerar
o Foguete ele também vai ter a opção de inclinar a chama de exaustão pra esquerda ou pra direita só que é claro nós temos problemas Olha aí e me diz se esse movimento parece realista para você espero que você tenha respondido que não porque tá faltando uma coisinha o torque quando o gás é ejetado nessa direção o Foguete acelera nessa direção essa aceleração pode ser desmembrada em duas outras acelerações uma no eixo vertical e outra no eixo horizontal a aceleração vertical vai fazer o Foguete subir já a aceleração horizontal além de mover o Foguete pro
lado também vai fazer el girar em relação a um ponto esse ponto é chamado de centro de massa e por enquanto nós vamos colocar ele no centro da figura do Foguete daí se a gente implementar esse giro o movimento fica assim bem mais realista Só que ainda tá faltando uma coisa nesse simulador uma coisinha chamada gravidade pra nossa sorte nesse projeto o Foguete não vai sair do planeta Terra isso significa que nós podemos considerar a gravidade como sendo constante ou seja sendo a mesma em todos os pontos da tela ela sempre vai apontar no sentido
negativo do eixo vertical e sempre com a mesma intensidade para implementar esse tipo de gravidade basta somar um valor negativo na aceleração vertical do Foguete daí o resultado fica assim bonitinho se você quiser ver a gravidade sendo implementada de verdade de uma forma mais completa te recomendo assistir o vídeo programando um canhão de Newton aqui do canal nele eu mostro o passo a passo de como fazer isso perfeito o foguete já tá pronto Agora vamos fazer o cenário pro cenário eu pensei em reproduzir essa cena aqui do Foguete pousando na balsa então primeiro a gente
adiciona o Céu depois o mar o mar vai ser desenhado em duas partes uma parte vem antes do foguete e a outra vem depois para dar uma sensação de profundidade outra coisa legal que também dá para fazer é o usar uma técnica chamada perx nessa técnica os objetos que estão mais perto da câmera se movimentam com velocidades maiores que os objetos que estão mais distantes isso também aud dar um efeito tridimensional paraar essaé aqui é só a gente colar PR ondas ficarem vez mais lentas Med que se aproxim do Horizonte agora portim é só adicionar
um navio perfeito agora que o foguete e o cenário já estão prontos a gente precisa implementar a interação entre eles nesse projeto nós teremos dois tipos de interação a colisão e o pouso para detectar a colisão primeiro a gente tem que mapear o Foguete mapear o Foguete significa que nós vamos escolher alguns pontos dele para representar ele no cálculo da colisão e para simplificar nós vamos usar esses sete pontos ou seja apenas esses pontos serão testados e o foguete só vai ser considerado colidido Se algum desses pontos invadiu uma área proibida nesse cenário Existem duas
possibilidades de colisão ou o Foguete colide com o mar ou com o navio verificar se o foguete colidiu com o mar é muito fácil basta a gente definir um valor paraa altura do mar e verificar se algum dos pontos de colisão do Foguete ultrapassou Esse valor já a situação do navio é um pouco mais complicada porque o Foguete também vai ter que pousar nele então terão situações onde o Foguete realmente colite com o navio e situações onde o Foguete apenas encosta no navio para pousar para resolver isso nós vamos fazer o seguinte vamos representar o
navio com três retângulos se algum ponto de colisão do Foguete invadir a área de algum desses retângulos significa que o Foguete encostou no navio os dois retângulos laterais serão fatais encostou ali já era já o retângulo Central não se no momento em que o Foguete encostar nesse retângulo ele estiver em um ângulo próximo a 90º e com uma velocidade baixa significa que ele pousou qualquer coisa diferente disso significa que ele colidiu perfeito agora que o simulador Já tá pronto a gente precisa dar um objetivo para tudo isso e o objetivo vai ser o seguinte o
jogador vai ter que decolado o navio coletar três pontos espalhados pela tela e pousar no navio novamente agora eu vou dar uma jogadinha aqui só para ver se tá tudo certo vamos ver se tá bem configurado ó a velocidade Tá boa a inclinação também tá boa Apesar de que tá um pouquinho difícil de controlar ele tá meio bambo Mas é isso né é um foguete tem que ser difícil mesmo e Nossa tá um pouco difícil sim eu te falar que ele tá bastante bambo show aí agora pousar vamos ver se tá tudo funcionando ó ele
não pode explodir per vai ganhar vai perder vai ganhar perdeu vamos lá vamos lá e ih vamos pousar pousar Epa calma aí devagar devagar hoje não hoje não hoje sim hoje sim é inacreditável tudo certo vamos colocar a i para aprender a jogar o algoritmo que vai controlar o foguete é chamado de redes neurais e o algoritmo que vai treinar ele é chamado de estratégias evolutivas se você quiser aprender como esses algoritmos funcionam com mais detalhes te recomendo assistir a playlist e aprendendo que tem aqui no canal ao longo desses vídeos eu expliquei em detalhes
o funcionamento desses algoritmos mas de forma bem resumida a rede neural é o algoritmo que vai dizer pro personagem Qual ação ele deve executar em cada momento do jogo só que para ela saber as ações corretas ela precisa ser treinada o método de Treinamento que a gente vai usar nesse projeto é inspirado no processo de seleção natural as redes neurais são colocadas para jogar e as que jogarem melhor sobrevivem e geram descendentes enquanto as piores deixam de existir Os descendentes são ligeiramente diferentes dos Pais isso faz com que ao longo das Gerações a população como
um todo se transforme em indivíduos que jogam bem então vamos lá vamos botar as redes para [Música] treinar para deixar o treinamento mais eficiente nós vamos dividir a partida em três etapas diferentes na primeira etapa o Foguete começa no navio e precisa apenas Decolar quanto mais perto ele chegar do ponto de destino melhor na segunda etapa ele já começa no céu e precisa voar Até outro ponto que também tá no [Música] céu Tchau pessoal até a próxima vez já na terceira etapa ele começa no céu e precisa apenas pousar a pontuação de cada indivíduo na
partida vai ser a média das pontuações dessas três etapas na fase de Treinamento cada indivíduo vai jogar várias partidas antes do algoritmo gerar nova população em cada um uma dessas partidas o ângulo que os foguetes começam tem que variar a posição do navio tem que variar tudo que puder variar tem que variar porque no final das contas tudo que não varia em viesa as informações de entrada que as gente estão recebendo são a distância horizontal e vertical até o ponto de destino a velocidade horizontal vertical e angular do Foguete o ângulo do foguete e a
distância detectada por um sensor essa distância é importante pro foguete conseguir ficar a proximidade com o navio na hora do pouso já na camada de saída nós temos as três ações possíveis acelerar virar o bocal pra direita e virar o bocal pra esquerda essas ações não são binárias o Foguete pode acelerar um pouco ou muito Dependendo do valor desse neurônio e na hora de virar o bocal também ele pode inclinar um pouco ou muito Daí depois de algumas gerações eles aprenderam a Decolar voar e pousar Essa é a parte que eu mais gosto nesse tipo
de projeto V os indivíduos jogando juntos e fazendo esse comportamento de enxame como se fosse um cardume um coletivo vamos tirar essas informações da tela pra gente poder enxergar os foguetes melhor chega já tô cansado ali galera eu tô preparando umas aulas para quem tem vontade de aprender a criar projetos iguais a esse com jogos e redes neurais então se você tem interesse em aprender na descrição do vídeo tem um link com a lista de espera dessas aulas Entra lá e se cadastra para você ser avisado Quando as aulas estiverem prontas E caso você queira
dar alguma sugestão de temas para essas aulas Ela será muito bem-vinda se a gente colocar o melhor indivíduo da população para jogar o jogo com completo Esse é o resultado jogar o jogo completo significa que ele vai Decolar coletar alguns pontos no céu e pousar sozinho aqui não tem divisão em três etapas é tudo numa partida só Inclusive a gente pode colocar as redes neurais para competirem entre si Olha só [Música] isso [Música] Beleza o resultado até que ficou legal só que aqui é o universo programado é claro que nós vamos dificultar essa brincadeira na
hora de criar esse simulador Nós esquecemos de adicionar algumas características muito importantes de um foguete real Como por exemplo o combustível entorno de 90% da massa de um foguete é combustível que vai sendo consumido durante o voo esse consumo faz com que a massa do Foguete diminua com o tempo e essa diminuição traz algumas consequências importantíssimas primeiro à medida que o fuguete consome o combustível ele fica mais leve ficando mais leve fica mais fácil de acelerar ou seja na prática O foguete vai ficando mais rápido ao longo do tempo porque ele tá ficando mais leve
mas a potência do propulsor continua a mesma segundo à medida que o Foguete consome o combustível o centro de massa dele se desloca no início do voo quando o tanque do foguete tá cheio o centro de massa fica muito próximo do centro do foguete com o passar do tempo o tanque vai esvaziando e a parte de cima do Foguete começa a representar uma porção cada vez maior da massa total dele por causa disso o centro de massa vai se deslocando pra Ponta do foguete e esse deslocamento influencia muito no movimento que ele vai fazer olha
só a diferença da trajetória de um foguete com centro de massa no meio e um foguete com centro de massa na ponta Os dois estão a acelerando exatamente da mesma maneira se essa dança de foguetes não vale o seu like eu não sei mais o que vale e aliás eu sei que você não tá inscrito aqui no canal o YouTube tá te dedurando para mim rapaz não fica dependendo do algoritmo te recomendar para você receber os vídeos não se inscreve logo no canal porque eu vou fazer mais vídeos iguais a esse e provavelmente você vai
gostar deles aliás pausa se liga nesse fato curioso se a massa do Foguete é 90% combustível então a maior parte do combustível é gasta apenas para movimentar o próprio combustível Olha que loucura quanto mais combustível o Foguete tem mais pesado ele fica quanto mais pesado ele fica mais combustível é necessário para tirar ele do lugar por exemplo imagina um foguete que sem o combustível tenha 10 toneladas de massa vamos supor que para conseguir realizar a viagem com essas 10 toneladas seja necessário 9 toneladas de combustível se a gente adicionar esse combustível no foguete a massa
dele vai de 10 para 19 toneladas só que o combustível foi calculado para tirar apenas 10 toneladas do chão não 19 ou seja nós vamos ter que adicionar mais combustível no foguete para ele conseguir dar conta das 19 toneladas de massa só que se a gente fizer isso O foguete vai ficar ainda mais pesado Precisando de mais combustível ainda criando um verdadeiro loop pesadão esse fenômeno é melhor explicado no vídeo a tirania da equação do foguete lá do canal ciência todo dia Então beleza vamos adicionar um combustível no nosso simulador e ver se a rede
neural consegue [Música] aprender durante o treinamento os foguetes vão começar a partida com uma quantidade aleatória de combustível só que esse combustível não vai ser consumido essa estratégia serve para garantir que O foguete vai ser exposto a várias quantidades diferentes de combustível ao longo do treino caso contrário poderia acontecer do foguete a aender a pousar muito rapidamente e sempre sobrar combustível no tanque daí ele nunca seria exposto a situações onde o tanque tá vazio e consequentemente não aprenderia a se comportar nessas situações Já na hora de testar vai ser normal o tanque vai começar cheio
e o combustível vai ser consumido [Música] normalmente depois de algumas gerações Esse foi o resultado eles aprenderam a controlar o Foguete mesmo com o centro de massa em vários locais diferentes esses pontinhos Verdes são os centros de massa de cada [Música] foguete se a gente colocar o melhor indivíduo para jogar olha como ele vai repara Como o centro de massa vai se movimentando ao longo do voo mesmo o Foguete não experimentando exatamente essa situação durante o treino ele ainda consegue pilotar o Foguete Porque durante o treinamento ele aprendeu O que fazer para cada valor de
combustível Mas é claro que nós vamos complicar mais [Música] ainda no Planeta Terra existe uma paradinha chamada atmosfera e a atmosfera causa um fenômeno que você conhece muito bem chamado vento se o vento estiver muito forte ele pode atrapalhar o voo do Foguete por isso é desejável que o Foguete Saiba como lidar com essas perturbações e voar mesmo quando estiver ventando implementar o vento com toda a sua complexidade não é uma tarefa simples por isso nós vamos simplificar e considerar que o vento também é constante assim como a gravidade é uma aceleração constante para baixo
o vento vai ser uma aceleração constante na horizontal cada partida vai ter o seu próprio vento com intensidade e sentidos diferentes dessa forma a rede neural vai aprender a pilotar em todos os possíveis ventos colocando os indivíduos para treinar e esperando algumas [Música] gerações tá lá conseguiu aprender a pilotar mesmo no vento mais forte repara que o Foguete aprendeu a pilotar na diagonal porque assim a aceleração horizontal dele supera do vento permitindo que ele consiga se movimentar [Música] essa situação aqui é ainda mais interessante a aceleração do foguete tá assim a gente sabe que ela
pode ser desmembrada em aceleração horizontal e vertical a horizontal tá cancelando o vento e a vertical tá cancelando a gravidade ou seja o Foguete encontrou a inclinação certa para ele ficar par no ar como se nenhuma força estivesse atuando sobre ele mas adivinha só para uma surpresa de zero pessoas temos problemas Olha o que acontece na hora de pousar ele não consegue porque para pousar ele precisa estar na vertical se ele ficar na vertical ele vai ser arrastado pro lado se ele for arrastado a velocidade horizontal dele aumenta e para pousar a velocidade horizontal também
precisa ser pequena nesse momento eu pensei em adicionar uma Plata forma na diagonal para ele conseguir pousar na diagonal mesmo mas isso além de ser altamente bugvel é bastante sem graça então vamos fazer o seguinte vamos adicionar um jatinho de ar na lateral do Foguete esses jatos realmente existem em foguetes reais e se chamam Vernier first nos foguetes reais eles são bem fraquinhos e servem apenas para ajustar a inclinação do Foguete mas nesse projeto eles vão servir para anular a aceleração horizontal do vento E permitir que o Foguete consiga ficar na vertical no momento do
pouso Vamos colocar um jatinho em cada lado do foguete e ver o que [Música] acontece depois de algumas gerações a rede começou a abusar dos jatos ela tá usando eles não apenas para pousar mas para voar também então nós vamos corrigir isso colocando uma limitação neles os jatos acionar quando o Foguete estiver perto do navio e na etapa de pouso fora isso mesmo que a rede neural Ative os neurônios dos jatos nada vai [Música] acontecer depois dessa limitação tá lá agora sim tá voando e tá pousando na [Música] moral e agora para finalizar essa Saga
Vamos bater aquele X1 Maroto contra a rede neural Bora do show agora é hora da verdade hein eu sou o Foguete vermelho e ele é o Foguete preto vamos embora vamos embora e o vento já tá no máximo mano já tá chorando nossa senhora é muito difícil controlar Bora coragem bora bora ó vou pegar pilota todo errado vou pegar primeiro peguei primeiro primeira ó a movimentação dele é mais fluida que a minha só que aqui é mais rápido irmão pelos meus cálculos tu vai perder ó aprende com pai acelera bem acelera calma aí calma aí
acelera devagar e sempre hein devagar por ele vai pegar mano vou pegar primeiro vou pegar primeiro ah moleque Peguei calma aí toma outro toma outro irmão ó lá agora para pousar vai ser doideira Vai filhão calma aí cadê o ventinho Cadê o ventinho PR parar o vento cara cadê o Jatinho né aí tá aqui calma aí [Música] er [Música] erra lá lá como é que pousa que isso rapaz pousou bonitão aí você está me humilhando não é mesmo quem você pensa que é alfag o a agora eu vou ganhar o vento já tá no talo
de novo ó pro outro lado agora já olhou para alguém e pensou o que passa na cabeça dela de pera aí Opa peguei uma ó dois Ih o ventinho me levando Beleza beleza mané tudo nos três pronto acabou o maluco é bravo quatro agora é nós vamos lá é só pousar mano concentra qu o Jatinho tá aqui não tá deixa eu ver Nossa o vento tá muito forte mano ó ó ó ó ó i i i ah moleque brinca com pai ó como ele vai ó como ele vai ó pauzinho Ô louco ih meu Deus
que pouso mais [Aplausos] [Música] asé n