Estou fazendo algumas bases para um projeto e tenho uma pergunta sobre o estado atual das técnicas do SLAM.
Quando um dispositivo equipado com SLAM detecta um objeto, a posição desse objeto é armazenada. Se você observar a nuvem de pontos que o dispositivo está gerando, verá pontos para esse objeto e os modelos gerados a partir dele incluirão geometria aqui.
Se um objeto é colocado em um espaço anteriormente vazio, ele é detectado e pontos são adicionados. Os modelos subsequentes apresentarão geometria descrevendo esse novo objeto.
Como o dispositivo reage se esse objeto for removido? Até onde eu vi, os sistemas SLAM tendem a deixar os pontos no lugar, resultando em geometria "fantasma". Existem algoritmos que desconsideram pontos isolados causados por contatos transitórios, mas objetos que permaneceram tempo suficiente para construir um modelo sólido permanecerão na memória do dispositivo. Existem sistemas capazes de detectar o espaço ocupado anteriormente agora está vazio?
Respostas:
Isso depende muito. Como o SLAM é um problema (ou pelo menos uma técnica), não uma solução, não há algoritmo SLAM definitivo. Semântica, você precisa decidir o que acontece em um "mapa" do ambiente e isso determina como o algoritmo deve lidar com sinais transitórios (também conhecidos como móveis). Mas isso é uma digressão.
Mapas permanentes:
Os mapas permanentes devem conter informações suficientes para se localizar em relação à geometria conhecida. Normalmente usado em edifícios. Tipicamente legível por humanos. Veja o trabalho de Willow-Garage. ou qualquer coisa de Thrun em seu livro famoso. Se você perder este mapa, precisará construí-lo ao longo do tempo novamente.
Removendo objetos. Sim, o objeto aparecerá em um mapa estático por um tempo. Se nenhuma medida for tomada para remover objetos detectados anteriormente, ele persistirá. Uma representação 2D típica baseada em grade usará cada célula da grade para representar a probabilidade de um objeto, portanto, após o tempo, o objeto "desaparecerá".
Adicionando objetos. O mesmo que acima.
Mapas locais:
Na realidade, o SLAM é geralmente usado para localizar um robô enquanto ele se move, e o mapa não é mantido permanentemente (ou, ele é mantido permanentemente, mas apenas os recursos Y mais próximos são usados). Os mapas locais são tudo o que o robô precisa saber para determinar como foi movido nos últimos X minutos, onde X depende do aplicativo. Se você perder o mapa, ainda poderá voar muito bem usando os recursos que estão à vista no momento.
Métodos de lote, como o ajuste de bundle usando recursos visuais, é uma técnica muito comum nessa direção. Os recursos podem ser mantidos com o tempo e até revisitados, mas um recurso em movimento é apenas um recurso não confiável e será ignorado ao tentar descobrir onde o robô está.
Visual SLAM é exatamente isso. É um estimador delta-P (mudança de pose), não um algoritmo de localização baseado em mapas.
Em resumo, enquanto a maioria das coisas não estiver em movimento no momento , não importa se você remover um objeto quando o robô não estiver "olhando" para ele.
Exemplo
Então faça isso. Ao ler um artigo do SLAM, decida o seguinte:
Eles estão realmente construindo um mapa?
Eles estão apenas mantendo uma lista de recursos e locais?
Se sim, quais "recursos" estão no mapa? Linhas, pontos, características visuais?
É provável que esses recursos sejam movidos?
Se sim, como eles podem lidar com isso?
Finalmente, o ruído do sensor geralmente "se parece" com recursos em movimento. Como eles lidam com o ruído do sensor? Porque isso geralmente determina o que acontece com os recursos em movimento.
Você receberá uma resposta diferente para cada artigo / autor / livro / aplicativo. Em resumo, eles geralmente são omitidos, pois não ajudam o robô a localizar muito e podem ser evitados simplesmente com um planejador de caminho de baixo nível que usa apenas informações locais.
Boa sorte, slam é um tópico enorme.
fonte