Présentation de la théorie du contrôle et applications.
 

(Pour nous :
De manière générale on considère un système (S) sur lequel on peut agir au moyen d'une commande. Le but de la théorie du contrôle est alors d'amener le système (S) d'un état initial à un certain état final.)

Je vais commencer par une question : à votre avis le plus court chemin entre deux points est-il forcément la ligne droite ?
Par exemple, le petit Pierre joue au jeu suivant dans la cour d'école. Il doit se rendre d'un point A (fixé) à un point B (fixé) de la cour en touchant au moins une fois le mur. Quel est le plus court chemin possible ?
Réponse : prendre le symétrique A' de A par rapport au mur, tracer le segment [A',B]. La suite est évidente. Visualiser le résultat sur la figure exo.eps.
Mode d'emploi : dans une fenêtre de commande, taper "gv exo.eps" (ou bien utiliser ghostview, ou ghostscript, etc).

Exemple : effectuer un créneau avec sa voiture. L'idéal serait d'amener la voiture perpendiculairement, mais ce n'est pas possible. Le mouvement est nécessairement plus compliqué.
Démonstration avec la voiture en légo, essais avec les élèves. Réponse avec Scilab.
Mode d'emploi de Scilab : dans une fenêtre de commande, taper scilab. Aller dans "Démos", sélectionner "car parking", OK, puis sélectionner "car". Les valeurs initiales par défaut donnent une bonne simu mais on peut les changer.
A noter : Scilab est installé sur l'ordinateur de Pierre Pansu (PC, fixe, sous linux).

Si de plus on se donne un critère d'optimisation, on peut de plus essayer de conduire le système à cet état final en minimisant ce critère : on parle alors de contrôle optimal.

Exemple : effectuer un créneau avec sa voiture en minimisant la consommation d'essence.

