Tutorials

1. Basic structure of a research script

from ur.ur_ctrl import UrCtrl, MotionMode

ROBOT_IP = "10.170.10.56"

with UrCtrl(ROBOT_IP) as robot:
    robot.set_speed(20)
    robot.set_accel(20)

    p = robot.current_position
    print(p)

2. Create taught points

with URCtrl(ROBOT_IP) as robot:
    robot.teach("P1")
    robot.teach("J1")

3. Move to a taught point

with URCtrl(ROBOT_IP) as robot:
    robot.move("P1", motion_mode=MotionMode.PTP)

4. Move linearly to a measurement position

with URCtrl(ROBOT_IP) as robot:
    robot.move("P1", motion_mode=MotionMode.LINE, speed=10, accel=10)

5. Retract

with URCtrl(ROBOT_IP) as robot:
    robot.move("P1+(0,0,50)", motion_mode=MotionMode.LINE)

6. Combine motion with IO

with URCtrl(ROBOT_IP) as robot:
    robot.move("P_pick", motion_mode=MotionMode.LINE)
    robot.set_IO(0, True)

    robot.move("P_place", motion_mode=MotionMode.LINE)
    robot.set_IO(0, False)

7. Inspect the state and stop

with URCtrl(ROBOT_IP) as robot:
    state = robot.state()

    if state.get("protective_stopped"):
        print(robot.get_current_error_info())

8. Integrate into an experimental sequence

with URCtrl(ROBOT_IP) as robot:
    robot.move("P_sample", motion_mode=MotionMode.LINE)
    robot.set_IO(0, True)

    # Place instrument-control operations here
    # detector.start()
    # detector.wait()

    robot.set_IO(0, False)
    robot.move("P_home", motion_mode=MotionMode.PTP)

This allows robot operations to be written as part of a measurement sequence.