Projeto

Geral

Perfil

Ações

Atividade #702

Fechada

Objetivo #583: Melhorar a defesa

Center Back

Adicionado por Gabriel Borges da Conceição aproximadamente 6 anos atrás. Atualizado quase 6 anos atrás.

Situação:
Fechada
Prioridade:
Baixa
Início:
30/04/2018
Data prevista:
11/05/2018

Descrição

O objetivo dessa tarefa é discutirmos como deve ser implementado o Center Back!


Arquivos

img1.jpeg (147 KB) img1.jpeg Imagem do posicionamento dos zagueiros na nova defesa proposta(OPÇÃO MARCAR MAIS PERIGOSO) Gabriel Borges da Conceição, 02/05/2018 12:51 h
img3.jpeg (147 KB) img3.jpeg Imagem do posicionamento dos zagueiros na nova defesa proposta(OPÇÃO MARCAR MAIS PERIGOSO) Gabriel Borges da Conceição, 02/05/2018 12:51 h
img4.jpeg (93,2 KB) img4.jpeg Imagem do posicionamento dos zagueiros na nova defesa proposta(OPÇÃO MARCAR MAIS PERIGOSO) Gabriel Borges da Conceição, 02/05/2018 12:51 h
img5.jpeg (146 KB) img5.jpeg Imagem do posicionamento dos zagueiros na nova defesa proposta(OPÇÃO MARCAR MAIS PERIGOSO) Gabriel Borges da Conceição, 02/05/2018 12:51 h
img6.jpeg (93,4 KB) img6.jpeg Imagem do posicionamento dos zagueiros na nova defesa proposta(OPÇÃO MARCAR MAIS PERIGOSO) Gabriel Borges da Conceição, 02/05/2018 12:51 h
img2.jpeg (93,2 KB) img2.jpeg Imagem do posicionamento dos zagueiros na nova defesa proposta(OPÇÃO MARCAR MAIS PERIGOSO) Gabriel Borges da Conceição, 02/05/2018 12:51 h
img7.jpeg (152 KB) img7.jpeg Imagem do posicionamento dos zagueiros na nova defesa proposta(OPÇÃO MARCAR SEGUNDO MAIS PERIGOSO) Gabriel Borges da Conceição, 02/05/2018 14:10 h
img9.jpeg (150 KB) img9.jpeg OPÇÃO DE DEFESA PARA APLICAR A ATUAL Gabriel Borges da Conceição, 02/05/2018 14:10 h
img8.jpeg (130 KB) img8.jpeg Imagem do posicionamento dos zagueiros na nova defesa proposta(OPÇÃO MARCAR SEGUNDO MAIS PERIGOSO) Gabriel Borges da Conceição, 02/05/2018 14:10 h
img10.jpeg (84,8 KB) img10.jpeg OPÇÃO DE DEFESA PARA APLICAR A ATUAL Gabriel Borges da Conceição, 02/05/2018 14:10 h
Video_defesa.mp4 (1,17 MB) Video_defesa.mp4 Vídeo de atuação da defesa. Gabriel Borges da Conceição, 02/05/2018 14:33 h
defesaid.png (3,28 KB) defesaid.png Nicolas Oliveira, 05/05/2018 14:20 h
centerback.png (4,79 KB) centerback.png Luciano Barreira, 07/05/2018 18:05 h
Video_posdef.mp4 (1,22 MB) Video_posdef.mp4 Gabriel Borges da Conceição, 07/05/2018 22:58 h
Video_posdef2.mp4 (825 KB) Video_posdef2.mp4 Gabriel Borges da Conceição, 07/05/2018 22:58 h
Video_posdef3.mp4 (866 KB) Video_posdef3.mp4 Gabriel Borges da Conceição, 07/05/2018 23:12 h
Video_zagduelist.mp4 (1,73 MB) Video_zagduelist.mp4 Comportamento quando em situação de jogo. Gabriel Borges da Conceição, 16/05/2018 16:01 h
Video_poszag_1.mp4 (1,78 MB) Video_poszag_1.mp4 Posicionamento/escolha de posições Gabriel Borges da Conceição, 16/05/2018 16:01 h
manmarkareaquadrada1.jpeg (99,9 KB) manmarkareaquadrada1.jpeg Gabriel Borges da Conceição, 16/05/2018 23:46 h
manmarkareaquadrada3.jpeg (100 KB) manmarkareaquadrada3.jpeg Gabriel Borges da Conceição, 16/05/2018 23:46 h
manmarkareaquadrada2.jpeg (99,9 KB) manmarkareaquadrada2.jpeg Gabriel Borges da Conceição, 16/05/2018 23:46 h
Video_manmarkareaquadrada.mp4 (340 KB) Video_manmarkareaquadrada.mp4 Gabriel Borges da Conceição, 20/05/2018 15:11 h
Video_manmarkareaquadrada2.mp4 (367 KB) Video_manmarkareaquadrada2.mp4 Gabriel Borges da Conceição, 20/05/2018 15:11 h
Posiçõesdesordenadas.png (15 KB) Posiçõesdesordenadas.png Gabriel Borges da Conceição, 21/05/2018 01:11 h
Destinozagueiros.png (21,9 KB) Destinozagueiros.png Gabriel Borges da Conceição, 21/05/2018 01:32 h
Posiçõesordenadas.png (31 KB) Posiçõesordenadas.png Gabriel Borges da Conceição, 21/05/2018 01:34 h
Zagueiros ordenados.png (25,6 KB) Zagueiros ordenados.png Gabriel Borges da Conceição, 21/05/2018 01:36 h
Video_zaganova.mp4 (1,02 MB) Video_zaganova.mp4 Gabriel Borges da Conceição, 21/05/2018 01:39 h
Video_posicionamentozaganova.mp4 (2,58 MB) Video_posicionamentozaganova.mp4 Gabriel Borges da Conceição, 21/05/2018 01:44 h
Video1.mp4 (594 KB) Video1.mp4 Gabriel Borges da Conceição, 28/05/2018 02:41 h
Video2.mp4 (970 KB) Video2.mp4 Gabriel Borges da Conceição, 28/05/2018 02:41 h
Video3.mp4 (693 KB) Video3.mp4 Gabriel Borges da Conceição, 28/05/2018 02:41 h
Video4.mp4 (931 KB) Video4.mp4 Gabriel Borges da Conceição, 28/05/2018 02:41 h
quina1.jpeg (94,3 KB) quina1.jpeg Gabriel Borges da Conceição, 28/05/2018 12:54 h
quina3.jpeg (110 KB) quina3.jpeg Gabriel Borges da Conceição, 28/05/2018 12:54 h
quina2.jpeg (94,5 KB) quina2.jpeg Gabriel Borges da Conceição, 28/05/2018 12:54 h
quina4.jpeg (116 KB) quina4.jpeg Gabriel Borges da Conceição, 28/05/2018 12:55 h
tipodeavanço.mp4 (1,68 MB) tipodeavanço.mp4 Gabriel Borges da Conceição, 07/06/2018 23:03 h
parametros.PNG (37,4 KB) parametros.PNG Nicolas Oliveira, 07/06/2018 23:50 h
event.PNG (25,8 KB) event.PNG Nicolas Oliveira, 07/06/2018 23:50 h
defesa2zagbarreira.jpeg (131 KB) defesa2zagbarreira.jpeg Gabriel Borges da Conceição, 12/06/2018 21:41 h
defesacom1zag.jpeg (132 KB) defesacom1zag.jpeg Gabriel Borges da Conceição, 12/06/2018 21:41 h
certo.JPG (15,4 KB) certo.JPG Nicolas Oliveira, 13/06/2018 17:27 h
erro1.JPG (16,3 KB) erro1.JPG Nicolas Oliveira, 13/06/2018 17:27 h
Ações #1

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

