Vous êtes sur la page 1sur 16

05/02/16

VREP

Interface

Les boutons

1
05/02/16

Les boutons

Repères …

Rota<on alpha/x

2
05/02/16

Rota<on beta/y

Rota<on gamma/z

Transla<on
•  Même principe que les rota<ons
•  AKen<on si modifica<on rota<on transla<on
–  Ces modifica<ons sont mémorisées dans les
propriétés de l’objet
–  Modifica<ons possibles dans la fenêtre de
dialogue qui s’ouvre quand on sélec<onne l’un
des boutons.
•  Repère propre de l’objet
•  Repère absolu

3
05/02/16

Dialogue Transla<on Rota<on

Construc<on d’une scène


•  1) modèle d’objet
–  Cliquer sur un objet dans la liste de
gauche
–  Glisser le dans la fenêtre de travail
•  2) Ajout d’élément
–  Clic droit n’importe où dans la fenêtre
de travail
–  Addà sélec<onner l’élément que vous
désirez

Les éléments

4
05/02/16

Propriétés
•  Collidable: les objets ayant ceKe propriété sont testés
par l’algorithme de collision
•  Measurable: l’algoritme de calcul des distances prend
en compte l’objet ayant ceKe propriété
•  Detectable: l’objet peut-être détecté par les capteurs
de proximité
•  CuKable: l’objet peut-être évidé
•  Renderable: l’objet sera vu par les capteurs de vision
•  Viewable: l’objet peut-être vu dans les différentes vues

Fenêtre de dialogue : propriétés

Chaine cinéma<que -1-

5
05/02/16

Chaine cinéma<que -2-

Chaine cinéma<que 2

Chaine cinéma<que -2-

6
05/02/16

Programma<on
•  Script : écrit en LUA
•  Ou
–  Programme extérieur
•  Python
•  C/C++
•  Matlab
•  java

Mode opératoire API externe


•  Fonc<ons bloquantes
•  Fonc<ons non-bloquantes
•  Flux de données
•  Opéra<ons synchrones

Fonc<on bloquante

7
05/02/16

Fonc<on non bloquante

Data streaming

Mode synchrone

8
05/02/16

Exemple 1 Matlab
•  Contrôle d’un Scara avec Capteur de Vision
–  Côté Vrep
•  Introduire un Scara
•  Supprimer le contenu du script
•  Ajouter un capteur de vision
•  Associer une interface de visualisa<on de l’image

Côté Matlab 1
vrep=remApi('remoteApi'); % Indispensable
vrep.simxFinish(-1); % on ferme la connexion

%Démarrage de la connexion,
clientID=vrep.simxStart('127.0.0.1',19997,true,true,5000,5);
% true : la fonc<on aKend la connexion jusqu'au <me out
% true : si la connexion est perdue pas d'aKente d'une seconde tenta<ve
% 5000 <meout en ms
% 5 valeur recommandée pour le renvoi des data

Côté Matlab 2
if (clientID>-1) % on vérifie que la liaison est établie

%On récupère le handle des objets que l'on va manipuler
%Les noms sont ceux figurant dans le fichier Matlab_scara

[~,axis1]=vrep.simxGetObjectHandle(clientID,'MTB_axis1',vrep.simx_opmode_oneshot_wait);
….

