Virtual Variables P/I/F/IO

Basics

P1, I1, and F1 are variable names in the common interface. They are not internal UR Controller variables.

In the UR implementation, RobotVarManager saves them to JSON.

P1
    ↓
RobotVarManager
    ↓
JSON

Attribute access

robot.P1 = [300, 0, 200, 0, 180, 0]
print(robot.P1)

robot.I1 = 10
robot.F1 = 1.5

get_var() / set_var()

robot.get_var("P1")
robot.set_var("P1", [300, 0, 200, 0, 180, 0])

robot.get_var("P", 1)
robot.set_var("P", 1, [300, 0, 200, 0, 180, 0])

P variables

robot.set_P(1, [300, 0, 200, 0, 180, 0])
pose = robot.get_P(1)

P is a six-element pose in mm / degree rotation-vector representation.

teach()

robot.teach("P1")
robot.teach("J1")

teach("P1") saves the current TCP pose as P1.

teach("J1") saves the current joint angles as J1.

This is teaching at the higher-level common interface; it does not write a P1 register in the UR Controller.

I / F

robot.set_I(1, 100)
robot.get_I(1)

robot.set_F(1, 1.25)
robot.get_F(1)

IO

IO is not a virtual variable; accesses are forwarded to physical IO.

robot.IO0 = True
print(robot.IO0)

Internally, set_IO() / get_IO() are called.

is_empty_position()

robot.is_empty_position("P1")

Returns True if the P variable has not been registered.