Aller au contenu


Photo
- - - - -

Asservissement en logique floue


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

#1 arobose

arobose

    Membre

  • Membres
  • 62 messages
  • Gender:Male
  • Location:Meyreuil-France

Posté 18 juillet 2011 - 12:57

Bonjour à tous,

Pour faire suite au topic de Sicho sur la logique floue, j'en ouvre un autre plus spécifique sur la logique floue dédiée à l'asservisssment moteur/codeur de robot mobile.

Je souhaite en effet trouver une alternative à un PID classique qui nécessite pour un robot donné (type de locomotion, masse, centre de gravité,...) de determiner/modifier à chaque fois la valeur des coefficients souvent de manière empirique. Or, ce que je recherche c'est un système d'asservissement capable de s'adapter aux modifications du robot sans intervention humaine pour régler l'asservissement.
Je sais qu'il existe des solutions d'auto-tuning de PID mais autant que je sache, elles ne sont pas très fiables, c'est la raison pour laquelle je me tourne vers la logique floue.

Si certains ont des infos sur le sujet, j'aimerais avoir si possible un retour d'experience et des conseils sur les différentes solutions: Commande floue, PID flou ou autre... surtout sur l'aspect pratique et réalisation voire théorique mais spécifique à l'asservissmeent car je connais déjà la théorie générale de la logique floue.

Je vous remercie d'avance pour votre aide.


Arobose.

#2 Maïck

Maïck

    Membre passionné

  • Membres
  • PipPipPip
  • 390 messages
  • Gender:Male
  • Location:Suisse

Posté 19 juillet 2011 - 08:39

Si je me souvient bien de la théorie la logique floue est basée sur l'expérience, il faut qu'un être humain sache faire fonctionner le système.

Donc il y a quand même des paramètres à donner et pas forcément simple pour un asservissement...

Les solutions possibles m'intéressent aussi ! :)

#3 arobose

arobose

    Membre

  • Membres
  • 62 messages
  • Gender:Male
  • Location:Meyreuil-France

Posté 19 juillet 2011 - 05:33

Si je me souvient bien de la théorie la logique floue est basée sur l'expérience, il faut qu'un être humain sache faire fonctionner le système.

Donc il y a quand même des paramètres à donner et pas forcément simple pour un asservissement...

Les solutions possibles m'intéressent aussi ! :)


Oui, d'après ce que j'ai lu, il y a des experimentations à mener pour régler les bornes des différentes classes d'appartenance au départ mais d'après ce que j'ai compris après c'est auto-adaptatif.
Je continue à fouiller les docs, tutos et autres thèses si je trouve des choses compréhensibles. Si c'est le cas, je ferais partager mes résultats.

Merci en tout cas.

Arobose.

#4 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 25 juillet 2011 - 09:45

Bonjour,

