• Aucun résultat trouvé

4.9 Hybridation SE-RNN à base GPU du contrôleur du robot

4.9.2 Modèle du robot humanoïde et de stockage de données

4.9.2.1 Simulateur physique : ODE (Open Dynamique Engine)

ODE est une bibliothèque open source pour simuler la dynamique et les collisions des corps rigides d’une manière efficace et précise [59]. Il consiste d’une bibliothèque de haute

4.9. HYBRIDATION SE-RNN À BASE GPU DU CONTRÔLEUR DU ROBOT

Algorithme 1 Processus de simulation sous GPU.

1: Télécharger les paramètres de simulation et d’initialisation des robots. 2: Initialiser les RNNs.

3: Générer la première population évolutionnaire des solutions. 4: Initialiser la SE.

5: Allocation des entrées du problème dans la mémoire du GPU. 6: Allocation de la population dans la mémoire du GPU.

7: Allocation des structures de fitness dans la mémoire du GPU. 8: Copie des entrées de problème sur la mémoire du GPU ; 9: Copie la population généré sur la mémoire du GPU ;

10: Copie des structures supplémentaires sur la mémoire du GPU ;

11: Évaluation les valeurs de fitness de tous les individus de la population en utilisant une mesure sur la base de la fonction objectif à optimiser ;

12: répéter

13: pour tout les individus faire 14: Évaluation de l’individu ;

15: Insertion des fitness résultantes dans leurs structures. 16: fin pour

17: Copie les structures de la fonction de fitness sur la mémoire du CPU ; 18: Appliquation des opérateurs de recombinaison ;

19: Construction de la nouvelle population (Robots) ;

20: Remplacement de la population parente par la nouvelle population descendante ; 21: Copie la nouvelle population sur la mémoire du GPU ;

22: Copie de la structure supplémentaire dans la mémoire du GPU ; 23: jusqu’à ce que le critère d’arrêt soit atteint

4.9. HYBRIDATION SE-RNN À BASE GPU DU CONTRÔLEUR DU ROBOT

performance pour la simulation de la dynamique des corps rigides écrite une simple API C/C++.

Bien que le moteur ODE soit un moteur fiable dans la simulation physique, le calcul de toutes les interactions physiques d’un système complexe peut exiger énormément de puissance de traitement. Comme l’ODE utilise un moteur de rendu simple basée sur OpenGL, il a des restrictions pour le rendu des environnements complexes comprenant de nombreux objets et des corps. Ceci peut affecter de manière significative la vitesse de simulation des expériences complexes de la simulation robotique [9].

Algorithme 2 Structure algorithmique d’une application typique d’ODE, De [166]. 1: Créer un environnement dynamique ;

2: Créer les organismes dans l’environnement dynamique ; 3: Définir le statut (position et vitesse) de tous les organismes ; 4: Créer les articulations (contraintes) qui relient les organismes ;

5: Créer un monde de collision et la géométrie de collision des les objets ; 6: tantque temps < tempsmax faire

7: Appliquer les forces nécessaire pour les organismes ; 8: Appeler la détection de collision ;

9: Créer un contact de jointure pour chaque point de collision, et le mettre dans le groupe de contact de jointures ;

10: Prendre une étape de simulation vers l’avant ; 11: Retirez tout le groupe de jointure ;

12: Avancer le temps : temps = temps + ∆t;

13: fin tantque

4.9.2.2 Modèle du robot humanoïde

Notre démonstration s’appuie sur un modèle robotique, basé sur des primitives dis- ponibles dans la bibliothèque de simulation ODE, qui offrent un environnement contrôlé avec ou sans obstacle. Un modèle physique de locomotion décrit les relations non linéaires entre les forces, les moments agissant sur chaque jointure, les pieds, la position, la vitesse et l’accélération angulaire de chaque articulation. En plus des données géométriques, un modèle dynamique nécessite les masses des éléments cinématiques, les centres des masses et les matrices d’inertie pour chaque liaison, a besoin également de jointure, des valeurs min/max des couples moteurs et les vitesses angulaires qui sont difficiles à obtenir et qui représentent souvent une source d’imprécision négligée pour la simulation. Toutes ces données sont copiées dans la mémoire principale du GPU à l’effet d’effectuer un maximum de calculs sur celle-ci.

Pour simuler l’interaction avec l’environnement, la détection et le traitement des col- lisions ainsi que les modèles appropriés des contacts avec le sol pour les pieds sont néces- saires. Pour s’adapter au monde de la simulation et après avoir effectué plusieurs essais, nous avons fixé les paramètres expérimentaux conformément à ceux mentionnés sur la table (4.1), ces valeurs représentant les meilleures valeurs empiriques de notre robot.

4.9. HYBRIDATION SE-RNN À BASE GPU DU CONTRÔLEUR DU ROBOT

Body part Geometry primitive Dimendion (m)

Head Sphere Radius :0.188

Arm Caped cylinder 0.14x0.25x0.44

Torso Rectangular box 0.9x0.25x1.0

Thigh Caped cylinder 0.20x0.25x0.7

Shank Caped cylinder 0.20x0.25x0.7

Foot Rectangular box 0.4x0.5x0.1

Table 4.1 – Paramétres du corps du robot.

Figure 4.6 – Primitives géométriques, les jointures, et le modèle 3D du robot.

4.9.2.3 Invocation des Kernels, population de la SE et paramètres des don- nées de stockage

Avec plusieurs types de mémoires, une utilisation incorrecte des capacités de la mé- moire offerte et disponible au sein du GPU peut influer sur l’accélération désirée. Ainsi, et en général, la question posée concerne plutôt le type correct de mémoire devant être utilisée pour chaque phase de l’implémentation. Une fois la structure créée au niveau de la partie hôte, elle sera copiée dans la mémoire constante du GPU, car ce type de mémoire est utilisé spécifiquement pour les cas où les données ne changeront pas à l’exécution d’un Kernel évolutionnaire, y compris la taille de la population, la taille des chromosomes, le taux de mutation, le taux de croisement, le nombre de générations, les données statistiques (moyenne, maximum, et minimum des valeurs de la fonction de fitness), etc.

La population de la stratégie évolutionnaire est aménagée dans la mémoire principale du processeur graphique, comme une matrice à deux dimensions N*L, où les colonnes réfèrent aux chromosomes et les lignes correspondent aux gènes à l’intérieur des chro- mosomes. Dans notre cas, N est la taille de la population et L est la longueur des chro- mosomes, en tenant compte du fait que le stockage des variables de la même séquence individuelle dans un tableau ne permet pas un accès efficace à la mémoire.

4.9. HYBRIDATION SE-RNN À BASE GPU DU CONTRÔLEUR DU ROBOT

Figure 4.7 – Organisation de structure de données dans la mémoire.

4.9. HYBRIDATION SE-RNN À BASE GPU DU CONTRÔLEUR DU ROBOT

Ainsi, pour atteindre la coalescence de la mémoire, les variables du même type et appartenant à des individus différents de la population sont stockés dans des buffers adjacents.