Mudanças entre as edições de "Detalhamento"
(New page: == Implementação do modelo probabilístico da pose do robô simulado (P(x|x_1,u)) no ExplorerSim == Na função UpdateMap do ExplorerSim (ExplorerSim.cs), no final, o comando abaixo env...) |
(→Implementação do modelo probabilístico da pose do robô simulado (P(x|x_1,u)) no ExplorerSim) |
||
Linha 5: | Linha 5: | ||
_map.Add(-_state.X, _state.Y, (_state.Theta - 90), DistanceMeasurements.Length, DistanceMeasurements); | _map.Add(-_state.X, _state.Y, (_state.Theta - 90), DistanceMeasurements.Length, DistanceMeasurements); | ||
− | O vetor pose (_state.X, _state.Y, _state.Theta) (x no modelo probabilístico) neste ponto | + | O vetor pose (_state.X, _state.Y, _state.Theta) (x no modelo probabilístico) neste ponto é preciso na simulação. Assim, o trabalho consiste em mostrar a imprecisão probabilística desta pose no mapa conforme os modelos e algortimos que estudamos. Os modelos e algoritmos a serem usados são: |
# Sample Odometry Motion Model (Slide 25 do arquivo 2-motion-models.ppt - pegar versão atualizada no wiki) | # Sample Odometry Motion Model (Slide 25 do arquivo 2-motion-models.ppt - pegar versão atualizada no wiki) |
Edição das 09h56min de 16 de maio de 2009
Implementação do modelo probabilístico da pose do robô simulado (P(x|x_1,u)) no ExplorerSim
Na função UpdateMap do ExplorerSim (ExplorerSim.cs), no final, o comando abaixo envia os dados do LRS para serem colocados no mapa:
_map.Add(-_state.X, _state.Y, (_state.Theta - 90), DistanceMeasurements.Length, DistanceMeasurements);
O vetor pose (_state.X, _state.Y, _state.Theta) (x no modelo probabilístico) neste ponto é preciso na simulação. Assim, o trabalho consiste em mostrar a imprecisão probabilística desta pose no mapa conforme os modelos e algortimos que estudamos. Os modelos e algoritmos a serem usados são:
- Sample Odometry Motion Model (Slide 25 do arquivo 2-motion-models.ppt - pegar versão atualizada no wiki)
- Particle Filter Algorithm (Slide 16 do arquivo 4-particle-filters.ppt)
A idéia é produzir no mapa uma figura como a do slide 26 do arquivo 2-motion-models.ppt. Isso pode ser feito da seguinte forma:
- Criar uma arquivo à parte para suas implementações
- Neste arquivo, criar uma função que mantenha 500 particulas de pose (cada uma delas é um vetor pose) para cada posição que o robô ocupar
- Devem ser criadas 500 para a posição inicial, mais 500 para a posição após o primeiro movimento, mais 500 para o segundo movimento, etc.
- Ao final de cada movimento do robô, o novo conjunto de partículas deve ser gerado a partir do imediatamente anterior conforme o Particle Filter Algorithm
- Mostrar estas partículas no mapa do mesmo modo que é mostrado o robô, isto é, sem interferir com o algoritmo que usa o mapa (ver arquivo Mapper.cs, função Map)
- As partículas devem ser removidas no início da função Map e os pixels que eles sobrepuseram previamente devem ser restaurados
- Ao final da função Map, os pixels que as partículas vão sobrepor devem ser salvos e só então as partículas devem ser colocadas no mapa (ver arquivo Mapper.cs, função Map)
Trabalhem de modo a produzir código útil. Código incompleto é melhor do que zero código. Zero é péssimo!