Aller au contenu


Photo
- - - - -

Détection de trous dans le sol avec une caméra de profondeur


  • Veuillez vous connecter pour répondre
9 réponses à ce sujet

#1 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 262 messages
  • Gender:Male

Posté 27 avril 2021 - 03:40

Bonjour,

 

Au boulot, on a un robot équipé d'une caméra stéréo, qui nous fournit un nuage de points 3D (et une image de profondeur).

 

On s'en sert déjà pour détecter les obstacles "positifs" (ie qui dépassent du sol), ce qui marche assez bien.

 

Je voudrais maintenant faire l'inverse : détecter les obstacles négatifs, ie les "trous" dans le sol, pour que le robot s'arrête avant de tomber dans un escalier ou une marche ou une tranchée, ...

 

A première vue c'est facile : tous les points 3D qui sont en dessous du niveau du sol sont des trous.

En pratique, en tout cas avec ma caméra à 90cm de hauteur, ça ne marche pas bien du tout : j'ai énormément de faux positifs dues aux oscillations du robot.

 

Est-ce que vous avez une idée de comment identifier les trous dans ces conditions?

(si c'est une solution ROS, alors j'ai a disposition une depth image et un poincloud2, si c'est une idée d'algo,alors il "suffit" de l'implémenter)

 

Merci d'avance

Sandro


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#2 Laurent42

Laurent42

    Membre

  • Membres
  • 58 messages
  • Gender:Male
  • Location:LV-426

Posté 27 avril 2021 - 06:27

pourquoi ce robot oscille t il autant ? les roues sont toutes petites et le terrain très abimé ? une photo serait la bien venue

Laurent



#3 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 262 messages
  • Gender:Male

Posté 27 avril 2021 - 07:10

Bonsoir,

Pour les photos, je suis pas sur que le patron soit d'accord.

Mais voici quelques éléments :

- le robot est assez haut (environ 1m), et pas très long (environ 0.8m), avec des roues de quad de 23 cm de diamètre si je me souviens bien.

- le centre de masse est malheureusement  assez haut, surtout si le robot est chargé à fond

- la caméra est à 90cm du sol, et a un angle de vision vertical de 70° (donc -35° à +35°)

- on cherche a détecter de manière fiable les trous situés à moins de 3m du robot (ceux qui sont au delà, on les ignore, donc les faux positifs à plus de 3m ne sont plus un problème)

- les accélérations du robot provoquent des oscillations (nos moteurs étant très puissants, on doit limiter les accélérations/décélérations, sinon le robot se renverserait). Un sol pas plat en ajoute.

 

Pour l'instant j'ai fait les tests sur des terrains assez plats, mais au final, c'est aussi sensé marcher sur des terrains plus accidentés.

 

 

Pour finir, même si le robot n'oscille pas énormément, vu les distances en jeu, ça fait vite de grandes erreurs de hauteur.

Par exemple, si le robot oscille de 1°, à 3m de distance, ça fait une différence de hauteur de 5cm.

Donc si je veux par exemple pouvoir détecter des marches/trous de 10cm de profondeur, alors avec la solution "naive" (ie z<-10cm égal trou), il suffit d'une oscillation de 2° vers l'avant pour déclencher un faux positif ( sans même compter l'erreur de la caméra de profondeur elle même qui rajoute 2-3cm)


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#4 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 969 messages
  • Gender:Male
  • Location:Anglet

Posté 27 avril 2021 - 07:18

Je ne comprend pas pourquoi tu as des faux positifs pour la détection de trou et pas pour la détection des bosses en appliquant la même méthode  ...

Sinon sur le principe tu peux faire une dérivée spatiale. Quelque soit l'inclinaison de ton robot, la dérivé sera à peut près la même. Un trou ou une bosse provoqueront un grand écart de valeur en négatif ou en positif. 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#5 Laurent42

Laurent42

    Membre

  • Membres
  • 58 messages
  • Gender:Male
  • Location:LV-426

Posté 27 avril 2021 - 07:22

Je ne comprend pas pourquoi tu as des faux positifs pour la détection de trou et pas pour la détection des bosses en appliquant la même méthode  ...
 

c'est également la question que je me pose



#6 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 262 messages
  • Gender:Male

Posté 27 avril 2021 - 07:55

Pour les obstacles, j'ai probablement le même problème, sauf que je les traites différemment : pour les obstacles "positifs", vu que j'ai des capteurs ultrasons en plus qui détectent les obstacles même quand ils sont proche du robot, je peux me permettre d'être beaucoup moins "prudent" : je ne prends en compte les obstacles que s'ils sont à moins de 2.2m (voir plus proche encore si la vitesse est faible), et je me contente de réduire la vitesse en fonction de la distance de l'obstacle (donc un faux positif sur une frame n'aura qu'un impact très faible).

 

Pour les trous, en revanche, on voudrait ne pas ajouter de capteurs suplémentaires (c'est une fonctionnalité "mineure"). Mais comme la caméra est placée assez haut, on a une grosse zone morte (1.3m) devant le robot où les trous ne sont plus visibles : il faut donc les détecter de bien plus loin. De plus, vu que le robot est sensé s'arrêter, on prévient l'utilisateur : on aurait l'air con si le robot dit "je m’arrête à cause d'un trou" alors qu'il n'y a pas le moindre trou.

 

 

Pour la dérivée spatiale, j'ai fait quelques essais (enfin juste la différence en z entre deux points voisins) : ça marche pas trop mal, sauf que ça détecte régulièrement la bordure des obstacles comme étant des trous (je n'ai pas encore trouvé de solution à ce problème).


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#7 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 969 messages
  • Gender:Male
  • Location:Anglet

Posté 28 avril 2021 - 12:32

Perso voilà le genre de traitement que j'ai réalisé avec ce genre de caméra. 

Fichier joint  acquisition ok.JPG   78,58 Ko   1 téléchargement(s)

Fichier joint  acquisition exterieur.JPG   68,76 Ko   0 téléchargement(s)

 

L'espèce de ligne c'est une représentation 2D avec en abscisse un angle et en ordonnée une distance ... Avec ce genre d'affichage la " déformation observée est normale ... ce n'est pas une représentation x,y ..


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#8 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 769 messages
  • Gender:Male

Posté 28 avril 2021 - 06:58

Il a très longtemps, j'avais imaginé un mécanisme de détection.

Tu projettes le dessin dune ligne sur le sol, en avant du robot. La ligne subira des petites déformations dû à la non planéité du sol.

En raison de l'angle de projection, la ligne forme une section de cercle. Mais si la ligne forme subitement une section de cercle beaucoup plus grande, alors, c'est qu'il y a une pente descendante, montante, un trou ou une bosse.



#9 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 969 messages
  • Gender:Male
  • Location:Anglet

Posté 28 avril 2021 - 08:51

Il a très longtemps, j'avais imaginé un mécanisme de détection.

Tu projettes le dessin dune ligne sur le sol, en avant du robot. La ligne subira des petites déformations dû à la non planéité du sol.

En raison de l'angle de projection, la ligne forme une section de cercle. Mais si la ligne forme subitement une section de cercle beaucoup plus grande, alors, c'est qu'il y a une pente descendante, montante, un trou ou une bosse.

 

c'est déjà utilisé et ça marche très bien comme méthode ;)

la représentation de la variation de la ligne que tu vois est justement " l'affichage " de la dérivée spatiale. 
Une ligne droite représente un sol plat / une dérivée spatiale nulle. 
Un saut dans la ligne représente un creux ou une bosse ( Dérivé spatiale positive ou négative ) 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#10 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 769 messages
  • Gender:Male

Posté 28 avril 2021 - 10:50

c'est déjà utilisé et ça marche très bien comme méthode ;)

J'me suis encore fait piquer une idée . . .  :Gigakach_01:






0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users