HAL Id: hal-02597620
https://hal.inrae.fr/hal-02597620
Submitted on 15 May 2020
HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-entific research documents, whether they are pub-lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.
L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.
Etude, modélisation et validation du contact roue/sol
pour la simulation de véhicules et robots mobiles sous le
logiciel Adams
E. Boulesteix
To cite this version:
E. Boulesteix. Etude, modélisation et validation du contact roue/sol pour la simulation de véhicules et robots mobiles sous le logiciel Adams. Sciences de l’environnement. 2012. �hal-02597620�
INSTITUT FRANÇAIS DE MECANIQUE AVANCEE
Campus de Clermont-Ferrand - Les Cézeaux - BP 265 - Aubière Cedex - France Tél. +33 (0)4 73 28 80 00 – Fax +33 (0)4 73 28 81 00 – [email protected] –www.ifma.fr
Etude, modélisation et validation du contact
roue/sol pour la simulation de véhicules et robots
mobiles sous le logiciel Adams
Présenté par
Etienne Boulesteix
Pôle MMS Date : Du 29 mai au 7 septembre 2012 Lieu :Irstea - Centre d’Aubière
Tuteurs IFMA : Nicolas Bouton Tuteurs Irstea :
Roland Lenain
INSTITUT NATIONNAL DE RECHERCHE EN SCIENCES ET
TECHNOLOGIES POUR L’ENVIRONNEMENT ET L’AGRICULTURE
24 avenue des Landais - BP50085 - Aubière Cedex - France Tél. +33 (0)4 73 44 06 00 – [email protected] –www.irstea.fr
Fiche d’identification du document
TITRE Etude, modélisation et validation du contact roue/sol pour la simulation de véhicules et robots mobiles sous le logiciel Adams
AUTEUR Etienne Boulesteix - MMS
DATE 7 septembre 2012
PAGES 50
FICHIER Rapport_ASI_Boulesteix.pdf
ABSTRACT The internship objective is to implement tires using Pacejka theory on Adams modeled vehicles, and to determine a set of parameters to obtain a specific behavior. The main interest is saving time during the simulation.
KEYWORDS Pacejka, co-simulation, tire
RESUME L’objectif de ce stage est d’implémenter des pneumatiques utilisant la théorie de Pacejka sur des véhicules modélisés sous Adams, et de déter-miner un jeu de paramètres en vue d’obtenir un comportement précis. Le principal intérêt concerne le gain de temps lors de la simulation.
MOTS CLES Pacejka, co-simulation, pneumatiques
INSTITUT FRANÇAIS DE MECANIQUE AVANCEE
Campus de Clermont-Ferrand - Les Cézeaux - BP 265 - Aubière Cedex - France Tél. +33 (0)4 73 28 80 00 – Fax +33 (0)4 73 28 81 00 – [email protected] –www.ifma.fr
INSTITUT NATIONNAL DE RECHERCHE EN SCIENCES ET TECHNOLOGIES POUR L’ENVIRONNEMENT ET L’AGRICULTURE
24 avenue des Landais - BP50085 - Aubière Cedex - France Tél. +33 (0)4 73 44 06 00 – [email protected] –www.irstea.fr
Remerciements
Je tiens à remercier :
– Roland pour son aide, sa patience et pour m’avoir débloqué dans d’innombrables situa-tions ;
– Nicolas pour ses visites régulières et son suivi de mon travail ;
– Thierry pour son accueil et sa disponibilité (et pour m’avoir loué son bureau) ; – Marion pour ses gâteaux
Sommaire
Introduction 8 1 Présentation 9 1.1 L’Irstea . . . . 9 1.1.1 Présentation . . . 9 1.1.2 Le centre de Clermont-Ferrand . . . 9 1.1.3 L’équipe TEAM . . . 10 1.2 Contexte . . . 12 1.2.1 Projet ActiSurTT . . . 12 1.2.2 Véhicules . . . 121.2.3 Co-simulation Matlab/Simulink – Adams . . . 13
1.3 Problématiques . . . 14
1.3.1 Temps de calcul . . . 14
1.3.2 Comportement loi de Coulomb . . . 15
2 Les travaux de Pacejka 16 2.1 Origine . . . 16 2.1.1 Hans B. Pacejka . . . 16 2.1.2 Modèle semi-empirique . . . 16 2.2 La « Magic-Formula » . . . 17 2.2.1 Formule . . . 17 2.2.2 Courbe . . . 18
3 Modélisation du contact roue/sol sous Adams 19 3.1 Le module Adams/Tire . . . 19
3.1.1 Principe de fonctionnement . . . 19
3.1.2 Utilisation d’un modèle de pneumatique . . . 20
3.1.3 Utilisation d’un profil de route . . . 23
3.2 Créations des différents éléments . . . 25
3.2.1 Création d’une route . . . 25
3.2.2 Véhicule à trois roues . . . 28
3.2.3 Simulation . . . 32
3.3 Implantation sur les modèles existants . . . 37
3.3.1 Co-simulation . . . 37
3.3.2 Remplacement des roues . . . 39
4 Comparaison 40 4.1 Détermination des paramètres de Pacejka . . . 40
4.1.1 Démarche . . . 40
4.1.2 Préparation du modèle . . . 40
4.1.3 Programmation de l’algorithme de Newton-Raphson . . . 41
4.1.4 Application au modèle « cylindrique » . . . 42
4.2 Temps de calcul . . . 43
4.3.1 Problèmes rencontrés . . . 45 4.3.2 Avenir du projet . . . 45 4.3.3 Travail rendu . . . 46
Conclusion 47
Liste des figures
1 Robot Arroco . . . 8
2 Le Cemagref devient Irstea . . . . 9
3 Les différents centres . . . 10
4 Organigramme de l’UR TSCF . . . 11
5 Renversement d’un tracteur . . . 12
6 Robot Robufast . . . 13
7 Robot Arroco . . . 13
8 Cylindres avec 20, 100 et 200 faces . . . 14
9 Modification du nombre de facettes . . . 15
10 « Tire and Vehicle Dynamics » de Hans B. Pacejka . . . 16
11 Vecteurs vitesse et angle α sur un pneumatique . . . 17
12 Courbe de Pacejka . . . 18
13 Étapes pour l’utilisation du module Adams/Tire . . . 19
14 Aide pour le choix du modèle de pneumatiques . . . 20
15 Aperçu d’une pente de 15 degrés . . . 21
16 Fenêtre de création de pneumatique . . . 21
17 Fenêtre de création de route . . . 25
18 Aperçu de la route créée dans Matlab . . . 27
19 Modèle isostatique 3 roues . . . 28
20 Fenêtre de création du pneumatique arrière droit . . . 29
21 Les 3 moments d’inertie d’une roue . . . 30
22 Petit et grand rayon d’une jante . . . 30
23 Spécification d’un pneumatique Michelin – Harmony . . . 31
24 Les angles d’Euler . . . 32
25 Unités utilisées par Adams . . . 33
26 Spline unitaire . . . 34
27 Akima Spline . . . 34
28 Impact de la commande en accélération sur la vitesse . . . 35
29 Dérive du véhicule (Route plate) . . . 35
30 Route comportant deux bosses . . . 36
31 Paramètres d’import du fichier Route.stl . . . 36
32 Contournement d’une bosse par le véhicule . . . 37
33 Variation de l’accélération lors du franchissement d’une bosse . . . 37
34 Fichier de commande Simulink . . . 38
35 Trajectoire cible du robot . . . 39
36 Modèle initial RobuFast . . . 39
37 Paramétrage de la nouvelle variable Fav . . . 40
38 Export/Import de la variable F avAV D . . . 41
39 Meilleur résultat obtenu . . . 43
40 Modifications dimensionnelles du pneumatique . . . 44
Liste des tableaux
1 Coefficients de Pacejka . . . 17
2 Les différentes sections d’un fichier *.tir . . . 23
3 Les différentes sections d’un fichier *.rdf (2D) . . . 24
4 Les différentes sections d’un fichier *.rdf (3D) . . . 25
5 Variables propres aux pneumatiques . . . 29
6 Paramètres de Pacejka du fichier Simulink . . . 42
7 Paramètres de Pacejka obtenu par Newton-Raphson . . . 43
Liste des abréviations
IFMA : Institut Français de Mécanique Avancée
Irstea : Institut national de Recherche en Sciences et Technologies pour l’Environnement et l’Agriculture
TSCF : Technologies et systèmes d’information pour les agrosystèmes TEAM : Technologies pour l’Épandage, les Agro-équipements, la Mobilité
Introduction
Dans le cadre de ses recherches dans le domaine de l’agriculture, l’Institut national de Recherche en Sciences et Technologies pour l’Environnement et l’Agriculture (Irstea) est amené à réaliser des maquettes numériques de différents véhicules évoluant en milieu rural (quads, robots mobiles, ...). Une telle modélisation permet de tester de façon rapide et sans risque les différentes lois de commande, ainsi que les interactions entre le véhicules et son environnement. Pour ce faire, est utilisé un logiciel de simulation multicorps (MD Adams) et un autre de commande avancée (Matlab/Simulink).
C’est dans ce cadre que j’ai intégré une des équipes de recherche de l’Irstea : l’équipe TEAM. Le stage a duré 15 semaines, du 29 mai au 7 septembre 2012. L’objectif est d’implé-menter un nouveau modèle de pneumatique sur les maquettes numériques mettant en oeuvre la théorie de Pacejka. Ce modèle remplacera les cylindres existants qui utilisent les lois de Coulomb. Ce changement devrait permettre de réduire considérablement le temps de calcul des simulations et d’obtenir un modèle plus fidèle à la réalité.
Dans une première partie, je situerai ce stage en présentant l’institut, le contexte et en détaillant la problématique. Puis, dans une seconde partie, je présenterai les travaux de Pacejka. La troisième partie sera consacrée à la modélisation du contact roue-sol sous Adams, à travers le module Adams/Tire. Enfin, dans la quatrième et dernière partie, je m’attacherai à comparer les résultats obtenus avec les deux modèles afin de valider mon travail.
-
1
-Présentation
1.1
L’Irstea
1.1.1
Présentation
L’Institut national de Recherche en Sciences et Technologies pour l’Environnement et l’Agri-culture (Irstea) est un établissement public à caractère scientifique et technologique (EPST), placé sous la double tutelle du ministère en charge de la recherche et du ministère en charge de l’agriculture.
Irstea, nouveau nom du Cemagref, a construit au fil des ans une approche pluridisciplinaire et systémique sur trois domaines : l’eau, les écotechnologies et les territoires.
Figure 2 – Le Cemagref devient Irstea Voici quelques chiffres (doc interne, 2011) :
– 9 centres (voir Figure 3)
– 3 départements de recherche : eaux, écotechnologies, territoires – 20 unités de recherche, 5 unités mixtes de recherche
– 1600 personnes, statutaires et contractuelles : 500 ingénieurs et chercheurs, 390 techni-ciens et administratifs, 250 ingénieurs et chercheurs contractuels, 220 stagiaires (écoles et universités), 200 doctorants, 40 post-doctorants
– 400 publications par an
– Budget annuel 2010 : 115 millions e dont 31 % de ressources propres
– 30 % des recherches sont liées aux changements globaux, notamment le climat et la perte de biodiversité
– 70 % portent sur les questions liées aux eaux de surface
1.1.2
Le centre de Clermont-Ferrand
Le centre de Clermont-Ferrand est réparti sur deux sites : Aubière (Campus des Cézeaux) et Montoldre (03). Une telle implantation permet de confronter résultats académiques et réalités du terrain.
Les recherches conduites par le centre portent sur :
– Les technologies et systèmes d’information pour les agrosystèmes – La modélisation des systèmes complexes
Figure 3 – Les différents centres
Le centre, fort de ses 90 agents permanents, 25 doctorants et post-doctorants, accueille également 40 à 50 stagiaires de l’enseignement supérieur/an, et dispose d’un budget annuel de 2 millions d’euros dont 70 % de ressources propres.
Il possède divers équipements spécifiques : ferme de calcul, laboratoire de génie logiciel, laboratoire de rhéologie des matériaux, plateformes de recherche et d’expérimentation pour les épandages et la mobilité en milieu naturel, chambre anéchoîde, exploitation agricole et ateliers de prototypage mécanique.
Deux unités de recherche sont présentes sur le site :
1. Technologies et systèmes d’information pour les agrosystèmes (TSCF) 2. Laboratoire d’Ingénierie des Systèmes Complexes (LISC)
L’unité de recherche TSCF mobilise les sciences pour l’ingénieur et les sciences et techno-logies de l’information et de la communication pour conduire des recherches sur les méthodes et outils pour une ingénierie des systèmes agro-environnementaux.
Elle est divisée en plusieurs équipes : Team, Carac’Terre et Copain. Les deux premières travaillent sur le thème de recherche « Inspire », alors que la troisième travaille sur le thème de recherche « Motive » (Organigramme disponible, Figure 4). C’est au sein de l’équipe Team que j’ai réalisé mon stage.
1.1.3
L’équipe TEAM
L’équipe TEAM (Technologies pour l’Épandage, les Agro-équipements, la Mobilité) par-ticipe à la conception de systèmes intelligents dans le domaine majoritairement des agroéqui-pements, conciliant efficience (en terme de précision, vitesse de travail, autonomie...), respect de l’environnement et sûreté de fonctionnement (machines/opérateurs/applications/environne-ment).
Figure 4 – Organigramme de l’UR TSCF
Elle développe et met en oeuvre des méthodologies innovantes (outils de simulation, dé-monstrateurs, bancs de recherche et d’essais...) permettant de faciliter les développements et de caractériser les performances de dispositifs technologiques en relation avec les acteurs de la recherche et de l’industrie. Ses axes de recherche portent plus particulièrement sur :
– l’amélioration des appareils de fertilisation qui jouent un rôle très important dans la chaîne de production agricole et le respect de l’environnement,
– la mobilité des engins évoluant en milieux naturels qui impacte aussi certaines compo-santes environnementales.
Son savoir-faire peut aussi être valorisé auprès d’autres domaines d’activités. En effet, la dy-namique instaurée avec ses partenaires universitaires privilégiés (LASMEA, LaMI...), sa proxi-mité avec certaines entreprises (ex. : jeune entreprise innovante Effidence) et l’implication de son responsable d’équipe dans l’animation de l’action collective "Systèmes Intelligents & Robo-tique" du Pôle de Compétitivité ViaMéca, sont de nature à étendre le spectre d’applications et les retombées de certaines méthodes à caractère plus général développées par l’équipe TEAM. Des projets récemment lancés dans les domaines de la mécanisation de l’exploitation forestière ou de la surveillance de personnes autour de machines en relation étroite avec des partenaires industriels en sont des illustrations.
1.2
Contexte
1.2.1
Projet ActiSurTT
Le stage ici présenté fait partie d’un projet visant à réaliser des « dispositifs actifs pour la sécurité des véhicules en environnement tout-terrain ». Le budget totale avoisine 1,3 Me, pour une durée totale de 36 mois. Ce projet labellisé par le pôle de compétitivité Viameca regroupe de nombreux partenaires : Cetim, Axema, Grégoire SAS, la Caisse centrale de mutualité sociale agricole (CCMSA), Poclain Hydraulics, Phimeca, Cemagref, Lasmea, LSIS, Xlim.
Son principal objectif est de concevoir un dispositif permettant de réduire les risques liés à la conduite d’un engin agricole. En effet, la conduite en milieu tout-terrain possède de nom-breuses spécificités (manque d’adhérence, évolution sur terrains irréguliers, présence de pentes importantes . . .) et les machines également (masse, position du centre de gravité variable . . .). Le nombre d’accidents dans ce domaine est important : en moyenne entre 20 et 30 accidents mortels par an font suite au renversement de tracteurs (Source CCMSA). Malgré le nombre important de dispositifs développés dans le domaine automobile, ils restent peu transportables en dehors de ce cadre.
L’objet est de pouvoir caractériser au plus près les grandeurs d’interactions véhicule/envi-ronnement tout en développant des modules prédictifs capables d’anticiper les pertes de contrôle (renversements latéraux et longitudinaux, phénomènes de décrochages de la machine en pente dus à une rupture d’adhérence conduisant à l’effet « luge »).
Figure 5 – Renversement d’un tracteur
1.2.2
Véhicules
L’Irstea travaille sur 3 modèles de robots mobiles expérimentaux : Arroco (RobucarTT), RobuFAST et un tracteur agricole automatisé.
Aroco (Figure 7) et Robufast (Figure 6) sont deux véhicules capables d’évoluer sans in-tervention humaine, dans un milieu naturel. Ils préfigurent tout un nouveau champ de déve-loppement pour l’agriculture du futur, dit encore « la 3e voie », qui verra des machines très légères sans conducteurs, travaillant en coopération étroite. Leur domaine d’application pour-rait aussi concerner la surveillance des territoires ou le secours aux victimes de catastrophes. Aroco se localise à partir de points de repère détectés par des capteurs associés à un système de localisation-navigation, sur un parcours dessiné sur fond de carte électronique. Un système
de guidage automatique agissant sur les quatre roues directrices permet de corriger la conduite sur terrain glissant.
Figure 6 – Robot Robufast
Robufast est la dernière née des plates-formes autonomes. Elle a été conçue dans la cadre du projet ANR FAST1 coordonné par le Cemagref. Parmi ses points forts, on peut citer sa vitesse, 36km/h, cinq fois supérieure à Aroco, y compris sur terrains pentus et accidentés, avec une précision inférieure au mètre
Figure 7 – Robot Arroco
1.2.3
Co-simulation Matlab/Simulink – Adams
Afin d’effectuer des tests, les différents robots ont été modélisé sur le logiciel de simulation dynamique multi-corps MD Adams. Cependant, les commandes utilisées pour le pilotage des robots étant relativement complexes, le logiciel Matlab est utilisé pour faire de la co-simulation. Grâce à ce dernier, il est possible de commander la vitesse du robot, sa trajectoire et aussi d’obtenir les résultats sur les grandeurs mesurées afin de les exploiter une fois la simulation terminée.
1.3
Problématiques
1.3.1
Temps de calcul
Le principal problème des modèles existants est le temps de calcul important à chaque simulation. En effet, pour réaliser les simulations, Adams facétise la circonférence des cylindres afin d’estimer le comportement et les efforts sur chacune des facettes. Pour un comportement précis, il faut un nombre de facettes élevé. Cependant, plus le nombre de facettes est impor-tant, plus la simulation prend de temps. Habituellement, les simulations sont réalisées avec des cylindres comportant 100 faces (Figure 8).
Figure 8 – Cylindres avec 20, 100 et 200 faces
Par contre, choisir un nombre de facette trop élevé est inutile si on ne modifie rien d’autre. En effet, il est à adapter à deux autres éléments de la simulation : la période d’échantillonnage (step size) et la vitesse d’avance du robot. On peut donc introduire un nombre de facettes suffisants, c’est à dire un nombre à partir duquel rajouter des facettes s’avère inutile. Adams va à chaque incrémentation de la simulation faire le calcul sur la facette en contact avec le sol. Ainsi, plus la vitesse est grande (à période d’échantillonnage constante), moins de facettes sont nécessaires car entre deux incrémentations, les facettes successives qui vont être en contact avec le sol ne seront pas considérées par le logiciel.
De manière générale, il faut que le déplacement de la roue entre deux positions calculées soit inférieur à la largeur d’une facette du cylindre. Mathématiquement, on obtient :
Vavance = Rayon × Ωroue
Deplacement unitaire = Vavance∗ Techantillonage
Il faut donc vérifier :
Deplacement unitaire ≤ Largeurf acette
Le calcul de la largeur d’une facette est difficile. Pour y échapper, nous pouvons sélectionner un nombre de facettes et utiliser l’outil mesure d’Adams. On peut changer le nombre de facettes et de segments en allant dans la fenêtre d’édition du cylindre et en modifiant les champs Side count for body et Segements count for ends (Figure 9).
Figure 9 – Modification du nombre de facettes Pour augmenter la précision, il faut donc :
– diminuer la vitesse de déplacement du robot – diminuer la période d’échantillonnage
1.3.2
Comportement loi de Coulomb
La modélisation par la loi de Coulomb peut paraître simpliste au premier abord. En effet, elle n’utilise que 3 paramètres. Le remplacer par un modèle qui en plus d’être plus rapide serait plus réaliste ne peut être que bénéfique.
-
2
-Les travaux de Pacejka
2.1
Origine
2.1.1
Hans B. Pacejka
Le professeur Hans Bastiaan Pacejka est un expert reconnu dans les domaines de l’analyse de la dynamique du véhicule et de la dynamique du pneumatique. Il est Professor emeritus de la Delft University of Technology (TU Delft). Ses travaux font désormais office de référence dans ces domaines. Il a écrit plusieurs livres, dont le plus connu est « Tire and Vehicle Dynamics » (Figure 10).
Figure 10 – « Tire and Vehicle Dynamics » de Hans B. Pacejka
2.1.2
Modèle semi-empirique
Le pneumatique est la composante la plus importante dans le comportement d’un véhicule. En effet, le pneumatique étant le seul contact entre le véhicule et le sol, la précision de la modélisation dépend grandement de la validité du modèle de pneumatique.
Les travaux de Pacejka, avec la collaboration du professeur Bakker, ont commencé il y a plus de 20 ans. Ils concernent l’établissement d’une forme générale du modèle du comportement dynamique du pneumatique. Les différents modèles (pac89, pac94, pac2002, . . .) sont consi-dérés comme la référence dans le domaine et sont utilisés par la plupart des manufacturiers et constructeurs automobiles. Les équations obtenues par cette modélisation proviennent d’une combinaison semi-empirique de fonctions trigonométriques, et sont ainsi appelées « Magic For-mula ». Cette formule comporte plusieurs paramètres, qui correspondent chacun à une réalité physique et sont issus d’une identification basée sur des résultats expérimentaux.
2.2
La « Magic-Formula »
2.2.1
Formule
« Magic-Formula » est le nom donné à la méthode de calcul utilisée pour estimer la réparti-tion des efforts dans le pneumatique. Elle permet, à partir d’une même équaréparti-tion, d’obtenir une représentation des efforts horizontaux (longitudinaux et transversaux), ainsi que du moment d’auto-alignement, par simple calibration de paramètres et choix de variables.
La formule a été déterminée expérimentalement sur un banc d’essai. L’équation ne possède qu’une seule variable : l’angle α. Il représente l’angle formé par la direction du vecteur vitesse et l’axe longitudinal du pneumatique (voir Figure 11).
Figure 11 – Vecteurs vitesse et angle α sur un pneumatique
On peut donc l’obtenir en connaissant VX et VY = Vsy : α = arctan(VVXY). On aura alors
deux cas de figure : α = 0 en cas de trajectoire rectiligne et α 6= 0 pour une trajectoire de type courbe. Finalement, la formule s’écrit de la façon suivante :
y(x) = D × sin[C × arctan{B × x − E × (B × x − arctan(B × x))}]
Il s’agit de la forme générale de la « Magic Formula ». Grâce à cette formule, on peut caractériser toutes les composantes des forces exercées par les pneumatiques. Dans cette formule, B, C, D et E sont des paramètres variables qui vont changer selon l’effort que l’on veut calculer. y représente la force (ou le moment) que l’on veut calculer et x représente l’angle de glissement α. Par exemple, si l’on veut calculer la force latéral Fy, les coefficients auront alors pour valeur :
Coefficient Signification Formule
B facteur de raideur B×C×DC×D
C facteur de forme 1.30
D valeur de pic (par rapport a l’axe x) (N) a1× FZ2 + a2× FZ
E facteur de courbure a6× FZ2 + a7× FZ+ a8
BCD rigidité de dérive (pente à l’origine) a3× sin(a4× arctan(a5× FZ))
Tableau 1 – Coefficients de Pacejka
2.2.2
Courbe
Les valeurs des paramètres, et surtout du chargement Fz, influent sur les résultats obtenus
avec la formule. Si on fixe le chargement (par exemple à 500N ), et que l’on trace la force latérale en fonction de l’angle de glissement (Figure 12), on remarque plusieurs éléments :
Õ |α| < 3˚ : zone linéaire, de la forme Flat = sin(arctan(BCD)) × α
Õ La valeur maximale de l’effort a pour valeur Fymax = D
Figure 12 – Courbe de Pacejka
Une variante de cette formule utilise deux paramètres supplémentaires servant d’ offset sur chacun des axes de la courbe.
-
3
-Modélisation du contact roue/sol sous
Adams
3.1
Le module Adams/Tire
3.1.1
Principe de fonctionnement
MSC Software a doté son logiciel Adams d’un module Adams/Tire qui permet de faciliter la mise en place de pneumatiques. Il est compatible avec les différents environnement d’Adams : Adams/car, Adams/chassis, Adams/Solver et Adams/view. Dans le cadre de ce stage, l’objectif est d’utiliser le module avec Adams/View. Pour utiliser ce module, 5 étapes sont nécessaires (Figure 13) :
1. Définir le pneumatique
2. Associer un modèle de pneumatique 3. Associer un modèle de route
4. Lancer la simulation 5. Observer les résultats
3.1.2
Utilisation d’un modèle de pneumatique
Choix du modèle de pneumatique : pac2002
Au moment de la création d’un pneumatique, il faut lui associer un modèle. Ce modèle n’a pas besoin d’être créé car il en existe déjà dans la base de données partagée de Adams/Car. Tous ces fichiers ont été créés soit par MSC Software, soit directement par des fabricants (Michelin, Continental, . . .). Pour nous guider dans notre choix de modèles, l’aide d’Adams met à notre disposition un tableau (Figure 14) présentant le réalisme du comportement du pneumatique dans différentes situations.
Figure 14 – Aide pour le choix du modèle de pneumatiques
Notre choix s’est porté vers le modèle pac2002, car il s’agit du plus abouti parmi les modèles standards et que l’on a une certaine connaissance des équations sur lesquelles repose ce modèle.
Le modèle pac2002(pour PACejka 2002) a été développé par MSC Software en s’appuyant sur la modélisation de Pacejka. Il s’agit de la dernière version de ce modèle, dont les travaux ont débuté en 1987. Il est considéré comme le modèle le plus à la pointe dans le domaine du contact pneu/sol d’un véhicule et permet de caractériser le comportement d’un pneu lors du contact avec le sol pour des modèles de routes dites « lisses », c’est-à-dire dont le rayon de courbure des obstacles est supérieur au rayon de la roue. On pourra donc simuler, et obtenir des résultats cohérents, sur des champs (pentus ou non), mais pas lorsqu’un obstacle type « mur » se présente. De plus, ce modèle a été éprouvé pour des pneus de voitures, camions et avions dans des terrains accidentés dont la pente ne dépasse pas 15◦(Figure 15).
Figure 15 – Aperçu d’une pente de 15 degrés Création d’un pneumatique dans Adams/View
Pour créer un pneumatique, il faut utiliser le bouton suivant (dans Forces) : ou Build → F orces → SpecialF orce : T ire.
Dès lors, une fenêtre s’ouvre (Figure 16) avec différents champs à compléter. Pour les champs Tire Property File et Road, il faut indiquer le chemin des fichiers aux formats respectifs *.tir et *.rdf.
Contenu d’un fichier *.tir
Un fichier propriété d’un pneumatique peut s’éditer grâce à n’importe quel éditeur de texte (par exemple Notepad++ ou Gedit ) et est composé de plusieurs parties, chacune ayant un rôle spécifique.
Chaque partie de ce fichier se présente sous cette forme :
$---dimensions [DIMENSION]
UNLOADED_RADIUS = 0.29 $Free tyre radius
WIDTH = 0.175 $Nominal section width of the tyre ASPECT_RATIO = 0.8 $Nominal aspect ratio
RIM_RADIUS = 0.165 $Nominal rim radius RIM_WIDTH = 0.127 $Rim width
Elle est composée d’une ligne de séparation (en commentaire), de son titre : [DIMENSION] et d’une ligne par paramètre comprenant :
– le nom du paramètre – sa valeur
– sa signification (en commentaire)
Section Rôle
[MDI_HEADER] Caractérise le fichier (type, version, format) [UNITS] Définie les unités utilisées dans la suite du fichier
[MODEL] Définie le format (pac2002), le comportement (forces calcu-lées), le coté du pneumatique
[DIMENSION] Fixe rayon et largeur de la jante et du pneumatique [VERTICAL] Défnie le comportement vertical (rigidité, amortissement) [LONG_SLIP_RANGE] Limite le glissement longitudinal
[SLIP_ANGLE_RANGE] Limite l’angle de glissement [INCLINATION_ANGLE_RANGE] Limite l’inclinaison de la roue
[VERTICAL_FORCE_RANGE] Encadre le chargement de la roue
[SCALING_COEFFICIENTS] Modifier les valeurs précédentes avec des facteurs
[LONGITUDINAL_COEFFICIENTS] Fixe les coefficients des forces longitudinales dans le cas d’un glissement pur
[OVERTURNING_COEFFICIENTS] Fixe les coefficients de renversement
[LATERAL_COEFFICIENTS] Fixe les coefficients des forces latérales dans le cas d’un glis-sement pur
[ROLLING_COEFFICIENTS] Fixe la résistance au roulement [ALIGNING_COEFFICIENTS] Fixe les paramètres d’alignement
Tableau 2 – Les différentes sections d’un fichier *.tir
3.1.3
Utilisation d’un profil de route
Lorsque l’on utilise le module Adams/Tire, il est nécessaire de renseigner la route à utiliser, associée à son fichier de propriétés. Lors de la première utilisation d’un pneumatique, il faut créer une nouvelle route.
Les deux types de routes : 2D et 3D
On distingue deux types de routes : 2D et 3D. De même que pour les modèles de pneuma-tiques, des modèles de routes sont disponibles dans la base de données partagées Adams/Car. L’extension usuelle est *.rdf ou *.xml.Les modèles 2D sont constitués de courbes, extrudées pour leur donner une largeur. Par exemple, pour obtenir une route plate, il suffit d’extruder
Les fichiers au format xml ne sont pas reconnus dans le module Adams/-View et ne sont donc pas utilisables dans notre cas.
Contenu d’un fichier *.rdf
La version d’Adams que j’ai utilisé est la MD R2 Adams, qui date de 2006. Dans cette ver-sion, le module Adams/View n’est pas capable d’utiliser les profils de route 3D (seul Adams/Car en est capable). Nous utiliserons donc uniquement le format *.rdf. Ce dernier a une structure similaire a un fichier *.tir. On y retrouve ainsi plusieurs parties, chacune se présentant sous cette forme : $---MODEL$ [MODEL] METHOD = ’2D’ FUNCTION_NAME = ’ARC901’ ROAD_TYPE = ’flat’ Route 2D
Il y a au total 4 parties dans ce fichier (Tableau 3).
Section Rôle
[MDI_HEADER] Caractérise le fichier (type, version, format) [UNITS] Définit les unités utilisées dans la suite du fichier
[MODEL] Définit la méthode et la fonction utilisée pour générer la route
[PARAMETERS] Fixe les dimensions et les propriétés de la route (en fonction de son modèle)
Tableau 3 – Les différentes sections d’un fichier *.rdf (2D) Route 3D
Dans un fichier *.rdf d’une route 3D, il y a 6 parties (Tableau 4), dont les trois premières sont identiques à celles du modèle 2D.
Seule la route plane est visualisable dans Adams/View : les autres routes ne s’affichent pas. Le problème viendrait de l’utilisation d’une version obsolète d’Adams.
Section Rôle
[MDI_HEADER] Caractérise le fichier (type, version, format) [UNITS] Définit les unités utilisées dans la suite du fichier
[MODEL] Définit la méthode et la fonction utilisée pour générer la route
[GLOBAL_PARAMETERS] Définit les propriété de la route (algorithme, orientation) [DATA_POINTS] Ensemble de points qui définissent la route
[SINE ] Fixe les paramètres propres à la fonction utilisée
Tableau 4 – Les différentes sections d’un fichier *.rdf (3D)
3.2
Créations des différents éléments
3.2.1
Création d’une route
On renseigne au logiciel (Figure 17) : – Le nom de la route (au choix)
– La part associée à la route (.ground)
– Le fichier de propriété associé (format *.rdf) – La localisation et l’orientation
Figure 17 – Fenêtre de création de route Création d’une route personnalisée
Dans le cadre des recherches menées par l’Irstea, faire des simulations sur des routes plates ou sinusoïdale n’est pas très utile. Il faut recréer des environnements représentant une réalité sur le terrain. De tels fichiers existent déjà sous différents formats. L’objectif de cette
$---MDI_HEADER [MDI_HEADER] FILE_TYPE = ’rdf’ FILE_VERSION = 5.00 FILE_FORMAT = ’ASCII’ $---UNITS [UNITS] LENGTH = ’meter’ FORCE = ’newton’ ANGLE = ’radians’ MASS = ’kg’ TIME = ’sec’ $---DEFINITION [MODEL] METHOD = ’3D_SPLINE’ FUNCTION_NAME = ’ARC903’ VERSION = 1.00 $---ROAD_PARAMETERS [GLOBAL_PARAMETERS] CLOSED_ROAD = ’no’ SEARCH_ALGORITHM = ’SLOW’ ROAD_VERTICAL = ’0.0 0.0 1.0’ FORWARD_DIR = ’NORMAL’ $---DATA_POINT$ { X Y Z WIDTH BANK MU_LEFT MU_RIGHT }
5.000 0.000 0.000 5.000 0.000 0.900 0.900 0.000 0.000 0.000 5.000 0.000 0.900 0.900 -5.000 0.000 0.000 5.000 0.000 0.900 0.900 ... ... ... ... ... ... ...
La seule section qu’il nous faut compléter est la dernière : [DATA_POINTS]. Il y a 7 colonnes : trois pour les coordonnées des points, une pour la largeur de la route, une pour la pente de la route et deux pour les coefficients d’adhérence.
Pour générer le nuage de points correspondant à la route, nous allons utiliser Matlab. J’ai créé un fichier CreationRoute.m (Annexe A) qui génère une route avec de nombreux paramètres possibles. Il peut être divisé en plusieurs parties :
1. Initialisation de l’espace de travail 2. Paramètres de la route 3. Création du maillage 4. Création d’obstacle 5. Affichage de la route 6. Export au format *.stl 7. Export au format *.rdf
Analysons plus en détails chacune de ces parties : Initialisation de l’espace de travail
On efface toutes les variables, et on efface tout ce qui se trouve dans la fenêtre de commande. En plus, on affiche l’heure de début du calcul.
Paramètres de la route
On retrouve ici les dimensions de la route, le pas pour chacune des dimensions, la hauteur maximale des obstacles et le nom des deux fichiers à créer.
Création du maillage
On créé les vecteurs x et y, puis grâce à la fonction meshgrid on produit une grille rectan-gulaire (X et Y de même dimension). Enfin, on initialise Z pour qu’il ait la même dimension que X et Y.
Création d’obstacle
D’autres fichiers Matlab ont été créés (pente.m, bosse.m, trou.m), chacun correspondant à un type d’obstacle. Par exemple, pour créer une bosse, voici la syntaxe à utiliser :
% Bosse :
sommet=35; % Abscisse du sommet hauteur=1; % Hauteur de la bosse
lambda=4; % Longueur d’onde (bosse de type sinusoïdale)
Z=Z+bosse(sommet,hauteur,lambda,X,pasX,Z,DebutRoute); % Ajout de la bosse Affichage de la route
Ici, on utilise la fonction surf pour représenter la route. Le résultat obtenu est le suivant (Figure 18) :
Figure 18 – Aperçu de la route créée dans Matlab Export au format *.stl
http ://www.mathworks.com/matlabcentral/fileexchange/20922 . On l’utilise de cette manière :
stlwrite(nomSTL,X,Y,Z,’mode’,’ascii’) Export au format *.rdf
Il ne reste plus qu’a générer le fichier route. On l’ouvre (s’il n’existe pas, il sera créé) avec la fonction fopen, puis on réécrit l’entête du fichier minimal (voir 3.2.1) avec la fonction fprintf. On fini par écrire l’ensemble du nuage de points :
fprintf(fid,’\r\n%16.7e %15.7e %15.7e %15.7e %15.7e %15.7e %15.7e’,Nuage’); A la fin de l’exécution, nous avons donc :
– la figure Matlab – le fichier Route.rdf – le fichier Route.stl
3.2.2
Véhicule à trois roues
Afin d’appréhender le module Adams/Tire, je n’ai pas utilisé tout de suite le modèle exis-tant. J’ai commencé par créer un véhicule simple, possédant 3 roues, et donc isostatique (Fi-gure 19). Son faible nombre de pièces et son isostatisme permet de limiter le nombre d’erreurs en vue de l’utilisation de pneumatiques.
Figure 19 – Modèle isostatique 3 roues Construction
Le chassis est composé de 3 barres cylindriques, et il est paramétré : deux variables sont utilisées. Une fois ce dernier construit, il est temps d’utiliser le module Adams/Tire. Il y a trois pneumatiques à mettre en place : aux points 1, 2 et 5. Comme vu précédemment, il faut utiliser une des forces disponibles : Build → F orces → Special F orce : T ire.
S’ouvre alors la fenêtre de création (Figure 20), qu’il nous faut remplir avec les caractéris-tiques de notre pneumatique.
Figure 20 – Fenêtre de création du pneumatique arrière droit Quelques remarques concernant le remplissage des champs :
– Variables créées en vue de l’utilisation de pneumatiques similaires (Tableau 5) – Fichier de propriété du pneumatique choisi arbitrairement parmi ceux du pac2002
Nom Signification Valeur Unité
Mass_Tire Masse de la roue 5 kg
IxxIyy_Variable Inertie suivant les axes X et Y 0.391 kg.m2 Izz_Variable Inertie suivant l’axe propre de la roue 0.801 kg.m2
Tableau 5 – Variables propres aux pneumatiques Calcul des moments d’inertie
Figure 21 – Les 3 moments d’inertie d’une roue Les notations sont suivantes :
– P : Pneumatique – J : Jante – R : Rayon (extérieur) – r : Rayon (intérieur) – L : Largeur – ρ : Masse volumique
On décompose la roue en deux parties : la jante et le pneumatique. Izz = IzzP + IzzJ
Ixx = Iyy = IxxP + IxxJ
Pour simplifier les calcul du moment d’inertie, on assimilera la jante à un anneau de grand rayon RJ et de petit rayon rJ (Figure 22).
Figure 22 – Petit et grand rayon d’une jante Les différentes formules utilisées sont indiquées ci-dessous :
IzzP = 12 × MP × (rP2 + R2P) IzzJ = 12 × π × ρJ× LJ × (R4J − r4J) IxxP = MP × ( R2P 4 + L2P 12) IxxJ = ρ×π×L4 J × [R4J − r4J+ L 2 3 × (R 2 J− rJ2)]
Dans le fichier pac2002_175_70_R13.tir, on accède aux informations suivantes : – RP = 0.290m
– LP = 0.175m
– RJ = 0.165m(= rP)
– LJ = 0.127m
Il nous reste trois inconnues : MP, rJ et ρJ.
Pour un pneumatique de dimension similaire (175/70R13), le Michelin – Harmony (Pas-senger All-Season), la masse est de 16 lbs, soit : MP = 7.257 kg (Figure 23).
Figure 23 – Spécification d’un pneumatique Michelin – Harmony
Pour trouver ρJ, il suffit de connaître le matériau de la jante. Souvent il s’agit d’acier, dont
la masse volumique est de l’ordre de 7800 kg/m3.
Et pour finir, on peut approximer rJ = 0.9 × RJ
Il ne reste plus qu’à calculer :
IzzP = 12 × 7.257 × (0.1652+ 0.2902) = 0.404 kg.m2 IzzJ = 12 × π × 7800 × 0.127 × [0.1654− (0.9 × 0.165)4] = 0.397 kg.m2 IxxP = 7.257 × (0.290 2 4 + 0.1752 12 ) = 0.171 kg.m 2 IxxJ = 7800×π×0.1274 × [0.1654− (0.9 × 0.165)4+0.127 2 3 × (0.165 2− (0.165 × 0.9)2)] = 0.220 kg.m2
Soit, pour finir :
Izz = 0.801 kg.m2 Ixx = Iyy = 0.391 kg.m2 Création de la route
Lors de la création du premier pneumatique, il est nécessaire de créer la route : Road → Clic droit → vpg_road → Create
Les vecteurs de direction ont été choisi pour positionner correctement la roue. En effet, l’axe de rotation du pneumatique (défini lors de sa création) est Z (d’où son inertie différente suivant cet axe) et correspond à notre axe X du repère initial. Cette orientation est également paramétrable en utilisant les angles d’Euler (Voir Figure 24 pour la correspondance) :
– Ψ : Précession – Θ : Nutation
Figure 24 – Les angles d’Euler Dans notre cas, nous avons les valeurs suivantes :
Angles d’Euler Ψ = 90◦ Θ = 90◦ Φ = 0◦ ou Z~ 1 0 0 ~ X 0 1 0
Il faut répéter ces étapes 2 fois (en changeant le coté de la roue pour celle située à l’arrière, à gauche : ARG) pour obtenir les 3 pneumatiques. Pour finir la construction du modèle, il reste à mettre en place les liaisons pivots (exemple pour la liaison ARD/Châssis) :
Construction : 2 Bod – 1 Loc, Pick feature First Body : ARD.wheel_part
Second Body : PART_1 Location : Point_2
Direction vector : ARD.wheel_part.wheel_cm.Z
3.2.3
Simulation
Nous allons ici tester le comportement du véhicule équipé de pneumatiques, sur différents profils de route. Quelque soit le profil, certains paramètres restent communs à toutes les simu-lations :
– Avant de commencer : Réaliser l’équilibre statique ( ) – Step Size : 0.01
Concernant la motricité de notre véhicule, seule la roue avant sera pilotée en rotation. Dans un premier temps, on veut faire rouler notre véhicule à 5m/s, qui est une valeur moyenne des vitesses des trois véhicules (RobucarTT : 3.7, Tracteur agricole automatisé 11 et RobuFAST 8 m/s) . On convertit cette vitesse de translation rectiligne en vitesse de rotation de la roue :
Données : V = 20 km/h = 20×1000 3600 m/s ≈ 5.56 m/s
Rroue = 0.290 m (Rayon, stocké dans la variable ARD.tire_radius)
Or : V = Rroue× ωroue ⇔ ωroue = RroueV
Donc : ωroue ≈ 5.560.29 ≈ 19.16 rad/s ≈ 1097deg/sec
Attention aux unités ! Par défaut, Adams est en degré. Pour le savoir : Settings → U nits (Figure 25)
Figure 25 – Unités utilisées par Adams
Pour utiliser la vitesse que l’on vient de calculer, on va créer une nouvelle variable (Build → Design V ariable → N ew) s’appelant Wroue, de type angular_velocity et ayant pour va-leur −1097 .
Cependant, il n’est pas raisonnable d’imposer une vitesse constante à la liaison pivot de la roue avant, car il se produirait un saut d’accélération infini au début de la simulation, provoquant un dérapage du pneumatique. Un message de ce type apparaîtrait :
WARNING: PAC2002: Long. slip exceeds validity range -> corrected to KPUMIN-KPUMAX range ID = 1
L’idée est donc d’utiliser une spline pour commander l’accélération angulaire. Cela se dé-roule en deux parties :
1. Création d’une spline
2. Attribution au mouvement de la liaison pivot
Pour créer une nouvelle spline : Build → Data Elements → Spline → N ew. On la construit volontairement unitaire (Figure 26) : les changements se feront dans la fenêtre de création de mouvement.
Figure 26 – Spline unitaire
On va donc ensuite imposer un mouvement au niveau de la liaison pivot : Clic droit → J oint : J OIN T _1 → M odif y
Dans Impose motion(s), on va fixer la vitesse de rotation (Velo(time)=) grâce à une fonction de type Akima Fitting Method (Figure 27).
Figure 27 – Akima Spline
Remarque : Le temps d’accélération est de 2 secondes (time/2 ). Pour atteindre la vitesse Wroue en 2 secondes, il faut une accélération de a = W roue2 . Ici, on prendra a = W roue1.8 car l’accélération n’est pas maximale pendant 2 secondes, mais plutôt pendant 1.8 secondes. Le résultat obtenu (Figure 28) par cette méthode est satisfaisant : il n’y a plus de Warning.
Figure 28 – Impact de la commande en accélération sur la vitesse
Pour des simulations de franchissement d’obstacles à vitesse constante, il faudra positionner le début du premier à au moins 4 mètres du départ. Notre modèle est désormais prêt à être simulé.
Route plate
Lors de la construction de notre modèle, nous avons créé une route plate. Il n’y a donc rien a changer et on peut lancer la simulation : puis . Une fois la simulation terminée, on affiche les résultats grâce au bouton .
cette dérive était toujours présente. En effet, celle-ci semble inévitable avec une commande aussi basique. Pour y remédier, il faudrait mettre en place un suivi et une correction de trajectoire. Ici, nous nous intéressons seulement au fonctionnement du module Adams/Tire, donc cette dérive n’est pas gênante.
Route avec bosses
Pour la générer, on va utiliser le fichier CreationRoute.m. On génère une route de 40 m de long et 6m de large. Il y a 2 bosses de type sinusoïdale (Figure 30).
Figure 30 – Route comportant deux bosses
Dans Adams, on remplace (ou on créé) la route en utilisant le nouveau fichier Route.rdf. Pour pouvoir visualiser la route, on importe (F ile → Import) le fichier Route.stl avec les paramètres suivants (Figure 31) :
Figure 31 – Paramètres d’import du fichier Route.stl
Bien entendu, il faut remplacer « ... » par le chemin de l’emplacement du fichier. L’échelle (scale) est de 1000 car ici Adams utilise des mm.
Attention : la localisation et l’orientation doivent être les mêmes pour les deux fichiers (rdf et stl).
Lors de la simulation, le véhicule reconnaît bien les bosses (Figure 32).
Figure 32 – Contournement d’une bosse par le véhicule
Cependant, lors du franchissement d’une bosse, la vitesse de rotation ne reste pas constante (Figure 33) : elle chute lors de la montée et elle raugmente pendant la descente.
Figure 33 – Variation de l’accélération lors du franchissement d’une bosse
Maintenant que nous somme capable d’utiliser le module Adams/Tire, nous allons le mettre en application sur les modèles existants.
3.3
Implantation sur les modèles existants
Dans cette partie, nous allons modifier les roues actuelles du robot (RobuFast) pour les remplacer par des vrais pneumatiques. La première étape est d’apprivoiser le fonctionnement du modèle.
3.3.1
Co-simulation
familia-Une fois terminé, j’ai pu commencer à étudier et adapter les fichiers de simulation exis-tants. Le modèle est entièrement fonctionnel et la commande via Simulink est très complexe. En effet, le fichier MotionControlRobuFastObsDynWithPredAdams2.mdl (Figure 34) contient toute la partie relative à la commande : Commande l’avance, Mesure, Prédiction, Gestion du glissement, . . .
Chaque block (CommAvance, RobuFAST1, Mesure, . . .) est composé de plusieurs sous-blocks, eux même composés de sous-sous-sous-blocks, et ainsi de suite. Il m’a été très difficile de comprendre le fonctionnement de ce fichier. Le connaître dans le détail est inutile, mais en cas de problème de simulation il faut être capable de savoir d’où il vient et comment le résoudre.
Figure 34 – Fichier de commande Simulink
Deux modes de simulation sont disponibles lors de la co-simulation : le mode batch, qui réa-lise la simulation rapidement en n’affichant que des lignes de commandes, et le mode interactive qui lance Adams/View en parallèle pour visualiser en temps réel le robot. Le mode interactive reste relativement lent et je ne l’ai donc utilisé qu’en cas d’anomalies.
J’ai seulement modifié la partie de gauche, qui concerne la commande et l’orientation des roues directrices. La trajectoire est composé de lignes droites, ainsi qu’une portion de cercle (Figure 35).
Figure 35 – Trajectoire cible du robot
3.3.2
Remplacement des roues
Le RobuFAST est actuellement modélisé avec 4 cylindres en guise de roues (Figure 36). Ces derniers sont à remplacer par 4 pneumatiques pac2002.
Les opérations ont été réalisées dans l’ordre suivant : 1. Suppression des 4 cylindres (et des efforts associés) 2. Création de la route
3. Pour chaque pneumatique : (a) Création d’un nouveau Tire (b) Positionnement et orientation 4. Sauvegarde du fichier sous un autre nom
-
4
-Comparaison
4.1
Détermination des paramètres de Pacejka
4.1.1
Démarche
Pour une comparaison cohérente entre les deux modèles, il faut que les paramètres de Pacejka intrinsèques au fichier *.tir de Adams permettent le même comportement que le modèle de Coulomb implanté sur les cylindres. Afin de les estimer, nous allons utiliser la méthode de Newton-Raphson afin de minimiser l’écart entre les courbes de l’évolution de l’effort latéral suivant chacun des modèles de pneumatiques.
La première étape va donc être la programmation de l’algorithme de Newton-Raphson. Pour vérifier le bon fonctionnement de ce dernier, nous l’appliquerons sur le fichier mdl, qui utilise déjà un modèle de Pacejka. Ce fichier correspond à une commande permettant le suivi de trajectoire du RobuFast avec observateurs dynamiques avec prédiction. Si l’algorithme fonctionne, nous l’utiliserons ensuite sur le modèle « cylindrique ».
4.1.2
Préparation du modèle
Avant d’exécuter l’algorithme, nous aurons besoin d’extraire l’effort latéral de la simulation. Il va donc falloir créer une nouvelle variable dans Adams, qui sera exporté lors du Plant export. Pour se faire, sous Adams :
Build → System Elements → State V ariable → N ew
Nous allons utiliser le Function Builder pour créer la force. Par exemple, pour la roue avant droite, voici ce que nous allons mettre :
Figure 37 – Paramétrage de la nouvelle variable Fav
On retrouve ainsi le nom de la liaison (Joint_20 ), la pièce concernée (1 signifie 2e pièce
car la numérotation commence à 0), la composante concernée (3 : Z) et le repère. Nous allons maintenant l’ajouter à notre Plant Export (Figure 38).
Figure 38 – Export/Import de la variable F avAV D
Afin de pouvoir exploiter, nous allons relier la sortie de la boite adams_sub à T oW orkspacebox, que nous appelerons « FavAVD » :
Dans Matlab, lors de l’exécution de la fonction Controls_P lant1 sous Matlab, la
va-riable FavAVD apparaît (Figure ? ? ?). Un nouvelle sortie est également créée pour la boite adams_sub. Afin de pouvoir exploiter cette sortie, il faut la relier à une sortie vers le Works-pace.
4.1.3
Programmation de l’algorithme de Newton-Raphson
Par cette méthode, on cherche à minimiser la fonction f = P acejka(β, ξ) − F avSim avec F avSim : effort latéral extrait de la simulation.
L’algorithme utilisé est celui vu en cours d’Analyse Numérique (1ère année), à savoir : 1. Définir le test d’arrêt
2. Initialiser y (>)
3. Choisir ξ0 « au hasard »
4. Tant que ||y|| < : (a) Calculer f (ξn)
(b) Calculer Jf(ξn)
(c) Calculer y = (Jf(ξn))−1f (ξn)
(d) Itérer ξn+1= ξn− y
5. Solution approchée : ξn
Pour tester le bon fonctionnement de cet algorithme, appliquons-le au fichier MotionControlRobuFastObsDynWithPred.mdl
a1 a2 a3 a4 a5 a6 a7 a8 C
-8 100 200 1.82 0.208 0 0.354 5 1.3
Tableau 6 – Paramètres de Pacejka du fichier Simulink
J’ai volontairement fait en sorte que le robot effectue de larges oscillations autour de la trajectoire cible afin que l’angle de dérive soit important et que l’on soit ainsi dans la zone non linéaire de la courbe de Pacejka. Après avoir extrait βsim et F avsim de la simulation,
nous avons pu lancer notre algorithme. Les premiers résultats sont loin d’être concluant. En effet, la courbe de Pacejka ne converge pas du tout vers l’effort estimé par Adams. Après de nombreuses vérifications, impossible de déterminer l’origine du problème. J’ai donc décidé d’utiliser les efforts estimés directement au sein du fichier Simulink à la place de la variable Fav.
Les résultats alors obtenus sont meilleurs. Malheureusement, l’algorithme ne converge pas systématiquement (voir même assez rarement), et il semble y avoir plusieurs solutions (minima locaux ?). Pour éviter que les coefficients « explosent », nous les avons encadrés afin qu’ils restent autour de leur valeur cible. Nous nous sommes rendu compte l’extrême sensibilité des paramètres et avons du réduire les intervalles au maximum pour qu’ils convergent vers la solution souhaitée.
Bien que les résultats ne soient pas très concluant quand à l’efficacité de l’algorithme, nous avons tout de même décidé de l’appliquer au modèle de pneumatiques cylindriques.
4.1.4
Application au modèle « cylindrique »
On recommence la même démarche : – Simulation du modèle « cylindrique » – Extraction de βsim et F avav
– Démarrage de l’algorithme
Comme « craint » l’algorithme diverge souvent. Il a également fallu encadrer les valeurs afin d’éviter qu’elles n’explosent (10e9 !). Ainsi, à chaque itération chaque variable est testée : si elle est dans sa zone de validité, elle ne change pas. Sinon, elle est remplacée par une valeur aléatoire comprise dans cet intervalle. L’introduction d’une part d’aléatoire permet d’éviter de rentrer dans une boucle infinie.
Les résultats obtenus sont très aléatoires. En observant en détail la norme de la variation du vecteur ξ, on se rend compte qu’elle ne diminue en continue que très rarement. En insistant, on est arrivé à un résultat relativement proche du comportement obtenu avec la loi de coulomb (Figure 39).
Figure 39 – Meilleur résultat obtenu
Pour obtenir ce résultat, les composantes du vecteur ξ sont les suivantes :
a1 a2 a3 a4 a5 a6 a7 a8 C
0.760593 12.595 688.177 9.5488 -0.0100575 0 -0.721285 0.643427 1.5
Tableau 7 – Paramètres de Pacejka obtenu par Newton-Raphson
4.2
Temps de calcul
4.2.1
Sous Adams uniquement
Nous allons ici comparer le temps de calcul de chacun des modèles lors d’une simulation sous Adams, sans co-simulation. Les paramètres de ces simulations sont les suivants :
– Route plane
– Temps de simulation : 30 secondes – Step size = 0.01
– Equilibre statique : non réalisé
Le modèle utilisé est le véhicule à trois roues, équipé de pneumatique pac2002et de cylindres respectant les lois de Coulomb.
Lors des simulations, le gain de temps est considérable (Tableau 8). En effet, le modèle équipé de pneumatique est 6 fois plus rapide que le modèle initial cylindrique.
Modèle Durée de simulation
Cylindres 4 min 10 sec
4.2.2
En co-simulation
Dans cette partie, nous allons préparer les deux modèles que nous souhaitons comparer : le modèle utilisant les cylindres, et celui utilisant les pneumatiques.
Voici les paramètres à égaliser : – Dimension des roues
– Route
– Loi de commande
Le rayon réel des roues du RobuFAST est de 0.4 m. Par défaut, celui du pneumatique est de 0.290 m. Il faut donc modifier ce dernier dans le fichier *.tir (Figure 40). Il faut également changer la largeur de la roue, qui doit être égale à 200 mm.
Figure 40 – Modifications dimensionnelles du pneumatique
Pour la loi de commande, j’ai opté pour le suivi de trajectoire. Ainsi, il sera possible d’ob-server la différence entre les écarts du robot par rapport à la trajectoire cible.
Pour effectuer la comparaison, nous allons utiliser une route plane, ce qui sera suffisant pour voir le gain de temps. Pour le modèle cylindres, il faut créer une pièce parallélépipédique (Figure 41). Pour le modèle Tire, nous utiliserons le fichier exemple 2d_flat.rdf.
Figure 41 – Parallélépipède servant de route
La dernière étape est d’appliquer les paramètres de Pacejka obtenus au fichier *.tir. Ce-pendant, pour cette étape, un problème majeur se pose : les paramètres attendus par le fichier tir ne correspondent aux 9 paramètres usuels. Nous reviendrons sur ce problème dans la partie suivante.
4.3
Problèmes rencontrés et travail restant
4.3.1
Problèmes rencontrés
Paramètres intrinsèques au fichier *.tir
Le nombre de paramètres attendus dans le fichier *.tir est très important. En effet, il ne suffit d’avoir trouvé les 9 paramètres de Pacejka car il y en a en tout 135 à renseigner. En analysant la documentation fourni avec Adams, on se rend compte que tous ces paramètres sont des sous-paramètres des 9 obtenus. Les équations permettant de faire le liens sont données, mais il n’y a pas de définitions ni de méthodes pour déterminer chacun de ces paramètres.
Après de nombreuses recherches, je n’ai toujours pas trouvé la solution. Il serait possible de modifier l’algorithme de Newton-Raphson afin d’identifier les 135 paramètres, mais au vu de la stabilité et de la vitesse de l’identification pour 9 paramètres, il y a peu de chances que cela aboutisse à un résultat cohérent. Une autre piste pour résoudre ce problème serait de remplir aléatoirement les « sous-paramètres » afin que leurs combinaisons correspondent aux paramètres A, B, . . .
Conversion stl → solid
Afin d’effectuer des comparaisons entre les cylindres et les pneumatiques, il faut utiliser le même type de route. Cependant, je n’ai pas trouvé comment convertir un fichier *.stl en un solide afin de pouvoir comparer les deux modèles sur une autre route (que plane). Une des solutions (mais très peu pratique) serait de modéliser la même route que celle générée avec CreationRoute.m sous un autre logiciel (Catia par exemple) et de l’exporter au format *.stp. Problème avec le mode batch
Après plusieurs semaines d’utilisation, le mode batch ne fonctionnait plus et générait systé-matiquement une erreur. N’arrivant pas à identifier l’erreur, j’ai du utiliser le mode interactive qui est plus lent.
4.3.2
Avenir du projet
Suite au travail réalisé durant ce stage, il reste à finaliser l’implantation de pneumatiques sur le modèle. Parmi les points à revoir, il y a la résolution des problèmes évoqués au point précédent. De plus, bien que le fichier CreationRoute.m soit fonctionnel, il ne permet pas de construire de routes pouvant être assimilée à un milieu naturel réel (champs, chemin, . . .).
Le 19 septembre aura lieue une conférence sur l’avancée du projet où une présentation de mon travail sera réalisé. Cependant, je ne pourrai y assister afin de présenter mon travail, et c’est donc Roland qui s’en occupera à ma place. Pour l’aider, j’ai réalisé une présentation qu’il pourra utiliser (Figure 42).
Figure 42 – Aperçu de la présentation réalisée pour la conférence
4.3.3
Travail rendu
En plus de ce rapport qui résume l’ensemble de mon stage, de nombreux fichiers seront rendus. On retrouvera le simulateur RobuFAST en deux versions (originale avec cylindres et modifiée avec pneumatiques). Seront également rendus les fichiers CreationRoute.m (permet-tant de générer des routes personnalisées), l’algorithme de minimisation Newton-Raphson (codé avec Matlab), l’ensemble des fichier *.tir et *.rdf, le fichier présentation .odp pour la conférence
Il risque d’y avoir des problèmes d’accès au fichier, car la plupart des em-placements sont référencés en absolus et ne seront donc pas trouvés par le logiciel
Conclusion
Suite à ce stage, des pneumatiques ont pu être implémenté sur un des modèles de robots mobiles, et les explications fournies dans ce rapport permettront facilement d’en mettre sur les autres modèles. Grâce à eux, les simulations sont désormais 6 fois plus rapide, ce qui les rend plus faciles à mettre en oeuvre. De plus, la modélisation de Pacejka devrait être plus réaliste d’un point de vue comportemental que les lois de Coulomb, car reposant sur de plus nombreux paramètres et sur une théorie éprouvée et reconnue depuis des décennies.
Bien que ce stage ai permi d’avancer dans l’implantation de pneumatiques sur les maquettes numériques, il reste plusieurs problèmes à régler. Les plus importants sont la différence entre les 9 paramètres de Pacejka obtenus et ceux attendus par le fichier de propriétés du pneumatique et la création de terrain représentant une réalité physique.
Sur le plan personnel, je suis relativement satisfait de mon travail, bien que déçu de n’avoir pu finir. Lors de ce stage, je me suis confronté à de nombreux problèmes que j’ai dû résoudre afin de pouvoir avancer. J’ai, à deux reprises, demandé de l’aide sur les forums officiels d’Adams. J’ai donc dû apprendre à formuler mon problème afin que des personnes extérieurs à mes travaux me comprennent. De plus, ces forums sont entièrement en anglais ce qui a été une difficulté supplémentaire pour me faire comprendre. Cependant, cela m’a également permis d’approfondir mon vocabulaire dans ce domaine.
-
A
-Fichier CreationRoute.m
%% Initialisation de l’espace de travail : clear all;
clc
% Heure de dà c but :
fprintf(’+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n’); fprintf(’ | Creation de la route pour Adams +\n’);
fprintf(’ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n’); fprintf(’\n Heure de debut : %s\n\n’,datestr(now)); %% Parametres de la route : LongueurRoute=100; DebutRoute=-5; LargeurRoute=70; pasX=0.1; pasY=LargeurRoute; nomRDF=’Route.rdf’; nomSTL=’Route.stl’; %% Creation maillage finRoute=LongueurRoute+DebutRoute; x=DebutRoute:pasX:finRoute; y=-LargeurRoute/2:pasY:LargeurRoute/2; [X,Y] = meshgrid(x,y); Z=0*X; %% Relief :
debut1=ceil((3*pi/2+3*2*pi-DebutRoute)/pasX)+1; %Arrondi par excès fin1=floor((3*pi/2+4*2*pi-DebutRoute)/pasX)+1; %Arrondipar dà c fault % Bosse : sommet=35; hauteur=2; lambda=4; Z=Z+bosse(sommet,hauteur,lambda,X,pasX,Z,DebutRoute); % Pente : debut=60; fin=90; hauteur=4; Z=Z+pente(debut,fin,hauteur,X,pasX,Z,DebutRoute,finRoute); %Trou : debut=4; fin=5; profondeur=0.3;
%% Creation nuage de points :
%Mise en forme des vecteurs X, Y, Z : X1=X(1,:)’;
Z1=Z(1,:)’;
Y1=X1*0+Z1*0*100; %Pour route 2D avec Width
%Duplique X et Z Sx=length(X1); for i=1:1:(Sx) X2(2*i-1)=X1(i); X2(2*i)=X1(i); end X3=X2’; %Z : Sz=length(Z1); %length
for i=1:1:(Sz) Z2(2*i-1)=Z1(i); Z2(2*i)=Z1(i); end Z3=Z2’; %Creation Y : Y3=X3*0; for j=1:2:(length(Y)-1) Y3(j)=Y1(1);%+ Y3(j+1)=Y1(2);%-end
%Ajout des autres colonnes : width=X1*0+LargeurRoute; %X3 !! bank=X1*0;
MuLeft=X1*0+0.9; MuRight=X1*0+0.9;
% Nuage de points final :
Nuage=[X1 Y1 Z1 width bank MuLeft MuRight];
%% Export en STL :
fprintf(’\nCreation du fichier %s\n’, nomSTL) stlwrite(nomSTL,X,Y,Z,’mode’,’ascii’)
fprintf(’- Fichier crà c à c \n’) %% Affichage route
figure(’Color’,[1 1 1]); % Blackground white surf(X,Y,Z)
xlabel(X) ylabel(Y) ylabel(Z) colormap(summer)
shading flat % Cacher les lignes axis equal % MÃame à c chelle
view(-50,30)
colorbar(’location’,’WestOutside’)
%% Export .rdf
fprintf(’\nCreation du fichier %s \n’, nomRDF) fid = fopen(nomRDF,’w’); %Sections : fprintf(fid,’$---MDI_HEADER\r\n’); fprintf(fid,’[MDI_HEADER]\r\n’); fprintf(fid,’FILE_TYPE = ’’rdf’’\r\n’); fprintf(fid,’FILE_VERSION = 5.00\r\n’); fprintf(fid,’FILE_FORMAT = ’’ASCII’’\r\n’); fprintf(fid,’$---UNITS\r\n’); fprintf(fid,’[UNITS]\r\n’);
fprintf(fid,’ LENGTH = ’’meter’’\r\n’); fprintf(fid,’ FORCE = ’’newton’’\r\n’); fprintf(fid,’ ANGLE = ’’radians’’\r\n’); fprintf(fid,’ MASS = ’’kg’’\r\n’); fprintf(fid,’ TIME = ’’sec’’\r\n’);
fprintf(fid,’$---DEFINITION\r\n’); fprintf(fid,’[MODEL]\r\n’);
fprintf(fid,’ METHOD = ’’3D_SPLINE’’\r\n’); fprintf(fid,’ FUNCTION_NAME = ’’ARC903’’\r\n’); fprintf(fid,’ VERSION = 1.00\r\n’);
fprintf(fid,’$---ROAD_PARAMETERS\r\n’); fprintf(fid,’[GLOBAL_PARAMETERS]\r\n’);
fprintf(fid,’ CLOSED_ROAD = ’’no’’\r\n’); fprintf(fid,’ SEARCH_ALGORITHM = ’’SLOW’’\r\n’); fprintf(fid,’ ROAD_VERTICAL = ’’0.0 0.0 1.0’’\r\n’); fprintf(fid,’ FORWARD_DIR = ’’NORMAL’’\r\n’);
fprintf(fid,’$---DATA_POINTS\r\n’); fprintf(fid,’[DATA_POINTS]\r\n’);
fprintf(fid,’{ X Y Z WIDTH BANK MU_LEFT MU_RIGHT } ’); %Nuage de points :
%% Fin :
fprintf(’\n Heure de fin : %s \n\n’,datestr(now)); %Afiiche l’heure de fin fprintf(’+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n’);