Edition 2 Personnalisation

Limites dynamiques des axes robots et machine

 

JointLimits


Limites des liaisons dynamiques


De nombreux contrôleurs de robots et de machines permettent de définir des limites de liaisons dynamiques, où la valeur minimale et/ou maximale d'une limite dépend de la valeur d'un autre axe. Ces limites peuvent être justifiées par la présence d'obstacles dans l'enveloppe de travail du robot ou de la machine, ou pour éviter l'enroulement indésirable des accastillages, de câbles ou de tuyaux.

 

FASTSUITE Edition 2 fournit une API Python pour créer de telles règles de limitation.



Comment définir les limites dynamiques des liaisons


Cette page présente la création d'un ensemble de règles pour un robot OTC-DAIHEN.



1

Obtenir les limites

Tout d'abord, nous devons acquérir ce que l'on appelle les Link Soft Limits du contrôleur OTC :

1.1

Augmenter le niveau de protection de l'utilisateur à au moins Spécialiste.

(R->314 Entrer le mot de passe FD-ST : 12345)

1.2

Naviguer vers :

(1) Constant Settings

(2) Machine Constants

(3) Link Soft Limit.

 

1.3

Chaque page représente les limites d'un axe moteur et d'un axe dépendant. Seules les pages activées doivent être prises en compte.

 

L'axe 2 se déplace entre -65° et +180°. L'axe 1 peut normalement se déplacer entre -170° et +170°. Les limites de l'axe 1 ne sont restreintes que lorsque l'axe 2 se trouve dans les plages spécifiées, comme indiqué ci-dessous.

 

Par exemple, Limit2 définit la limite inférieure de l'axe 1 de -125° à -154° tandis que l'axe 2 se déplace de -65° à -47° et ainsi de suite. Toutes les conditions de limite applicables doivent être prises en compte dans le script Python spécifique à ce robot particulier.

 

1.4

A la page 2, l'axe 3 dépend également de l'axe 2. Limit1 définit que la limite inférieure de l'axe 3 descend de -15° à -80° tandis que l'axe 2 passe de -65° à 35°. La limite maximale de l'axe 3 reste inchangée.

 

 

 

 



2

Créer le script Python

2.1

Ensuite, nous devons créer un fichier Python et le stocker dans le dossier E2Plugin que vous utilisez pour votre personnalisation.

 

 

2.2

Ouvrez la ressource robot dans votre session Edition 2. Ouvrez son tableau de bord des propriétés et ajoutez un attribut de chaîne du nom de DynamicLimitsScriptPath dans le conteneur des attributs définis par l'utilisateur.

 

Le nom du fichier Python et son chemin d'accès peuvent être fournis par rapport au dossier E2Plugins ou sous forme de chemin d'accès absolu, y compris la lettre du lecteur.

 

 

2.3

e code Python suivant montre comment composer des limites à plages multiples pour plusieurs liaisons. Ajoutez ces lignes au fichier Python de l'étape 2.1.

 

# Import libraries

from centypes import *

from cenpylib import DynamicLimits as DL

 

def CheckJointsDynamicLimits(joints):

 

  j1 = joints[0]

  j2 = joints[1]

  j3 = joints[2]

  j5 = joints[4]

  j6 = joints[5]

 

  # Check J1 dependent on J2

  j1min = InRange(j2, -65, -47)*DL.Ramp(j2, -65, -125, -47, -154) + InRange(j2, -47, 180)*-170

  j1max = InRange(j2, -65, -41)*DL.Ramp(j2, -65, 130, -41, 151) + InRange(j2, -41, 180)*170

  if not (j1 >= j1min and j1 <= j1max):

      return UNREACHABLE

 

  # Check J3 dependent on J2

  j3min = InRange(j2, -65, 35)*DL.Ramp(j2, -65, -80, -35, -15) + InRange(j2, -35, 180)*-80

  j3max = InRange(j2, -65, 180)*100

  if not (j3 >= j3min and j3 <= j3max):

      return UNREACHABLE

 

  # Check J6 dependent on J5

  j6min = InRange(j5,-140,-70)*DL.Ramp(j5,-140,-110,-70,-165) + InRange(j5,-70,-35)*DL.Ramp(j5,-70,-165,-35,-200) + InRange(j5,-35,-20)*DL.Ramp(j5,-35,-200,-20,-300)

  j6max = InRange(j5,-140,-70)*DL.Ramp(j5,-140,110,-70,165) + InRange(j5,-70,-35)*DL.Ramp(j5,-70,165,-35,200) + InRange(j5,-35,-20)*DL.Ramp(j5,-35,200,-20,300)

  if not (j6 >= j6min and j6 <= j6max):

      return UNREACHABLE

 

  return REACHABLE

 

def InRange(joint, x1, x2):

  """Dynamic limits utility functions.

  Returns:

         integer: 0 or 1.

   """

 

  if joint < x1 or joint > x2:

      return 0

  else:

      return 1

 

 

 

Information_24

Pour plus d'informations sur la personnalisation Python, consultez la documentation Personnalisation technologique avec l'API Python.

2.4

Il existe deux limitations en ce qui concerne les limites dynamiques des liaisons :

a.Les limites de liaisons affichées dans le moniteur de simulation ne sont pas mises à jour lorsqu'une limite dynamique est activée.

b.La fonction limites dynamiques n'est pas appelée lorsqu'un axe est modifié dans le panneau d'apprentissage. Au lieu de cela, utilisez la boussole ou saisissez directement l'axe du robot en 3D pour invoquer la cinématique inverse.

 


 


Previous
Page précédente
Chapter
Page principale du chapitre
Next
Page suivante