43
Simula Simula XDE XDE ation ation Engine Engine Juillet 2011 Juillet 2011 [email protected] Ingénieur - Chercheur Laboratoire de Simulation Interactive CEA LIST

XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

Simulation Simulation

XDEXDE

Simulation Simulation EngineEngine

Juillet 2011Juillet 2011

[email protected]

Ingénieur - Chercheur

Laboratoire de Simulation Interactive

CEA LIST

Page 2: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

• XDE: Aperçu général

• Briques:

� Simulation physique� Simulation physique

� Fluide

� Humain Virtuel

• Middleware:

� DSimI

� DIO

• Exemple appliqué à la robotique

• Roadmap

Plan

2

Page 3: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

• XDE : Environnement logiciel dédié à la simulation physique interactive

• Objectifs généraux• Objectifs généraux

� Environnement logiciel modulaire unique: polyvalence des applications, par ex:

� Retour d’effort pour le PLM en RV

� Pilotage d’HV sur TV3D avec kinect

� Serious game physique avec interfaces iPad

� Implémentation logicielle à vocation industrielle

� Intégration des algorithmes et résultats de recherche du LSI

� Objectif de performance et d’interactivité� Objectif de performance et d’interactivité

� Objectif de facilité d’utilisation

XDE: Overview

XDE : Environnement logiciel dédié à la simulation physique

3

Environnement logiciel modulaire unique: polyvalence des

iPad

Implémentation logicielle à vocation industrielle

Intégration des algorithmes et résultats de recherche du LSI

Objectif de performance et d’interactivitéObjectif de performance et d’interactivité

Page 4: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

• Qu’est-ce que ça peut faire ?

� Simulation physique réaliste/interactive � Des corps rigides

� Poutres 3D déformables (câbles)� Poutres 3D déformables (câbles)

� Des fluides

� Collision arbitraires (trimesh) compatible avec

� Interaction multimodale dans le cadre de la RV� Multiples périphériques A.R.T, kinect

� Moteur sonore et vibratoire (simulation des contacts)

� Tracking interactive de l’humain virtuel

� …

� Simulation et contrôle d’humain virtuel autonome réactif� Simulation et contrôle d’humain virtuel autonome réactif� Contrôle de l’humain virtuel par optimisation

� Locomotion (Preview-control)

� Path planning

XDE: Overview

Simulation physique réaliste/interactive

4

) compatible avec haptique

Interaction multimodale dans le cadre de la RVkinect, SpaceMouse, Virtuose, TV3D, iPad

Moteur sonore et vibratoire (simulation des contacts)

interactive de l’humain virtuel

Simulation et contrôle d’humain virtuel autonome réactifSimulation et contrôle d’humain virtuel autonome réactifContrôle de l’humain virtuel par optimisation

Page 5: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

• Qu’est-ce que c’est ?

� Un ensemble de briques logicielles spécialisées indépendantesindépendantes

� Un middleware permettant � De les assembler

� De les utiliser de façon cohérente et unifiée

� De les interfacer

Kinect(trackin

XDE

XDE: Overview

5

Simulation physique

Contrôle HVphysique

Path Planning 2.5D

Kinecttrackin g)

Virtuose

CATIASolidWorks

iPad

C++Python

CORBA(haptique)

iPadBrowser

CORBA…

Interface utilisateur

(RV)

Interface utilisateur

(GUI)

Interface Programmation

Page 6: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

• Quelques données techniques

� Développé par 10 personnes permanentes au LSI

� 300k lignes C++, 15k lignes de python

� Compatible linux / windows - 32bits / 64bits� Compatible linux / windows - 32bits / 64bits

