Aller au contenu


Photo
- - - - -

Routine de guidage


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

#1 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 15 septembre 2021 - 08:19

Bonjour,

 

Dans le cadre d'un mobile à 2 roues motrices qui se déplace parallèlement à une référence sur base d'une mesure Lidar, je serais intéressé de connaître votre avis sur le code qui assure le guidage du robot.

 

La distance de consigne est de 40 cm. +/- 1 cm

La référence est à droite du robot et le lidar est orienté perpendiculairement à la référence.

 

En admettant que le robot se situe à une distance de 46 cm soit trop loin de la référence qui est à sa droite : le moteur droit doit ralentir pour se rapprocher de la référence

J'utilise le calcul suivant :

Vitesse du moteur gauche ne change pas : 160

Vitesse du moteur droit : 160 - ((46 - 40) * 5) = 130

 

Si après un demi-tour le lidar se situe à une distance de 70 cm et qu'il la distance de consigne est toujours de 40 cm :

Le moteur gauche doit ralentir  : 160 - ((70 - 40) * 5 = 10  il tourne quasiment sur lui-même et ne reviendra jamais près de la référence.

Donc si la vitesse < 80 alors elle reste à 80

 

Cela fonctionne plus ou moins mais j'imagine qu'il y a des formules plus subtiles que cela pour maintenir une trajectoire idéale ou pour l'intercepter si on en est  trop loin.

 

De plus le lidar à 90° par rapport à la trajectoire ce n'est peut-être pas l'idéal. Il pourrait être à 45° mais il faut pouvoir détecter la fin de la référence...  peut-être l'orienter à 45° quand on est loin de la référence, puis le mettre perpendiculaire quand on en est proche ...

 

Merci pour vos commentaires.



#2 Sandro

Sandro

    Pilier du forum

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

Posté 15 septembre 2021 - 10:15

Bonjour,

 

Pour un montage à deux roues motrices, en général je ne définis pas mes lois de commandes en vitesse de chaque moteur, mais en vitesse linéaire et angulaire du robot (c'est ça qui définit la trajectoire, qui est ce qui nous intéresse, la vitesse individuelle des moteurs est un "détail" de bas niveau qui ne nous intéresse en général pas en soit).

 

Si ton robot a un écart e (en m) entre les roues motrices, et que les roues motrices ont un rayon R (en m), alors tu as les relations suivantes (je considère qu'une vitesse de rotation positive fait avancer la roue correspondante) :

Vitesse du robot : V_lin (en m/s) et V_th (en rad/s)

Vitesse des roues gauches et droites : w_g et w_d (en rad/s)

V_lin=(w_g + w_d)/2  * (2*pi*R) / (2*pi) = R * (w_g + w_d)/2

V_th=R * (w_d - w_g) / (d/2) =  R * (w_d - w_g) / d

et inversement :

w_d = V_lin / R + 0.5 * V_th * d / R

w_g = V_lin / R - 0.5 * V_th * d / R

 

 

Donc ce que je fais d'habitude, c'est de partir des vitesses linéaires et angulaires que je souhaite pour mon robot, et ensuite les convertir en vitesses pour chacune des roues.

NB : si tu ne veux pas te casser la tête, prends des moteurs assez rapide pour pouvoir réaliser simultanément la vitesse linéaire et angulaire max.

 

 

 

La deuxième question, c'est de définir la trajectoire que tu veux pour ton robot, et en déduire tes vitesses linéaires et angulaires.

 

Là, ça dépend beaucoup de ton cas de figure :

- faut-il prioritiser la vitesse ou le fait de rejoindre au plus "tôt" la distance cible (dans le premier cas on garde la vitesse max et on tourne en avançant ; dans le deuxième cas on peut aller jusqu'à s'arrêter, tourner sur place vers la destination, avancer vers la destination, puis suivre la "ligne" virtuelle)

- faut-il impérativement commencer à un point donné, ou a-t-on le droit de rater le début de la ligne?

- ton lidar, il est 1D (télémètre laser) ou 2D? Fixe ou monté sur un moteur? Si monté sur un servo, quel vitesse de balayage?

- ton robot est-il rapide et/ou lourd et/ou haut (en gros, est-ce qu'il peut changer brutalement de vitesse ou pas)?

 

 

Des idées de stratégies (en supposant que la ligne à suivre, la position du robot et l'orientation du robot soient connues):

Stratégie 1 : précis mais lent

a) on tourne sur place vers le début de la ligne

B) on avance vers le début de la ligne à vitesse linéaire proportionnelle à la distance au début de la ligne (limité à la vitesse max). Vitesse angulaire proportionnelle à l'erreur d'orientation par rapport au début de ligne (alternativement proportionel + dérivée (PD) pour plus de précision)

c) on tourne sur place pour s'orienter dans le sens de la ligne

d) on avance à vitesse linéaire constante. Vitesse angulaire proportionnelle+dérivée sur la distance à la ligne. Si jamais la distance à la ligne est trop grande, faire d')

d') s'arrêter et se tourner vers le point le plus proche de la ligne, puis avancer jusqu'à la ligne, puis retourner au c)

 

Stratégie 2 : rapide et simple, peu précis

a) on s'oriente vers la fin de la ligne en tournant sur place

