Atividade #173
FechadaDeixar o filtro de Kalman funcionando
Adicionado por Gustavo Claudio Karl Couto mais de 7 anos atrás. Atualizado aproximadamente 7 anos atrás.
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 |
Atualizado por Gustavo Claudio Karl Couto há mais de 7 anos
- Tipo alterado de Meta para Atividade
Atualizado por Onias Castelo Branco há mais de 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
Atualizado por Onias Castelo Branco há mais de 7 anos
- % Terminado alterado de 0 para 20
Começo do desenvolvimento da vi SSL Detection Frame Robots Kalman Estimator.vi
Atualizado por Onias Castelo Branco há mais de 7 anos
- % Terminado alterado de 20 para 30
Atualizado por Luiz Renault Leite Rodrigues há mais de 7 anos
Criar uma VI que faz o teste do filtro.
Atualizado por Onias Castelo Branco há mais de 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)
Atualizado por Onias Castelo Branco há mais de 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
Atualizado por Luiz Renault Leite Rodrigues há mais de 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.
Atualizado por Onias Castelo Branco há mais de 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.
Atualizado por Onias Castelo Branco há mais de 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.
Atualizado por Luiz Renault Leite Rodrigues há mais de 7 anos
A filtragem deverá se feita nos robôs e bolas.
Atualizado por Onias Castelo Branco há mais de 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
Atualizado por Onias Castelo Branco há mais de 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.
Atualizado por Onias Castelo Branco há mais de 7 anos
- Arquivo 20170605_215702[1].mp4 20170605_215702[1].mp4 adicionado
Vídeo mostrando o desempenho do estimador do filtro de kalman.
Atualizado por Luciano Barreira há mais de 7 anos
- Arquivo test.log test.log adicionado
- Arquivo grsim-client-command.png grsim-client-command.png adicionado
- Arquivo grsim-client-connect.png grsim-client-connect.png adicionado
- Arquivo grsim-client-send.png grsim-client-send.png adicionado
- Arquivo logrecorder-command.png logrecorder-command.png adicionado
- Arquivo logrecorder-port.png logrecorder-port.png adicionado
- Arquivo logrecorder-working.png logrecorder-working.png adicionado
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.
Atualizado por Onias Castelo Branco há mais de 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)
Atualizado por Onias Castelo Branco há mais de 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.
Atualizado por Luciano Barreira há mais de 7 anos
- Arquivo single-camera.log single-camera.log adicionado
Gerei um log a partir de uma versão antiga do grSim. Onias, veja se serve.
Atualizado por Onias Castelo Branco há mais de 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?
Atualizado por Luciano Barreira há mais de 7 anos
Nenhuma opçao de gerar ruído foi selecionada quando eu gerei.
Atualizado por Onias Castelo Branco há mais de 7 anos
- Arquivo kalman-saida.JPG kalman-saida.JPG adicionado
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.
Atualizado por Luiz Renault Leite Rodrigues há mais de 7 anos
Tem que ter mais amostras.
Atualizado por Onias Castelo Branco há mais de 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.
Atualizado por Onias Castelo Branco há aproximadamente 7 anos
- Situação alterado de Em andamento para Resolvida
Filtro de Kalman está implementado na intel.
Atualizado por Onias Castelo Branco há aproximadamente 7 anos
- Situação alterado de Resolvida para Fechada