Skip to Content
Python APIRappelsLimites dynamiquesJointsDe ContrôleLimites Dynamiques

JointsDe 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 devrait 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.

Dynamic Limits Script Path class diagram

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

  • Valeurs des joints — Valeurs couplées des joints principaux et externes à vérifier

  • retour — Statut de la portée : ACCESSIBLE ou INACCESSIBLE

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

An internal library cenpylib has a few utility functions used to simplify the dynamic limits check. For example, the Ramp function:

[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?