� Basé sur des librairies Open Source (

� Basé sur des standards (COLLADA, etc.)

� Processus de développement (Git,

XDE: Overview

Développé par 10 personnes permanentes au LSI

300k lignes C++, 15k lignes de python

32bits / 64bits

6

32bits / 64bits

Basé sur des librairies Open Source (boost, eigen, Orocos RTT, etc.)

sur des standards (COLLADA, etc.)

Processus de développement (Git, CMake, redmine) et release

Page 7: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

• XDE: Aperçu général

• Briques:

� Simulation physique

XDE

� Simulation physique

� Fluide

� Humain Virtuel

• Middleware:

� DSimI

� DIO

• Exemple appliqué à la robotique

Kinect(trackin

Virtuose

• Roadmap

(

Interface utilisateur

Plan

7

XDE

Simulation physique

Contrôle HVphysique

Path Planning 2.5D

Kinecttrackin g)

Virtuose

CATIASolidWorks

iPad

C++Python

CORBA(haptique)

iPadBrowser

CORBA…

Interface utilisateur

(RV)

Interface utilisateur

(GUI)

Interface Programmation

Page 8: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

Brique simulation physique (

Objectif : Simulation physique réaliste interactive des corps rigides et câbles

• Simulation physique:• Simulation physique:

� Physique du mouvement (lois de Newton)

� Physique du contact (modèles de frictions, …)

• Réaliste:

� Basé sur les équations physiques réelles

� Schéma de résolution efficace (stable, précis)

• Interactive:

� Formulation performante (groupes de Lie)

Schéma de résolution efficace (rapide)� Schéma de résolution efficace (rapide)

• Corps rigides:

� Collision entre géométries tessellées

• Câbles:

� Modèles déformable 3D généralisé (

Brique simulation physique (XDECore)

Objectif : Simulation physique réaliste interactive des corps

8

Physique du mouvement (lois de Newton)

Physique du contact (modèles de frictions, …)

Basé sur les équations physiques réelles

Schéma de résolution efficace (stable, précis)

Formulation performante (groupes de Lie)

Schéma de résolution efficace (rapide)Schéma de résolution efficace (rapide)

tessellées arbitraires

généralisé (Reissner)Simulation physique

Page 9: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

• Solveur (GVM)

� Multi corps

� Chaines articulées ouvertes/fermées

� Réduction cinématique à la volée� Réduction cinématique à la volée

� Articulations usuelles et exotiques (

� Corps déformables (Poutre 3D)

• Détecteur de collisions (XCD)

� Géométrie arbitraires (téssélations)

� Proximité, contacts et intersections

Contacts réguliers� Contacts réguliers

� Différents types de moteurs

Structure: deux éléments

Chaines articulées ouvertes/fermées

9

Articulations usuelles et exotiques (splines)

)

Proximité, contacts et intersections

Simulation physique

Page 10: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

• Formulation basé sur les groupes de Lie

� Réduction Lagrangienne = prise en compte naturelle robuste et efficace des non-linéarités géométriques (rotations finies)

� Dynamique ou quasi-statique� Dynamique ou quasi-statique

• Schémas numériques « rapides

� Orientés temps interactif / temps réel

� Schéma central : NSCD-MK = intégrateur numérique non-régulier (time-stepping)

� Résolution par contrainte ou par pénalité� Résolution par contrainte ou par pénalité

� Algorithmes parallélisés sur CPU

• Validé par rapport à Adams

Structure: solveur(GVM)

Formulation basé sur les groupes de Lie

Réduction Lagrangienne = prise en compte naturelle robuste et efficace des (rotations finies)

10

rapides »

Orientés temps interactif / temps réel

= intégrateur numérique géométrique et

Résolution par contrainte ou par pénalitéRésolution par contrainte ou par pénalité

Simulation physique

Page 11: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

Structure: solveur(GVM)

11

Simulation physique

Page 12: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

Structure: détecteur de collisions (XCD)

• 2 méthodes

� LMD++� « exact »

� symétrique, robuste et détection de contacts exacts sur des complexes � symétrique, robuste et détection de contacts exacts sur des complexes simpliciaux : points, droites, etc. dilatés ou non.

� CDDIF� « voxelisé »

� Basé sur des interactions entre des champs de points et de distance (asymétrique)

Complexité à l’exécution

Erreur géométriquel’exécution géométrique

LMD O(nlog(n))n: nb primitives

offset

CDDIF O(n)n : nb de points(voxelSize)

voxelSize + offset

Structure: détecteur de collisions (XCD)

symétrique, robuste et détection de contacts exacts sur des complexes

12

symétrique, robuste et détection de contacts exacts sur des complexes : points, droites, etc. dilatés ou non.

Basé sur des interactions entre des champs de points et de distance

Nb de proximité

Empreinte mémoire

Précalculproximité mémoire

1 O(n)

n: nb primitivesFast (+)Arbre binaire

1.5 - 10 O(n^3)

n: voxelSizeLong (--)

0(n^3)

Simulation physique

Page 13: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

� Complexe simplicial

� Généralisation des triangulations

� Toutes dimensions topologiques

� Bases théoriques de la topologie algébriquealgébrique

� Complexe simplicial dilaté

� Tout corps rigide est volumique

• Principe: Distances minimales locales entre complexes simpliciauxdilatés

� LMDs définies à partir des complexes de base

� Surfaces en contact régulières

� Profondeurs de pénétration « astucieuses »

� Conséquence: arrondissement des angles

13

XCD (LMD)

simpliciaux

définies à partir des complexes de

Conséquence: arrondissement des angles

Simulation physique

Page 14: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

� Propriétés

� Tolérance intrinsèque aux « petits » défauts

� Compatibilité avec le time-stepping

� Traitement des contacts conformants

� Efficacité sur des modèles de complexité industrielleindustrielle

� Parallélisation : exploitation des multi

14

XCD (LMD)

» défauts

stepping

conformants

sur des modèles de complexité

: exploitation des multi-cœurs

Simulation physique

Page 15: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

• Principe

� Test d’interaction entre un champs de distance et un nuage de points

• Propriétés

� Complexité linéaire

� Modèle de contact continu

� Traitement des contacts conformant

� Gourmand en mémoire

� Grande rapidité

XCD (CDDIF)

Test d’interaction entre un champs de distance et un nuage de points

Simulation physique

Page 16: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

Brique simulation fluide (CFD)

Objectif : Simulation physique réaliste interactive des fluides

• Réaliste

� Basé sur les équations de Navier� Basé sur les équations de Navier

� Quantification de l’erreur de simulation par rapport au modèle

• Interactive

Calcul optimisé multi-cœur� Calcul optimisé multi-cœur

• Fluide

� Fumée

� Liquides

Brique simulation fluide (CFD)

Objectif : Simulation physique réaliste interactive des fluides

Basé sur les équations de Navier-Stokes / Boussinesq

16

Basé sur les équations de Navier-Stokes / Boussinesq

Quantification de l’erreur de simulation par rapport au modèle

Simulation fluide

Page 17: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

CFD

17

Simulation fluide

Page 18: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

Brique: Humain Virtuel Autonome

Objectif : Contrôle dynamique d’humain virtuel autonome

• Contrôle:

� Méthode par optimisation quadratique� Méthode par optimisation quadratique

� Notion de tâches

• Dynamique:

� Utilisation du modèle dynamique de la chaine articulée de l’HV pour effectuer la commande

• Humain virtuel:

� Chaine cinématique articulée actionnée

• Autonome• Autonome

� Posture / équilibre

� Locomotion

� …

Brique: Humain Virtuel Autonome

18

Objectif : Contrôle dynamique d’humain virtuel autonome

Méthode par optimisation quadratiqueMéthode par optimisation quadratique

Utilisation du modèle dynamique de la chaine articulée de l’HV pour

Chaine cinématique articulée actionnée

Simulation HV

Page 19: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

• Brique d’optimisation (ORC Optim)

� Couche logicielle générique d’optimisation

� Indépendant du problème de contrôle dynamique

• Brique de contrôle dynamique (ORC Control)

� Couche logicielle générique de contrôle dynamique

� Basé sur la couche Optim

� Notions de pile de tâches (priorités), modèle, contrôleur

ORC Control

ORC OptimModèledynamique

Structure de base: ORC

Couche logicielle générique d’optimisation

Indépendant du problème de contrôle dynamique

19

Brique de contrôle dynamique (ORC Control)

Couche logicielle générique de contrôle dynamique

Notions de pile de tâches (priorités), modèle, contrôleur

Simulation

τ

Modèledynamique

Calculatrice dynamique

Simulation HV

Page 20: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

• Ecriture unifiée de problèmes d’optimisation

• Notions

� Variable x� Variable x

� Fonction f(x,t)

� Objectif min. f

� Contrainte f≥0, f=0…

� Solveur

• Simplicité d’écriture

� Fonction

� Solveur

� Problème

• Ensemble de fonctions prédéfinies

• Optimisé

� Pipeline d’update

• Généricité

� Présence explicite du temps

ORC Optim

Ecriture unifiée de problèmes d’optimisation

20

Simulation HV

Page 21: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

• Interface unifiée de spécification de contrôleurs

• Notions

� Modèle

� Tâche

� Point de contrôle

� Contrôleur

• Différents types de contrôleurs

� Accélération

� Impédance

� J transpose

• Ensemble de fonctions pour la robotique

Equation de la dynamique� Equation de la dynamique

ORC Control

Interface unifiée de spécification de contrôleurs

21

Ensemble de fonctions pour la robotique

Efforts de consigne

Simulation HV

Page 22: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

Humain Virtuel autonome: Locomotion

ORC Control

Tâches

Locomotion

ORC Optim

Humain Virtuel autonome: Locomotion

22

Simulation

Simulation HV

Page 23: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

Humain virtuel autonome

23

Simulation HV

Page 24: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

• XDE: Aperçu général

• Briques:

� Simulation physique

XDE (

� Simulation physique

� Fluide

� Humain Virtuel

• Middleware:

� DSimI

� DIO

• Exemple appliqué à la robotique

• Roadmap

Plan

24

XDE (DSimI)

Simulation physique

Contrôle HVphysique

Path Planning 2.5D

CATIASolidWorks

iPad

C++Python

CORBAiPadBrowser

CORBA…

Interface utilisateur

(GUI)

Interface Programmation

Page 25: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

• Basé sur Orocos• Participation active du LSI au développement de

Orocos/RTT

Middleware composants/réseau

• Python (w/ • Qt 4.7

Script et GUI

• Structure P2P dynamique• Cohérence centralisée• « Stateless• Repose le plus possible sur des formats standard

(COLLADA, etc.)

Déploiement

DSimI: Fonctions

25

Orocos/RTT v2.4Participation active du LSI au développement de

/RTT

Python (w/ winpdb, NumPy, PySide, IPython)

Core

Py

Structure P2P dynamiqueCohérence centralisée

Stateless »Repose le plus possible sur des formats standard (COLLADA, etc.)

Deploy

Page 26: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

ModulaireModulaire

•Chaque •Chaque

DistribuéDistribué

•Exécution des •Exécution des •Chaque fonctionnalité est un module logiciel indépendant

•Modules branchableset débranchables « à chaud »

•Chaque fonctionnalité est un module logiciel indépendant

•Modules branchableset débranchables « à chaud »

•Exécution des modules sur le même PC ou PC différents

• Communication transparente entre les modules

• Communication synchrone/ asynchrone

•Exécution des modules sur le même PC ou PC différents

• Communication transparente entre les modules

• Communication synchrone/ asynchrone

Exemple: Rendu visuel, simulation

Exemple: Déport transparent de visuel, simulation

physique, moteur de scénario, etc.

transparent de calcul sur PC dédié, de IHM sur iPad, utilisation multi poste, etc.

DSimI: Fonctions

26

Temps réelTemps réel

•Implémentation •Implémentation

OuvertOuvert

•Basé sur open•Basé sur open•Implémentation optimisée (local et réseau)

• Conçu pour les processus interactifs (latence faible)

•Implémentation optimisée (local et réseau)

• Conçu pour les processus interactifs (latence faible)

•Basé sur opensource Orocos RTT

• Utilisation de formats ouverts

•Multi plateforme Windows XP, Vista, Seven 32bits, 64bits / Linux 32bits, 64bits

• API C++ Python…• Intégration simple de code extérieur

•Basé sur opensource Orocos RTT

• Utilisation de formats ouverts

•Multi plateforme Windows XP, Vista, Seven 32bits, 64bits / Linux 32bits, 64bits

• API C++ Python…• Intégration simple de code extérieur

Exemple: Format COLLADA

Exemple: interaction temps Format COLLADA

Interfaçage avec des librairies

interaction temps réel avec retour d’effort (haptique), MoCap, …

Page 27: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

• Système de composants (local/réseau)

� Tâches, agents (composant)� Noyaux de simulation

� Activité propre

� Communication - type� Communication - type� Synchrone (flux)

� Asynchrone (RPC)

� Communication - support� Local (no copy, lockfree)

� Remote (CORBA IIOP, mqueue)

• Intégration transparentes des librairies au niveau des composants

� Accès RPC à une librairie /w RTT

� Stubber automatique� Notion d’objet (références)

� Notion d’héritage

� Notion de surcharge

DSimI - Core

Système de composants (local/réseau) – Orocos/RTT v2.4

27

Intégration transparentes des librairies au niveau des composants

Page 28: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

LibFoo LibFooAPI C/C++ API C/C++

API RTT

stubber

Composant RTT

DSimI - Core

28

LibFoo

Composant RTT

API C/C++ API C/C++

API RTT

RTT

LibBar

Composant RTT

LibFoo LibBarAPI C/C++

LibFooAPI C/C++

API RTT

Page 29: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

LibFoo

Composant RTT

Boucle simu

API C/C++

API RTT Flux

LibQuxx

Composant RTT

API C/C++

API RTT

DSimI - Core

29

LibBar

Composant RTT

Boucle simu

API C/C++

API RTT Flux

Boucle simu

Flux

Page 30: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

• Orocos RTT v2.4

� Produit issu de la robotique, issu d’un projet regroupant académiques et industriels

� Communauté très active (onera, fnac

� Base de code C++ (bonne qualité), utilisation de CORBA pour le réseau

LibQuxx

Composant RTT

Boucle simuLibQuxxAPI C/C++

API RTT Flux

DSimI - Core

Produit issu de la robotique, issu d’un projet regroupant académiques et

fnac, disney, etc.)

30

Base de code C++ (bonne qualité), utilisation de CORBA pour le réseau

Page 31: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

graphAgentgraphAgentSimulation

physiqueContrôle HV

graphAgent

1" ,

GraphWrap

Path Planning 2.5D

Retour haptique

Intf. graph. (IHM)

DsimI - Core

31

graphAgent = new GraphicsAgent ("graph" );graphAgent ->getPort ("body_pos_in" )->

connectTo (phyAgent ->getPort ("body_pos_out" ));

graphAgent -> getOperation ("SetPosition" )("Body

, Displacement ());

GraphWrap (graphAgent )::setPosition (...)

Page 32: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

• Scripting complet de DSimI core

� Scripting inter composant

� Scripting intra composant

� Intégration native des types (courants, math, � Intégration native des types (courants, math,

• Intégration transparente des librairies mathématiques

� Basée sur NumPy

• Intégration d’une GUI

� Basée sur PySide et Qt 4.7

• Intégration des facilités de debug

� Winpdb

� IPython

DSimI - python

Intégration native des types (courants, math, desc, etc.)

32

Intégration native des types (courants, math, desc, etc.)

Intégration transparente des librairies mathématiques

Page 33: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

import rtt_interface as rttimport dsimi .rtt import dsimi .interactiveimport lgsmimport lgsm

world = builder.desc.parseColladaFile ('knob.dae'

phy = dsimi .rtt .Task (rtt .LocalTaskRepositorygraph = dsimi .rtt .Task (rtt .LocalTaskRepositorysmf = dsimi .rtt .Task (rtt .LocalTaskRepositorysmf = dsimi .rtt .Task (rtt .LocalTaskRepository

graphphysic

DSimI – python: exemple

33

'knob.dae' )

LocalTaskRepository .get ("physic" ))LocalTaskRepository .get ("graph" ))

LocalTaskRepository .get (" dio / factory / spacemouse " ))LocalTaskRepository .get (" dio / factory / spacemouse " ))

dio / spmouse

Page 34: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

graph .s.Viewer .setup ()graph .s.Viewer .CreateScene ("mainScene" )

icb = graph .s.Connectors .IConnectorBody .icb = graph .s.Connectors .IConnectorBody .graph .s.Interface ("mainScene" ).SceneInterfaceoco = graph .s.Connectors .OConnectorObs .new

DSimI – python: exemple

34

.new(" icb " , " bodyPosition " , " mainScene " ).new(" icb " , " bodyPosition " , " mainScene " )SceneInterface .MergeScene1 (world )

new("oco" , "obsFrame" , "mainScene" )

Page 35: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

ms = phy .s.GVM.Scene.new("main" )ms.setIntegratorFlags (9)ms.setUcRelaxationFactor (1.0)ms.setFdvrFactor (0.2)

lmd = phy .s.XCD.Scene.new_LMD("lmd" , 0.005ms.setGeometricalScene (lmd )ms.setGeometricalScene (lmd )ms.setTimeStep (0.1e-3)

knob = phy .s.GVM.RigidBody .new("knob" )free = phy .s.GVM.FreeJoint .new("free" )

ms.addRigidBodyToGround (knob , free )knob .setMass (0.1)knob .setCenterOfGravity (zero3 )knob .setPrincipalMomentsOfInertia (np.ones ((knob .setPrincipalInertiaFrame (lgsm .Displacementd

free .configure (lgsm .Displacementd (0,0,0,1,free .setTranslationDampingCoeff (0.0)free .setRotationDampingCoeff (0.0)

ocb = phy .s.Connectors .OConnectorFrame .newocb .addFrame (knob )

icis = phy .s.Connectors .IConnectorImpedanceSpeed

PyDSimI - exemple

35

0.005, 0.005)

((3,1)))Displacementd (0,0,0,1,0,0,0))

,0,0,0))

new("ocb" , "bodyPosition" )

IConnectorImpedanceSpeed .new("icis" , "smVelocity" , "knob" )

Page 36: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

smf .s.start ()d = smf .s.scan ()if not d: raise RuntimeException (" Spacemouse

sm = dsimi .rtt .Task (smf .s.build (d[0], 'sm' ))

sm.getPort ('out_vel' ).connectTo (phy .getPort (phy .getPort ('bodyPosition' ).connectTo (graph .sm.getPort ("obs_frame" ).connectTo (graph .getPort

phy .s.start ()sm.s.start ()graph .s.start ()

physic

DSimI – python: exemple

36

Spacemouse not found" )

))

('smVelocity' )).getPort ('bodyPosition' ))

getPort ("obsFrame" ))

graph sm

dio / spmouse

Page 37: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

DSimI – python: exemple (intra composant)

class BodyPosGenerator (dsimi .rtt .Task ):def __init__ (self , task ):

super(BodyPosGenerator , self ).__init__self .p_out = self .addCreateOutputPortself .angle = 0self .angle = 0self .vel = 0.01

def updateHook (self ):self .p_out .write ([(lgsm .Displacementd

lgsm .zero , lgsm .Quaternionself .angle += self .vel

@dsimi .rtt .operation ('param' , 'void' , ('double'def setVel (self , d):

self .vel = d

Body Pos Generator

python: exemple (intra composant)

37

__init__ (task )addCreateOutputPort ("output" , "vector_pair_Displacementd_string" )

Displacementd (Quaternion (lgsm .vector (1,0,0), self .angle )),'knob' )])

'double' ,))

Body Pos Generator

Page 38: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

• XDE: Aperçu général

• Briques:

� Simulation physique

XDE (

� Simulation physique

� Fluide

� Humain Virtuel

• Middleware:

� DSimI

� DIO

• Exemple appliqué à la robotique

Kinect(trackin

Virtuose

• RoadmapInterface utilisateur

(

Plan

38

XDE (DSimI)

Simulation physique

Contrôle HVphysique

Path Planning 2.5D

CATIASolidWorks

iPad

C++Python

CORBA

Kinecttrackin g)

Virtuose iPadBrowser

CORBA…

Interface utilisateur

(GUI)

Interface Programmation

Interface utilisateur

(RV)

DIO

(haptique)

Page 39: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

DIO (Device

• Système de gestion de périphériques RV

• Sous ensemble de DSimI

• Construction de périphérique en plusieurs étapes :

filtres

factory

hardware

factory

hardware filtres

Device Input Output): Principe

Système de gestion de périphériques RV

Construction de périphérique en plusieurs étapes :

39

filtres

Page 40: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

DIO : Les périphériques intégrés

TrackingTracking optique ARToptique ART

Caméra couleur Caméra couleur

SpaceSpace MouseMouse

Caméra couleur Caméra couleur

Caméra Temps de Vol PMDCaméra Temps de Vol PMD

Centrale inertielle Centrale inertielle

Centrale inertielle Centrale inertielle MoveaMovea

Microsoft Microsoft KinectKinectMicrosoft Microsoft KinectKinect

Sony Playstation MoveSony Playstation Move

HaptionHaption Virtuose6DVirtuose6D

DIO : Les périphériques intégrés

Caméra couleur Caméra couleur BaslerBaslerCaméra couleur Caméra couleur BaslerBasler

Centrale inertielle Centrale inertielle XSensXSens

KinectKinectKinectKinect

Virtuose6DVirtuose6D

Page 41: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

Quelques exemples…

41

Page 42: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

• XDE: Aperçu général

• Briques:

� Simulation physique� Simulation physique

� Fluide

� Humain Virtuel

• Middleware:

� DSimI

� DIO

• Exemple appliqué à la robotique

• Roadmap

Plan

42

Page 43: XDE Simulation Engine - sorbonne-universite.fr•Qu’est-ce que ça peut faire ? Simulation physique réaliste/interactive Des corps rigides Poutres 3D déformables (câbles) Des

Deux «

• XDECore (brique)

� Brique simulation physique

� Librairie C++ classique (*.h, *.lib, *.dll/*.

• XDE• XDE

� Environnement complet de simulation (15 briques)

� Interface Python et RTT déportée

• Roadmap

� V1.0-beta2 : état actuel

� V1.0-rc1: mi-août� Interface C++ locale

� Début de documentation

� Outils pour la robotique (calculatrice physique)� Outils pour la robotique (calculatrice physique)

� v1.0 : mi-novembre

• Support

[email protected]

produits », XDECore et XDE

Librairie C++ classique (*.h, *.lib, *.dll/*.so)

43

Simulation physique

XDE

Environnement complet de simulation (15 briques)

Outils pour la robotique (calculatrice physique)

XDE

Simulation physique

Contrôle HV

PathPlanning

Outils pour la robotique (calculatrice physique)