O Center Back é o comportamento que queremos implementar aos nossos 3 zagueiros e será baseado no Center Back da Equipe ER Force.
Atualmente, nossos zagueiros formam uma parede alinhada que tenta impedir os tiros diretos.

Nosso objetivo é fazer com que, a partir de agora, eles se comportem da seguinte maneira:

1-Contra equipes que realizem muitos passes:
-1 dos zagueiros tenta bloquear os chutes diretos.
-1 dos zagueiros fica à entrada da área marcando de longe o inimigo sem bola mais perigoso.
-1 dos zagueiros fica à entrada da área marcando de longe o segundo inimigo sem bola mais perigoso.

2-Contra equipes que realizem poucos passes ou que não realizem passes:
-2 dos zagueiros tentam bloquear os chutes diretos.
-1 dos zagueiros fica à entrada da área marcando de longe o inimigo sem bola mais perigoso.

Uma pergunta já levantada é: Como determinar se os times realizam muitos ou poucos passes.
Eu tinha pensado em podermos, através de um botão, alterar entre as duas formações de defesa. E a escolha de uma ou outra formação seria pautada em conhecimento prévio sobre a situação de passes da equipe adversária e/ou podendo ser alterada durante a partida nos tempos técnicos ou intervalos, de acordo com análise da partida.

Ações #2

Atualizado por Nicolas Oliveiraaproximadamente 6 anos

Gabriel Borges da Conceição escreveu:

1-Contra equipes que realizem muitos passes:
-1 dos zagueiros tenta bloquear os chutes diretos.
-1 dos zagueiros fica à entrada da área marcando de longe o inimigo sem bola mais perigoso.
-1 dos zagueiros fica à entrada da área marcando de longe o segundo inimigo sem bola mais perigoso.

2-Contra equipes que realizem poucos passes ou que não realizem passes:
-2 dos zagueiros tentam bloquear os chutes diretos.
-1 dos zagueiros fica à entrada da área marcando de longe o inimigo sem bola mais perigoso.

Para equipes que não realizam passes ideal era usar nossa configuração atual. Então é bom que seja totalmente controlável por nós essas quantidades.

Uma pergunta já levantada é: Como determinar se os times realizam muitos ou poucos passes.
Eu tinha pensado em podermos, através de um botão, alterar entre as duas formações de defesa. E a escolha de uma ou outra formação seria pautada em conhecimento prévio sobre a situação de passes da equipe adversária e/ou podendo ser alterada durante a partida nos tempos técnicos ou intervalos, de acordo com análise da partida.

Podemos pensar em como nosso software estatístico poderia levantar essa informação.

Ações #3

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

A tarefa foi mais debatida no quesito organização dos zagueiros e seus papéis e foram definidas as seguintes formações defensivas no que diz respeito ao comportamento do 3 zagueiros:

Formação 1(Contra times que realizam passes):

Aqui ficou definido que montaremos uma barreia similar à atual, porém, com apenas 2 defensores(atuando então como Centers Back) e o terceiro irá atuar como ManMark. Esse ManMark é escolhido
a todo momento durante o jogo e é o jogador mais próximo àquele que queremos marcar. Então, há trocas a fim de determinar quem atuará como Center Back formando a barreia e quem atuará como ManMark em cada instante.
A marcação é feita à distância: o zagueiro fica à entrada da área no alinhamento do inimigo que se quer marcar com o centro do gol.
Definimos duas opções de marcação:

Formação 1.1: Aqui, marcamos o inimigo mais perigoso, sendo ele definido pelos critérios já utilizados anteriormente e explicitados na tarefa.
Formação 1.2: Aqui, marcamos o SEGUNDO inimigo mais perigoso, sendo ele definido pelos critérios já utilizados anteriormente e explicitados na tarefa.

Essas opções 1.1 e 1.2 foram pautadas na seguinte lógica: - O Striker já marca "corpo a corpo" o inimigo mais perigoso, podendo ele tentar interceptar o passe ou ficar atrás do adversário, bloqueando seu trajeto em direção ao gol. Então,
pode ser mais viável mandar o ManMark marcar o segundo inimigo mais perigoso porque assim teremos 2 inimigos sem bola sendo marcados ao invés de 1.

Isso pode ser determinado por fatores como: equipe inimiga ataca com 3 jogadores ou equipe inimiga só realiza passe para 1 jogador e etc.

Formação 2(Contra equipes que não realizam passes):

Para essa situação, chegamos à conclusão de que é melhor que se mantenha a defesa atual: - barreira bloqueando chute com 3 zagueiros, uma vez que não seria necessário marcar inimigo 
que não recebe a bola por passes.
Ações #4

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Definidas as opções de sistemas defensivos, partimos para as implementações:

Implementação 1: Colocamos a opção de ser trocado o inimigo que o ManMark irá marcar(Mais perigoso ou segundo mais perigoso). Essa alternância é feita manualmente através de um Case Struct controlada por um Enum Control.

Implementação 2: Temos agora a opção de escolher entre a nova defesa proposta e a que já se usa para cada uma das seguintes situações de jogo: "Force Start", "PKA Normal Start", "PKE Normal Start", "Direct Free Ally", "Indirect Free Ally", "Ball Placement Ally", "None", Default, "Goal Enemy", "Ball Placement Enemy", "Stop", "Prepare Kickoff Ally", "Prepare Kickoff Enemy", "Direct Free Enemy", "Indirect Free Enemy", "Goal Ally", sendo alterada da mesma forma que a implementação 1.

Implementação 3: Linkamos o "atacando ao contrário" já existente em diversas partes do código de modo que os zagueiros considerem o Attacker e Striker do nosso time como adversários. Neste caso, só há a opção de marcar um jogador, que é o Striker, haja vista atacarmos com 2 jogadores.

Observação: Os dois jogadores que atuam como Centers Back fechando a barreira seguem o código estabelecido na VI da defesa que está sendo usada atualmente. A diferença é que esse código é, agora, mandado apenas para 2 robôs ao invés de 3. E foi tomado o cuidado de excluir do vetor "Defensores" o robô que atuará como ManMark, então a barreia fica fechada com 2 robôs.

Ações #5

Atualizado por Lucas Germanoaproximadamente 6 anos

Não seria legal criar uma aba chamada playbook? Lá ficarão nossas jogadas e formações, tenho o pressentimento que irão surgir mais implementações como essa, que usaremos contra equipes diferentes e de formas diferentes.

