 Ce talk will be modeling and simulation of physical systems for hobbyists. Manuel Eipel wanted to lower the entry thresholds for the subject. Explaining modeling and simulation. Bienvenue sur le canal de traduction pour la conférence sur la modélisation et la simulation de systèmes physiques pour les amateurs. Cette conférence va être faite par Manuel Eipel. Donc son objectif c'est de réduire le niveau de difficulté pour s'introduire à la modélisation et la simulation physique. Et que ce soit accessible à tout le monde. Vos traducteurs seront Mikatsu et Yota. Enjoy. Je veux dire que cette présentation peut être téléchargée sur le site internet. Vous pouvez déjà essayer pendant que je parle. Et pendant que je montre les exemples, vous pouvez jouer avec aussi. Donc, on va commencer. On va un peu diviser ce titre pour voir ce que je voulais dire par ça. Et donc pour avoir un tour d'horizon de ce dont je vais parler. Donc dans un premier lieu, la modélisation. Donc dans ce contexte, créer une description mathématique du système. Donc on regarde la physique par exemple d'un robot qu'on veut construire. Un mécanisme ou quelque chose. Ensuite on extrait les effets physiques qui sont à l'œuvre. On regarde les équations qui représentent ces effets. Et on met tout ensemble. Et donc on obtient une description mathématique de notre système. Ensuite la simulation, ça veut dire qu'une fois qu'on a ce système modélisé, donc ce modèle, on utilise un ordinateur pour faire les calculs d'un instant dans le temps à un autre. Donc pour extrapoler à partir d'un état initial, pour voir quel est le comportement du système à un instant donné, après l'instant initial. Ensuite on va voir les systèmes physiques, donc le hardware, le matériel avec lequel on peut fabriquer de la physique. Donc ça peut être un robot ou quelque chose comme quelqu'un qui bricole. Je pense que vous saurez quoi faire. Et je m'adresse à des amateurs parce que je ne veux pas sous-estimer les compétences des hobbyistes en disant ça. Je veux juste dire que les ressources qu'on va utiliser sont vraiment accessibles à tous. Ce n'est pas un logiciel que vous avez besoin d'acheter, mais c'est vraiment quelque chose que tout le monde peut avoir. Maintenant, juste pour savoir qui a fait des maths à l'université. D'accord. Elle a pas mal. J'ai préparé cette présentation pour des gens qui ont à peu près un niveau de seconde en maths. Et si jamais vous voyez que votre voisin a des difficultés, vous pouvez l'aider. Dans un premier temps, quelle est la motivation derrière la simulation ? Pourquoi est-ce qu'on veut simuler quelque chose ? Imaginons qu'avec vos amis, vous voulez construire un petit robot qui se maintient lui-même en équilibre. C'est une conception assez facile, de roue à moteur pour chaque roue. Ensuite, il y a une tige qui va vers le haut avec une caméra de façon à ce qu'on puisse avoir un point de vue d'un peu plus haut et voir ce que vous faites. Et donc ça, c'est ce qu'on appelle un pendule inversé. Si vous le fabriquez comme ça sans contrôleur, il va juste tomber. Et donc c'est assez facile à implémenter. Donc vous voulez construire ça avec un copain. Et donc je voudrais modéliser ça, mais vous n'êtes pas très à l'aise avec la mécanique, mais votre copain connaît un peu mieux le hardware. Et puis vous ne l'avez pas encore, donc pour l'instant vous commencez avec du software avant de s'occuper du hardware. C'est là que la simulation peut aider. Pendant que votre ami construit le robot, vous pouvez créer le logiciel et avoir votre simulateur qui recrée le hardware, tant qu'il n'est pas là. Et vous pouvez programmer votre contrôleur et une fois que le hardware est prêt, vous gardez le contrôleur, vous enlèvez le simulateur. Et puis dans l'idéal, le système est complet et fonctionne. Donc le petit simulateur pour cet exemple est en piton. Vous pouvez aussi télécharger le code. Donc vous voyez ici que la simulation tourne déjà. C'est à l'équilibre parfait, mais si je tape dessus sur le côté, il va tomber parce que je n'ai pas activé le contrôleur. Donc si vous avez un robot qui n'est pas alimenté, il suffit de pousser un peu pour qu'il tombe. Maintenant je peux activer le contrôleur et on voit que si je le pousse, le contrôleur va le remettre en équilibre. Donc le contrôleur, c'est la partie que vous allez mettre dans le logiciel. Et donc la partie qui tombe, c'est le hardware que votre ami va construire. Je peux même le pousser un peu, juste comme exemple, de ce que vous voulez simuler avec les méthodes qu'on va voir. Le problème, c'est que je n'ai pas de temps que ça de temps. On ne va pas faire tout le chemin, mais je vais commencer par des choses vraiment basiques, des modèles vraiment basiques. Et on verra jusqu'où on arrive. Pour résumer les motivations, la simulation peut être utilisée en lieu et place du hardware, et peut servir de bandes de tests virtuels, par exemple pour des scénarios où on ne veut pas forcément utiliser le vrai hardware parce que c'est risqué, ça peut le casser, etc. Maintenant, si on prend un peu plus de recul pour modéliser, qu'est-ce qu'on peut faire ? Imaginez votre ami Newton, on coupe la pomme qui est au-dessus de lui et on se demande ce qui va se passer. Donc on peut utiliser différents niveaux de détail pour faire ça. Jusqu'à un niveau très détaillé, la pomme tombe. On fait juste une ligne qui descend à vitesse constante. C'est une observation qu'on peut faire rapidement, sans faire de mesures. Ensuite, pour quelque chose de plus détaillé, si on fait des mesures plus précises, on se rend compte que la pomme accélère. Donc vous avez une trajectoire qui est parabolique au lieu d'être rectilignée à cause de la gravité. Et enfin, si vous prenez encore plus de détails, vous pouvez rendre compte qu'il y a des frottements de l'air. Et donc la pomme ne va pas accélérer indéfiniment, mais elle va atteindre une vitesse limite. Et donc ça, c'est par exemple quand un parachutiste saute, il ne va pas accélérer indéfiniment, il va juste atteindre une vitesse limite. Donc le message que je voulais transmettre avec cette slide, c'est que, suivant la question, suivant ce que vous voulez faire avec votre modèle, vous pouvez choisir un niveau de détail à paut prier, soit vous le gardez aussi simple que possible, soit vous essayez de le faire de plus en plus détaillé. Et suivant à quelle étape vous en êtes dans votre modélisation, il y a par moments où vous voulez potentiellement avoir quelque chose avec juste l'accélération sans la saturation. Par moments, vous pouvez peut-être avoir envie d'avoir quelque chose de plus détaillé en implémentant plus de paramètres. Donc là, on va encore prendre un peu plus de recul. Donc là, on va regarder les méthodes mathématiques, on va regarder la dérivation et l'intégration. C'est quelque chose qui va en fait lier les différentes mesures physiques. Donc la position X, la vitesse V ou l'accélération A. En dérivant la position, on obtient la vitesse. Puis quand on dérive ensuite la vitesse, on va obtenir l'accélération. Et inversement, si on intègre l'accélération, on va obtenir la vitesse. Et si on intègre la vitesse, on va obtenir la position. Donc là, vous pouvez voir les équations que vous avez pu voir à l'école pour calculer la vitesse en fonction de la position. Donc la dérivée, ça va être définie par le rapport entre le rapport de la fonction que vous voulez mesurer à 2 points dans le temps, divisé par la distance en temps qui s'est parcé de point. Et vous allez prendre la limite de ce rapport quand cette distance en temps tend vers 0. Donc ça, c'est ce qu'on appelle la fonction dérivée. Ce qui va vous permettre, par exemple, à partir de la position, à un point donné à un instant puis à un point donné à un autre instant, vous allez obtenir la vitesse. Et inversement, si vous choisissez plutôt de multiplier la vitesse par la limite, pardon, si vous changez la position des... En faisant quelques manipulations mathématiques, vous pouvez arriver à écrire que pour des temps de plus en plus petits, la position à un temps un peu décalée est égale à la position plus la vitesse fois ce temps. Et donc c'est vrai quand H devient de plus en plus petit, mais on peut s'en servir pour intégrer en fait. Donc en fait, ce qu'on va voir, c'est que suivant si on dérive ou si on intègre, on va finalement se rendre compte qu'on voit soit un petit peu dans le futur, soit un petit peu dans le passé. Donc quand on fait une dérivée, en fait, on va aller de plus en plus loin dans le passé. Si on intègre, on va aller de plus en plus dans le futur et donc on va pouvoir utiliser l'intégration pour prédire finalement la position potentiellement de notre pareille. Donc par exemple, si on connaît un paramètre à intenter et qu'on essaye d'obtenir ce paramètre à un temps t plus quelque chose, alors on va choisir d'intégrer des paramètres pour obtenir et non pas choisir de dériver plus. Donc là, en fait, le problème de cette équation, c'est qu'elles ne sont pas utilisables par des ordinateurs telles qu'elles. Il va falloir trouver une méthode pour les écrire de façon compréhensible par un programme sous forme d'algorithme. Donc ce que va remplacer la limite de H qui est envers 0 par un pas de temps. Et on va calculer ça uniquement pour des multiples de ce pas de temps. Donc par exemple, notre instant t, ce sera un cas entier multiplié par notre pas de temps. On va se retrouver à discrétiser notre espace de temps pour faire nos calculs. Donc voilà ce que ça donne une fois que c'est discrétisé. Donc voilà, on obtient ça, on divise par le pas de temps et on obtient quelque chose de cette formule là. Donc x x k plus 1, c'est égal à x 2k plus la vitesse aka multiplié par le pas de temps. Et donc ça va dans un logiciel, ça peut être implémenté par une boucle forte où vous appliquez cette formule à chaque pas de temps pour obtenir le prochain. Donc ici, si je prends une feuille de calcul d'un tableur, ce n'est pas très dépendant du logiciel que vous utilisez, vous commencez par définir des constantes. Donc on prend une période d'échantillonnage d'une millisecondes avec l'unité. Ensuite on a l'index, ici on l'appelle k, on prend le temps, on l'appelle t. Et donc on est intéressé par la position x et la vitesse qu'on l'appelle v. Et donc chaque ligne va être un point dans le temps. Donc on commence à t égale 0 et tout vos 0, comme ça. Donc là voilà, on a la formule, donc on va faire en sorte que notre k soit implémenté, il soit incrementé devant à chaque étape. Donc notre temps, ce qu'on a vu, c'est que ça va être k, donc l'index multiplié par le pas de temps, donc t.s. Donc là dans les tableurs, en fait ce qu'on fait c'est qu'on utilise les symboles $ pour que la casse qu'on a choisi ne change pas quand on propage notre équation dans le tableur. Donc là, ce qu'on voit, c'est encore une fois, c'est... Donc là on écrit effectivement ce qu'on a marqué en dessous, donc la position, ce qui est égal à la position précédente plus la vitesse x le pas de temps. Et là ensuite on va choisir une vitesse par exemple 0,5 mètres par seconde. Complètement hardback, clairement. Donc là ce qu'on fait c'est qu'on répète l'opération encore et encore pour avoir les positions au fil du temps. Donc là ce qu'on va faire c'est qu'on va pouvoir afficher la position au fil du temps. Donc je choisis un graphe, on va trouver les bonnes séries de données, donc on va mettre le temps sur l'axe x et la position sur l'axe y. Voilà, donc ce n'est pas forcément très excitant, mais c'est exactement ce à quoi on s'attendait plus la façon dont on a conçu notre équation. Donc là on a une ligne de droite, une fonction affine. Là on va faire en sorte de prendre en compte l'accélération. Donc là on va la noter A. Donc on va commencer avec une accélération à T0 qui vaut 0,5 mètres par seconde carré. Et donc là on va utiliser la même formule qu'on utilisait pour la position et on va l'appliquer à la vitesse. Donc en prenant en compte l'accélération. Et on va encore une fois répéter ça encore et encore à chaque étape. Donc là on l'a répété sur une période de temps un peu plus grande. Et là ce qu'on voit c'est qu'on a une accélération constante et qu'on a intégré deux fois. Et donc vu qu'on a intégré deux fois, notre position ça va devenir une parabole au lieu d'être une fonction affine. Donc là déjà on a quelque chose qui est déjà utile. On peut aussi prendre en compte le fait que notre accélération n'est pas une constante mais elle peut venir par exemple d'un capteur d'accélération. Voilà et du coup on peut utiliser cette méthode parce qu'elle ne nécessite aucune connaissance préalable de la forme de l'accélération. On peut rentrer juste des valeurs discrètes comme ça qu'on a mesuré au fil du temps et ça nous permet d'avoir une assez bonne approximation de notre position et de nos positions futures. Donc là pour ensemble le problème c'est qu'on n'a pas d'accélééromètre. Donc où est-ce qu'on récupère cette accélération ? Ah et une chose qu'il faut savoir c'est qu'on a envie de garder le pas de temps assez petit pour avoir des données plutôt précises. Donc là ce que je vais faire c'est que je vais vous montrer quelque chose qui va donc un diagramme de bloc qui va vous permettre de résumer donc pas toutes les équations physiques mais les équations physiques basiques qui vont être utiles pour définir le fonctionnement d'un petit moteur. Donc là on va commencer par une version toute simple c'est juste une masse donc par exemple une boule de bière qui a une masse m et une vitesse v et donc là ce qu'on va envie de faire par exemple c'est changer son mouvement donc ce qu'on va faire c'est qu'on va lui appliquer une force f et là on a la deuxième loi de mouvement qui va nous donner que la force c'est égal à la masse donc il faut à l'accélération donc il faut à la dérivé de la visite s par rapport au temps Bon là je vais accélérer un peu parce que j'ai gérant plus beaucoup de temps Donc en fait on a les mêmes équations pour le mouvement linéaire, on l'a aussi pour la rotation donc voilà par rapport à l'angle en fait de rotation et par rapport à l'inertie Voilà donc là on a la force exercée par le point en fait qui est donc la masse fois la constante de gravitation qu'on va prendre en compte Les autres effets qu'on va avoir envie de prendre en compte c'est par exemple la force de rappel d'un ressort ou les facteurs d'amortissement, les frottements visqués Donc là la force de rappel du ressort par exemple on va la voir dans le cas où on a besoin d'un amortisseur d'une suspension en fait Donc voilà donc par exemple avec le robot en fait si on met la force de rappel très forte et l'amortissement très fort on va obtenir à peu près ce que je vous ai montré au début Donc là par exemple pour l'exemple on va prendre en compte la force de gravitation, la force de rappel du ressort et les amortisseurs qu'on va appeler FG, FKA et FD Ah oui donc en fait ce que je n'ai oublié de dire c'est que le F c'est pas juste une force c'est la résultante des forces donc en fait on va avoir plusieurs vecteurs de force qui peuvent être exercés dans des directions différentes à des points de différence sur notre système et on va prendre la résistance, la résultante de toutes ces forces une sorte de combinaison un peu des forces qui sont exercées Là on va définir une masse sur notre système donc par exemple un demi kilo on va définir la constante de force du ressort sur un Newton par mètres on va définir la constante d'amortissement donc 10 Newton par seconde par mètre donc là j'ai mis des paramètres un peu complètement optifs mais ce que vous avez envie de faire c'est de vraiment regarder le système que vous êtes en train de concevoir et de trouver quel paramètre vous avez besoin d'utiliser et vous allez utiliser dans votre système physique comme ça vous avez un modèle plutôt réaliste de votre système Donc là on va mettre en place les équations que je vous ai expliquées tout à l'heure j'ai oublié de rajouter aussi la constante de gravitation donc moins 9,80 mètres par seconde carré donc là voilà donc la force de gravitation donc c'est la masse fois la constante de gravitation Voilà on met les dollars pareil pour garder nos colonnes constantes on va mettre aussi la force de rappel du ressort donc le x0 là dans notre équation c'est la position d'équilibre de notre ressort donc là je l'ai mis à zéro par exemple encore une fois c'est complètement arbitraire vous devez choisir les valeurs en fonction de votre système réel donc là ce que je ne l'ai pas dit mais si vous connaissez un peu de physique et de masse ce qu'on va faire c'est qu'en fait je ne l'ai pas dit mais on va essayer de résoudre une équation différenciel en fait mais on a besoin de s'embêter avec les mathématiques derrière parce que la méthode de l'air elle simplifie tout ça pour nous donc là je vais faire une grosse simulation sur par exemple une soit d'une minute donc une soixantaine de seconde on s'apprend un petit peu de temps voilà ce que vous voyez donc là ce que vous voyez ici c'est qu'on a donc là voilà ma con ne m'ont pas de temps en fait il était trop grand donc en fait ce qu'il se passe c'est qu'en fait dans notre intégration on a une petite erreur enfin une erreur en fait assez conséquente dû à la méthode de l'air et si on prend un pas de temps trop grand en fait tout nous résultera ce qu'il faut à cause de cette erreur donc en fait si notre période en fait elle est assez petite si notre pas de temps est assez petit en fait cette erreur elle est compensée par la boucle de rétroaction mais si notre pas de temps il est pas assez grand en fait ce sera pas du tout du tout compensé et on va juste avoir un phénomène de résonance et ça va complètement exploser donc là voilà ce qu'on voit c'est si on prend un pas de temps trop grand vous voyez que en fait notre position elle diverge vers l'infini et c'est juste pas possible voilà notre simulation devient instable si on prend un pas de temps trop grand voilà le problème c'est que en fait du coup je me retrouve à simuler 6 secondes en simulé 60 donc c'est bien ça le problème et donc c'est là que vous vous rendez compte qu'il va faire un compromis entre la précision de votre modèle et sa complexité parce que si vous avez un modèle trop complexe et que vous voulez trop de précision vous allez voir besoin d'une position de calcul beaucoup trop grande donc il faut vraiment voilà et il faut aussi prendre en compte la robustesse de la simulation à quel point elle est prône à des erreurs ou pas donc la question qui m'a été posée c'était est-ce que c'était une résonance ou pas bon j'ai peut-être fait une erreur en fait dans mes calculs je vais vous montrer un exemple que j'ai préparé donc ça c'est plutôt ce que vous espérez obtenir donc vous commencez à une certaine position vous avez une oscillation donc et vous avez le... parce que vous avez le ressort qui tente de ramener la masse vers le centre et vous avez l'amortissement qui va faire qu'en fait l'amplitude de votre oscillation elle va réduire au fil du temps jusqu'à se stabiliser à une position d'équilibre bon du coup voilà donc je suis un peu à court de temps mais en fait on peut pareil donc vous avez le ressort qui tente de ramener la masse vers le centre et vous avez l'amortissement qui va faire qu'en fait l'amplitude de votre oscillation et voilà du coup voilà donc je suis un peu à court de temps mais en fait on peut pareil donc établir les mêmes genres d'équations pour des principes électriques qui vont régir le fonctionnement d'un moteur donc là je vais essayer de vous montrer très rapidement la simulation avec un moteur électrique moteur électrique. Donc là en fait ce qui est intéressant avec les moteurs électriques c'est que ça vous montre comment résoudre des problèmes, vous avez deux équations qui vont être un tric et ensemble qui vont être liés ensemble. Donc c'est aussi là où vous allez voir que il y a certains principes physiques que vous pouvez choisir d'ignorer ou pas et vous vous rendez compte par exemple que l'inductance de la bobine si vous la prenez en compte si vous l'ignorez bah dans certains cas ça a absolument aucune et ça a quasiment pas d'influence et dans certains cas suivant ce que vous cherchez à modéliser ça peut avoir une énorme influence ça dépendra encore une fois de la situation. Donc là un rapide rappel des petites astuces qu'il faut faire donc c'est avoir un pas d'échantillonnage vraiment petit donc par exemple au minimum il faudrait une centaine de fois plus rapide que le temps propre du système. Ensuite les choses que vous avez envie de faire c'est faire des diagrams de bloc aussi qui vous aide vraiment à avoir comment fonctionne votre système et qui vous permettent de garder un schéma global. Il faut que vous, ouais c'est ce que j'ai dit donc voilà qui ça vous permet de garder une, de garder au clair comment vos différentes équations, comment aux défauts ou aux principes physiques interasistes entre les deux et est-ce que vous allez obtenir ce que vous avez en entrée est-ce que vous allez obtenir la fin. Donc une chose aussi que vous avez peut-être envie de faire c'est si jamais vous voulez vraiment être sûr de ce que vous faites et si vous avez des modélisations très spécifiques utilisés des outils qui leur sont adaptés donc sci-pi, sci-lab, des choses comme ça qui permettent de qui ont déjà des choses en fait pré-construites à l'intérieur donc par exemple vous rajoutez si vous voulez prendre compte d'amortissement vous utilisez le bloc pour l'amortissement vous utilisez les blocs adaptés aux différentes choses que vous voulez modéliser ça vous évite des erreurs. Donc en fait ce que j'ai dit c'est que ce que je dis aussi c'est qu'il y a en fait des choses plus efficaces et en tout cas différentes façon de se résoudre des équations différentielles par exemple donc la méthode de RuneScoutta à différents ordres. Et les choses que vous avez en ce que vous avez aussi envie de faire c'est d'avoir des objets des logiciels qui vous permettront de visualiser aussi bien vos données que même votre système un peu comme ce que je vous ai montré au début ça permet d'avoir un bel aperçu de ce que vous faites et de voir ça semble réaliste. Bon finalement j'ai peut-être un peu trop accéléré du coup je vois qu'il me reste il me reste un peu de temps donc je vais montrer un peu comment ça marche dans un logiciel donc gratuit qui est un logiciel graphique qui utilise OpenModelica. Donc ça c'est un logiciel qui permet de faire de la mausé station avec son propre langage de définition de système. Bon ça n'a pas l'air de vouloir marcher comme je l'aimerais. Bon tant pis j'ai montré le code Python pour le simulateur que je vous ai montré au début donc voilà celui là donc avec le petit robot qui tombe. Donc ce que j'ai fait c'est que j'ai défini deux classes pour les avoir qui tournent dans des traits différents donc une pour la simulation et une pour la visualisation. Donc là la partie simulation est vraiment toute simple et en fait c'est la partie visualisation qui prend le plus d'illumine du code. Donc voilà au début donc j'ai fini tous les tas initiales dans une fourchure recette et là donc là c'est la partie simulation donc c'est vraiment ce que vous avez vu avant donc une boucle donc la voie c'est cheveux en sorte je falsifie un peu du temps réel je donne l'impression de faire du temps réel à cet endroit là. Donc là j'utilise une notation avec plus égale qui permet de en fait au le dire theta plus omega fois ts égal theta j'écris juste theta plus égal omega fois ts ça permet juste de simplifier la notation. Donc ça ça vous donne l'angle la vitesse de rotation tout ça c'est les diffus de différents effets de couple donc ça c'est les forces en fait mais en termes de rotation et non pas en termes linéaires donc c'est la belle que le couple. Voilà donc là pareil la même chose pour le mouvement linéaire. Bon bah voilà je suis à cours de temps mais je vais quand même prendre quelques questions. Bonjour merci pour la présentation je voudrais demander si vous avez le code disponible quelque part. Oui comme je l'ai dit au début du coup j'ai tous les exemples que je vous montre ils sont présents sur le site du talk donc si vous allez sur le planning des conférences sur la conférence vous avez un lien vers l'endroit où vous pouvez télécharger le code. Est ce qu'il y a d'autres exemples quelque part ? Bah pas de ma part en tout cas mais mais vous allez sûrement trouver assez facilement un million d'exemples différents pour des choses en ce style là donc là par exemple je peux y a aussi j'ai aussi un exemple avec donc la force avec la force de traînée en fait. Bon bah à finir par applaudir Manuel.