Examples

This section contains examples of how to use owl python client to operate OWLRobot.

Warning

Please ensure that the movements demonstrated in these examples are thoroughly verified for collision avoidance and safety before executing them on the robot. When uncertain, it is advisable to visually inspect the motion beforehand.

Basic Example

Simple example using the python client would be to connect to the OWLRobot and get the current joint angles of the robot.

First setup is to create a client object from OwlClient class.

from owl_client import OwlClient

owl_robot_ip = "10.42.0.54" #static IP address of robot
client = OwlClient(owl_robot_ip)

After that, we wait until the robot is not running. Here running of the robot doesn’t specify any type of command execution, it shows that wether the robot is in any inoperable modes [not_available, power_off, error] or not.

import time

while not client.is_running():
   time.sleep(0.2)

Finally, get the current joint angles of robot by call get_joint method of the client.

while True:
    print("Current Joints : ", client.get_joint().get_joints())
    time.sleep(0.1)

Move Example

We can call move methods of owl client in two ways which is synchronously or asynchronously.

Synchronous

The following is very simple example using MoveJ where robot will go to a valid joint configuration then move back zero configuration five times in a row.

from owl_client import OwlClient, Joint
import time

client = OwlClient("10.42.0.54")
jointSpeed = 50 #degrees/sec

# Wait for robot to be available
while not client.is_running():
    time.sleep(0.2)

#create joint goals for robot

#zero configuration
zero_position = Joint()
zero_position.Base = 0.0
zero_position.Shoulder = 0.0
zero_position.Elbow  = 0.0
zero_position.Wrist1 = 0.0
zero_position.Wrist2 = 0.0
zero_position.Wrist3 = 0.0

#valid configuration
valid_position = Joint()
valid_position.Base = 0.0
valid_position.Shoulder = 0.0
valid_position.Elbow  = -1.57  #(-90)
valid_position.Wrist1 = 0.0
valid_position.Wrist2 = 0.0
valid_position.Wrist3 = 0.0

count = 0
while count < 5 :
    client.move_to_joint(zero_position, jointSpeed)
    time.sleep(1)
    client.move_to_joint(valid_position, jointSpeed)
    time.sleep(1)
    count += 1

Asynchronous

Following example will perform two asynchronous movements, first one by MoveJ, followed by a movement with MoveL. Both movements are stopped before reaching the targets with move_abort.

from owl_client import OwlClient, Joint , Pose
import time

client = OwlClient("10.42.0.54")

jointSpeed = 50 #degrees/sec
toolSpeed  = 100 #mm/sec

# Wait for robot to be available
while not client.is_running():
    time.sleep(0.2)

#create joint goal for robot
joint_position = Joint()
joint_position.Base = 0.0
joint_position.Shoulder = 0.0
joint_position.Elbow  = -1.57  #(-90)
joint_position.Wrist1 = 0.0
joint_position.Wrist2 = 0.0
joint_position.Wrist3 = 0.0

#create pose goal for robot
pose = Pose()
pose.x = -0.176
pose.y = -0.240204
pose.z = 0.489203
pose.roll = 3.1376
pose.pitch = -0.087288
pose.yaw = 1.56449

#Move Joint Pose asynchronously
client.move_to_joint(joint_position, jointSpeed,wait=False)
time.sleep(1)
client.move_abort()

client.move_to_pose(pose, toolSpeed,wait=False)
time.sleep(1)
client.move_abort()

IO Example

This example will change the state of the digital output (DO) of PLC inside the OWLRobot control Box. The current PLC model used have total eight digital outputs, from which zero is dedicated to robot contractor.

Here is an example of blinking the DO2 of PLC :

from owl_client import OwlClient
import time

client = OwlClient("10.42.0.54")

digital_output_2 = 2  #DO2

# Wait for robot to be available
while not client.is_running():
    time.sleep(0.2)

while True:
    client.set_digital_output(digital_output_2, True)
    time.sleep(1)
    client.set_digital_output(digital_output_2, False)
    time.sleep(1)