Skip to Content
FASTSUITE E2API RéférencePython APIRappelsLimites dynamiquesJoints de contrôleLimites dynamiques

Joints de contrôleLimites dynamiques

Le rappel CheckJointsDynamicLimits est appelé automatiquement lorsque les limites articulaires doivent être vérifiées, soit lors de l’interaction conjointe et de l’enseignement, soit lors de simulation et d’optimisation automatique du parcours d’outil.

Le modèle de rappel est défini dans un fichier cenpyDefResource.py. Le rappel CheckJointsDynamicLimits reçoit en entrée une liste des valeurs principales et externes des joints, ordonnées de la même manière que dans la ressource machine. Ainsi, les joints principaux passent d’abord, puis les articulations externes. Par exemple, si la ressource possède 5 joints principaux et 2 externes, les CheckJointsDynamicLimits recevront une liste de 7 valeurs de joints.

Le script lui-même peut être placé dans le dossier interne E2Plugin ou dans n’importe quel dépôt local. Le script ne sera exécuté que si le nom de l’attribut est trouvé, que la valeur de l’attribut n’est pas vide et que le chemin spécifié existe. Un seul script peut être utilisé pour plusieurs ressources, ou chaque ressource peut avoir un script distinct.

Le chemin du script doit être défini dans les attributs définis par l’utilisateur de la ressource principale. Le nom de l’attribut a un nom prédéfini : DynamicLimitsScriptPath. Un attribut peut avoir soit un absolu, soit un chemin relatif.

Si le chemin relatif doit être utilisé, placez le script avec la définition des limites dynamiques dans un E2Plugin interne. La structure de dossiers recommandée est : .. \E2InstallationFolder\E2Plugin\DynamicLimits\RobotManufacturer\ScriptName.py

Ainsi, le chemin relatif doit commencer par le dossier DynamicLimits : DynamicLimits\RobotManufacturer\ScriptName.py. La première partie du chemin sera automatiquement complétée avec l’emplacement interne de l’E2Plugin.

! Diagramme de classes de chemin de script des limites dynamiques

  • CheckJointsDynamicLimits(list : jointValues**):** DynamicLimitsReachabilityStatus

  • ValorsJoints — Valeurs couplées des joints principal et externe à vérifier

  • retour — Statut de la disponibilité : ACCESSIBLE ou INJOIGNABLE

Vérifiez que les valeurs des joints couplés ne sont pas hors des limites dynamiques.

[Example 1] # Import libraries from centypes import * def CheckJointsDynamicLimits(joints): # condition 1: J2+J3<-76 && J4<-90 if joints[1] + joints[2] < -76 and joints[3] < -90: return UNREACHABLE # condition 2: J2+J3<-73 && J4-5*(J2+J3) > 435 elif joints[1] + joints[2] < -73 and joints[3] - 5 * (joints[1] + joints[2]) > 435: return UNREACHABLE # condition 3: J5 < -100 && J6 < 30 && J6 > -60 elif joints[4] < -100 and joints[5] < 30 and joints[5] > -60: return UNREACHABLE # condition 4: ((J5 > 100 && (J6 < 120 || J6 < -160)) || (J5 > 110 && (J6 < 100 || J6 < -130) ) ) elif (joints[4] > 100 and (joints[5] < 120 or joints[5] < -160)) or (joints[4] > 110 and (joints[5] < 100 or joints[5] < -130)): return UNREACHABLE else: return REACHABLE

Une bibliothèque interne

[cenpylib] (../guide/getting-started/libraries)

possède quelques fonctions utilitaires utilisées pour simplifier la vérification des limites dynamiques. Par exemple, la fonction Ramp :

[Example 2] # Import libraries from centypes import * from cenpylib import DynamicLimits as DL def CheckJointsDynamicLimits(joints): # Min Limit: =ramp(dof(2)*DEG,0,-86,155,-15)*RAD # Max Limit: =ramp(dof(2)*DEG,-105,115,-90,160)*RAD j2 = joints[1] j3 = joints[2] j3min = DL.Ramp(j2, 0, -86, 155, -15) j3max = DL.Ramp(j2, -105, 115, -90, 160)
if j3 >= j3min and j3 <= j3max: return REACHABLE else: return UNREACHABLE
Was this page helpful?