Zum Hauptinhalt springen

Ausdruck Feld

In einem Ausdrucksfeld können Sie nicht nur eine Zahl, sondern einen mathematischen Ausdruck eingeben. Die RobFlow-Konvention für diese Ausdrücke entspricht der Programmiersprache Python.

Grundlegende mathematische Operationen:

  • Plus: +
  • Minus: -
  • Multiplikation: *
  • Division: /

Logische Operatoren:

  • UND: and
  • ODER: oder
  • Gleich: ==
  • Nicht gleich: !=

Variablen

  • Um eine Variable einzufügen, drücken Sie einfach # im Ausdrucksfeld, woraufhin ein Menü erscheint, in dem Sie die gewünschte Variable mit einem einfachen Klick auswählen können.
    Sie können einfach weiter tippen, um die Variablenliste nach Variablennamen zu filtern. Wenn Sie die Variablen so lange filtern, bis nur noch eine übrig ist, können Sie diese auch durch Drücken der Eingabetaste übernehmen.
    Die Variable wird in ihrer jeweiligen Farbe angezeigt, z. B. myVariable.

Expression Field

JSON:

  • Sie können JSON-Daten in einer String-Variablen speichern. Dies ermöglicht Ihnen den direkten Zugriff auf strukturierte oder verschachtelte Daten innerhalb von Ausdrücken.
  • Um auf Werte innerhalb des JSON zuzugreifen, verwenden Sie die Klammernotation – ähnlich wie beim Zugriff auf Daten in Python.
    Beispiel: myVariable["key0"]["key1"] greift auf den verschachtelten Wert unter key1 innerhalb von key0 zu.
  • Wenn es sich bei dem Element um ein Array handelt, können Sie auch numerische Indizes verwenden, um auf Elemente zuzugreifen.
    Beispiel: myVariable["users"][0]["name"] gibt den Namen des ersten Elements im Array „users“ zurück.

Erweiterte mathematische Funktionen (siehe Python-Mathematikfunktionen für Details):

  • 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'cbrt', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'erf', 'erfc', 'exp', 'exp2', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log1p', 'log10', 'log2', 'modf', 'pow', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'prod', 'sumprod', 'perm', 'comb', 'nextafter', 'ulp', 'pi', 'e', 'tau', 'inf', 'nan'
hinweis

Alle Namen aus dem Python-Modul math stehen zur Verfügung; die obige Liste entspricht daher dem Modul in seinem aktuellen Umfang. Die integrierten Funktionen darunter sind dagegen eine feste Positivliste.

In Python integrierte Funktionen (siehe Python-Standardfunktionen für Details):

  • 'min', 'max', 'abs', 'round', 'sum', 'len', 'all', 'any'
hinweis

Wenn Sie Zahlenarrays verwenden, achten Sie darauf, Leerzeichen zwischen den Einträgen einzufügen. Andernfalls werden die Zahlen möglicherweise als Float-Werte behandelt (z. B. wird [1,2,3] zu [1.2, 3] ausgewertet. Die Verwendung von [1, 2, 3] würde wie beabsichtigt funktionieren. Siehe Beispiele unten).

Pose-Ausdrücke:

Pose-Ausdrücke bieten eine strukturierte Möglichkeit, Positionen und Orientierungen darzustellen. Diese Ausdrücke können entweder kartesische Posen oder Gelenkposen darstellen.

Die folgende Syntax zeigt, wie ein Pose-Ausdruck ausgeschrieben aussieht. In der App bauen Sie ihn normalerweise Feld für Feld im Pose-Ausdruck-Konfigurator zusammen — siehe Pose-Ausdruck konfigurieren.

Kartesische Posenausdrücke:

  • Ein kartesischer Posenausdruck definiert eine 3D-Position und eine Orientierung, optional relativ zu einem Referenzrahmen.
  • Format: [PositionX, PositionY, PositionZ, OrientationZ, OrientationY, OrientationX], ReferenceFrame
  • Beispiel: [100+3, IntVar*FloatVar, PoseB.z, PoseA.rz, PoseA.ry, PoseA.rx], PoseD
  • Aufschlüsselung:
    • IntVar*FloatVar und PoseB.z: Definieren die X-, Y- und Z-Positionskomponenten.
    • PoseA.rz, PoseA.ry, PoseA.rx: Stellen die Orientierung der Pose dar.
    • PoseD symbolisiert das Referenzkoordinatensystem. Im Allgemeinen kann das Referenzkoordinatensystem BASE sein, oder Sie können eine CartesianPoseVariable angeben (in diesem Beispiel PoseD).

Gelenk-Posenausdrücke:

  • Ein Gelenk-Posenausdruck definiert Werte für einzelne Gelenke.
  • Format: [Joint1, Joint2, Joint3, ...]
  • Beispiel: [JointPose.j1, IntVar, 100*2, 3+4, FloatVar, JointPoseB.j3]
  • Aufschlüsselung:
    • Jeder Eintrag gibt einen neuen Wert für das entsprechende Gelenk an.
    • Beispiel: JointPose.j1: Verweist auf den aktuellen Wert des ersten Gelenks der JointPoseVariable namens JointPose.

Beispielausdrücke:

  • 2 * 3 * 4 ==> 24
  • 2 * pi ==> 6,283
  • pow(2, 3) ==> 8
  • sqrt(9) ==> 3
  • 2 * True ==> 2
  • 2 * False ==> 0
  • 2 * myVariable ==> 4 (myVariable=2)
  • True oder False ==> True
  • True und False ==> False
  • 3 != 3 ==> Falsch
  • 5 == 5 ==> Wahr
  • sum([1, 2, 3]) ==> 6
  • sum([1,2,3]) ==> 4,2 (wird zu sum([1,2,3]) ausgewertet, siehe Hinweis oben)
  • min([4, 7]) ==> 4
  • max([4, 7]) ==> 7
  • len([4, 7]) ==> 2
  • all([True, False]) ==> False
  • any([True, False]) ==> True
  • [100+3, IntVar*2, PoseB.z, PoseA.rz, PoseA.ry, PoseA.rx], BASE
  • [JointPose.j1, 90, FloatVar]