B) on avance à vitesse max, vitesse angulaire proportionnelle (éventuellement PD pour plus de précision) à la distance à la ligne


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.


#3 Mike118

Mike118

    Staff Robot Maker

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

Posté 15 septembre 2021 - 11:52

Un peu vieux et largement dépassé mais on reste dans le thème : https://www.robot-maker.com/forum/topic/6870-rmad-le-robot-fou-p/ 

ça peut néanmoins donner des idées ... Juste avec des aop tu peux faire le contrôle de ton robot ... Donc avec un microcontrôleur ça sera encore plus facile ;)

Attention toutefois, il ne faut pas se contenter d'un seul capteur orienté perpendiculairement au mur, si mon capteur était orienté à 45° vers l'avant c'est pour une raison bien précise ...

 


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  

 

 

 


#4 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 16 septembre 2021 - 06:18

Super. Un grand merci. J'ai de la matière à réfléchir pour plusieurs jours :)



#5 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 14 novembre 2021 - 03:36

Bonjour,

Je "déterre" un peu ce sujet car il est toujours d'actualité en ce qui me concerne.

Je n’ai pas encore suivi les conseils de Mike. J’ai utilisé une méthode qui me paraît plus simple et qui apparemment fonctionne mais est probablement perfectible.

 

Il s'agit d'un mobile à 2 roues motrices. Poids 25 kg.

2 moteurs d’essuie glace, encodeurs, Lidar 1D monté sur servo.

En début de cycle le robot est placé à une distance approximative de 70 cm parallèlement à une référence : mur, planche, cloison...

Un lidar pointé vers la référence légèrement orienté vers l’avant (20°) donne la distance par rapport à la référence.

L'objectif est qu'il roule parallèlement à cette référence pendant +/-12 mètres à une vitesse de 8m/s. Ensuite il fait demi-tour et s’éloigne de la référence de 20 cm .

Il ne doit pas tourner sur place pour se placer à la bonne distance mais rouler jusqu’à ce que la distance soit correcte avec une tolérance de 1 cm.

 

On peut rater le tout début de la ligne

Les corrections de trajectoire se font en douceur.

 

Actuellement j’utilise la formule suivante :

La référence est à droite.

Distance actuelle 74 cm

Distance de consigne : 70 cm

Ecart D1 = 74 – 70 = 4cm

Il faut aller vers la droite et donc la vitesse de la roue gauche étant constante, la vitesse de la roue droite doit diminuer :

Vitesse roue gauche = 80

Vitesse roue droite = 80 – (D1 * 1.1)

 