% Démarrage du simulateur V-REP (rien ne s'exécute encore)

[errorCodeStart]=vrep.simxStartSimula<on(clientID,vrep.simx_opmode_oneshot_wait);

% on peut vérifier que tout se passe bien la valeur errorCodeStart = 0 si tout est ok

9
05/02/16

Côté Matlab 3
%commande des ar<cula<ons posi<on 1
[~]=vrep.simxSetJointPosi<on(clientID,axis1,deg2rad(30),vrep.simx_opmode_oneshot_wait);
[~]=vrep.simxSetJointPosi<on(clientID,axis2,deg2rad(15),vrep.simx_opmode_oneshot_wait);

% on arrête VREP IMPORTANT


[errorCodeStop]=vrep.simxStopSimula<on(clientID,vrep.simx_opmode_oneshot_wait);

% On libère le socket
vrep.simxFinish(clientID);

Contrôle bubble
•  Côté vrep
–  Rien de par<culier
•  Côté Matlab
–  Contrôle iden<que
–  On ajoute un streaming

Streaming
%On récupère le handle des objets que l'on va manipuler SensingNos
[~,Sensor1]=vrep.simxGetObjectHandle(clientID,'SensingNose',vrep.simx_opmode_oneshot_
wait)

% on ini<alise le streaming lié au capteur



[~,State1,~,LookingAt1,~]=vrep.simxReadProximitySensor(clientID,Sensor1,vrep.simx_opmode
_streaming);

10
05/02/16

Streaming
% on lit le capteur

[~,State1,~,LookingAt1,~]=vrep.simxReadProximitySensor(clientID,Sensor1,vrep.simx_opmo
de_buffer);

% le code retourné, ici pas pris en compte ~
% detec<onState: false=no detec<on
% detectedPoint: les coordonnées du point détecté dans le repère capteur
% ici pas pris en compte (~)
% detectedObjectHandle: le handle de l'objet détecté
% detectedSurfaceNormalVector: le vecteur nomal (normalizé) de la surface détectée
repère capteur, ici pas pris en compte (~)

Compléments
% on récupère le temps de VREP
CmdTime(i)=vrep.simxGetLastCmdTime(clientID);

[~]=vrep.simxSetJointTargetVelocity(clientID,Motor2,-
deg2rad(Vitesse),vrep.simx_opmode_oneshot_wait);

Programma<on avec Matlab


•  Matlab doit connaître le Path pour les fichiers
suivants
–  remoteApiProto.m
–  remApi.m
–  remoteApi.dll, windows
–  remoteApi.dylib mac
–  remoteApi.so linux

11
05/02/16

Commandes sous Matlab


•  simxSetJointForce (number clientID,number
jointHandle,number force,number opera<onMode)
•  clientID: ID du client
•  jointHandle: handle de l’ar<cula<on
•  force: force maximale ou couple maximum
•  opera;onMode: = simx_opmode_oneshot

•  Programme la force maximale ou le moment de


torsion qu'une ar<cula<on peut exercer. CeKe fonc<on
n'a aucun effet si le mode dynamique n’est ac<vé ou
pour des ar<cula<ons sphériques.

Commandes sous Matlab


•  simxSetJointPosi;on(number clientID,number
jointHandle,number posi<on,number
opera<onMode)
•  posi<on: valeur angulaire ou linéaire que doit aKeindre
l’ar<cula<on (toute ar<cula<on sauf sphérique)
•  Force la posi<on de l’ar<cula<on. On peut
commander plusieurs ar<cula<ons à la fois
avec synchronisa<on des déplacements, voir
simxPauseCommunica<on

Commandes sous Matlab


•  simxSetJointTargetPosi;on(number
clientID,number jointHandle,number
targetPosi<on,number opera<onMode)
•  Posi<on à aKeindre si le mode est en force ou en
couple
•  simxSetJointTargetVelocity(number
clientID,number jointHandle,number
targetVelocity,number opera<onMode)
•  Fixe la vitesse de déplacement de l’ar<cula<on
angulaire ou linéaire.

12
05/02/16

Commandes sous Matlab


•  simxSetObjectOrienta;on(number clientID,number
objectHandle,number rela<veToObjectHandle,array
eulerAngles,number opera<onMode)
•  Fixe l’orienta<on en angle d’Euler (alpha beta gamma) d’un objet
et dans quel repère.
•  simxSetObjectPosi;on(number clientID,number
objectHandle,number rela<veToObjectHandle,array
posi<on,number opera<onMode)
•  Fixe la posi<on x,y,z d’un objet et dans quel repère.
•  simxSetSphericalJointMatrix() commande une
ar<cula<on sphérique

Commandes sous Matlab


Image
•  simxGetVisionSensorImage () permet de
récupérer le pointeur d’une image de caméra
•  simxGetVisionSensorImage2 () idem mais on
récupère l’image sous forme de tableau
•  simxSetVisionSensorImage() renvoie une
image à vrep avec un pointeur sur un tableau
•  simxSetVisionSensorImage2() renvoie une
image à vrep sous forme d’un tableau.

Contrôle du simulateur
•  simxStart lance le début de la simula<on (pas
d’effet)
•  simxStartSimula;on relance la simula<on
après une pause ou une reprise
•  simxStopSimula;on
•  simxSynchronous Fixe le mode synchrone
•  simxSynchronousTrigger fait démarrer

13
05/02/16

Suivi de chemin
•  Edi<on
–  N’importe où dans la fenêtre de V-REP, clic droit,
–  Add àPathàSegment type
–  Path étant sélec<onné (àarborescence)
–  Sélec<onner l’éditeur de chemin, icône
–  Une nouvelle fenêtre s’ouvre
•  Clic droit sur le dernier point
•  Insert new control point axer selec<on

Suivi de chemin
•  Edi<on
–  Sélec<on Object/Item Shix
–  Déplacer le point de contrôle créé
–  Répéter les opéra<ons

Suivi de chemin
•  Edi<on
–  Dans la fenêtre Path Edi<on, cliquer Path is
closed, vous pouvez régler les coefficients des
courbes de Béziers
–  Fermer la fenêtre Path Edi<on, répondre yes à la
ques<on

14
05/02/16

Suivi de chemin
•  Edi<on
–  Le chemin étant sélec<onné, ouvrir les propriétés
–  Désélec<onner
•  how orienta;on of points,
•  Show path line
•  Show current posi;on on path

Suivi de chemin
•  Edi;on
–  Aller dans Show Path Planning Dialog,
–  Sélec;onner
•  Path shaping enabled
•  Horizontal segment
•  Scaling factor à 4
–  Ajuster la couleur Adjust Color Ambient /diffuse
component

Applica<on E-Puck
•  Ajouter un epuck dans la scène, en le plaçant
sur le Path que l’on vient de définir.
•  Cliquer sur les 3 barres ver<cales, une fénêtre
de paramètres s’ouvre comme sur la figure
suivante :

15
05/02/16

Applica<on E-Puck
–  Sélec<onner opMode et meKre
0 dans Value (suivi de chemin)
–  Lancer la simula<on, l’E-puck
suivra le chemin.

16

Vous aimerez peut-être aussi