J'ai déjà utilisé de la logique flou mais pas pour l'asservissement des moteurs. Plutôt pour la planification de trajectoire.
La méthode est assez intuitive et permet d'obtenir des mouvements fluides. L’inconvénient, c'est que c'est justement peut être trop 'intuitif' et pas assez 'mathématiques'.
En logique flou, tu peux customiser tout un tas de paramètres (tes fonctions d'appartenances, tes opérateurs logiques, etc.) Du coup, pour l'asservissement, il me semble que ça en fait une méthode assez adhoc qui ne permet pas d'obtenir les performances d'un PID. EDIT : Apparemment, si, avec de bon réglage, on arrive à de bonnes performances



Oui, d'après ce que j'ai lu, il y a des experimentations à mener pour régler les bornes des différentes classes d'appartenance au départ mais d'après ce que j'ai compris après c'est auto-adaptatif.


(*warning*) Non, ce n'est pas auto adaptatif. Une fois que tu as fixé tes fonctions d’appartenances et choisi tes opérateurs, l'algorithme n'apprendra pas. Il ne s'adaptera même pas. C'est un algorithme déterministe : pour deux entrées identiques, l'algorithme te calculera deux fois exactement la même sortie et ce, quelque soit le modèle de ton système !!!! (*warning*)



Le principe des systèmes flous, c'est de choisir des grandeurs d'entrées (distance à un obstacle pour la planification de trajectoire par exemple) et de les transformer en variables linguistiques (il faut transformer distance = 10.3 en distance = grand 0%, moyen 20%, petit 60% par exemple à l'aide de fonctions d'appartenances que tu auras toi même choisi).
Ensuite, tu fais tout un tas de calcul avec tes variables linguistiques (tu dresses toi même les règles du jeu (règles d'inférences) de façon intuitive : si la distance est grande, freiner peu fort, si la distance est moyenne, freiner moyennement fort, si la distance est faible, freiner très fort)
Une fois que tu as calculer toutes les règles, tu obtiens tes variables linguistiques de sorties (freiner peu fort 0%, freiner moyennement fort 15%; freiner très fort : 80%)
Il te suffit de "defuzzifier" tes variables linguistiques de sorties pour obtenir la valeur effective de freinage.


Après les avantages, c'est que t'es pas obligé de modéliser ton système, tu peux utiliser tes connaissances pour faire marcher le système de façon intuitive. Par contre, les inconvénients sont que tu doit tout régler de façon totalement adhoc. Tu n'as aucun moyen ni aucune méthode te permettant de trouver les réglages optimaux. Tu ne peux pas prouver que ton système sera stable. La précision du réglage est souvent très faible.


Je parle rapidement de la logique flou appliqué à la planification de trajectoire dans un de mes articles de mon site : http://www.ferdinand...f-etat-de-lart/
Je ne sais pas si ça peut t'aider un petit peu...


++
Black Templar

Mon site internet : http://ferdinandpiette.com/


#5 arobose

arobose

    Membre

  • Membres
  • 62 messages
  • Gender:Male
  • Location:Meyreuil-France

Posté 26 juillet 2011 - 02:23

Hello Black,

Merci pour ces infos.

C'est bien noté pour le non auto-adaptatif. J'avais lu que c'était possible dans cette présentation: http://auto.polytech.univ-tours.fr/automatique/AUA/ressources/Application_commande_floue.ppt, page 6. Mais si tu l'as experimenté tu sais de quoi tu parles.

Je crois que la complexité de la logique floue est de modéliser et définir toutes les règles nécessaires pour que le système fonctionne. Il doit falloir s'y prendre à plusieurs fois.

Certains processeurs proposent des prédispositions à la logique floue comme le 68HC12. en ce qui te concerne, tu as implémenté ta solution sur quel type de processeur ? OS ?

Merci encore.

cdlt,

Arobose

#6 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 26 juillet 2011 - 03:11

Hello Black,

Merci pour ces infos.

C'est bien noté pour le non auto-adaptatif. J'avais lu que c'était possible dans cette présentation: http://auto.polytech.univ-tours.fr/automatique/AUA/ressources/Application_commande_floue.ppt, page 6. Mais si tu l'as experimenté tu sais de quoi tu parles.


J'ai lu le début des slides et je ne vois pas ce qu'ils veulent dire par auto adaptatif... En régulation flou classique, si on veut asservir un système, le système sera asservi, quelque soit les variations "industrielle" du système. Par contre, les performances ne seront clairement pas les mêmes... donc l'auto-adaptivité, je ne vois pas où...
Après, il existe peut-être modification à apporter à la régulation flou pour la rendre auto-adaptative, mais je n'en ai jamais entendu parlé...
EDIT : Je viens d'avoir un flash ! Je me rappelle avoir lu un article (non scientifique) qui faisait une comparaison entre la régulation flou et les réseaux de neurones (sur les avantages et inconvénients de ces deux méthode pour une application spécifique il me semble)... Je ne me rappelle plus où j'ai vu ça, ni de quoi ça parlait exactement, mais c'est peut être une piste pour l'aspect auto-adaptatif... je vais essayer de retrouver l'article (même si j'ai aucune idée de où j'ai lu ça :/)


Je crois que la complexité de la logique floue est de modéliser et définir toutes les règles nécessaires pour que le système fonctionne. Il doit falloir s'y prendre à plusieurs fois.

Oui, les règles d'inférences ne se trouvent pas du premier coup. Il faut construire un set de règles de bases "au feeling" puis les modifier petit à petit de façon ahdoc pour augmenter les performances et la réactivité.

Certains processeurs proposent des prédispositions à la logique floue comme le 68HC12. en ce qui te concerne, tu as implémenté ta solution sur quel type de processeur ? OS ?

Oui, j'ai lu qu'à une certaine période, certain microcontroleur dédiés à la logique flou sont sortis. Je n'en ai jamais testé, mais apparemment, l'architecture est étudiée pour. Mais bon, ça ne dispense en rien de trouver toi même tes fonctions d'appartenances, tes règles d'inférences et de choisir les opérateurs adaptés à ton cas.
Personnellement, j'ai implémenté mon planificateur flou en C++ sur un linux embarqué (j'ai aussi testé le planificateur en utilisant directement le PC sur le robot). ça se programme facilement, même en C (il suffit de programmer une fonction par règle d'inférence et une fonction par fonction d'appartenance (voir une fonction par opérateur s'ils sont complexes)).
Et à mon avis, (je n'ai pas testé, mais j'en suis presque sur), ça tournera largement sur un microcontroleur classique, même basique ! (du moment que tu n'ai pas des centaines de règles d'inférences :P)

++
Black Templar

Mon site internet : http://ferdinandpiette.com/


#7 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 03 août 2011 - 03:06

Bonjour !

Je viens de retrouver l'article dont je parlais !!
En fait, il s'agit d'une discussion par mail d'un étudiants en math sup/spé et d'un chercheur à l'INSA qui a réalisé une installation de chauffage en couplant les réseaux de neurones à de la logique floue.
Ce mail se trouve à la fin de son dossier de TIPE sur la prévision de température par réseau de neurones. Le dossier en lui-même ne parle que de réseau de neurones, (une petite partie à la fin (3.3.1) introduit brièvement la régulation floue). Par contre, le mail parle de méthode d'adaptation des règles d'inférences grâce à un réseau de neurone. Peut-être une piste pour ton PID floue auto-adaptatif ;)

Le mail est à la page 37/48 : http://crteknologies.fr/projets/tipe_reseaux_neuronaux/dossierTIPE.pdf


Sinon, j'ai en effet sous les yeux un exemple de régulateur flou qui, malgré la finesse des réglages offre de bonnes performances. Ce sont des slides que je n'ai malheureusement pas le droit de distribuer. Par contre, je me suis lancé dans la rédaction d'une série de trois ou quatre articles sur mon blog à propos de la logique floue illustrés avec quelques exemples (planification floue c'est sur et PID floue un peu plus tard si j'arrive à bien en comprendre le principe). Je mettrais le lien d'ici quelques semaines quand j'aurais fini.

++
Black Templar

Mon site internet : http://ferdinandpiette.com/


#8 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 11 août 2011 - 07:40

Comme promis, voilà les articles : http://www.ferdinand...-logique-floue/

- Le premier donne une vue d'ensemble de la logique floue (avantages, inconvéniants, domaines d'applications etc.)
- Le second explique le fonctionnement d'un système flou (fuzzification, moteur d'inférence, défuzzification, opérateurs, etc.)
- Le troisième est un exemple de planificateur de trajectoire flou pour robot
- Le dernier est un exemple de PI flou (je ne suis pas satisfais de la façon dont je l'ai écrit, je le réécrirais peut-être d'ici noël en y incluant des simulations et l'influences des paramètres sur la réponse, mais là, je n'arrive plus à écrire :P)


Pour ce qui est de la création d'un PID flou qui s'optimise automatiquement, finalement, en cherchant sur le net, on trouve pas mal de choses intéressantes ! (bien souvent à base d'algo génétique)
Voili voilou !
++
Black Templar

Mon site internet : http://ferdinandpiette.com/


#9 arobose

arobose

    Membre

  • Membres
  • 62 messages
  • Gender:Male
  • Location:Meyreuil-France

Posté 15 août 2011 - 09:41

Salut Black Templar,

Merci pour toutes ces précisions. Désolé de ne pas avoir pu y répondre avant, j'étais en congés.

Je vais regarder tout ça, y compris ton blog avec le topic sur la logique floue et le PID.
D'ores et déjà, 2 petites suggestions:
Concernant l'article: Implémenter un PID sans faire de calculs !:
- L'asservissement en position est aussi très utile. D'ailleurs les deux types d'asservissement sont souvent utilisés.
Concernant l'article: Algorithmes de planification de trajectoires : bref état de l'art
- Je rajouterais la méthode mathématiques des clothoïdes qui sont des b-splines très utilisées dans ce domaine, que j'ai personnellement utilisé après m'être cassé la tête sur des calculs de trajectoires à base de polynômes à je ne sais plus combien de degrés.:blink:

Et bien dommage :( pour:

Sinon, j'ai en effet sous les yeux un exemple de régulateur flou qui, malgré la finesse des réglages offre de bonnes performances


Merci encore et je ferais un retour sur mes lectures et experimentations en cours.



Arobose.

#10 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 15 août 2011 - 09:58

Concernant l'article: Algorithmes de planification de trajectoires : bref état de l'art
- Je rajouterais la méthode mathématiques des clothoïdes qui sont des b-splines très utilisées dans ce domaine, que j'ai personnellement utilisé après m'être cassé la tête sur des calculs de trajectoires à base de polynômes à je ne sais plus combien de degrés.:blink:


Aurais-tu un article ou un papier sur lequel tu t'es basé pour comprendre l'algorithme ?
Sinon, l'algorithme de Mickael Deffort utilise des B-splines pour générer sa trajectoire. J'ai expliqué le principe de l'algorithme avec des polynômes à la place des splines pour simplifier (mais le principe reste le même) dans la partie planification par juxtaposition de splines polynomiales.


Et bien dommage :( pour:

Sinon, j'ai en effet sous les yeux un exemple de régulateur flou qui, malgré la finesse des réglages offre de bonnes performances


J'ai repris cet exemple dans le quatrième article bien que je n'aime pas la façon dont le l'ai écrit...
D'ailleurs, j'ai utilisé l'erreur et la variation de l'erreur pour calculer la variation de la commande comme dans les slides que je n'ai pas le droit de distribuer. J'aurais tout aussi bien pu utiliser l'erreur et la somme des erreurs pour déterminer la commande directement, ça reviendrait au même !


Merci encore et je ferais un retour sur mes lectures et expérimentations en cours.

Merci :)

Black Templar

Mon site internet : http://ferdinandpiette.com/





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

0 members, 0 guests, 0 anonymous users