Project

General

Profile

Atividade #1213

Meta #1230: Ter bons filtro de posição e estimatidor de velocidades

Refazer toda a visão com orientação a objeto

Added by Gabriel Borges da Conceição over 1 year ago. Updated about 1 year ago.

Status:
Em andamento
Priority:
Normal
Target version:
-
Start date:
11/01/2019
Due date:
02/19/2020

Description

SENDO FEITO NA BRANCH oop-vision CRIADA A PARTIR DA readudp.

O while da visão não consegue ultrapassar os 120/130 fps. Não sabemos ao certo o porquê disso.

Não é só por causa do processamento do Kalman pois, quando o desligamos nos testes na larc2019, o fps subia mais uns 30 fps no máximo, mas não chegava a 240 fps.

Pra começar a resolver esse problema, essa tarefa destina-se a refazer toda a visão orientada a objeto, o que já vai ajudar a reduzir as passagens de valores (de cluster pra OOP e etc...)

Imaginamos que isso já deva ajudar a ter menos custo computacional e também vai deixar mais organizado.

FieldSwitchSides.png (66.4 KB) Preview Gabriel Borges da Conceição, 02/14/2020 12:57 PM

ConvertBall.png (32.1 KB) Preview Gabriel Borges da Conceição, 02/14/2020 12:57 PM

ConvertRobots.png (30.4 KB) Preview Gabriel Borges da Conceição, 02/14/2020 12:57 PM

TeamAndSide.png (66.3 KB) Preview Gabriel Borges da Conceição, 02/14/2020 12:57 PM

atr_ball.png (21.6 KB) Preview Antonio de Souza Gomes Pereira, 02/14/2020 05:28 PM

atr_robot.png (24.2 KB) Preview Antonio de Souza Gomes Pereira, 02/14/2020 05:28 PM

camera_ex.png (42.3 KB) Preview Antonio de Souza Gomes Pereira, 02/14/2020 05:28 PM

class_camera.png (32.3 KB) Preview Antonio de Souza Gomes Pereira, 02/14/2020 05:28 PM

detection_robot.png (33 KB) Preview Antonio de Souza Gomes Pereira, 02/14/2020 05:28 PM

ex_implement.png (58.5 KB) Preview Antonio de Souza Gomes Pereira, 02/14/2020 05:28 PM

field_exe.png (97.4 KB) Preview Antonio de Souza Gomes Pereira, 02/14/2020 05:28 PM

read_udp.png (53.7 KB) Preview Antonio de Souza Gomes Pereira, 02/14/2020 05:28 PM

Touch.png (17.5 KB) Preview Gabriel Borges da Conceição, 02/16/2020 12:44 AM

LendoGame.png (25.2 KB) Preview Gabriel Borges da Conceição, 02/16/2020 12:45 AM

LVparaTouch.png (15.4 KB) Preview Gabriel Borges da Conceição, 02/16/2020 12:45 AM

Fieldswitchsides Convertball Convertrobots Teamandside Atr ball Atr robot Camera ex Class camera Detection robot Ex implement Field exe Read udp Touch Lendogame Lvparatouch

History

#1 Updated by Gabriel Borges da Conceição about 1 year ago

  • Assignee set to Antonio de Souza Gomes Pereira

#2 Updated by Gabriel Borges da Conceição about 1 year ago

  • Description updated (diff)

#3 Updated by Gabriel Borges da Conceição about 1 year ago

Estou dividindo essa tarefa com o Antonio. Ele está com a parte da decodificação até o kalman, inclusive e eu estou com team and side, future pose, até o bundleAll.

Por enquanto fiz toda Team and Side incluindo suas SubVIs:




Pode-se ver que ainda há cluster do gameStatus. Não vamos mexer no whilw do juiz por enquanto.

#4 Updated by Antonio de Souza Gomes Pereira about 1 year ago

Para substituirmos o cluster Detection Frame, foi criado a classe Camera, contendo os mesmos atributos que o cluster, porém ao invés de possuir os clusters dos robôs e da bola, é usado as classes relativas aos mesmos, como pode ser visto na figura abaixo:

Outra mudança foi a adição de mais atributos nas classes robot e ball, visto que as mesmas não eram usadas no processamento da visão e só continham os atributos finais da bola, o x_k|k do kalman e o Valid do tratamento da bola foram adicionados, por exemplo. Foi feito a mesma coisa para o robô, como pode ser visto abaixo:

ATRIBUTOS DA BOLA:

ATRIBUTOS DO ROBÔ:

A tarefa anterior de tratamento de recebimento de pacotes no while Read UDP já foi usada como base dessa, e as referências feitas para os clusters do Detection Frame e do Field já foram substituídas pelas classes Camera e Field.

As mudanças foram feitas até as partes de mais baixo nível do código. Para os robôs, a primeira vez que acontece o uso de OOP para a classe Robot é na vi SSL Detection Robot, na da Camera é na vi SSL Detection Frame, por fim a do Field é na vi SSL Geometry Data. As imagens de cada implementação estão mostradas abaixo, em ordem:

CLASSE ROBOT:

CLASSE CAMERA:

CLASSE FIELD:

O trabalho que estamos fazendo é basicamente substituir todos o clusters da visão, como exemplo de como está sendo feito é mostrado na vi CheckPossibleBalls, que faz parte da seção responsável por fazer o tratamento das possíveis bolas na visão.

Até o momento da tarefa, tenho pronto as seguintes partes:(Lembrando que ainda é necessário comparar lado a lado com o código original para consertar possíveis erros ou detalhes faltando)

FEITOS:
*decodeCameras e subvis
*getCurrentCameras
*updateFrameArray e subvis

FALTA FAZER:
*Kalman
*Estimador Simples

*Média Câmeras

#5 Updated by Gabriel Borges da Conceição about 1 year ago

Muito bem explicado!

#6 Updated by Gabriel Borges da Conceição about 1 year ago

Essa tarefa, como foi dito, está sendo feita para reorganizar o while da visão e reduzir as passagens de parâmetros.

Mas além disso, é bom porque olhamos com mais calma cada coisa e percebemos que algumas cosias podem ser feitas de forma mais otimizada, como a seguinte situação:

Na foto acima, estamos lendo o game inteiro com inúmeras informações para apenas usar o touch event numa subVI. Isso com certeza pesa mais o código. Isso já foi substituído pelo uso de apenas uma variável local:

#7 Updated by Gabriel Borges da Conceição about 1 year ago

  • Due date set to 02/19/2020

#8 Updated by Gabriel Borges da Conceição about 1 year ago

  • Parent task set to #1230

#9 Updated by Lucas Germano about 1 year ago

A documentação poderia ser feita de melhor forma, tem muita imagem com muita coisa circulada que fica difícil o entendimento. Uma lista com as classes novas seria suficiente ou então um diagrama de classes simples poderia ajudar bastante a entender o que vocês estão fazendo.

#10 Updated by Gabriel Borges da Conceição about 1 year ago

Resumindo:

A única classe criada foi a classe Camera:

Essa classe substitui o Cluster Detection Frame. Os atributos desta classe são os mesmos que tinham no cluster, com algumas diferenças:

1- No cluster Detection Frame tínhamos um vetor de clusters Ball. Na classe Camera temos um vetor de objetos da classe Ball.

2- No cluster Detection Frame tínhamos dois vetor de clusters Robot, uma para azuis e outro para amarelos. Na classe Camera temos dois vetores de objetos da classe Robot.

#11 Updated by Gabriel Borges da Conceição about 1 year ago

Além disso, adicionamos alguns atributos à classe Ball e à classe Robot, como a matriz x_k|K, confidence, entre outros:

ATRIBUTOS DA BOLA:

ATRIBUTOS DO ROBÔ:

Nós precisamos adicionar esses atributos a essas classes pois eles são usados na visão.

Essas foram as únicas mudanças em termos de classes (Criada classe Camera e adicionados atributos às classes Ball e Robot). De resto, o que fizemos foi substituir os clusters por esses objetos desde o início do código (decodificação, kalman, etc).

#12 Updated by Gabriel Borges da Conceição about 1 year ago

  • Description updated (diff)

#13 Updated by Antonio de Souza Gomes Pereira about 1 year ago

Todos os arquivos já foram portados para oop, falta conferir(devido a alguns bugs):

obs1: botar em só uma vi, no método doKalmanAndMakeFrame.

Conferidos:

(Decode Cameras ok){
-Ssl detection frame
-Ssl Geometry data
};

#14 Updated by Gabriel Borges da Conceição about 1 year ago

Debuguei o código e consertei os erros. Aparentemente já está tudo correto. Precisamos testar mais pra garantir que ainda não restou nenhum erro e colocar isso no código principal.

#15 Updated by Nicolas Oliveira about 1 year ago

ok

#16 Updated by Gabriel Borges da Conceição about 1 year ago

Esta tarefa acabou sendo feita a partir da branch em que eu estava fazendo a tarefa http://redmine.roboime.com.br/issues/1223 e não a partir da dev.

Com isso, acho melhor terminar a tarefa do link para dar o merge.

#17 Updated by Gabriel Borges da Conceição about 1 year ago

  • Status changed from Em andamento to Feedback

#18 Updated by Nicolas Oliveira about 1 year ago

ok. Mas faz um commit marcando onde isso aqui ficou pronto.

#19 Updated by Gabriel Borges da Conceição about 1 year ago

Okay.

Por enquanto a visão orientada a objeto está na branch oop-vision e o commit que fez funcionar corrigindo os erros existentes é o commit 55f8e994c7f618aaf70409ad6ab40e37fc61aaf2

#20 Updated by Gabriel Borges da Conceição about 1 year ago

  • Status changed from Feedback to Em andamento

Also available in: Atom PDF

Go to top
Add picture from clipboard (Maximum size: 500 MB)