Je fais du SLAM avec un robot à entraînement différentiel à quatre roues motrices (2 roues motrices) qui traverse une certaine salle. Le couloir n'est pas plat partout. Et le robot tourne en tournant sur place, puis en voyageant dans la direction résultante. L'algorithme SLAM n'a pas besoin d'être exécuté en ligne.
Le robot prend des mesures à partir d'une mesure IMU / gyroscope à sangle descendante (ax,ay,az,wx,wy,wz)
, où se ax
réfère à l'accélération dans la direction x et wx
mesure l'accélération angulaire autour de l'axe x. Le LIDAR scanne le couloir avec un arc à 270 degrés et mesure les plages et les angles. Cependant, pour autant que je sache, le couloir n'a pas de caractéristiques perceptibles, sauf lorsqu'il fait un virage
Je dois trouver la meilleure façon de fusionner l'action proposée mesurée par l'encodeur avec les données IMU et LIDAR. Il est logique pour moi que je puisse fusionner le lacet de l'IMU avec les données de l'encodeur pour avoir une meilleure idée du cap, mais comment dois-je incorporer les données LIDAR?
Essentiellement, quel est le modèle de mesure approprié et comment dois-je intégrer le bruit dans le modèle de mouvement ? En plus de simplement ajouter du bruit gaussien à certains (0,σ)
?
Addenda
C'est quelque peu orthogonal à la question, mais tout aussi déroutant pour moi. Actuellement, j'utilise un filtre à particules pour faire SLAM, et je suis un peu confus quant à savoir si représenter l'incertitude dans l'accélération angulaire dans les particules elles-mêmes. Je vois deux options:
Un filtre de navigation séparé utilisant EKF (ou quoi que ce soit vraiment) pour trouver d'abord un vecteur de matrice d'accélération angulaire "meilleure estimation", puis utiliser cette matrice comme vérité absolue pour le filtre à particules. De sorte que toute dérive dans les particules n'est pas due à l'incertitude de l'accélération angulaire.
Incorporer l'incertitude dans la dérive des particules elles-mêmes. Cette option semble plus sensée, mais je ne sais pas quelle est la manière de procéder de principe.
la source
Réponses:
Étant donné que vous disposez d'un capteur 2D que vous ne pouvez pas faire pivoter de manière contrôlée, vous ne pouvez vous attendre à exécuter SLAM que dans un plan 2D.
Votre meilleur pari est d'utiliser l'IMU pour l'estimation d'attitude (roulis et tangage uniquement, car vous n'avez pas de boussole) et de corriger chaque balayage laser 2D légèrement tourné en conséquence. Si votre IMU ne vous fournit pas déjà une estimation d'attitude, je calculerais des estimations d'attitude en utilisant un filtre complémentaire non linéaire car elles n'ont besoin que de régler une seule constante.
Même s'il est théoriquement possible d'utiliser des filtres à particules pour SLAM avec des balayages laser (voir gmapping), l'état actuel de la technique est le SLAM basé sur des graphiques, c'est-à-dire l'optimisation des moindres carrés du graphique SLAM, ou dans votre cas l'optimisation du graphique de pose. Jetez un œil à karto dans ROS en tant qu'implémentation open source exemplaire.
la source