Skip to Content
AnpassungDynamische Gelenkgrenzen von Roboter und Maschine

Dynamische Gelenkgrenzen von Roboter und Maschine

Dynamische Gelenkgrenzen

Viele Roboter- und Maschinensteuerungen erlauben die Definition dynamischer Gelenkgrenzen, bei denen der Mindest- und/oder Höchstwert einer Grenze vom Wert einer anderen Achse abhängt. Gründe für solche Grenzen können Hindernisse im Arbeitsbereich des Roboters oder der Maschine sein oder das Vermeiden unerwünschter Aufwicklungen von Dresspacks, Kabeln oder Schläuchen.

FASTSUITE Edition 2 stellt eine Python-API zur Verfügung, um solche erforderlichen Grenzwertregel(n) zu erstellen.

Wie man die dynamischen Gelenkgrenzen definiert

Diese Seite zeigt die Erstellung eines Regelwerks für einen OTC-DAIHEN-Roboter.

1. Acquire the limits

Zuerst müssen wir die sogenannten Link Soft Limits des OTC-Controllers erfassen:

  1. Erhöhen Sie das Benutzerschutzniveau auf mindestens Spezialist. (R->314 Passwort eingeben FD-ST: 12345)

  2. Navigate to:

    • (1) Constant Settings
    • (2) Machine Constants
    • (3) Link Soft Limit.

  3. Each page represents the limits of one driving and one dependent axis. Only the pages that are enabled need to be considered.

    Joint 2 moves in between -65° and +180°. Joint 1 can normally move in between -170° and +170°. Only when Joint 2 is within the specified ranges as shown below, the limits of Joint 1 are restricted.

    E. g. Limit2 defines that the lower limit of Joint 1 ramps down from -125° to -154° while Joint 2 moves from -65° to -47° and so on. All applicable limit conditions need to be considered in the Python script specific to this particular robot.

  4. On page 2, Joint 3 is also dependent on Joint 2. Limit1 defines that the lower limit of Joint 3 ramps down from -15° to -80° while Joint 2 moves from -65° to 35°. The maximum limit of Joint 3 remains unchanged.


2. Erstellen Sie das Python-Skript

  1. Next we need to create a Python file and store it in the E2Plugin folder you use for your customization.

  2. Open the robot resource in your Edition 2 session. Open its properties dashboard and add a string attribute by the name of DynamicLimitsScriptPath in the User defined attributes container.

    The Python file name and its path can be provided relative to the E2Plugins folder or as an absolute path including drive letter.

  3. The following Python code demonstrates how multi-range limits for multiple joints can be composed. Add these lines to the Python file of step 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

More information about Python customization can be found in the documentation Technology customization with Python API.

  1. There are two limitations with respect to dynamic joint limits:

    a. The joint limits that are shown in the Simulation monitor are not updated when a dynamic limit kicks in.

    b. The Dynamic Limits function is not called when an axis is modified in the Teach panel. Instead, use the manipulator or grab the robot joint directly in 3D to invoke the inverse kinematics.

Was this page helpful?