Aller au contenu


Photo
- - - - -

Plusieurs sonars en simultané


3 réponses à ce sujet

#1 Leon

Leon

    Membre passionné

  • Membres
  • PipPipPipPipPip
  • 1 289 messages
  • Gender:Male

Posté 06 juin 2010 - 07:55

Bonjour à tous, j'avais promis de vous faire un retour sur la possibilité d'utiliser plusieurs sonars "devantech" en même temps, en émettant les pulses de plusieurs sonars en même temps.

Rappel des discussions:

pour la mesure par plusieurs télémètres ultra-sons, il est apparemment possible d'émettre sur plusieurs sonars en même temps et de mesurer la réponse en retour de chaque capteur. Je ne pourrais malheureusement pas tester ça sur BOB3, car je suis limité par le PICBASIC qui ne sait pas faire ce genre de choses. Par contre, pour le robot suivant, ça serait à tester.

Ah bon ? il me semblait justement qu'il n'était pas possible d'émettre sur plusieurs en même temps pour des raisons de perturbations entre capteurs justement. Sauf peut être si on s'arrange pour travailler sur des fréquences sonores différentes. Enfin si tu as plus d'info je suis preneur.

Apparemment, si tu envoies les pulses EXACTEMENT en même temps, les capteurs ne se perturbent pas. Ils inhibent en effet la réception lors de l'émission de leur propre pulse. Après, pour la réception, les capteurs sont suffisamment directifs pour ne pas recevoir le pulse du voisin. J'essaye de retrouver des infos, et je compte bien tester ça également.

Perso j'y crois pas trop au système d'émettre les US en même temps :/
D'abord parce que vu le % de tolérance sur les composant +-20% pour un condo par exemple il risque d'y avoir des décalages entre les émissions de chaque émetteur, sans compter les multiples réfractions possibles qui sont déphasées (en temps donc) à la réception.

Personnellement, je pense que ça fonctionne. Je ferais l'essai en temps et en heure, et je vous dirais bien évidemment si ça fonctionne ou non. Pourquoi je pense qua ça fonctionne? D'abord, parce que la génération du pulse est réalisée en software, donc quand on dit que c'est émis exactement en même temps, c'est vraiment très précis: delta inférieur à la microseconde. Ensuite, pour les réflexions multiples, il faut que l'angle de réception soit précis (à +/-30°), ce qui limite sacrément le risque. J'ai du mal à me représenter un schéma géométrique de rebond multiple qui arriverai AVANT le rebond principal d'un capteur, et dans un cône de 30°. Mais bon, je suis preneur de toute démonstration géométrique que ça peut exister.


Bilan des courses: ça fonctionne!... si, si, ça fonctionne. En fait, il faut que tous les pulses soient émis dans un laps de temps très court. J'ai réussi à envoyer 4 pulses en moins de 1.5ms, et ça fonctionne. J'ai utilisé la platine "capteurs" de BOB4 que vous pouvez voir ici

Elle est équipée de 4 sonars SRF02. J'ai testé dans plein de positions différentes, pendant plusieurs minutes, à une cadence de 5 mesures par seconde, il n'y a pas d'interférence entre les capteurs.

MAIS... il y a toujours un mais:
le controleur que j'utilise dans BOB4 (Embedded Master) est une vraie merde du point de vue de la gestion du bus I2C. Il y a des limitations complètement incompréhensibles. Pour utiliser successivement plusieurs périphériques I2C, il faut libérer une instance "I2C device" avant d'en re-déclarer une autre. Cette opération (libération/déclaration) prend 1ms à chaque fois, c'est fatal ici. C'est idiot! Je testerai plus tard avec d'autres drivers I2C qui fonctionnent différemment, mais j'ai d'autres problèmes à résoudre sur BOB4. Ce n'est pas la seule limitation de cette carte (Embedded Master). Ca a clairement été pensé par des informaticiens et pour des informaticiens, sans réfléchir aux contraintes électroniques...

L'essai ci dessus a donc été réalisé avec un autre contrôleur, à une fréquence de bus I2C de 200kHz, avec un délai très court entre les trames I2C.

Leon.

