Hello,
i´m using the palletizing function for a picking task. In some cases the wrist 3 wind up the cables, because the way to the next picking position is shorter. How can it be prevented?
Palletizing function:
$ 1 “Roboterprogramm”
$ 2 “Pallet_1”
def Pallet_1_trans(pose):
return p[pose[0], pose[1], pose[2], 0, 0, 0]
end
def Pallet_1_rot(pose):
return p[0, 0, 0, pose[3], pose[4], pose[5]]
end
def Pallet_1_compute_pallet_waypoint(T_base_feature_taught, T_feature_referencePoint_taught, T_referencePoint_approach_taught, T_base_feature, T_base_referencePoint):
local trans_referencePoint_approach_in_feature_taught = pose_sub(Pallet_1_trans(pose_trans(T_feature_referencePoint_taught, T_referencePoint_approach_taught)), Pallet_1_trans(T_feature_referencePoint_taught))
local rot_referencePoint_approach_in_feature_taught = pose_trans(Pallet_1_rot(T_feature_referencePoint_taught), pose_trans(Pallet_1_rot(T_referencePoint_approach_taught), pose_inv(Pallet_1_rot(T_feature_referencePoint_taught))))
T_feature_referencePoint = pose_trans(pose_inv(T_base_feature), T_base_referencePoint)
rot_referencePoint_approach = pose_trans(pose_inv(Pallet_1_rot(T_feature_referencePoint)), pose_trans(rot_referencePoint_approach_in_feature_taught, Pallet_1_rot(T_feature_referencePoint)))
T_feature_approach = pose_trans(trans_referencePoint_approach_in_feature_taught, pose_trans(T_feature_referencePoint, rot_referencePoint_approach))
T_base_approach = pose_trans(T_base_feature, T_feature_approach)
return T_base_approach
end
…
…
…
if (Pallet_1_cnt < 193):
Pallet_1_lno = 1
Pallet_1_lct = Pallet_1_cnt
global CornerItem_1=pose_trans(p[0.0,0.0,0.0,0.0,0.0,0.0], pose_trans(p[-.000000000000, -.000000000000, -.000000000000, .000000000000, .000000000000, .000000000000], p[.534333881170, .036306233589, .023011090386, 2.226175968418, -2.216685620206, -.000015293369]))
global CornerItem_2=pose_trans(p[0.0,0.0,0.0,0.0,0.0,0.0], pose_trans(p[-.000000000000, -.000000000000, -.000000000000, .000000000000, .000000000000, .000000000000], p[.534090521706, .240272692895, .022798562188, 2.226601946160, -2.214743300707, -.000178770249]))
global CornerItem_3=pose_trans(p[0.0,0.0,0.0,0.0,0.0,0.0], pose_trans(p[-.000000000000, -.000000000000, -.000000000000, .000000000000, .000000000000, .000000000000], p[.257241769930, .241586239236, .022956831482, 2.225939099323, -2.215246453788, -.000121588498]))
global CornerItem_4=pose_trans(p[0.0,0.0,0.0,0.0,0.0,0.0], pose_trans(p[-.000000000000, -.000000000000, -.000000000000, .000000000000, .000000000000, .000000000000], p[.257259763612, .038083660152, .022970321133, 2.226090811413, -2.215097743479, .000053760646]))
Pallet_1_cnt_x = (Pallet_1_lct - 1) % 12
Pallet_1_cnt_y = floor((Pallet_1_lct - 1) / 12)
referencePoint = interpolate_pose(interpolate_pose(CornerItem_1, CornerItem_2, Pallet_1_cnt_x/11), interpolate_pose(CornerItem_4, CornerItem_3,Pallet_1_cnt_x/11), Pallet_1_cnt_y/15)
direction = p[0,0,1,0,0,0]
referencePoint = pose_add (referencePoint,p[0.0*direction[0],0.0*direction[1],0.0*direction[2],0,0,0])
end
Repeated movement:
$ 25 “Erzeugte Bewegungen” “noBreak”
$ 26 “FahreAchse” “noBreak”
$ 27 “Approach_1_j≔get_inverse_kin(pose_trans(referencePoint,p[0,0,-(ToolLength+OverToolPickPar-75)/1000,0,0,0]))”
global Approach_1_j= get_inverse_kin ( pose_trans (referencePoint,p[0,0,-(ToolLength+OverToolPickPar-75)/1000,0,0,0]))
$ 28 “Approach_1_j” “noBreak”
movej(Approach_1_j, a=6.98, v=3.14)
…
…
…
global Approach_3_j= get_inverse_kin ( pose_trans (get_actual_tcp_pose(),p[0,0,-(ToolLength)/1000,0,0,0]))
$ 49 “Approach_3_j” “noBreak”
movej(Approach_3_j, a=1.39, v=1.04)