Exercice : on veut conduire une voiture d'un point initial A où elle est à l'arrêt jusqu'à un point final B (à l'arrêt également), en minimisant le temps. Les commandes sont l'action sur le volant, et l'action sur l'accélérateur et le frein. Quelle est la commande optimale ?
(réponse : la trajectoire est une ligne droite : segment [A,B] ; on accélère au maximum jusqu'à (A+B)/2, puis on décélère au minimum)

On peut maintenant envisager des systèmes plus compliqués.

Exemple : effectuer un créneau avec une voiture et une remorque. Démonstrations et essais avec les élèves. Réponse avec Scilab.
Mode d'emploi : idem créneau avec une seule voiture, mais sélectionner "two trailers truck".

Autre exemple en aéronautique : contrôle optimal d'une navette spatiale en phase de rentrée atmosphérique. Le problème est le suivant : une navette spatiale s'apprête à rentrer sur Terre ; lorsqu'elle rentre dans l'atmosphère, on arrête les moteurs et elle fonctionne alors comme un planeur, le but étant de l'amener à un point précis en contrôlant uniquement la configuration aérodynamique de l'engin. Le problème est difficile car dans l'atmosphère la navette s'échauffe très rapidement à cause des frottements avec l'air, et il faut éviter qu'elle brûle ainsi que ses passagers !
Présentation de la vidéo.
Mode d'emploi : dans une fenêtre de commande, taper "xmovie navette.mpg", éventuellement aller dans "Options" et sélectionner "Double Size". Pour lancer la vidéo, cliquer sur l'icône de Lecture, et pour recommencer ramener avec la souris le curseur tout à gauche.

Exercice : roulement de pommes. Le but est d'amener une pomme d'un état initial jusqu'à un état final en la faisant rouler sans glisser (démonstrations, essais avec les élèves). Les trajectoires ne sont pas en général des lignes droites. Il faut réaliser un mouvement plus complexe.
Réponse : présentation de l'algorithme Matlab résolvant le problème.
Mode d'emploi : voir à la fin. A noter : Matlab n'est pas installé sur l'ordinateur de Pierre Pansu.

Conclusion : le plus court chemin entre deux points n'est pas forcément la ligne droite !

Dernière illustration : démonstration de la brachistochrone. A votre avis avec quelle configuration la bille arrivera-t-elle en bas le plus vite ?
Réponse : avec la courbe cycloïde !
Démonstration avec la gouttière de Pierre, ainsi que l'image brachistochrone.gif. Le meilleur effet est obtenu avec les deux gouttières "blanches", d'une part la cycloïde, d'autre part la ligne droite penchée, que l'on colle bout à bout. En lâchant les billes à la main on voit bien que celle sur la courbe cycloïde arrive en bas avant l'autre.
Mode d'emploi pour l'image brachistochrone.gif : attention ouvrir cette image avec Netscape ! En effet c'est une image animée. Lancer "Netscape", puis "ouvrir un fichier", puis sélectionner brachistochrone.gif. Adapter la taille du Netscape.
 

-----------------------------------------------------------------------------------------------------------------------------------------------------

Mode d'emploi du programme MATLAB roule.m (réalisé par F. Alouges). :

Lancer matlab dans une fenêtre de commande.
Dans la fenêtre de travail, taper roule (c'est le nom du programme).
Le programme demande une fonction definissant l'objet. Attention, il faut fournir une fonction F de 3 variables x,y et z convexe telle que le convexe soit exactement F(x,y,z)=0. Par exemple on donnera :

x.^2+y.^2+z.^2-1   pour une sphère de rayon 1
x.^2+2*y.^2+3*z.^2-1 pour un ellipsoïde
(Attention il faut mettre des . avant les operations sauf quand il s'agit d'un scalaire)

Ensuite, on tape entrée et le programme dessine deux copies de l'objet.
Attention: tout est vu de dessus. L'objet de gauche est l'origine, celui de droite la destination. Avec la souris, on peut sélectionner un objet et le bouger (bouton de gauche, pour le bouger, il faut maintenir le bouton de gauche appuyé tout en bougeant la souris). Avec le bouton de droite, on peut faire tourner l'objet (à nouveau, maintenir le bouton appuyé et bouger la souris).
Lorsque l'on est content, on appuie sur le bouton du milieu.
Si tout se passe correctement, on ne voit rien pendant un moment, puis des dessins et enfin l'animation de l'objet qui roule... Tout cela peut etre plus ou moins long suivant la machine sur laquelle on tourne (compter une trentaine de seconde en tout sur un pentium 1GHz).
Enfin le programme demande si l'on veut revoir l'animation...

Conseil : au début de votre présence au stand, trouver une fonction F qui vous plaise, et s'y tenir ! Pour cela on réduit la fenêtre de commandes au minimum, on lance l'animation et les calculs, et ensuite à chaque passage d'élèves on tape dans la fenêtre de commandes "o" + Entrée pour relancer l'animation. Inutile de tout recalculer à chaque fois ! D'autre part, on agrandira la fenêtre de visualisation, mais pas trop de manière à ce que l'animation reste fluide.
________________________

Descriptif succint du programme, pour les plus curieux :

On calcule les positions de départ et d'arrivée ainsi que les orientations. On applique l'algo:
- On part d'un controle quelconque qui ne soit pas une géodésique (ici on a 2 morceaux de géodésiques).
- On relève un chemin pour atteindre l'objectif avec une orientation quelconque.
- On corrige l'orientation.
En fait on ne calcule jamais le chemin relevé mais on essaye de bouger d'un increment de la forme
theta (Xobjectif - Xarrivee)
avec theta = 1/30,1/29,1/28 ... 1 successivement.
Sur le corps, on projette l'incrément dans le plan tangent à Xarrivee.
A chaque itération, on calcule une fois la trajectoire sur le corps courante en résolvant des morceaux de géodésiques separés par des rotations dans le plan tangent du vecteur tangent à la trajectoire (c'est geod.m qui fait ça). Pour résoudre la géodésique on résout l'equa diff :
d  (x)   (      v     )
-- ( ) = (            )
dt (v)   (-vHv/||g||*n)
Ici, n est la normale, H le Hessien et g le gradient de la fonction définissant le corps. Les rotations dans le plan tangent se font à la main.
Encore une chose tous les calculs de Hessien et de gradient se font par approximation en différences finies sur la fonction F que l'utilisateur a fournie.

Ensuite on calcule la courbure du corps le long de la trajectoire.
Enfin on résout le système differentiel en phi1, phi2, ... phi5 pour calculer G. Tout se fait avec des schémas de Runge-Kutta d'ordre 4 et des formules d'intégration numériques exactes pour G.

Dans un deuxième temps, on recommence tout ca juste pour corriger l'orientation. Puis on anime...


ÿ