xde simulation engine - sorbonne-universite.fr•qu’est-ce que ça peut faire ? simulation...
TRANSCRIPT
Simulation Simulation
XDEXDE
Simulation Simulation EngineEngine
Juillet 2011Juillet 2011
Ingénieur - Chercheur
Laboratoire de Simulation Interactive
CEA LIST
• XDE: Aperçu général
• Briques:
� Simulation physique� Simulation physique
� Fluide
� Humain Virtuel
• Middleware:
� DSimI
� DIO
• Exemple appliqué à la robotique
• Roadmap
Plan
2
• 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é
• 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
• 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
• 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
• 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
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
• 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
• 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
Structure: solveur(GVM)
11
Simulation physique
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
� 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
� 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
• 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
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
CFD
17
Simulation fluide
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
• 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
• 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
• 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
Humain Virtuel autonome: Locomotion
ORC Control
Tâches
Locomotion
ORC Optim
Humain Virtuel autonome: Locomotion
22
Simulation
Simulation HV
Humain virtuel autonome
23
Simulation HV
• 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
• 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
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, …
• 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
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
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
• 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
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 (...)
• 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
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
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" )
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" )
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
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
• 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)
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
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
Quelques exemples…
41
• XDE: Aperçu général
• Briques:
� Simulation physique� Simulation physique
� Fluide
� Humain Virtuel
• Middleware:
� DSimI
� DIO
• Exemple appliqué à la robotique
• Roadmap
Plan
42
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
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)