Repérage dans l'espace

MadProf

Membre actif
Bonjour à tous,

Ça tombe bien cette nouvelle section, j'ai un paquet de questions :D

Je cherche notamment un moyen de faire de la localisation 2D dans un environnement non dynamique et certains.

Seulement la contrainte (il en faut sinon c pas marrant)c'est sans GPS, sans boussole et sans moteur pas à pas. J'ai à disposition : un capteurs IR Sharp sur tourelle, une webcam et un PC Portable, divers capteurs infra rouge, sonore, luminosité. Je me sers d'une carte Arduino pour faire la liaison PC/matériel électronique.

La reconnaissance de visages et formes fonctionne alors je m'était dit qu'un système à base de reconnaissance de pictogrammes placés dans une pièce pourrait fonctionner également (un peu comme le principe du RFID).

Ou bien encore un balayage des alentours par le capteur IR afin de se faire une "idée" de l'environnement.

Si un spécialiste du genre à une idée... je précise que je connais que dalle en électronique mais que je me débrouille en dev. Je cherche pas un truc tout fait, mais des pistes à explorer.

A++

MadProf
 
Je suis un peu dans ton cas, mis à part les 2-3 formules de bases ou le code couleur des resistances, je connais pas grand chose en electronique mais je suis par contre plutôt experimenté en dev (assembleur, C/C++). Pour me simplifier le probléme j'utilise des phidgets branchés une usb, et ça régle à peu pres les problémes de l'electronique.

Pour ton probléme, l'IR je pense que ca ne sera pas suffisant. Des ultra sons seraient plus adaptés et tu couvrirais un plus gros radius autour de toi et plus fiable (l'IR c'est bien mais les differentes surfaces risquent de refleter et renvoyer des valeurs bien differentes pour être exploitable au delà de la distance proche). Avec plusieurs capteurs ultrasons ou un capteur monté sur tourelle, tu peux te construire une map de ta piéce je pense.

Dans ton cas, si tu as une webcam je pense que c'est encore plus simple, avec quelques traitements d'image de base tu dois pouvoir retrouver le sol et identifier les obstacles et donc faire diriger ton robot sur la surface du sol. De plus, tu peux l'utiliser conjointement avec un capteur infrarouge ou mieux les ultra sons pour rendre plus robuste ta solution (ya tjrs des cas speciaux ou de l'inattendu, comme la transition etre 2 surfaces tel qu'un tapis sur le sol ou une feuille de papier posée sur ton parquet...
 
Salut Kanda,

Effectivement j'utilise aussi des phidgets branchés sur une carte Arduino qui fait la liaison avec mon PC. le traitement de l'image de la webcam est effectué par le PC. J'utilise la librairie OpenCV qui implémente pleins de fonctions pour la reconnaissance. Après le choix de la méthode est en fonction des attentes. J'utilise le Haartraining pour les visages et les formes complexes spécifiques, et la transformée de Hough pour la reconnaissance d'objets basiques (cercles, triangles...).

En fait je voudrai pouvoir faire une "carte" de l'environnement et y appliquer par la suite un pathfinding traditionnel. Seulement ce n'est pas possible uniquement en scrutant les environs avec un capteur IR ou même un sonar vu que ceux-ci ne peuvent voir à travers les objets.
 
L'ideal ce serait que ton robot ait une comprehension de son environement et qu'il memorize les obstacles en les reliant les uns aux autres en mémoire, ainsi au lieu de faire un pathfinding sur map/plan 2d, tu localises ta destination dans ce graph d'objets / repéres et tu fais un A* sur ce graph, et tu vas vers ta destination en atteignant successivements les objets du graphs se trouvant sur le chemin qui mêne à ton but. Si c'est trop lourd pour toi de reconnaitre les objets, tu peux remplacer par des balises de couleurs differentes.

Le probléme de la generation de map plus precise c'est que ca necessiterait un encodeur sur tes moteurs, que tu puisses savoir tout le temps precisément où tu te trouves....Si c'est le cas, tu peux faire construire la map par ton robot. Tu le laisses se ballader librement, en decoupant l'environement en "cases" et tu fais deplacer ton robot dans chaque cases, si tu reussis à rejoindre la case voisine, tu tag la casesde ta map en memoire comme étant accessible, sinon tu la tag comme etant interdite. Aprés à toi de regler selon l'environement les tailles des cases. Le principe est simple mais ca necessite un asservissement ultra precis sur ton robot...histoire qu'au bout de 10 cases il se retrouve bien au bon endroit et non sur une cases voisine...Le genre de truc facile à faire sur simulateur mais plus problématique en réel...

C'est pour ça que je proposais la premiere solution. Laisser ton robot vadrouiller et memorizer des objets / endroits clés et les relier entre eux pour la façon de les atteindre. Pratique, universel, adapté probabement à tous les environements je pense...mais plus dure à mettre en oeuvre.

Sinon le plus simple, si ton environement est pas trop gigantesque et pas trop encombré, ceux serait de placer des balises de couleur un peu partout, style sur les encadrement de portes par example, avec une couleur par piece. Si ca demande trop de couleurs, tu peux imaginer de faire un code composé de 2-3 ronds de couleurs cote à cote et en deduire un code de piéce ou de lieu. (3 ronds ca donne deja 8 valeurs possibles pour identifier ta piece ou ton lieu, et en utilisant seulement 3 couleurs differentes à reconnaitre !)

Sinon un autre dernier truc, si tu as un asservissement precis, c'est de laisser se ballader ton robot partout dans son environement et par example tout les xxx cm tu met a jour un map en ajoutant une valeur dans la case de ta carte en memoire pour les endroits accédés par ton robot : il en resultera une map en niveau de gris ou les valeur les plus grosses seront les endroits où ton robot sera passé le plus souvent, permettant de deduire les endroits les plus accessibles ou de generer un graph de navigation complété par des "poids" entre chaque point de passage permettant une navigation optimum.

L'ennui des grilles ou plans generés, c'est que ca demande un asservissement precis, et que ca supporte pas bien le changement, par example si tu places pas bien le robot au depart il sera perdu. Il faut qu'il sache precisement où il se trouve au demarrage... Avec une reconnaissance plus poussée de son environement, pas de soucis...
 
Haut