Estou fazendo SLAM com um robô de tração diferencial de quatro rodas (tração nas duas rodas) dirigindo por algum corredor. O corredor não é plano em todos os lugares. E o robô gira girando no lugar, depois viajando na direção resultante. O algoritmo SLAM não precisa ser executado online.
O robô faz medições a partir de uma medição IMU / giroscópio (ax,ay,az,wx,wy,wz)
, onde ax
se refere à aceleração na direção x e wx
mede a aceleração angular em torno do eixo x. O LIDAR percorre o corredor com um arco de 270 graus e mede faixas e ângulos. No entanto, até onde eu sei, o corredor não possui características discerníveis, exceto quando
Preciso encontrar a melhor maneira de fundir a ação proposta, medida pelo codificador, com dados IMU e LIDAR. Faz sentido para mim que eu possa fundir a guinada do IMU com os dados do codificador para ter uma melhor noção do rumo, mas como devo incorporar os dados do LIDAR?
Em essência, qual é o modelo de medição apropriado e como devo incorporar o ruído no modelo de movimento ? Além de adicionar algum ruído gaussiano em alguns (0,σ)
?
Termo aditivo
Isso é um tanto ortogonal à pergunta, mas igualmente confuso para mim. Atualmente, estou usando um filtro de partículas para fazer SLAM, e estou um pouco confuso sobre a possibilidade de representar incerteza na aceleração angular nas próprias partículas. Eu vejo duas opções:
Um filtro de navegação separado usando EKF (ou qualquer coisa realmente) para encontrar um vetor de "melhor estimativa" da matriz de aceleração angular primeiro, depois use essa matriz como verdade absoluta para o filtro de partículas. De modo que qualquer deriva nas partículas não provém da incerteza na aceleração angular.
Incorporar a incerteza no desvio de partículas. Essa opção parece mais sensata, mas não sei ao certo qual é a maneira correta de fazer isso.