Impacts et frottement dans un jeu de billard Table des matières
Transcription
Impacts et frottement dans un jeu de billard Table des matières
Impacts et frottement dans un jeu de billard Cédric Zanni 20 avril 2009 Table des matières 1 Présentation du problème 3 2 Interface du solveur 7 3 Algorithme d'assemblage des données 10 4 Ajout du frottement de roulement 11 1 Introduction Cet article présente mon travail à l'INRIA au sein de l'équipe Bipop, cette équipe a pour domaine d'étude les problèmes mécaniques non réguliers et l'optimisation non-diérentiable. Mes tuteurs étaient Florent Cadoux et Jérome Malick. Un billard est un système mécanique faisant intervenir plusieurs problèmes physiques, l'un d'entre eux étant le frottement de glissement. La simulation de systèmes mécaniques présentant un tel frottement est un problème fréquemment rencontré dans de nombreux domaines comme le génie civil avec la mécanique des milieux granulaires, la robotique ou la synthèse d'image[2]. Du fait de l'importance de ce sujet de nombreux modèles ont été créés pour le représenter et diérentes approches sont possibles pour le simuler. Un des algorithmes est basé sur l'utilisation d'une formulation exacte du problème de Coulomb, la formulation impulsion-vitesse ('impulse-velocity'). L'algorithme (ainsi que son implémentation) mis à notre disposition par Florent Cadoux utilise ce modèle pour eectuer le calcul des forces de frottement régies par la loi de Coulomb lors de la simulation d'un système dynamique non-régulier. Certains algorithmes résolvent le problème séparément en chaque point de contact et eectuent des itérations jusqu'à obtenir une solution valide sur l'ensemble du système mécanique. A l'inverse l'algorithme de Florent Cadoux prend en compte simultanément l'intégralité des points de contact et utilise la structure du problème an de faire apparaitre un problème d'optimisation classique. Ce problème est un problème du cône du second ordre ajouté à un problème de point xe. En plus du solveur nous était fourni un exemple d'utilisation de celui-ci : la modélisation d'un système composé d'une unique bille et d'un plan. Souhaitant montrer ce que sait faire le solveur nous allons généraliser le modèle à plusieurs billes et plusieurs plans ainsi que rajouter le phénomène de dissipation d'énergie par le roulement. Cela explique donc le choix de la modélisation d'un billard puisque celui-ci retranscrit exactement la généralisation que l'on souhaite eectuer. Dans la première partie nous décrirons plus précisément le problème et eectuerons la mise en équation. Viendra alors la présentation de l'interface avec le solveur qui sera suivie par la présentation de l'algorithme d'assemblage des données qui est notre apport principal au problème. Nous terminerons par l'ajout au modèle du phénomène de dissipation de l'énergie dans le but de se rapprocher du comportement réel du système physique. 2 1 Présentation du problème Le système mécanique étudié est un ensemble de sphères pleines à répartition de masse homogène, celle-ci sont placées dans un espace délimité par des plans. Il y aura donc deux types d'interaction, des interactions entre une des sphères et une des parois et entre deux sphères. Mise à par les forces dus au contact, la seule autre force entrant en jeu est le poids. Convention de notation : Nous utiliserons un système formé de nbb sphères. Lorsque une notation fait intervenir un exposant i, celui-ci correspond à l'indice de la sphère auquel est associé la valeur. Dans le cas des vecteurs, si un vecteur s'appelle w alors . que l'on a présenté un vecteur wi c'est que ce vecteur est : w = wi . . De même on utilisera l'indexation par k pour diérencier les points de contact. Ces conventions étant xé, nous allons présenter les diérentes variables et constantes physiques entrant en jeu dans la description du système mécanique. Les diérentes constantes physiques utilisés sont les suivantes : le rayon d'une sphère rsi (on utilisera par la suite un rayon unique rs ) la masse d'une sphère mi 2 2 i le moment d'inertie d'une ¡ sphère pleine ¢ J = 3 mrs le vecteur gravité g = 0 0 −|g| avec |g| = 9.81 le coecient de frottement µ le coecient de restitution ρ. La signication physique des deux dernières constantes sera expliqué ultérieurement. La position d'une sphère ainsi que son orientation seront représentées par six Les premiers sont la position de son centre de ¡gravité piG = ¡ paramètres. ¢ ¢ x y z , les suivant sont les angles d'Euler du solide : aiE = ψ θ φ . On représentera la vitesse d'une sphère par la vitesse généralisé, notée v i . i = d (pi ), et le Celle-ci est composée de la vitesse du centre de gravité vG dt G vecteur rotation Ωi déni par Ωi = ψ̇z + θ̇u + φ̇z 0 Mzuzp a˙E . Avec par dénition : sin(θ) sin(ψ) cos(ψ) 0 Mzuzp = [z, u, z 0 ] où z = 0 , u = sin(ψ) z 0 = − sin(θ) cos(ψ) . cos(θ) 0 1 3 gure 1 : Angles d'Euler L'intérêt de la dénition de la vitesse d'un solide par la vitesse généralisée est la facilité d'expression de la vitesse en n'importe quel point M de la sphère, en eet on a alors : vM = vG + Ω ∧ (M − pG ). Avant de pouvoir passer à la mise en équation il faut encore xer les lois régissant les interactions entre solides. Comme dit dans l'introduction la loi utilisée pour représenter la réaction du support et les contacts entre sphères est la loi de Coulomb. Cette loi simple permet de modéliser de nombreux problèmes. L'interaction entre les solides ne dépend alors que d'un paramètre : le coecient de frottement µk . Celui-ci dépend uniquement de la structure et la matière des deux solides en contact, plus il est élevé plus la force s'opposant au glissement sera élevée. Présentation de la loi de Coulomb : Soit A et B deux solides, soit ek le vecteur normal orienté de B vers A, soit uk la vitesse relative de A par rapport B et rk la force appliquée par B sur A. On indice par T et N respectivement la composante tangentielle et la composante normale d'un vecteur. Soit Kµk = {x/∀x ∈ R, kxT k ≤ µk xN } le cône de Coulomb. La loi de Coulomb dit que l'un des trois cas suivant est toujours vrai lors d'un contact : décollage : r = 0 et uN ≥ 0 adhérence : r ∈ Kµ et u = 0 glissement : r ∈ ∂Kµ \0, uN = 0, uT 6= 0 opposé à rT : ∃α > 0, rT = −αuT = −αu 4 Un > 0 r = 0 u = 0 Un = 0 décollage adhérence glissement gure 2 : Les trois cas de la loi de Coulomb Voici l'explication physique de la loi de Coulomb. Dans le premier cas, le décollage, le contact est en train de se terminer, la vitesse normale est donc positive mais il n'y a pas de force entre les deux solides. Cette loi représente donc un frottement sec. Il n'y a aucune force qui 'colle' les deux solides et les empêcherait de s'éloigner l'un de l'autre. Le cas de l'adhérence est le cas ou la vitesse relative des points de contact est nulle, dans ce cas la force de contact peut se trouver n'importe où dans le cône de Coulomb. Le dernier cas est le cas de glissement, dans ce cas la vitesse relative est non nulle et contenue dans le plan de contact, la force de contact est elle comprise dans le bord du cône de Coulomb. La formulation de la loi de Coulomb ne prend pas en compte les rebonds lors des choc entre solide, il faut donc rajouter une loi permettant leur simulation. Pour modéliser ce phénomène nous utiliserons la loi d'impact de Newton. Nous allons donc inverser la composante normale de la vitesse relative uk lors d'un choc et la multiplier par le coecient de restitution ρk (dépendant des deux solides en contact). Nommons ck la vitesse normale voulue après impact, on a alors : ck = −ρk (uk )N Ceci est une loi de restitution simple qui est uniquement considérée comme étant valide pour des systèmes de géométrie semblable à des sphères. Si ρ = 0 alors le choc est inélastique, une grande quantité d'énergie peut être dissipée lors du choc, il n'y a pas de rebond. A l'inverse si ρ = 1 le choc est parfaitement élastique et le rebond sera parfait et il n'y a pas de perte d'énergie. Maintenant que l'ensemble des lois physiques a été choisi, nous pouvons passer à la mise en équation du problème. Il y a deux types de phase dans l'évolution du système : les phases de vol libre, il n'y a aucun contact. les phases de contact, un ou plusieurs contacts on lieu entre les différents éléments du système. 5 La première phase est très simple à simuler. En eet la seul force appliquée à chacune des boules est la force de gravitation universelle. Ainsi en appliquant la relation fondamentale de la dynamique on obtient directement l'équation du mouvement : d2 (p ) dt2 G = g et d2 (a ) dt2 E = 0. En revanche, lorsqu'un contact a lieu le modèle se complique. Eectuons le bilan des forces pour une sphère donnée du système, nous supposons qu'il existe N contacts dans le système, l'indice k utilisé ultérieurement servant à les numéroter. le poids mg des forces de contact rk de loi de Coulomb si la sphère est en contact avec une autre sphère ou avec le plateau. Chaque contact possède son propre coecient de frottement µk . Nous allons utiliser la relation fondamentale de la dynamique (RFD) ainsi que le théorème du moment cinétique (TFC) pour obtenir les équations du mouvement pour chacune des boules du système. d ((vG )i ) = RFD : mi dt P j TFC : Fj d dt ((LO )i ) = P j MO,j Avec (LO )j le moment cinétique de la sphère j en son centre de gravité et MO,j les moments des forces appliqués à la sphère Les seul forces possédant un moment non nul sont les forces rk dus à la loi de Coulomb. Notons Ri l'ensemble des contacts faisant intervenir la sphère i. On obtient donc : ˙ )i = mi g + r et J Ω̇i = P mi (vG k∈Ri rs ek ∧ rk Pour résumer nous obtenons donc le système suivant : ˙ )i = mi g + P mi (vG k∈Ri rk P Ji Ω̇i = k∈Ri rs ek ∧ rk loi de Coulomb Ce système est composé d'une loi dynamique,d'une loi cinétique et d'une loi de contact. Le rebond sera quant à lui géré par le solveur à condition de lui fournir les vitesses normales après impact respectant la règle précédemment dénie. Ayant obtenu le système à résoudre pour calculer l'évolution du système, il faut maintenant le mettre sous une forme acceptable par le solveur. 6 2 Interface du solveur Pour pouvoir eectuer l'implémentation de la simulation il est nécessaire de discrétiser les équations obtenues précédemment. Il faut de plus que le système soit sous une forme acceptable par le solveur utilisé. Discrétisation du problème : Soit dt le pas de temps pour la résolution du problème. Plaçons-nous au pas de temps tz et supposons de plus que l'on connaît les valeurs (pG , aE , vG , Ω) de toutes les variables au pas de temps précédent. On veut donc obtenir les valeurs de ces variables au pas de temps tk+1 = tk + dt. Posons les notations − + suivantes : vG (tk ) = vG et vG (tk+1 ) = vG , la même convention est utilisée pour l'ensemble des autres variables. Comme précédemment, deux cas se présentent : En absence de contact on a alors : + − vG = vG + dt Dans le cas où des contacts sont présent dans le système, on a alors le système : ( P i = mi g + mi v˙G k∈Ri rk P i i J Ω̇ = k∈Ri rs ek ∧ rk qui devient :½ P i )+ − (v i )− = dt(mi g + mi ((vG k∈Ri rk ) . G P J i ((Ωi )+ − (Ωi )− ) = dt( k∈Ri rs ek ∧ rk ) On introduit les grandeurs suivantes : µ mi I3 0 0 J i I3 M la matrice de masse : Soit Mi = ∗ ∗ ∗ Mi On a alors M = ∗ ∗ ¶ ∈ R6 × R6 . ∈ R6nbb × R6nbb . ∗ H matrice de la forme suivante : H= Hk,i ∈ R3N × R6nbb . ¡ ¢ V Avec Hk,i = ±I3 − (ek ) ∈¡ R3¢× R6 si la sphère i intervient dans le contact k. Sinon on a Hk,i = 0 . Sur une ligne donnée il y a deux blocs Hk,i non nul dans le cas d'un contact entre sphères, un dans le cas d'un contact avec le sol. La trans7 posée de cette matrice apparaitra elle aussi lors de la discrétisation du problème. r inconnue du système, est le vecteur composé de l'ensemble des forces de contacts au temps tz+1 multiplié par dt. v inconnue du système, est le vecteur de l'ensemble des vitesses composé . i. + (v ) 6nbb . G généralisées au temps tz+1 : v = (Ωi )+ ∈ R . . u inconnue du système, est le vecteur composé de l'ensemble de vitesse relative aux diérents point de contact au temps tz+1 . f le vecteur comprenant les diérents contraintes imposées au système . . −mi (v i )− − dtmi g G ∈ et connues au pas de temps tk+1 : f = i (Ωi )− −J . . R6nbb . On peut facilement exprimer la vitesse relative uk au point de contact k (faisant intervenir les deux sphères i et j ) en fonction de la vitesse généralisée de celles-ci. Soit P le point de contact entre les sphères on a alors : uk = vi (P ) − vj (P ) = (vG )i + Ωi ∧ (P − (pG )i ) − Ωj ∧ (P − (pG )j ) Or on a (P − (pG )i ) = rs ek et (P − (pG )j ) = −rs ek donc on peut exprimer uk en fonction de v grâce à une relation linéaire en fonction des diérentes composantes de v. Ceci est vrai pour l'ensemble des points de contact donc on peut obtenir u en calculant l'image de v par l'application linéaire associée à la matrice H. On a donc u = Hv . P . r P k∈Ri k De plus on se rend compte que H T r = k∈Ri rs ek ∧ rk . Avec ces nouvelles notations le système discrétisé à résoudre devient : M v + f = HT r u = Hv 0 loi de Coulomb0 . Les inconnues du système sont u, r et v . On discrétise donc le problème grâce à un schéma semi-implicite. En eet on va calculer H et f grâce aux données 8 de l'instant tk , tandis que l'on désigne par r les forces de contact au temps tk+1 . Le solveur fourni prend en entrée la dimension du système, le nombre de degrés de liberté, le nombre de contacts, les données présentées précédemment M , f et H , le vecteur w servant à imposer une vitesse au sol, la liste des vecteurs normaux E , la liste des coecients de frottement µ, la liste des vitesses normales désirées après impact c. Notre discrétisation du problème ne prend pas en compte la modélisation des rebonds formulé dans la partie précédente. Le vecteur c en entrée du solveur sert à gérer ce phénomène. En eet on va forcer la vitesse normale après impact à vérier la condition suivante : ½ − ck = ρk u− N si uN < 0 . ck = −u− N sinon. Ces contraintes imposent que si deux solides sont dans une phase où ils s'éloignent (il y a eu pénétration des solides durant un des pas de temps précédent) alors leur vitesse d'éloignement ne sera pas modiée. Sinon le choc vient d'avoir lieu et il faut donc appliquer la règle choisi dans la section précédente. Il faut cependant remarquer que le rebond est modélisé de manière correcte uniquement dans le cas où vG .dt est assez faible devant le rayon d'une sphère. En eet dans le cas contraire les solides peuvent se chevaucher de manière importante. Le temps étant discrétisé avec un pas de temps xe, on peut donc rater l'instant exact où a lieu le contact si la distance parcourue lors de dt est trop élevée. Nous avons donc maintenant un problème formulé de manière acceptable par le solveur et représentant l'intégralité des contraintes à modéliser. Le solveur eectuant le calcul des vitesses des solides et de la réaction du support, il ne reste plus qu'à mettre à jour les valeurs des positions des centres de gravité (pG ) des sphères ainsi que les valeurs de leurs angles d'Euler (aE ) grâce aux formules suivantes : ½ − + p+ G = pG + dtvG − + − )−1 )Ω+ aE = aE + dt((Mzuzp − ) Un problème peut apparaitre à ce niveau : en eet la matrice (Mzuzp n'est pas obligatoirement inversible (cas où θ = 0 ou π ), ce phénomène est appellé 'gimbal lock' (Une solution pour remédier à ce problème serait d'utiliser les quaternions qui sont une autre façon de représenter une rotation dans l'espace). Il faut donc maintenant voir comment récupérer les diérentes données à donner en entrée de l'algorithme. 9 3 Algorithme d'assemblage des données Voila l'algorithme permettant le calcul de l'ensemble des paramètres. On va procéder en trois temps, dans un premier temps nous allons détecter les contacts et créer leurs vecteurs vecteurs normaux ainsi qu'initialiser le vecteur f , ensuite nous allons construire la matrice H. Celle-ci ne peut en eet pas être construite lors de l'étape précédente car ses dimensions ne sont pas connues. Enn on va construire le vecteur des vitesses normales c. Pour trouver les contacts on eectue l'algorithme suivant : Durant le parcours suivant, on enregistre les contacts rencontrés en sauvegardant leur type, c'est à dire entre quel objets le contact a t'il lieu. k enregistrera le nombre de contacts trouvés. Initialement k = 0. Pour les sphères d'indice i compris entre 1 et nbb : faire, On calcule la valeur de fi ~ = p avec ~n vecteur Soit un plan d'équation : ∀X ∈ R3 ~n.X normal au plan ~ G i ).~n − p| ≤ rs alors il y a contact de la sphère avec le plan, Si |Op On incrémente le nombre de contacts : k = k + 1 On enregistre un contact entre le plan et la sphère i On sauvegarde le vecteur normal : ek = ~n On teste de même si il y a contact avec les autres plan. Fin. Pour les sphères d'indice j compris entre i + 1 et nbb faire, Soit d =k (pG )i − (pG )j k, Si d ≤ 2rs alors il y a contact entre les deux sphères, On incrémente le nombre de contacts : k = k + 1 On enregistre un contact entre la sphère i et la sphère j (p ) −(p ) On sauvegarde le vecteur normal : ek = G i d G j Fin. Lors de ce parcours du problème on a bien testé tout les cas de contact possible que se soit entre un plan et une sphère ou entre deux sphères. Ce parcours permet donc bien d'obtenir le nombre de contact dans le système à l'instant présent. De plus, on a enregistré pour chaque contact les sphères qui 10 interagissent. On peut donc maintenant parcourir ces enregistrements pour mettre à jour la matrice H. Création de H : Pour tous les contacts trouvés précédemment faire, Pour chacun des solides du contact faire, Si c'est une boule, Rajouter le bloc suivant dans H à la place du bloc de numéro de ligne le numéro du contact de colonne le numéro de la sphère ns . ¡ nc et de ¢ V numéro On a Hnc ,ns = ±I3 − (τ ) le signe devant la matrice identité est opposé pour les deux sphères participant à même contact. Fin. Fin. Sinon ne rien faire. Il ne reste maintenant plus qu'à calculer les vitesses normales désirées après impacte pour que les rebonds puissent être modélisés. Calcul des vitesses normales : On calcul u c'est à dire Hv . Ensuite pour l'ensembles des contacts k on effectue la projection de uk sur le vecteur normal au contact ek , on a (uN )k =< uk .ek >. Si (uN )k < 0 alors ck = ρk (uN )k sinon ck = −(uN )k . On a donc calculé l'intégralité des paramètres nécessaires à l'utilisation du solveur. Le modèle actuel n'est pas encore susant pour rendre compte du mouvement des solides dans un système tel qu'un billard, pour le moment si il n'y a pas de bordure au plateau alors le mouvement des boules peut être inni. En eet dans le modèle précédemment utilisé il n'y a pas de dissipation d'énergie sauf dans le cas des rebonds. Il faut donc trouver un phénomène physique permettant de justier la dissipation d'énergie puis choisir une manière de le modéliser. 4 Ajout du frottement de roulement La raison de la dissipation d'énergie est le frottement de roulement. Nous allons donc compléter notre schéma pour rendre compte de ce phénomène. Pour cela nous allons faire intervenir un couple ponctuel appliqué au point 11 de contact avec le sol. Un couple est un système d'action mécanique dont la résultante est nulle mais dont le moment résultant est non nul. Ainsi l'ajout de ce couple ne modiera pas l'équation résultant de l'application de la relation fondamentale de la dynamique, il modiera uniquement l'équation dépendant du théorème du moment cinétique. Ainsi le choix de modéliser le frottement de roulement par un couple est bien justié puisque celui-ci ne va intervenir que sur la rotation du solide. Ce couple va être opposé et proportionnel au moment cinétique au point de contact. Notons α la norme du coecient du frottement de roulement et appelons le moment résultant du couple M r . Nous calculons dans un premier temps la valeur du moment cinétique, nous verrons ensuite comment le système d'équations est modié. Notons ρs la masse volumique de la sphère, on a alors : R ~ )dτ . ~ ∧ v(M LC = ρs M ∈Sphere OM ~ ) = v(0) ~ + v~R avec vR (M ~ ) vitesse d'un point dans le référentiel Or on a v(M lié à O. R R ~ ~ )dτ ). ~ ∧ v(0)dτ ~ ∧ vR (M LC = ρs ( M ∈Sphere OM + M ∈Sphere OM On va calculer séparément ces deux intégrales. R ~ ~ ∧ v(0)dτ I1 = ρs M ∈Sphere OM R ~ ~ dτ ) ∧ v(0) I1 = ρs ( M ∈Sphere OM ~ . I1 = 2msphere rs ∧ v(0) Donc I1 est une fonction linéaire de la vitesse du centre de gravité de la sphère. On a ici G matrice associée à une application linéaire. R ~ )dτ . ~ ∧ vR (M I2 = ρs M ∈Sphere OM ~ = OC ~ + CM ~ avec C le centre de gravité de la sphère. On a OM R ~ )dτ ~ + CM ~ ) ∧ vR (M I2 = ρs M ∈Sphere (OC R ~ )dτ . ~ ∧ vR (M I2 = ρs M ∈Sphere CM ~ ∧ (Ω ∧ CM ~ ) = (CM ~ .CM ~ ).Ω − (CM ~ .Ω).CM ~ on En utilisant le fait que CM obtient : I2 = 43 πrs5 ρs Ω I2 = mi rs2 Ω. On applique le théorème du moment cinétique : P J Ω̇i = k∈Ri rs ek ∧ rk + M r P J Ω̇i = k∈Ri rs ek ∧ rk − αLC P ~ + mi (r2 Ω)). J Ω̇i = rs ek ∧ rk − α(2msphere rs ∧ v(0) s k∈Ri 12 On discrétise cette équation, et on obtient : ~ + r2 mi Ω− ) + P Ji (Ω+ − Ω− ) = dt(α(2msphere rs ∧ v(0) s k∈Ri rs ek ∧ rk ). Le seul changement par rapport à l'implémentation précédente est la modication du vecteur f qui devient alors : . . − −mi (vG )i − dtmi g 6nbb . f = − 2 − ∈R ~ −Ji Ωi + dt α(2msphere rs ∧ v(0) + rs mi Ω ) . . Les résultats obtenus sont satisfaisants visuellement dans la mesure où il n'y a pas de comportement clairement anormal qui apparaisse, cependant ce n'est pas une validation du modèle aussi poussée que la comparaison à l'expérience. Lorsqu'une boule est en roulement sa vitesse de roulement va bien s'atténuer petit à petit. La vitesse de cette atténuation dépend de la valeur du coecient α, plus celui-ci est élevé plus l'atténuation est rapide. Conclusion Nous avons eectué la modélisation d'un billard, c'est à dire la modélisation d'un système dynamique composé d'un ensemble de sphères. Pour cela il faut modéliser les impacts ainsi que deux lois de frottement, le frottement de glissement et le frottement de roulement. Nous avons pour cela utilisé la formulation d'impulsion-vitesse de la loi de Coulomb pour modéliser le frottement de glissement, un couple de force opposé au moment cinétique pour modéliser le frottement de roulement, une règle de restitution simple adapté au problème et un schéma de discrétisation semi-implicite. Le système d'équation obtenu est résolu par le solveur fourni par Florent Cadoux en utilisant une méthode d'optimisation complexe utilisant les cônes du second ordre. Les résultats obtenus sont satisfaisants et rendent bien le comportement physique attendu d'un point de vue qualitatif. Néanmoins il aurait été intéressant d'eectuer des mesures pour obtenir une validation quantitative du modèle. De plus de telles mesures auraient permis d'obtenir des valeurs pour les constantes physiques (ρ, µ et α) dans le cas du billard. Deux autres perspectives s'ouvrent à la suite de ce sujet. La première est une implémentation plus ecace de l'algorithme de d'assemblage des donnés (avec la 13 gestion du parallélisme) ainsi que son adaptation à l'utilisation d'un solveur 'sparse', en eet les données de grande taille du problème sont des matrices creuses. Enn il serait intéressant de créer une meilleure interface graphique permettant à l'utilisateur de jouer au billard de manière interactive. Références [1] Florent Cadoux. An Optimization-Based Algorithm for Coulomb's Frictional Contact. ESAIM : Proceedings 2008. [2] David Bara. Analytical Methods for Dynamic Simulation of Nonpenetrating Rigid Bodies. Computer Graphics, Volume 23, number 3, July 1989. 14