Ações #6

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Tá ok!
Vou trabalhar nisso.

Ações #7

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Deficiências encontradas na nova defesa proposta:

Os Centers Back se posicionam em ordem crescente de id. Então, quando os zagueiros saem de ordem seja para marcar um jogador ou para chutar a bola, ao volar, eles se esbarram prejudicando a formação defensiva.
O primeiro artifício pensado foi considerar os companheiros de equipe como obstáculos na movimentação RRT.
Vamos avaliar a melhor solução e partir para sua implementação.
Outro problema é a "indecisão" de qual robô vai chutar a bola. Acontece de às vezes um robô ir chutar, parar ao meio do caminho e outro ir para o chute.

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Imagens do posicionamento dos zagueiros na nova defesa proposta(OPÇÃO MARCAR MAIS PERIGOSO):

![](img1.jpeg)
![](img2.jpeg)
![](img3.jpeg)
![](img4.jpeg)
![](img5.jpeg)
![](img6.jpeg)

Imagens do posicionamento dos zagueiros na nova defesa proposta(OPÇÃO MARCAR SEGUNDO MAIS PERIGOSO)
![](img7.jpeg)
![](img8.jpeg)

OPÇÃO DE DEFESA PARA APLICAR A ATUAL:
![](img9.jpeg)
![](img10.jpeg)

Ações #9

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

  • Arquivo Video_defesa.mp4 adicionado
Ações #10

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

  • Arquivo excluído (Video_defesa.mp4)
Ações #12

Atualizado por Nicolas Oliveiraaproximadamente 6 anos

Gabriel Borges da Conceição escreveu:

Os Centers Back se posicionam em ordem crescente de id. Então, quando os zagueiros saem de ordem seja para marcar um jogador ou para chutar a bola, ao volar, eles se esbarram prejudicando a formação defensiva.

Trabalhar agora em como tornar essa ordenação não dependente do id dos robôs, mas sim da proximidade com a posição desejada e se não há robôs no caminho. Por exemplo:

![](defesaid.png)

Apesar do robô mais acima ser próximo ao ponto de baixo da defesa, o ideal é q ele vá para o de cima para facilitar a aproximação do segundo defensor.

Ações #13

Atualizado por Luciano Barreiraaproximadamente 6 anos

Nicolas Oliveira escreveu:

Gabriel Borges da Conceição escreveu:

Os Centers Back se posicionam em ordem crescente de id. Então, quando os zagueiros saem de ordem seja para marcar um jogador ou para chutar a bola, ao volar, eles se esbarram prejudicando a formação defensiva.

Trabalhar agora em como tornar essa ordenação não dependente do id dos robôs, mas sim da proximidade com a posição desejada e se não há robôs no caminho. Por exemplo:

![](defesaid.png)

Apesar do robô mais acima ser próximo ao ponto de baixo da defesa, o ideal é q ele vá para o de cima para facilitar a aproximação do segundo defensor.

Algumas ideias:

Estou tentando pensar numa maneira de fazer isso sem quebrar com a nossa arquitetura atual, já que a definição de personalidade é decidida antes das velocidades de cada robô. Talvez pudéssemos pensar em abstrair os IDs da defesa (podemos melhorar isso):

- Os IDs abstraídos da defesa continuariam ordenados, e existiria um mapeamento direto entre o ID real do robô e o ID da defesa.
- A defesa define os pontos de marcação, com uma dada ordenação
- Os robôs da defesa terão um ID de acordo com a distância ao ponto mais próximo dentre os de marcação
- Podemos pensar em uma maneira de esta abordagem não gerar swaps desnecessários entre os robôs (trocarem de posição desnecessariamente)
- O número de pontos é atualizado dinamicamente pelo número de center-backs

Ou ainda algo como:

- A defesa define uma quantidade de pontos, ordenados por prioridade de perigo
- Pega-se os `n` primeiros pontos e distribui-se para os respectivos robôs mais próximos

![](centerback.png)`

Estava pensando se o software estatístico não consegue nos otimizar ainda mais essa questão :

- podemos revezar o esforço dos robôs de acordo com o quanto ele se movimentou durante a partida estando naquela posição de center-back, alternando a posição entre stops ou, se pensarmos em uma boa heurística, durante a própria partida.
- detectando deflecções bem sucedidas, podemos priorizar robôs que estão indo bem naquela posição para manter-se lá, já que não temos a garantia que os robôs são isométricos.
- a velocidade máxima e o tempo de resposta dos robôs, podendo ser medidos em tempo real pelo software estatístico, pode nos ajudar a priorizar posições mais dinâmicas.
Ações #14

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Luciano Barreira escreveu:

Nicolas Oliveira escreveu:

Gabriel Borges da Conceição escreveu:

Os Centers Back se posicionam em ordem crescente de id. Então, quando os zagueiros saem de ordem seja para marcar um jogador ou para chutar a bola, ao volar, eles se esbarram prejudicando a formação defensiva.

Trabalhar agora em como tornar essa ordenação não dependente do id dos robôs, mas sim da proximidade com a posição desejada e se não há robôs no caminho. Por exemplo:

![](defesaid.png)

Apesar do robô mais acima ser próximo ao ponto de baixo da defesa, o ideal é q ele vá para o de cima para facilitar a aproximação do segundo defensor.

Algumas ideias:

Estou tentando pensar numa maneira de fazer isso sem quebrar com a nossa arquitetura atual, já que a definição de personalidade é decidida antes das velocidades de cada robô. Talvez pudéssemos pensar em abstrair os IDs da defesa (podemos melhorar isso):

- Os IDs abstraídos da defesa continuariam ordenados, e existiria um mapeamento direto entre o ID real do robô e o ID da defesa.
- A defesa define os pontos de marcação, com uma dada ordenação
- Os robôs da defesa terão um ID de acordo com a distância ao ponto mais próximo dentre os de marcação
- Podemos pensar em uma maneira de esta abordagem não gerar swaps desnecessários entre os robôs (trocarem de posição desnecessariamente)
- O número de pontos é atualizado dinamicamente pelo número de center-backs

Ou ainda algo como:

- A defesa define uma quantidade de pontos, ordenados por prioridade de perigo
- Pega-se os `n` primeiros pontos e distribui-se para os respectivos robôs mais próximos

![](centerback.png)`

Estava pensando se o software estatístico não consegue nos otimizar ainda mais essa questão :

- podemos revezar o esforço dos robôs de acordo com o quanto ele se movimentou durante a partida estando naquela posição de center-back, alternando a posição entre stops ou, se pensarmos em uma boa heurística, durante a própria partida.
- detectando deflecções bem sucedidas, podemos priorizar robôs que estão indo bem naquela posição para manter-se lá, já que não temos a garantia que os robôs são isométricos.
- a velocidade máxima e o tempo de resposta dos robôs, podendo ser medidos em tempo real pelo software estatístico, pode nos ajudar a priorizar posições mais dinâmicas.

Entendi a lógica. Após a reunião debatemos como implementar.

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Vídeos da atuação dos zagueiros:

Error executing the video macro (undefined method `find_by_filename' for [#<Attachment id: 1799, container_id: 702, container_type: "Issue", filename: "Video_posdef.mp4", disk_filename: "180507225849_Video_posdef.mp4", filesize: 1275474, content_type: "video/mp4", digest: "df3dbf6ace06023bc0b1190824ee7c2f", downloads: 0, author_id: 93, created_on: "2018-05-07 22:58:49.000000000 +0000", description: "", disk_directory: "2018/05">, #<Attachment id: 1800, container_id: 702, container_type: "Issue", filename: "Video_posdef2.mp4", disk_filename: "180507225855_Video_posdef2.mp4", filesize: 844359, content_type: "video/mp4", digest: "4eab9bba546aa792f0dbf3310a3d0e20", downloads: 0, author_id: 93, created_on: "2018-05-07 22:58:55.000000000 +0000", description: "", disk_directory: "2018/05">]:Array Did you mean? find_index)

Error executing the video macro (undefined method `find_by_filename' for [#<Attachment id: 1799, container_id: 702, container_type: "Issue", filename: "Video_posdef.mp4", disk_filename: "180507225849_Video_posdef.mp4", filesize: 1275474, content_type: "video/mp4", digest: "df3dbf6ace06023bc0b1190824ee7c2f", downloads: 0, author_id: 93, created_on: "2018-05-07 22:58:49.000000000 +0000", description: "", disk_directory: "2018/05">, #<Attachment id: 1800, container_id: 702, container_type: "Issue", filename: "Video_posdef2.mp4", disk_filename: "180507225855_Video_posdef2.mp4", filesize: 844359, content_type: "video/mp4", digest: "4eab9bba546aa792f0dbf3310a3d0e20", downloads: 0, author_id: 93, created_on: "2018-05-07 22:58:55.000000000 +0000", description: "", disk_directory: "2018/05">]:Array Did you mean? find_index)

Ações #16

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Error executing the video macro (undefined method `find_by_filename' for [#<Attachment id: 1803, container_id: 702, container_type: "Issue", filename: "Video_posdef3.mp4", disk_filename: "180507231209_Video_posdef3.mp4", filesize: 887291, content_type: "video/mp4", digest: "111672d7e81ca078098fb2ead4e6e179", downloads: 0, author_id: 93, created_on: "2018-05-07 23:12:09.000000000 +0000", description: "", disk_directory: "2018/05">]:Array Did you mean? find_index)

Ações #17

Atualizado por Nicolas Oliveiraaproximadamente 6 anos

Qual era o intuito dos vídeos?

Ações #18

Atualizado por Lucas Germanoaproximadamente 6 anos

Luciano Barreira escreveu:

Estava pensando se o software estatístico não consegue nos otimizar ainda mais essa questão :

- podemos revezar o esforço dos robôs de acordo com o quanto ele se movimentou durante a partida estando naquela posição de center-back, alternando a posição entre stops ou, se pensarmos em uma boa heurística, durante a própria partida.
- detectando deflecções bem sucedidas, podemos priorizar robôs que estão indo bem naquela posição para manter-se lá, já que não temos a garantia que os robôs são isométricos.
- a velocidade máxima e o tempo de resposta dos robôs, podendo ser medidos em tempo real pelo software estatístico, pode nos ajudar a priorizar posições mais dinâmicas.

São boas ideias, vou colocá-las na tarefa do software estatístico.

Ações #19

Atualizado por Lucas Germanoaproximadamente 6 anos

Também não entendi muito bem o 2º e o 3º video, pode explicar melhor o que aconteceu?

Ações #20

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Lucas Germano escreveu:

Também não entendi muito bem o 2º e o 3º video, pode explicar melhor o que aconteceu?

Esses são vídeos da atuação dos zagueiros.
No 1° vídeo (gravado do grSim), eu mostrei o posicionamento dos zagueiros quando a bola fica hora com um robô, hora com outro. Este posicionamento dinâmico está funcionando perfeitamente como determinado.

Os próximos vídeos (um gravado no grSim e outro na SSL vision log player), quis mostrar o comportamento dos zagueiros quando a bola é chutada, ou se aproxima da área e etc. Neles podemos ver as falhas ainda existentes: A toda hora fica trocando o robô que irá disputar a bola e robôs se esbarram quando tentam ir cada um pra sua posição.

Ações #21

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Gabriel Borges da Conceição escreveu:

Luciano Barreira escreveu:

Nicolas Oliveira escreveu:

Gabriel Borges da Conceição escreveu:

Os Centers Back se posicionam em ordem crescente de id. Então, quando os zagueiros saem de ordem seja para marcar um jogador ou para chutar a bola, ao volar, eles se esbarram prejudicando a formação defensiva.

Trabalhar agora em como tornar essa ordenação não dependente do id dos robôs, mas sim da proximidade com a posição desejada e se não há robôs no caminho. Por exemplo:

![](defesaid.png)

Apesar do robô mais acima ser próximo ao ponto de baixo da defesa, o ideal é q ele vá para o de cima para facilitar a aproximação do segundo defensor.

Algumas ideias:

Estou tentando pensar numa maneira de fazer isso sem quebrar com a nossa arquitetura atual, já que a definição de personalidade é decidida antes das velocidades de cada robô. Talvez pudéssemos pensar em abstrair os IDs da defesa (podemos melhorar isso):

- Os IDs abstraídos da defesa continuariam ordenados, e existiria um mapeamento direto entre o ID real do robô e o ID da defesa.
- A defesa define os pontos de marcação, com uma dada ordenação
- Os robôs da defesa terão um ID de acordo com a distância ao ponto mais próximo dentre os de marcação
- Podemos pensar em uma maneira de esta abordagem não gerar swaps desnecessários entre os robôs (trocarem de posição desnecessariamente)
- O número de pontos é atualizado dinamicamente pelo número de center-backs

Ou ainda algo como:

- A defesa define uma quantidade de pontos, ordenados por prioridade de perigo
- Pega-se os `n` primeiros pontos e distribui-se para os respectivos robôs mais próximos

![](centerback.png)`

Estava pensando se o software estatístico não consegue nos otimizar ainda mais essa questão :

- podemos revezar o esforço dos robôs de acordo com o quanto ele se movimentou durante a partida estando naquela posição de center-back, alternando a posição entre stops ou, se pensarmos em uma boa heurística, durante a própria partida.
- detectando deflecções bem sucedidas, podemos priorizar robôs que estão indo bem naquela posição para manter-se lá, já que não temos a garantia que os robôs são isométricos.
- a velocidade máxima e o tempo de resposta dos robôs, podendo ser medidos em tempo real pelo software estatístico, pode nos ajudar a priorizar posições mais dinâmicas.

Entendi a lógica. Após a reunião debatemos como implementar.

Tive uma ideia mais simples a qual acho que pode resolver o problema de os robôs ficarem se esbarrando:
1-As 3 posições as quais os zagueiros devem ocupar são definidas.
2-Pegamos essas posições e as ordenamos em ordem crescente em função de sua coordenada y.
3-Pegamos os robôs e também os ordenamos em função de suas coordenadas y.
4-O robô de menor y deve ir para a posição de menor y e assim sucessivamente.
Dessa forma os robôs não se cruzarão.

Ações #22

Atualizado por Nicolas Oliveiraaproximadamente 6 anos

Acho que ficará bom assim. Boa ideia.

Ações #23

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Problemas resolvidos!

Como dito anteriormente, havia 2 problemas:

1: Robôs tentavam ficar em ordem crescente de id na barreia e ficavam se esbarrando até que cada um fosse para sua posição.
2: O código ficava trocando de duelist(zagueiro que sai para disputar a bola) indefinidamente, em função da escolha do manmark.

Foi feita um implementação que resolveu os problemas:

1 - Peguei as 3 posições que terão de ser ocupadas pelos 3 zagueiros(1 posição de manmark e 2 posições de barreira) e as coloquei num vetor de forma que ficassem ordenadas em ordem crescente de suas coodenadas y.

2- Coloquei os zagueiros num vetor e os ordenei da mesma maneira.

Dessa forma, o zagueiro da posição 0 desse vetor vai ocupar a posição 0 do primeiro vetor e assim sucessivamente. Ou seja, o robô de maior y vai para a posição de maior y e assim em diante, não ficando mais em função de sua ordem de id.

Pode-se perceber que o ManMark não é mais definido, necessariamente, pelo o zagueiro mais próximo do inimigo a ser marcado. Determinado zagueiro vai para a posição de ManMark de acordo com a escolha das posições explicada acima.

E, continuamos tirando o ManMark do vetor Defensores, de forma a não influenciar na determinação da posição dos dois robôs que ficaram na barreira.

O vídeo demonstrativo da atuação e posicionamento dos zagueiros será postado amanhã, devido a problemas de gravação no meu computador.

Ações #24

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Os zagueiros ainda se posicionam segundo a área antiga.

Em breve, estarão se posicionando sobre área quadrada. Para isso, basta que sejam mudadas as interseções das retas que ligam (bola ou robôs inimigos)----(centro do gol) com a área. Além disso, os os vetores posições gerados deverão ser ordenados de maneira diferente, assim como os zagueiros.
Porém, todo o resto da lógica será aproveitado!

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Como descrito na última postagem, os erros foram ajustados, ficando da seguinte forma o comportamento dos zagueiros:

1. A escolha de posições agora se dá pela ordenação dos y das posições de defesa e dos robôs:

Error executing the video macro (undefined method `find_by_filename' for [#<Attachment id: 1933, container_id: 702, container_type: "Issue", filename: "Video_zagduelist.mp4", disk_filename: "180516160104_Video_zagduelist.mp4", filesize: 1812313, content_type: "video/mp4", digest: "99f04851e4d436d0b28a27af23ddc92c", downloads: 0, author_id: 93, created_on: "2018-05-16 16:01:04.000000000 +0000", description: "Comportamento quando em situação de jogo.", disk_directory: "2018/05">, #<Attachment id: 1934, container_id: 702, container_type: "Issue", filename: "Video_poszag_1.mp4", disk_filename: "180516160108_Video_poszag_1.mp4", filesize: 1871268, content_type: "video/mp4", digest: "13381867ffd88f11bb7ddcdeb6d99d56", downloads: 0, author_id: 93, created_on: "2018-05-16 16:01:08.000000000 +0000", description: "Posicionamento/escolha de posições", disk_directory: "2018/05">]:Array Did you mean? find_index)

2. Comportamento dos zagueiros em situação de jogo. Robôs saindo para disputar a bola:

Error executing the video macro (undefined method `find_by_filename' for [#<Attachment id: 1933, container_id: 702, container_type: "Issue", filename: "Video_zagduelist.mp4", disk_filename: "180516160104_Video_zagduelist.mp4", filesize: 1812313, content_type: "video/mp4", digest: "99f04851e4d436d0b28a27af23ddc92c", downloads: 0, author_id: 93, created_on: "2018-05-16 16:01:04.000000000 +0000", description: "Comportamento quando em situação de jogo.", disk_directory: "2018/05">, #<Attachment id: 1934, container_id: 702, container_type: "Issue", filename: "Video_poszag_1.mp4", disk_filename: "180516160108_Video_poszag_1.mp4", filesize: 1871268, content_type: "video/mp4", digest: "13381867ffd88f11bb7ddcdeb6d99d56", downloads: 0, author_id: 93, created_on: "2018-05-16 16:01:08.000000000 +0000", description: "Posicionamento/escolha de posições", disk_directory: "2018/05">]:Array Did you mean? find_index)

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

E o ManMark já se posiciona e anda sobre área quadrada!!

Os parâmetros da área são defense_radius e denfese_stretch por enquanto.

Fotos:
![](manmarkareaquadrada1.jpeg)
![](manmarkareaquadrada2.jpeg)
![](manmarkareaquadrada3.jpeg)

Ações #27

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

  • Arquivo Video_manmarkareaquadrada2.mp4 adicionado
  • Arquivo Video_manmarkareaquadrada.mp4 adicionado
Ações #28

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

  • Arquivo excluído (Video_manmarkareaquadrada.mp4)
Ações #29

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

  • Arquivo excluído (Video_manmarkareaquadrada.mp4)
Ações #30

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

  • Arquivo excluído (Video_manmarkareaquadrada2.mp4)
Ações #31

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

  • Arquivo excluído (Video_manmarkareaquadrada2.mp4)
Ações #32

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

  • Arquivo Video_manmarkareaquadrada.mp4 adicionado
  • Arquivo Video_manmarkareaquadrada2.mp4 adicionado
Ações #33

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

  • Arquivo excluído (Video_manmarkareaquadrada.mp4)
Ações #34

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

  • Arquivo excluído (Video_manmarkareaquadrada2.mp4)

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Vídeos:

Posicionamento do ManMark ao acompanhar inimigo em movimentação. Detalhe é que nosso jogador está andando sobre a área quadrada:

Error executing the video macro (undefined method `find_by_filename' for [#<Attachment id: 1973, container_id: 702, container_type: "Issue", filename: "Video_manmarkareaquadrada.mp4", disk_filename: "180520151132_Video_manmarkareaquadrada.mp4", filesize: 347852, content_type: "video/mp4", digest: "a47b6dac826c810a23489b93718d39f9", downloads: 0, author_id: 93, created_on: "2018-05-20 15:11:32.000000000 +0000", description: "", disk_directory: "2018/05">, #<Attachment id: 1974, container_id: 702, container_type: "Issue", filename: "Video_manmarkareaquadrada2.mp4", disk_filename: "180520151136_Video_manmarkareaquadrada2.mp4", filesize: 375635, content_type: "video/mp4", digest: "e3d547e809363689f149020213e19190", downloads: 0, author_id: 93, created_on: "2018-05-20 15:11:36.000000000 +0000", description: "", disk_directory: "2018/05">]:Array Did you mean? find_index)

Escolha de posições dos 3 zagueiros(2 Centers Back e 1 ManMark), e movimentação ao acompanhar adversário:

Error executing the video macro (undefined method `find_by_filename' for [#<Attachment id: 1973, container_id: 702, container_type: "Issue", filename: "Video_manmarkareaquadrada.mp4", disk_filename: "180520151132_Video_manmarkareaquadrada.mp4", filesize: 347852, content_type: "video/mp4", digest: "a47b6dac826c810a23489b93718d39f9", downloads: 0, author_id: 93, created_on: "2018-05-20 15:11:32.000000000 +0000", description: "", disk_directory: "2018/05">, #<Attachment id: 1974, container_id: 702, container_type: "Issue", filename: "Video_manmarkareaquadrada2.mp4", disk_filename: "180520151136_Video_manmarkareaquadrada2.mp4", filesize: 375635, content_type: "video/mp4", digest: "e3d547e809363689f149020213e19190", downloads: 0, author_id: 93, created_on: "2018-05-20 15:11:36.000000000 +0000", description: "", disk_directory: "2018/05">]:Array Did you mean? find_index)

Ações #36

Atualizado por Nicolas Oliveiraaproximadamente 6 anos

Bom! Os outros zagueiros já são capazes de andar numa área quadrada? Se sim, postar o resultado.
Coloque um tamanho de área maior, pode ser inserindo constantes mesmo. Mas que seja proporcional a área antiga para que possamos avaliar melhor o resultado.

Ações #37

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Nicolas Oliveira escreveu:

Bom! Os outros zagueiros já são capazes de andar numa área quadrada? Se sim, postar o resultado.

Sim! Postarei agora.

Coloque um tamanho de área maior, pode ser inserindo constantes mesmo. Mas que seja proporcional a área antiga para que possamos avaliar melhor o resultado.

Fiz um teste com a área pequena na log player pra avaliar posicionamento e outro com valores de 1000mm e 2000mm.

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Agora todos os zagueiros andam e se posicionam sobre a área quadrada!

Primeiramente, percebemos que a maneira de definir qual dos robôs vai para cada uma das posições tem que mudar.
Antes, com a área redonda, ordenávamos os robôs e as posições em função de seus y. Porém agora com área quadrada podemos ter robôs com mesmo x ou mesmo y. Então foi adotada a seguinte lógica para ordenar os pontos:

Passo 1: Determinamos os pontos de interseção do que queremos com a área:
![](Posiçõesdesordenadas.png)

Passo 2: Montamos os vetores (centro do gol --> posição) e calculamos os ângulos que eles fazem com a horizontal. Após, incluímos esses ângulos nos vetores posição (o vetor fica agora com 3 coordenadas: x, y, ângulo).
E então usamos o Sort 2D Array.vim para ordenar os novos vetores em coluna em função dos ângulos(fica em ordem crescente):
OBS1: Percebemos que os ângulos variam de -90° a 90°.
OBS2: Na prática, faremos isso apenas para 3 pontos(2 para a barreira e 1 para o ManMark).
![](Posiçõesordenadas.png)

Passo 3: Fazemos o mesmo para as posições atuais de cada um dos zagueiros:
![](Zagueiros ordenados.png)

Representação de uma situação de posicionamento:
![](Destinozagueiros.png)

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Vídeos demonstrativos da atuação dos zagueiros:

Atuação dos zagueiros em situação de jogo:
OBS: Os parâmetros da área estão defense_radius e defense_stretch. Caso seja dado merge, esses parâmetros se ajustarão aos novos, estabelecidos na branch development.
Nesse vídeo, deixei os parâmetros assim para analisar se o posicionamento está correto ou não. No vídeo seguinte, isso será mudado.

Error executing the video macro (undefined method `find_by_filename' for [#<Attachment id: 1981, container_id: 702, container_type: "Issue", filename: "Video_zaganova.mp4", disk_filename: "180521013938_Video_zaganova.mp4", filesize: 1065178, content_type: "video/mp4", digest: "486046bf3b14a460d3120470906b6d8c", downloads: 0, author_id: 93, created_on: "2018-05-21 01:39:38.000000000 +0000", description: "", disk_directory: "2018/05">, #<Attachment id: 1982, container_id: 702, container_type: "Issue", filename: "Video_posicionamentozaganova.mp4", disk_filename: "180521014423_Video_posicionamentozaganova.mp4", filesize: 2707121, content_type: "video/mp4", digest: "e9171e2595d3198e45cfa7c78b9de8a1", downloads: 0, author_id: 93, created_on: "2018-05-21 01:44:23.000000000 +0000", description: "", disk_directory: "2018/05">]:Array Did you mean? find_index)

Atuação dos zagueiros em relação ao seu posicionamento:
Para esse vídeo, usamos 1000mm para as retas horizontais e 2000mm para a vetical.

Error executing the video macro (undefined method `find_by_filename' for [#<Attachment id: 1981, container_id: 702, container_type: "Issue", filename: "Video_zaganova.mp4", disk_filename: "180521013938_Video_zaganova.mp4", filesize: 1065178, content_type: "video/mp4", digest: "486046bf3b14a460d3120470906b6d8c", downloads: 0, author_id: 93, created_on: "2018-05-21 01:39:38.000000000 +0000", description: "", disk_directory: "2018/05">, #<Attachment id: 1982, container_id: 702, container_type: "Issue", filename: "Video_posicionamentozaganova.mp4", disk_filename: "180521014423_Video_posicionamentozaganova.mp4", filesize: 2707121, content_type: "video/mp4", digest: "e9171e2595d3198e45cfa7c78b9de8a1", downloads: 0, author_id: 93, created_on: "2018-05-21 01:44:23.000000000 +0000", description: "", disk_directory: "2018/05">]:Array Did you mean? find_index)

Fica faltando então precisar melhor o posicionamento dos Centers Back para que fiquem lado a lado perfeitamente.

Ações #40

Atualizado por Nicolas Oliveiraaproximadamente 6 anos

Testamos a defesa no pc do lab e identificamos a necessidade dos seguintes ajustes:

1- Definir uma distancia mínima para o manmarker marcar alguém, caso n seja atingida, ficar na barreira
2- Deixar ter quantos defensores eu quiser. Atualmente só funciona para até 3 defensores.
3- Poder tirar o manmarker(usar defesa antiga).
4 -Usar a bola falsa para evitar que robo fique fora do campo.

Ações #41

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Nicolas Oliveira escreveu:

Testamos a defesa no pc do lab e identificamos a necessidade dos seguintes ajustes:

1- Definir uma distancia mínima para o manmarker marcar alguém, caso n seja atingida, ficar na barreira
2- Deixar ter quantos defensores eu quiser. Atualmente só funciona para até 3 defensores.
3- Poder tirar o manmarker(usar defesa antiga).
4 -Usar a bola falsa para evitar que robo fique fora do campo.

Tudo feito! fotos e videos dos resultados serão postados amanhã.
Já está tudo atualizado na branch defense_rework.

Ações #42

Atualizado por Nicolas Oliveiraaproximadamente 6 anos

Excelente. Tudo upado no github?
Se lembrou de levar em consideração se a quantidade de robôs era par ou ímpar na hora de posicionar a defesa?

Ações #43

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Nicolas Oliveira escreveu:

Excelente. Tudo upado no github?
Se lembrou de levar em consideração se a quantidade de robôs era par ou ímpar na hora de posicionar a defesa?

Tudo upado! E usei sim a paridade do vetor Defensores para saber como somar ou subtrair da posição central.

Ações #44

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

  • Arquivo Video1.mp4 adicionado
  • Arquivo Video2.mp4 adicionado
  • Arquivo Video3.mp4 adicionado
  • Arquivo Video4.mp4 adicionado
Ações #45

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

  • Arquivo excluído (Video1.mp4)
Ações #46

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

  • Arquivo excluído (Video2.mp4)
Ações #47

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

  • Arquivo excluído (Video3.mp4)
Ações #48

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

  • Arquivo excluído (Video4.mp4)

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Posicionamento dos zagueiros na nova composição:

Error executing the video macro (undefined method `find_by_filename' for [#<Attachment id: 2054, container_id: 702, container_type: "Issue", filename: "Video1.mp4", disk_filename: "180528024138_Video1.mp4", filesize: 608480, content_type: "video/mp4", digest: "629fb4a03694ae73401ae1ce82938f24", downloads: 0, author_id: 93, created_on: "2018-05-28 02:41:38.000000000 +0000", description: "", disk_directory: "2018/05">, #<Attachment id: 2055, container_id: 702, container_type: "Issue", filename: "Video2.mp4", disk_filename: "180528024139_Video2.mp4", filesize: 993300, content_type: "video/mp4", digest: "9efc2f6342fa8c3284017d0c9adec3a8", downloads: 0, author_id: 93, created_on: "2018-05-28 02:41:39.000000000 +0000", description: "", disk_directory: "2018/05">, #<Attachment id: 2056, container_id: 702, container_type: "Issue", filename: "Video3.mp4", disk_filename: "180528024141_Video3.mp4", filesize: 709717, content_type: "video/mp4", digest: "3bbbdf858c6075adedc5d8057f7946c9", downloads: 0, author_id: 93, created_on: "2018-05-28 02:41:41.000000000 +0000", description: "", disk_directory: "2018/05">, #<Attachment id: 2057, container_id: 702, container_type: "Issue", filename: "Video4.mp4", disk_filename: "180528024144_Video4.mp4", filesize: 953362, content_type: "video/mp4", digest: "b13f8d758e7cce04204f433f65c0663a", downloads: 0, author_id: 93, created_on: "2018-05-28 02:41:44.000000000 +0000", description: "", disk_directory: "2018/05">]:Array Did you mean? find_index)

Posicionamento dos zagueiros no atacando contra alternando entre defesa antiga e defesa nova a partir de control no log player:

Error executing the video macro (undefined method `find_by_filename' for [#<Attachment id: 2054, container_id: 702, container_type: "Issue", filename: "Video1.mp4", disk_filename: "180528024138_Video1.mp4", filesize: 608480, content_type: "video/mp4", digest: "629fb4a03694ae73401ae1ce82938f24", downloads: 0, author_id: 93, created_on: "2018-05-28 02:41:38.000000000 +0000", description: "", disk_directory: "2018/05">, #<Attachment id: 2055, container_id: 702, container_type: "Issue", filename: "Video2.mp4", disk_filename: "180528024139_Video2.mp4", filesize: 993300, content_type: "video/mp4", digest: "9efc2f6342fa8c3284017d0c9adec3a8", downloads: 0, author_id: 93, created_on: "2018-05-28 02:41:39.000000000 +0000", description: "", disk_directory: "2018/05">, #<Attachment id: 2056, container_id: 702, container_type: "Issue", filename: "Video3.mp4", disk_filename: "180528024141_Video3.mp4", filesize: 709717, content_type: "video/mp4", digest: "3bbbdf858c6075adedc5d8057f7946c9", downloads: 0, author_id: 93, created_on: "2018-05-28 02:41:41.000000000 +0000", description: "", disk_directory: "2018/05">, #<Attachment id: 2057, container_id: 702, container_type: "Issue", filename: "Video4.mp4", disk_filename: "180528024144_Video4.mp4", filesize: 953362, content_type: "video/mp4", digest: "b13f8d758e7cce04204f433f65c0663a", downloads: 0, author_id: 93, created_on: "2018-05-28 02:41:44.000000000 +0000", description: "", disk_directory: "2018/05">]:Array Did you mean? find_index)

Posicionamento dos zagueiros alternando entre defesa antiga e defesa nova a partir de control e entre marcar mais perigoso ou segundo mais perigoso no log player:

Error executing the video macro (undefined method `find_by_filename' for [#<Attachment id: 2054, container_id: 702, container_type: "Issue", filename: "Video1.mp4", disk_filename: "180528024138_Video1.mp4", filesize: 608480, content_type: "video/mp4", digest: "629fb4a03694ae73401ae1ce82938f24", downloads: 0, author_id: 93, created_on: "2018-05-28 02:41:38.000000000 +0000", description: "", disk_directory: "2018/05">, #<Attachment id: 2055, container_id: 702, container_type: "Issue", filename: "Video2.mp4", disk_filename: "180528024139_Video2.mp4", filesize: 993300, content_type: "video/mp4", digest: "9efc2f6342fa8c3284017d0c9adec3a8", downloads: 0, author_id: 93, created_on: "2018-05-28 02:41:39.000000000 +0000", description: "", disk_directory: "2018/05">, #<Attachment id: 2056, container_id: 702, container_type: "Issue", filename: "Video3.mp4", disk_filename: "180528024141_Video3.mp4", filesize: 709717, content_type: "video/mp4", digest: "3bbbdf858c6075adedc5d8057f7946c9", downloads: 0, author_id: 93, created_on: "2018-05-28 02:41:41.000000000 +0000", description: "", disk_directory: "2018/05">, #<Attachment id: 2057, container_id: 702, container_type: "Issue", filename: "Video4.mp4", disk_filename: "180528024144_Video4.mp4", filesize: 953362, content_type: "video/mp4", digest: "b13f8d758e7cce04204f433f65c0663a", downloads: 0, author_id: 93, created_on: "2018-05-28 02:41:44.000000000 +0000", description: "", disk_directory: "2018/05">]:Array Did you mean? find_index)

Posicionamento dos zagueiros alternando entre defesa antiga e defesa nova a partir de control e entre marcar mais perigoso ou segundo mais perigoso e ainda mudando a quantidade de defensores no log player:

Error executing the video macro (undefined method `find_by_filename' for [#<Attachment id: 2054, container_id: 702, container_type: "Issue", filename: "Video1.mp4", disk_filename: "180528024138_Video1.mp4", filesize: 608480, content_type: "video/mp4", digest: "629fb4a03694ae73401ae1ce82938f24", downloads: 0, author_id: 93, created_on: "2018-05-28 02:41:38.000000000 +0000", description: "", disk_directory: "2018/05">, #<Attachment id: 2055, container_id: 702, container_type: "Issue", filename: "Video2.mp4", disk_filename: "180528024139_Video2.mp4", filesize: 993300, content_type: "video/mp4", digest: "9efc2f6342fa8c3284017d0c9adec3a8", downloads: 0, author_id: 93, created_on: "2018-05-28 02:41:39.000000000 +0000", description: "", disk_directory: "2018/05">, #<Attachment id: 2056, container_id: 702, container_type: "Issue", filename: "Video3.mp4", disk_filename: "180528024141_Video3.mp4", filesize: 709717, content_type: "video/mp4", digest: "3bbbdf858c6075adedc5d8057f7946c9", downloads: 0, author_id: 93, created_on: "2018-05-28 02:41:41.000000000 +0000", description: "", disk_directory: "2018/05">, #<Attachment id: 2057, container_id: 702, container_type: "Issue", filename: "Video4.mp4", disk_filename: "180528024144_Video4.mp4", filesize: 953362, content_type: "video/mp4", digest: "b13f8d758e7cce04204f433f65c0663a", downloads: 0, author_id: 93, created_on: "2018-05-28 02:41:44.000000000 +0000", description: "", disk_directory: "2018/05">]:Array Did you mean? find_index)

Ações #50

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

  • Situação alterado de Em andamento para Feedback

Ajustei para o posicionamento das quinas!

Posicionamento da defesa na quina em diversas formações que podem ser escolhidas pelo playbook na log player:

![](quina1.jpeg)
![](quina2.jpeg)
![](quina3.jpeg)
![](quina4.jpeg)

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Ações #52

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Ao revisar o código, Nicolas percebeu a necessidade de mais dois ajustes:

1) A barreira estava abrindo um espaço grande em algumas situações de posicionamento na quina.
Solução: Percebi que não estava informando o índice para um Replace Subset em um dos casos. Feito isso, problema encerrado.

2) Quando a bola estava muito perto do fundo do campo, os zagueiros da barreira estavam se posicionando em cima da linha da área quadrada, e não um pouco à frente como deveria ser e como estava sendo nas demais situações de posicionamento.
Solução: Somente ajustei uma constante de um dos casos para 120 mm mais à frente e detalhe resolvido.

Ações #53

Atualizado por Nicolas Oliveiraaproximadamente 6 anos

Vamos simular uma partida para ver a melhora da defesa.

Ações #54

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Nicolas pediu que eu mudasse um detalhe no avanço do duelist: chutar a bola em cima do inimigo quando a posse for dele.

Quando fui ao código para fazer isso, percebi que essa implementação já existia. Porém, o defensor só chutava a bola no inimigo quando ocorresse o evento Enemy Ball Possession.

Entretanto, tal evento só ocorre quando o adversário está realmente muito próximo à bola (não sei o valor exato). Quando esse evento acontecia, o adversário chutava a bola antes do defensor chegar (visto que o inimigo estava muito mais próximo à bola). Com isso, toda vez que observávamos o avanço, sempre víamos o caso em que posse de bola não era inimiga.

O Nicolas sugeriu que eu mudasse a distância do adversário à bola para definir a ocorrência desse evento. Mas fiquei com medo de isso afetar em alguma outra parte do código, e também ainda não sei fazer isso.

O que fiz foi criar uma VI que determinava o inimigo mais próximo à bola. Se essa distância for menor que 500 mm, envio True para um indicator booleano e vice-versa.

A distância de 500 mm ainda não está fixada.

No vídeo abaixo pode-se perceber que hora o duelist chuta bola para o gol inimigo e hora chuta em cima do inimigo. Pode-se perceber também as cores laranja e vermelha à frente do robô, indicando acionamento do drible e do chute, respectivamente.

Error executing the video macro (undefined method `find_by_filename' for [#<Attachment id: 2352, container_id: 702, container_type: "Issue", filename: "tipodeavanço.mp4", disk_filename: "180607230303_2c8b058ac7622332ffc73ff3d92b0070.mp4", filesize: 1758628, content_type: "video/mp4", digest: "bd5d4eb1c5c01eb266a0c0ecdd900a35", downloads: 0, author_id: 93, created_on: "2018-06-07 23:03:03.000000000 +0000", description: "", disk_directory: "2018/06">]:Array Did you mean? find_index)

Atualizado por Nicolas Oliveiraaproximadamente 6 anos

Essa implementação n trata o caso em que a bola está, por exemplo, na lateral do robô inimigo mas perto deles, onde deveríamos sim chutar no gol. Existe uma VI chamada eventgenerator aqui:

![](event.PNG)

Nela o evento de posse é gerada. Porém o parâmetro que ajusta as distâncias se encontra no AI parameters, aqui na tela inicial:

![](parametros.PNG)

Basta você tentar aumentar esses parâmetros com cuidado. Além disso lembre de definir esses valores como default. A uma parte da wiki fazendo uma descrição melhor dos eventos, leia.

Ações #56

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Nicolas Oliveira escreveu:

Essa implementação n trata o caso em que a bola está, por exemplo, na lateral do robô inimigo mas perto deles, onde deveríamos sim chutar no gol. Existe uma VI chamada eventgenerator aqui:

Vou ajustar isso!

![](event.PNG)

Nela o evento de posse é gerada. Porém o parâmetro que ajusta as distâncias se encontra no AI parameters, aqui na tela inicial:

![](parametros.PNG)

Basta você tentar aumentar esses parâmetros com cuidado. Além disso lembre de definir esses valores como default. A uma parte da wiki fazendo uma descrição melhor dos eventos, leia.

Tá ok!

Atualizado por Gabriel Borges da Conceiçãoaproximadamente 6 anos

Foi detectado um erro: Quando havia apenas 1 robô, às vezes ele ia para o meio do campo ao invés de assumir função defensiva.

Isso estava ocorrendo por que nesta situação, estava sendo gerado apenas a posição do manmarker.

Foi consertado.

E foi determinado que quando houvesse apenas 2 zagueiros, deveria ocorrer de os dois assumirem função de Center Back e não mais um Center Back e um Manmarker.

Isso também já foi implementado:

DEFESA COM A APENAS 2 ZAGUEIROS (MODO ATACANDO CONTRA):
![](defesa2zagbarreira.jpeg)

DEFESA COM A APENAS 1 ZAGUEIRO (MODO ATACANDO CONTRA):
![](defesacom1zag.jpeg)

Atualizado por Nicolas Oliveiraaproximadamente 6 anos

Hoje encontrei uma situação meio estranha durante alguns testes. Quando a defesa é a antiga, tudo ok. Porém quando coloco a defesa nova, ele novamente fica no centro da defesa, revisar isso.

certo
![](certo.JPG)

errado
![](erro1.JPG)

Precisam ser gerados testes a partir das rotinas que implementamos para a defesa com 1,2 ou 3 robôs, com a defesa nova e antiga (apenas a barreira) e marcando o mais perigoso ou o segundo. Dessa forma revisar todas as situações possíveis para que não tenhamos imprevistos durante a competição!!!

Ações #59

Atualizado por Gabriel Borges da Conceiçãoquase 6 anos

  • Situação alterado de Em andamento para Resolvida
Ações #60

Atualizado por Gabriel Borges da Conceiçãoquase 6 anos

  • Prioridade alterado de Urgente para Baixa
Ações #61

Atualizado por Gabriel Borges da Conceiçãoquase 6 anos

  • Situação alterado de Resolvida para Fechada
Ações

Exportar para Atom PDF