Projeto

Geral

Perfil

Ações

Atividade #173

Fechada

Deixar o filtro de Kalman funcionando

Adicionado por Gustavo Claudio Karl Couto aproximadamente 7 anos atrás. Atualizado mais de 6 anos atrás.

Situação:
Fechada
Prioridade:
Alta
Atribuído para:
Início:
22/05/2017
Data prevista:
29/05/2017
Tempo gasto:

Descrição

**Seria bom mudar a arquitetura da intel que usa a velocidade de cada robo como commander ao invés de usar o espaço para velocidade estimada,


Arquivos

20170605_215702[1].mp4 (13,6 MB) 20170605_215702[1].mp4 Onias Castelo Branco, 06/06/2017 01:18 h
test.log (1,9 MB) test.log Luciano Barreira, 06/06/2017 15:06 h
grsim-client-command.png (3,14 KB) grsim-client-command.png Luciano Barreira, 06/06/2017 15:08 h
grsim-client-connect.png (56,8 KB) grsim-client-connect.png Luciano Barreira, 06/06/2017 15:08 h
grsim-client-send.png (56,4 KB) grsim-client-send.png Luciano Barreira, 06/06/2017 15:08 h
logrecorder-command.png (6,51 KB) logrecorder-command.png Luciano Barreira, 06/06/2017 15:08 h
logrecorder-port.png (23,9 KB) logrecorder-port.png Luciano Barreira, 06/06/2017 15:08 h
logrecorder-working.png (20 KB) logrecorder-working.png Luciano Barreira, 06/06/2017 15:08 h
single-camera.log (1,94 MB) single-camera.log Luciano Barreira, 09/06/2017 01:08 h
kalman-saida.JPG (36,4 KB) kalman-saida.JPG Onias Castelo Branco, 10/07/2017 20:35 h
Ações #1

Atualizado por Gustavo Claudio Karl Coutoaproximadamente 7 anos

  • Tipo alterado de Meta para Atividade
Ações #2

Atualizado por Onias Castelo Brancoaproximadamente 7 anos

Atualmente (24/05) o estimator "Kalman" contém a vi SSL Detection Frame Simple Estimator Kalman.vi. Primeiro trabalharei nela, para então tratar do kalman multi-cam.

Na vi SSL Detection Frame Simple Estimator Kalman. vi temos um cluster de balls, robots_yellow, robots_blue. Para filtragem das bolas, temos a vi SSL Detection Frame Balls Kalman Estimator.vi. Para filtragem dos robôs, temos a vi SSL Detection Frame Robots Estimator.vi

Ações #3

Atualizado por Onias Castelo Brancoaproximadamente 7 anos

  • % Terminado alterado de 0 para 20

Começo do desenvolvimento da vi SSL Detection Frame Robots Kalman Estimator.vi

Ações #4

Atualizado por Onias Castelo Brancoaproximadamente 7 anos

  • % Terminado alterado de 20 para 30
Ações #5

Atualizado por Luiz Renault Leite Rodriguesaproximadamente 7 anos

Criar uma VI que faz o teste do filtro.

Ações #6

Atualizado por Onias Castelo Brancoaproximadamente 7 anos

  • % Terminado alterado de 30 para 40

Commitei as novas mudanças. Para não comprometer o fluxograma do código, não alterei nenhuma vi, alterei a SSL Detection Robots Delete Invalids.vi e criei uma SSL Detection Robots Delete Invalids Kalman.vi para a nova vi SSL Detection Frame Robot Kalman Estimator.vi. Foram criadas também as vi's: Robot Kalman Filter and Update.vi and Update Robot Pose.vi.

Finalmente, alterei a vi SSL Detection Frame Simple Estimator Kalman.vi para colocar a nova vi com o kalman para os robos.

Estou esperando confirmar que está funcionando para terminar a tarefa (tornar exportável a velocidade estimada dos robos que a intel possa usar)

Ações #7

Atualizado por Onias Castelo Brancoaproximadamente 7 anos

Luiz Renault Leite Rodrigues escreveu:

Criar uma VI que faz o teste do filtro.

Desculpe capitão, não tinha visto essa adição

Ações #8

Atualizado por Luiz Renault Leite Rodriguesaproximadamente 7 anos

Minha sugestão é pegar de um jogo gravado e criar um array de valores não filtrados e usar como entrada para a VI que testa o filtro e observar a saída.

Ações #9

Atualizado por Onias Castelo Brancoaproximadamente 7 anos

Luiz Renault Leite Rodrigues escreveu:

Minha sugestão é pegar de um jogo gravado e criar um array de valores não filtrados e usar como entrada para a VI que testa o filtro e observar a saída.

Cap, para esta tarefa, devo não só estimar a vel de cada robô, pegar a vel da bola também? Poderia ser útil para intel.

Ações #10

Atualizado por Onias Castelo Brancoaproximadamente 7 anos

  • % Terminado alterado de 40 para 50

Comecei uma página da wiki sobre o log player.

Comecei a vi que deverá testar os filtros.

Ações #11

Atualizado por Luiz Renault Leite Rodriguesaproximadamente 7 anos

A filtragem deverá se feita nos robôs e bolas.

Ações #12

Atualizado por Onias Castelo Brancoaproximadamente 7 anos