Il faut juste trouver le bon coefficient à appliquer mais cela fonctionne sans trop de louvoiement.



#6 Mike118

Mike118

    Staff Robot Maker

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

Posté 14 novembre 2021 - 05:11

Quels conseils ? En aucun cas je ne recommandais de le faire avec des AOP ;) Je disais seulement que vu que c'est faisable avec des AOP c'est forcément faisable avec un micro-contrôleur et normalement plus facilement =). 
Le seul conseil c'est de mettre le capteur orienté un peu vers l'avant, perso je le mettais à 45° mais à toi de trouver l'angle qui te convient le mieux ;)

Par contre 8m/s c'est plutôt rapide surtout pour un engin de 25 kg ( un peu moins de 30 km/h ) j'aimerais pas être devant le machin si il ne s'arrête pas ! x) 

Par contre quand le système fait demi tour, comment est ce qu'il conserve sa référence en visu ? Vu que maintenant le lidar va pointer de l'autre côté ...


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  

 

 

 


#7 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 14 novembre 2021 - 05:58

Concernant les conseils : je n'ai pas appliqué la formule que tu as suggérée.

Concernant la vitesse du bolide je me suis trompé: c'est 9 m / minute. Bien vu :)

Donc très lent.

Pour le virage c'est une très bonne question. Il y a un encodeur sur chaque roue (400 pulses par tour) et un demi tour correspond à +/- 2000 pulse.

C'est plus ou moins bon mais il me semble qu'il y a parfois du glissement car il ne sort pas toujours dans l'axe. Il fait un tour sur lui-même avec une roue en avant et l'autre en arrière. Ce n'est peut-être pas l'idéal.

Pour l'instant les encodeurs ne sont pas montés sur l'axe des moteurs mais sur une roue qui frotte sur chaque roue motrice.

