FAIRINO México
Tech Support

Knowledge base

Example Pick and place (Python SDK)

The following examples are written on the 3.8.2 software version; some functions/arguments are subject to change, but the core structure will remain

PLEASE NOTE THAT THIS IS MEANT TO BE AN OUTLINE/GUIDE NOT AN OUT OF THE BOX PROGRAM! PLEASE VALIDATE SAFETY OF POINTS AND MOVEMENTS BEFORE RUNNING ANY ROBOT CODE

from fairino import Robot

import time

# Term index at bottom

#############################################

# Point table; {name: joint_pos} dictionary #

#############################################

points = {

 'home': [0, -90, 90, -90, -90, 0],

 'pick_pt_hover': [-50.469, -61.425, 97.799, -126.37, -90, -50.469],

 'place_pt_hover': [38.045, -48.84, 76.11, -117.27, -90, 38.045]

}

def pick_obj(robot: Robot.RPC):

 robot.MoveJ(points['home'], tool=0, user=0, vel=20, acc=20) # Move the robot home first to avoid unplanned trajectories

 robot.MoveJ(points['pick_pt_hover'], tool=0, user=0,vel=20, acc=20) # Move robot to hover point of target pick position

 e, curr = robot.GetActualTCPPose() # Gets the current CARTESIAN POSITION of the robot in format (error, [x,y,z,rx,ry,rz])

 curr[2] -= 50 # subtract 50 from the z of the current position, this will be our target

 robot.MoveGripper(1, 1000, 50, 50, 5000, 0) # Open gripper_1 to 100.0% at 50% speed, 50% force, with a timeout of 5 seconds

 time.sleep(2)

 robot.MoveL(curr, tool=0, user=0,vel=20, acc=20) # Move 50mm DOWN to target obj to grab

 robot.MoveGripper(1, 0, 50, 50, 5000, 0) # Close gripper_1 to 0.0% at 50% speed, 50% force, with a timeout of 5 seconds

 time.sleep(2)

 e, hover_as_cart = robot.GetForwardKin(points['pick_pt_hover']) # Gets the CARTESIAN coordinates of the hover position we came from

 robot.MoveL(hover_as_cart, tool=0, user=0, vel=20, acc=20) # Move LINEARLY back to hover point

 return

def place_obj(robot: Robot.RPC):

 robot.MoveJ(points['home'], tool=0, user=0,vel=20, acc=20) # Move the robot home first to avoid unplanned trajectories

 robot.MoveJ(points['place_pt_hover'], tool=0, user=0,vel=20, acc=20) # Move robot to hover point of target drop position

 e, curr = robot.GetActualTCPPose() # Gets the current CARTESIAN POSITION of the robot in format (error, [x,y,z,rx,ry,rz])

 curr[2] -= 50 # subtract 50 from the z of the current position. This will be manipulated to become our target

 robot.MoveL(curr, tool=0, user=0,vel=20, acc=20) # Move 50mm DOWN to target obj to grab

 robot.MoveGripper(1, 1000, 50, 50, 5000, 0) # Open gripper_1 to 100.0% at 50% speed, 50% force, with a timeout of 5 seconds

 time.sleep(2)

 e, hover_as_cart = robot.GetForwardKin(points['place_pt_hover']) # Gets the CARTESIAN coordinates from the joint values of the hover position we came from

 robot.MoveL(hover_as_cart, tool=0, user=0,vel=20, acc=20) # Move LINEARLY back to hover point

 return

def go_home(robot: Robot.RPC):

 error = robot.MoveJ(points['home'], tool=0, user=0,vel=20, acc=20) # Move back home

 return error

def main():

 robot = Robot.RPC('192.168.58.2') # Replace IP with your robot IP

 robot.ActGripper(1, 1) # Activate the gripper connected at the end of arm

 pick_obj(robot) # Runs routine to grab the object

 go_home(robot) # Return home to avoid any collisions before next routine

 place_obj(robot) # Runs the drop routine

 go_home(robot) # return home

if name == "__main__":

 main()

"""

 Term Index:

 - Hover point: a location that sets the robot slightly above target position. This is meant to

 avoid collisions with the target when moving and to ensure accurate and controlled approach.

 """

Translated from Fairino documentation. For anything safety-related, check against the equipment manual and with your advisor before moving the robot.

Still stuck?

Write to us with the serial number and what you already tried. Someone who has installed these units answers.

Request support