Continuando o desenvolvimento da vi para testar os filtros. Feitas as vi's que adicionam ruido branco aos dados dos robos e das bolas

Ações #13

Atualizado por Onias Castelo Brancoaproximadamente 7 anos

Sobre o kalman, acredito que haja problema também nos problemas do filtro. Talvez ele tenha que ser refeito depois para que essa tarefa seja dada como concluída.

Ações #14

Atualizado por Onias Castelo Brancoaproximadamente 7 anos

Vídeo mostrando o desempenho do estimador do filtro de kalman.

Atualizado por Luciano Barreiraaproximadamente 7 anos

Gerado log com grSim utilizando o [ssl-tools](https://github.com/RoboCup-SSL/ssl-logtools). Todos os passos foram feitos em Linux. Segue os passos:

1. Criada uma pasta temporária tmp para o log (comando ```~mkdir tmp``` onde preferir).Para rodar o [ssl-tools](https://github.com/RoboCup-SSL/ssl-logtools), basta executar o comando:
![logrecorder-command](logrecorder-command.png)

2. O ssl-logtools está configurado para a porta 10005 do endereço multicast da visão, então é necessário que a porta de visão do grsim esteja configurada com a 10005:
![logrecorder-port](logrecorder-port.png)

3. Se não ocorrerem erros, o output do logrecorder deve se parecer com isto:
![logrecorder-working](logrecorder-working.png)

4. Para enviar comando para o robô, foi utilizado o client, que pode ser executado consoante o comando:
![grsim-client-command](grsim-client-command.png)

5. Conecta-se, então, o client ao endereço multicast e command listen port configurados no grsim:
![grsim-client-connect](grsim-client-connect.png)

6. Escolhe-se o comando de envio e, então, send:
![grsim-client-send](grsim-client-send.png)

Se tudo correr bem, na pasta onde foi escolhida gravar o log será gravado. Digitando CTRL-C onde foi executado o logrecorder termina de gravar o log.

Ações #16

Atualizado por Onias Castelo Brancoaproximadamente 7 anos

A variável iteração, responsável por contar o tempo no modelo dinâmico do kalman está assumindo valores negativos (e muito grandes, ordem de -10^9)

Ações #17

Atualizado por Onias Castelo Brancoaproximadamente 7 anos

Clonei a vi do filtro de kalman, isso resolveu o problema da variável iteração e visualmente tornou o filtro de kalman melhor.

Para um debug melhor, é necessário um log com somente uma câmera.

Quanto a vi debugger do kalman, há a ocorrencia do error issue 54 na comunicação do log, responsável por fornecer os dados dos robos pro filtro. Não encontrei nenhum motivo que pudesse originar o erro.

Ações #18

Atualizado por Luciano Barreiraaproximadamente 7 anos

Gerei um log a partir de uma versão antiga do grSim. Onias, veja se serve.

Ações #19

Atualizado por Onias Castelo Brancoaproximadamente 7 anos

Luciano Barreira escreveu:

Gerei um log a partir de uma versão antiga do grSim. Onias, veja se serve.

Luciano, rodou aqui e é só com uma camera mesmo.

Esse log tem algum ruido ou a camera pode não enviar algum pacote etc?

Ações #20

Atualizado por Luciano Barreiraaproximadamente 7 anos

Nenhuma opçao de gerar ruído foi selecionada quando eu gerei.

Ações #21

Atualizado por Onias Castelo Brancoaproximadamente 7 anos

A VI Filter Tester que está no projeto SSLView apresenta essas saídas para robos azuis com ID zero. Não é isso que acontece ao longo do log quando usado no log player. Mas um fator que ja mostra falhas no algoritmo do Kalman eh que ele deveria continuar a reta depois dos frames fornecidos acabarem.

Capitão, o sr consegue imaginar algo que possa originar esse problema? Até os dados estão em pouca quantidade. Só 11 passam pros gráficos.

Ações #22

Atualizado por Luiz Renault Leite Rodriguesaproximadamente 7 anos

Tem que ter mais amostras.

Ações #23

Atualizado por Onias Castelo Brancoaproximadamente 7 anos

Análises foram feitas quanto ao algoritmo e a implementação deste. Visualizei os dados dos robôs azuis em 3 momentos. No primeiro ele está igual ao log. No segundo, há adição de um ruído branco. No terceiro, mostra o resultado do filtro de kalman. Um dos problemas foi que no 3° momento há um acréscimo grande no timestamp da amostra. Não sei se isso se deve ao desempenho do meu computador ou não. Outra coisa eh que o labview demora pra receber duas amostras (com um delay de maior de 1s) e isso deve atrapalhar o kalman, que tem uma constante de tempo de 1s.

Em uma coisa não relacionada, reli o artigo da wikipedia e achei que nossa matriz de ruido Q estava errada, ela deveria depender de algum parâmetro a ser estimado, e não ser igual a identidade. Botei Q = O_3 e os robôs pararam de oscilar no log player.

Ações #24

Atualizado por Onias Castelo Brancoquase 7 anos

  • Situação alterado de Em andamento para Resolvida

Filtro de Kalman está implementado na intel.

Ações #25

Atualizado por Onias Castelo Brancomais de 6 anos

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

Exportar para Atom PDF