-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathur10_example.py
105 lines (89 loc) · 2.71 KB
/
ur10_example.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# ===================================================
# UR10 Pick and Place example
#
# coppeliasim scene: pick_and_place.ttt
# ===================================================
from coppeliasim import CoppeliaSim, CoppeliaArmRobot
import time
import sim
import numpy as np
# Initialize object position:
def initialize_object():
# Get object position:
cuboid = np.zeros((9, 6))
for i in range (9):
objectName = f"Cuboid{i}"
cuboid[i] = robot.getObjectPosition(objectName)
print(cuboid)
return cuboid
# Initialize target position:
def initialize_targetPos():
# Get initial targat position in the simulation
startPos = robot.getObjectPosition("Target0")
targetPos = np.zeros((9, 6))
for i in range(9):
targetPos[i] = startPos
targetPos[1][0] += 100
targetPos[2][0] += 200
targetPos[3][1] -= 100
targetPos[4][1] -= 100
targetPos[4][0] += 100
targetPos[5][1] -= 100
targetPos[5][0] += 200
targetPos[6][1] -= 200
targetPos[7][1] -= 200
targetPos[7][0] += 100
targetPos[8][1] -= 200
targetPos[8][0] += 200
return targetPos
# Method for picking the object:
def pickObject(targetPos):
currentPos = robot.readPosition()
robot.suctionON()
robot.setSpeed(300, 180)
# Move above the object
targetPos[2] = targetPos[2] + 50
targetPos[3] = currentPos[3]
targetPos[4] = currentPos[4]
targetPos[5] = currentPos[5]
robot.setPosition2(targetPos)
robot.setSpeed(50, 180)
# Move down:
targetPos[2] = targetPos[2] - 20
robot.setPosition2(targetPos)
#Move up:
targetPos[2] = targetPos[2] + 100
robot.setPosition2(targetPos)
# Method to put the object inside the box:
def putObject(targetPos):
currentPos = robot.readPosition()
# Move to position:
robot.setSpeed(300, 180)
targetPos[2] = targetPos[2] + 100
targetPos[3] = currentPos[3]
targetPos[4] = currentPos[4]
targetPos[5] = currentPos[5]
robot.setPosition2(targetPos)
robot.setSpeed(10, 90)
# Move Down:
targetPos[2] = targetPos[2] - 40
robot.setPosition2(targetPos)
robot.suctionOFF()
# Move Up:
targetPos[2] = targetPos[2] + 50
robot.setPosition2(targetPos)
if __name__ == '__main__':
msim = CoppeliaSim()
clientID = msim.connect(19997)
robot = CoppeliaArmRobot('UR10')
time.sleep(3)
if clientID != -1:
_object = initialize_object()
_target = initialize_targetPos()
# Do the pick and place of 9 objects
for i in range(9):
pos = _object[i]
print("TargetPos: {}".format(pos))
pickObject(pos)
pos = _target[i]
putObject(pos)