50 votes

A la recherche de moyens pour un robot de se situer dans la maison

Je suis piratage d'un aspirateur robot pour le contrôler avec un microcontrôleur (Arduino). Je veux qu'il soit plus efficace lors du nettoyage d'une chambre. Pour l'instant, il suffit d'aller tout droit et tourner quand il heurte quelque chose.

Mais j'ai de la difficulté à trouver le meilleur algorithme ou méthode à utiliser pour connaître sa position dans la pièce. Je suis à la recherche d'une idée qui reste bon marché (moins de 100$) et de ne pas complexe (une seule qui ne nécessitent pas une thèse de Doctorat en vision par ordinateur). Je peux ajouter quelques discrètes marqueurs dans la chambre si nécessaire.

Pour l'instant, mon robot a:

  • Une webcam
  • Trois capteurs de proximité (environ 1 mètre de gamme)
  • Boussole (pas utilisé pour l'instant)
  • Une Connexion Wi-Fi Gratuite
  • Sa vitesse peut varier si la batterie est pleine ou presque vide
  • Un netbook Eee PC est embarqué sur le robot

Avez-vous une idée pour faire cela? N'importe quelle méthode standard existent pour ce genre de problèmes?

Remarque: si cette question appartient à un autre site, merci de le déplacer, je ne pouvais pas trouver un meilleur endroit que le Débordement de la Pile.

35voto

Nate Kohl Points 11240

Le problème de trouver une position du robot dans son environnement est appelé la localisation. Informatique les chercheurs ont essayé de résoudre ce problème depuis de nombreuses années, avec un succès limité. Un problème est que vous devez raisonnablement bonne entrée sensorielle pour savoir où vous êtes, et de l'entrée sensorielle à partir de webcams (c'est à dire de la vision par ordinateur) est loin d'être un problème résolu.

Si cela n'a pas vous effrayer: l'une des approches de localisation que je trouve la plus simple pour comprendre est de filtrage particulaire. L'idée va quelque chose comme ceci:

  1. Vous gardez une trace de tout un tas de particules, dont chacune représente un emplacement possible dans l'environnement.
  2. Chaque particule est également associé à la probabilité que vous indique le degré de confiance vous que la particule représente vraiment votre position réelle dans l'environnement.
  3. Lorsque vous commencez, toutes ces particules pourraient être répartis de manière uniforme tout au long de votre environnement et de l'égalité des probabilités. Ici, le robot est gris et les particules sont au vert. initial particle filter
  4. Lorsque votre robot se déplace, le déplacement de chaque particule. Vous pouvez également dégrader chaque particule probabilité de représenter l'incertitude dans la façon dont les moteurs effectivement déplacer le robot. particles after movement
  5. Lorsque votre robot observe quelque chose (par exemple un point de repère vu avec la webcam, un signal wi-fi, etc.) vous pouvez augmenter la probabilité de particules qui sont d'accord avec cette observation. particles after observation
  6. Vous pouvez également remplacer périodiquement la plus faible probabilité de particules avec de nouvelles particules basée sur des observations.
  7. Pour décider de l'endroit où le robot est en fait, vous pouvez soit utiliser la particule avec la probabilité la plus élevée, la plus haute probabilité de cluster, la moyenne pondérée de toutes les particules, etc.

Si vous cherchez un peu, vous trouverez beaucoup d'exemples: par exemple, une vidéo d'un robot à l'aide de particules de filtrage pour déterminer son emplacement dans une petite salle.

Filtrage particulaire est agréable parce qu'il est assez facile à comprendre. Qui fait de la mise en œuvre et de les retravailler un peu moins difficile. Il existe d'autres techniques similaires (comme les filtres de Kalman) qui sont sans doute plus solide théoriquement, mais peut être plus difficile à obtenir autour de votre tête.

8voto

Peaches491 Points 887

QR Code

Une affiche QR Code dans chaque pièce constituerait non seulement une œuvre d'art moderne intéressante, mais serait relativement facile à repérer avec la caméra!

6voto

phkahler Points 4008

Si vous pouvez placer des marqueurs dans la salle, à l'aide de l'appareil photo pourrait être une option. Si 2 marqueurs connus ont un déplacement angulaire (de gauche à droite), puis la caméra et les marqueurs placés sur un cercle dont le rayon est liée à l'angle mesuré entre les marqueurs. Je ne me souviens pas de la formule de la droite, mais le segment d'arc (sur le cercle) entre les marqueurs seront deux fois l'angle que vous voyez. Si vous avez les marqueurs connus de la hauteur et la caméra est fixe à un angle d'inclinaison, vous pouvez calculer la distance à l'marqueurs. Une de ces méthodes, seul, peut clou en bas de votre position, compte tenu de suffisamment de marqueurs. En utilisant à la fois aidera à le faire avec moins de marqueurs.

Malheureusement, ces méthodes sont imparfaits en raison des erreurs de mesure. Vous contourner ce problème en utilisant un estimateur de Kalman afin d'incorporer plusieurs bruyant mesures pour arriver à une bonne estimation de la position - vous pouvez ensuite d'aliments dead reckoning de l'information (qui est aussi imparfaite) pour affiner davantage. Cette partie est assez profonde en maths, mais je dirais que c'est une exigence à faire un excellent travail à ce que vous assistez. Vous pouvez le faire OK sans elle, mais si vous voulez une solution optimale (en termes de meilleure estimation de la position donnée d'entrée) il n'y a pas de meilleure façon. Si vous voulez une carrière dans la robotique autonome, cela sera grande dans votre avenir. (

Une fois que vous pouvez déterminer votre position, vous pouvez parcourir la chambre dans l'un quelconque modèle que vous souhaitez. Gardez à l'aide de la bosse du capteur, afin de construire une carte des obstacles et alors vous aurez besoin de trouver un moyen d'analyse intégrant les obstacles.

Vous ne savez pas si vous avez la formation en mathématiques, mais voici lelivre: http://books.google.com/books/about/Applied_optimal_estimation.html?id=KlFrn8lpPP0C

5voto

jhocking Points 4591

Cela ne remplace pas la accepté de répondre (ce qui est génial, merci!) mais je pourrais vous recommandons d'obtenir un Kinect et l'utiliser à la place de votre webcam, soit par le biais de Microsoft a récemment publié pilotes officiels ou à l'aide de l'piraté des pilotes si votre EeePC n'a pas de Windows 7 (sans doute il ne fait pas).

De cette façon, le positionnement sera améliorée par la vision 3D. L'observation des points de repères vais maintenant vous dire comment loin le point de repère est, et pas seulement là où dans le champ visuel que le point de repère est situé.


Peu importe, l'on a accepté la réponse n'a pas vraiment d'adresse comment choisir des points de repère dans le champ visuel, et suppose simplement que vous le pouvez. Alors que les conducteurs de Kinect peut déjà avoir une fonction de détection inclus (je ne suis pas sûr), vous pouvez également utiliser OpenCV pour la détection de caractéristiques dans l'image.

3voto

tmslnz Points 531

En supposant que vous ne cherchez pas une solution universelle, vous pouvez réellement savoir la chambre de la forme, la taille, obstacle potentiel des lieux, etc. Lorsque le bot existe l'usine il n'y a pas d'info sur son futur environnement d'exploitation, le type qui l'oblige à être inefficace dès le départ. Si c'est votre cas, vous pouvez coder en dur cette info, et ensuite utiliser des mesures de base (ie. codeurs rotatifs sur roues + boussole) pour justement la figure de son emplacement dans la chambre et la maison. Pas besoin de wifi triangulation ou fou capteur de configurations, à mon avis. Au moins pour commencer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X