(Pour faire les mises au point j'ai refait un second robot simplifié plus petit et facile à manipuler >photo).

L'idée de départ était que les roues sur lesquelles se trouvent les encodeurs, soient en contact avec le sol pour éviter de compter des pulses quand la roue motrice patine.

Je ne sais pas trop bien quelle est la meilleure solution.

Pour effectuer des virages à des angles précis, essayé d'utiliser la boussole du téléphone mais c'est pas du tout précis.

 

Merci



#8 Mike118

Mike118

    Staff Robot Maker

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

Posté 14 novembre 2021 - 07:42

Je ne suis pas sur de bien comprendre la problématique de la rotation mais avec un codeur même si tu as un petit glissement le système devrait pouvoir être remis suffisamment en position pour que le système de suivi reprenne la main. En tout cas je ne te recommande pas la boussole ... Si tu es à côté d'un truc métallique ou autre ça peut énormément te perturber. Par contre tu peux compléter tes codeurs avec un imu et plus particulièrement le gyro =) 

Pour le changement de coté un truc simple, tu mets un deuxième capteur de l'autre côté ... 

 


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  

 

 

 


#9 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 14 novembre 2021 - 08:16

Quand le robot a fait demi tour, le servo fait tourner le lidar de l'autre côté. J'ai fait comme ça pour éviter de mettre une troisième car il y en a un second qui est dirigé vers l'avant en continu

 

Oui c'est vrai que si à la sortie d'un virage à 180° il y a une référence à suivre, c'est ok. Mais dans certains cas j'aimerais que le robot continue sa course juste en se basant sur les valeurs des encodeurs. Donc s'il sort de travers, sa trajectoire sera mauvaise et il doit se repositionner par rapport à une référence.

Je vais tester en laissant les roues codeuses au sol plutôt que contre les roues motrices.

 

Merci pour tes commentaires.



#10 Mike118

Mike118

    Staff Robot Maker

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

Posté 14 novembre 2021 - 09:08

Ah mais tu avais pas dit que le lidar 1D était sur un servo ! :P 

Cela change pas mal la donne. 

Si tu peux te permettre d'arrêter le robot tu peux faire un scan avec le lidar et le servo et en déduire l'angle de ton mur ... 


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  

 

 

 


#11 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 14 novembre 2021 - 09:33

Oui en effet on peut déduire l'angle du mur. Dans le cas où il y a un mur.

Mais dans le cas où il fait un virage à 90° puis qu'il n'a plus de référence l'angle de 90° devrait être précis parce que ensuite il doit parcourir une certaine distance rien qu'en tenant compte des valeurs des encodeurs.



#12 Mike118

Mike118

    Staff Robot Maker

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

Posté 14 novembre 2021 - 11:33

Peux tu donner un exemple concret genre faire un schémas en vue de dessus qui représente le trajet que doit faire le robot et le mur de référence ? 

Par ce que le virage de 90° en plus de le faire avec les encodeurs et l'imu, ( normalement tu devrais être suffisamment précis. Tu peux éventuellement le vérifier en faisant un scan avec le lidar sur le mur de référence en étant à l'arrêt ...


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  

 

 

 


#13 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 28 juin 2022 - 08:02

Je déterre ce sujet car il est toujours d'actualité en ce qui me concerne.
Je suis toujours à la recherche d'une solution simple et efficace pour guider un mobile à 2 roues motrices le long d'une référence (mur, panneau, ...)

Il y a évidemment de nombreuses solutions possibles.

 

2 roues motrices de 100 mm et une roue folle frontale

50 RPM

1 lidar rotatif à l'avant : il mesure les distances à gauche, devant et à droite.

2 encodeurs qui roulent au sol (donc non connectés aux roues motrices)

 

L'idée est la suivante :

Le robot est placé à 40 cm d'un mur de 12m de long.

Le robot doit conserver la distance de 40 cm.

Arrivé au bout du mur il fait demi-tour et revient se positionner à 40 cm du mur en revenant à sa position de départ.

 

Le système fonctionne mais je souhaiterais l'optimiser surtout quand le robot est plus loin de la référence (par exemple à 80cm) et qu'il doit venir se replacer parallèle à la référence à 40 cm.

 

Je n'ai pas encore appliqué les conseils de Sandro (voir ci-dessus). Cela me paraît une solution compliquée à mettre sur pied en ce qui me concerne mais peut-être la plus efficace.

 

Je sais que pour que le robot avance droit il faut envoyer en PWM 130 pour la roue gauche et 200 pour la roue droite (oui la différence entre les 2 moteurs est très importante pourtant ils sont identiques).

L'idée serait de définir 3 cas distincts : 1) sur la trajectoire avec une tolérance de +/- 2 cm 2) entre 2 et 10 cm 3) et > 10 cm.

Pour chaque cas des vitesses différentes pour chaque moteur.

Si le robot se trouve très proche de la ligne, la correction est faible.

 

Est-ce une approche qui tient la route selon vous ?

 

 

 

 





Fichier joint  TRACK.jpg   51,22 Ko   2 téléchargement(s)



#14 Melmet

Melmet

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 520 messages
  • Gender:Male
  • Location:Saint-Sozy (46200)

Posté 29 juin 2022 - 12:12

Je déterre ce sujet car il est toujours d'actualité en ce qui me concerne.
Je suis toujours à la recherche d'une solution simple et efficace pour guider un mobile à 2 roues motrices le long d'une référence (mur, panneau, ...)

Il y a évidemment de nombreuses solutions possibles.

 

2 roues motrices de 100 mm et une roue folle frontale

50 RPM

1 lidar rotatif à l'avant : il mesure les distances à gauche, devant et à droite.

2 encodeurs qui roulent au sol (donc non connectés aux roues motrices)

 

L'idée est la suivante :

Le robot est placé à 40 cm d'un mur de 12m de long.

Le robot doit conserver la distance de 40 cm.

Arrivé au bout du mur il fait demi-tour et revient se positionner à 40 cm du mur en revenant à sa position de départ.

 

Le système fonctionne mais je souhaiterais l'optimiser surtout quand le robot est plus loin de la référence (par exemple à 80cm) et qu'il doit venir se replacer parallèle à la référence à 40 cm.

 

Je n'ai pas encore appliqué les conseils de Sandro (voir ci-dessus). Cela me paraît une solution compliquée à mettre sur pied en ce qui me concerne mais peut-être la plus efficace.

 

Je sais que pour que le robot avance droit il faut envoyer en PWM 130 pour la roue gauche et 200 pour la roue droite (oui la différence entre les 2 moteurs est très importante pourtant ils sont identiques).

L'idée serait de définir 3 cas distincts : 1) sur la trajectoire avec une tolérance de +/- 2 cm 2) entre 2 et 10 cm 3) et > 10 cm.

Pour chaque cas des vitesses différentes pour chaque moteur.

Si le robot se trouve très proche de la ligne, la correction est faible.

 

Est-ce une approche qui tient la route selon vous ?

 

 

 

 




attachicon.gifTRACK.jpg

Tu ne peux pas partager ton code source?


Ne demande jamais à un robot de faire ce que tu peux faire toi même. :nono: :laugh1:


#15 Mike118

Mike118

    Staff Robot Maker

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

Posté 29 juin 2022 - 07:28

Je déterre ce sujet car il est toujours d'actualité en ce qui me concerne.
Je suis toujours à la recherche d'une solution simple et efficace pour guider un mobile à 2 roues motrices le long d'une référence (mur, panneau, ...)

Il y a évidemment de nombreuses solutions possibles.

 

2 roues motrices de 100 mm et une roue folle frontale

50 RPM

1 lidar rotatif à l'avant : il mesure les distances à gauche, devant et à droite.

2 encodeurs qui roulent au sol (donc non connectés aux roues motrices)

 

L'idée est la suivante :

Le robot est placé à 40 cm d'un mur de 12m de long.

Le robot doit conserver la distance de 40 cm.

Arrivé au bout du mur il fait demi-tour et revient se positionner à 40 cm du mur en revenant à sa position de départ.

 

Le système fonctionne mais je souhaiterais l'optimiser surtout quand le robot est plus loin de la référence (par exemple à 80cm) et qu'il doit venir se replacer parallèle à la référence à 40 cm.

 

Je n'ai pas encore appliqué les conseils de Sandro (voir ci-dessus). Cela me paraît une solution compliquée à mettre sur pied en ce qui me concerne mais peut-être la plus efficace.

 

Je sais que pour que le robot avance droit il faut envoyer en PWM 130 pour la roue gauche et 200 pour la roue droite (oui la différence entre les 2 moteurs est très importante pourtant ils sont identiques).

L'idée serait de définir 3 cas distincts : 1) sur la trajectoire avec une tolérance de +/- 2 cm 2) entre 2 et 10 cm 3) et > 10 cm.

Pour chaque cas des vitesses différentes pour chaque moteur.

Si le robot se trouve très proche de la ligne, la correction est faible.

 

Est-ce une approche qui tient la route selon vous ?

 

 

 

 




attachicon.gifTRACK.jpg

 

 

Oui c'est envisageable, après petites questions comme ça : 

Comment est ce que tu sais que tu as atteint la fin du mur ? 

Niveau stratégies si je devais faire ce que tu fais, je reprendrais la même stratégie de suivi de plus que je faisais avec mon robot RMAD, capteur orienté à 45° vers le mur, ( au lieu des 20°) suivi avec un asservissement PID autour d'une consigne de 56mm ( racine de 2 * 40 mm vu qu'on a 45° d'angle ... )  


Une fois arrivé au bout " routine de demi tour basé sur les codeurs " . 

Puis reprise de l'asservissement avec le capteur orienté de l'autre côté  ... 

Après sans vidéo qui montre comment le robot se comporte actuellement, ni de code on peut difficilement aider d'avantage.


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  

 

 

 


#16 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 29 juin 2022 - 09:17

Merci pour vos réponses

 

La fin du mur est détectée quand la distance renvoyée par le Lidar est x cm plus grande que la dernière distance lue.

Et cette valeur est confirmée 2 x pour être sûr qu'on est devant un "trou".

 

Merci pour la suggestion concernant l'asservissement PID. Je dois encore beaucoup apprendre :)

 

Après différents essais la simple routine de guidage avec 3 cas distincts peut donner des résultats acceptables.

Là où cela pose problème c'est que j'ai ajouté du code pour obtenir un démarrage progressif des moteurs afin d'éviter du patinage ou un démarrage de travers.

Et étant donné que les moteurs tournent à des vitesses sensiblement différentes c'est un peu la pagaille.

Le problème est probablement situé entre la chaise et le clavier mais je ne vois pas l'erreur.

Je suis en train de faire un second châssis avec des moteurs de tondeuse. Les vitesses de rotation seront probablement plus similaires.

 

Dès que cela s'éclaircit je posterai le code et une petite vidéo.

Encore merci pour votre temps.



#17 Mike118

Mike118

    Staff Robot Maker

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

Posté 29 juin 2022 - 10:06

Tu peux asservir la vitesse de tes moteurs avec un PID en fonction de tes deux roues codeuses . 


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  

 

 

 


#18 Oracid

Oracid

    Pilier du forum

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

Posté 01 juillet 2022 - 09:23

Serait-il possible de tracer une ligne sur le mur ou de tendre un fil ?

Une caméra Huskylens pourrait suivre la ligne ou le fil. https://www.robot-ma...ylens/?p=115607

Si l'Huskylens est perpendiculaire au mur, cela n'ira pas, mais si la caméra fait un angle avec le mur, alors le fil montera ou descendra dans le champ de la caméra en fonction de la distance.

Suis-je clair ?



#19 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 02 juillet 2022 - 08:29

Merci pour la suggestion.

C'est une idée à tester. Mais je m'impose de ne pas toucher à la référence. C'est de l'existant : des panneaux, murs, bordure béton, planche ...

 

J'ai fait pas mal d'essais avec le lidar et une référence :

Quand le robot est placé à une distance proche de la distance de consigne, le résultat est acceptable. Avec un code très simple.

Il faudrait optimiser le code pour obtenir une trajectoire plus rectiligne.

 

Le problème apparaît quand il est par exemple placé à 80 cm et que la distance de consigne est de 40 cm.

Il ne suffit pas dans ce cas de diminuer la vitesse d'une roue pour le faire revenir à la bonne distance par rapport à la référence.

Donc j'ai récupéré 2 mesures complémentaires du Lidar : à 45° à gauche et à droite.

Le rapport entre la mesure latérale à 90° et la mesure latérale à 45° est sûrement intéressant pour ce guidage.

L'idée est la suivante : si la distance du robot par rapport à la distance de consigne > 30 cm alors le robot doit se placer à 45° par rapport à la référence pour s'en rapprocher.

Une fois qu'il se rapproche de l'axe à suivre il doit virer pour se mettre à la bonne distance sans "traverser" l'axe.

C'est un cas fréquent qui doit se retrouver dans de nombreuses applications de guidage (autopilotes, drones, ...)

 

Il y a encore du boulot :)

Fichier(s) joint(s)

  • Fichier joint  TRACK02.jpg   54,09 Ko   0 téléchargement(s)


#20 Oracid

Oracid

    Pilier du forum

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

Posté 02 juillet 2022 - 01:45

Pourquoi le Lidar est situé à l'avant du robot ?

Ne serait-il pas préférable de le mettre entre les roues.






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

0 members, 0 guests, 0 anonymous users