BOB4, mon drone hélicoptère autonome d'intérieur http://heli.bot.free.fr/
BOB3, mon robot autonome d'intérieur avec WiFi + Foxboard Linux http://ze.bot.free.fr/
BOB5, robot bipède simulé, puis tentative de réalisation (fail)


#2 psykokwak

psykokwak

    Membre

  • Membres
  • 27 messages
  • Gender:Male
  • Location:Paris

Posté 06 juin 2010 - 09:32

Ça marche ... oui et non...

Dans le cas où il n'y a pas de recouvrement de zones sur tes sonars, il n'y a aucun problème. Dans ce cas, il est inutile de les synchroniser.

Dans le cas où il y a de l'overlap, il faut impérativement les synchroniser et là, deux choses :
- Soit on déclenche tout le monde en même temps et bien qu'on ait en retour la distance de l'obstacle, les sonars limitrophe de celui qui sera en face de l'obstacle le détecterons aussi. Dans certaines applications cela n'est pas forcement gênant. Pour d'autres ca peut poser problèmes.
- Soit on fait du token ring et dans ce cas on à une information plus précise quant à l'orientation de l'obstacle. En revanche, il faut faire un tour de boucle complet pour actualiser toutes les valeurs et déjà qu'un sonar n'est pas très rapide...

Bref, même si le déclenchement synchronisé de tous les sonars peut sembler être une bonne astuce. Attention dans certains cas. Cela peut poser problèmes.

La meilleur solution est de faire un mix des deux : On mesure(/calcule) l'overlap entre les sonars (disposé en ceinture) et on les déclenche N par N simultanément de manière à éviter de faire un même déclenchement sur une même zone overlappé. Cela revient à avoir un token ring avec plusieurs tokens.

On multiplie par N la vitesse de fonctionnement de la boucle et on garantie la source de l'obstacle sur la ceinture.

Bien-sur, avec 4 sonars sur 360 degrés, c'est inutile.

Par contre, avec une dizaine de sonars sur 180 degrés. Pas d'autre choix que de synchroniser sequentiellement.

#3 Leon

Leon

    Membre passionné

  • Membres
  • PipPipPipPipPip
  • 1 289 messages
  • Gender:Male

Posté 07 juin 2010 - 06:14

Dans le cas où il n'y a pas de recouvrement de zones sur tes sonars, il n'y a aucun problème. Dans ce cas, il est inutile de les synchroniser.

Désolé, j'ai fait l'essai, et ce que tu dis NE fonctionne PAS chez moi. Regarde la disposition de mes capteurs. Tous sont à 90° les uns des autres, donc sans zone de recouvrement. Pourtant, si j'envoie un pulse sur un sonar pendant que l'autre est en train de faire sa mesure, ça perturbe ce 2ieme sonar. En gros, si j'émet 2 pulses à 2ms d'intervalle, ça ne fonctionne pas. Donc soit il faut émettre tous les pulses parfaitement en même temps, soit il faut attendre que l'un ait fini sa mesure avant de déclencher le 2°.

Après, ça ne marche pas chez moi, peut-être parce que les sonars sont proches les uns des autres et tous sur la même platine (transmission solidienne des sons). Sur un gros robot massif, avec des sonars montés sur des parties différentes, ça n'est peut-être pas la même chose.

Leon.

BOB4, mon drone hélicoptère autonome d'intérieur http://heli.bot.free.fr/
BOB3, mon robot autonome d'intérieur avec WiFi + Foxboard Linux http://ze.bot.free.fr/
BOB5, robot bipède simulé, puis tentative de réalisation (fail)


#4 psykokwak

psykokwak

    Membre

  • Membres
  • 27 messages
  • Gender:Male
  • Location:Paris

Posté 07 juin 2010 - 07:28

Hum, surprenant. Cela dit, je n'ai pas joué avec les deventech. Les Maxsonars (Maxbotix) sont déclenché par un signal carré sur les fronts montant. Ce qui permet de les sync à la nanoseconde près.
Quoi qu'il en soit, je pense que la solution la plus propre reste quand même de les déclencher sequentiellement intelligemment pour s'éviter des effets de bord indésirables.



Répondre à ce sujet



  


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

0 members, 0 guests, 0 anonymous users