Estou implementando a localização de Monte-Carlo para o meu robô, que recebe um mapa do ambiente e sua localização e orientação inicial. A minha abordagem é a seguinte:
- Crie uniformemente 500 partículas em torno da posição especificada
- Então, em cada etapa:
- movimento atualize todas as partículas com odometria (minha abordagem atual é newX = oldX + odometryX (1 + standardGaussianRandom), etc.)
- atribua peso a cada partícula usando dados do sonar (a fórmula é para cada probabilidade do sensor * = gaussianPDF (realReading) em que gaussian tem a média da leitura prevista)
- retornar a partícula com maior probabilidade como a localização nesta etapa
- então 9/10 das novas partículas são reamostradas das antigas de acordo com os pesos e 1/10 é amostrada uniformemente em torno da posição prevista
Agora, escrevi um simulador para o ambiente do robô e aqui está como essa localização se comporta: http://www.youtube.com/watch?v=q7q3cqktwZI
Receio que, por um longo período, o robô se perca. Se adicionar partículas a uma área maior, o robô se perde ainda mais facilmente.
Espero um melhor desempenho. Algum conselho?
localization
motion-planning
sonar
Andrei Ivanov
fonte
fonte
Respostas:
Acabei de responder à pergunta no StackOverflow, onde já foi feita. Aqui está o link:
/programming/21249131/monte-carlo-localization-for-mobile-robot
fonte