forked from torstem/examplecode-kukarsi-python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrun.py
More file actions
64 lines (58 loc) · 2.05 KB
/
run.py
File metadata and controls
64 lines (58 loc) · 2.05 KB
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
import socket
import trajectory
from kukarsi import time_keeper
from kukarsi import command
import multiprocessing
import time
def trajectory_joint_correction_command(from_kuka):
now = time.time()
joint_desired = trajectory.get_joint_command(now)
return command.joint_correction_command(from_kuka, joint_desired)
def run_kuka_communication(signals):
BUFFER_SIZE = 1024
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(("192.168.1.198", 49001))
counter = 0
done = False
def isset(signal_name):
res = signals[signal_name].is_set()
signals[signal_name].clear()
return res
while not done:
if isset('stop'):
trajectory.stop()
elif isset('up'):
trajectory.move_up()
elif isset('down'):
trajectory.move_down()
elif isset('quit'):
done = True
received_data, socket_of_krc = sock.recvfrom(BUFFER_SIZE)
counter += 1
cmd = trajectory_joint_correction_command(received_data.decode("utf-8"))
reply = bytes(cmd)
sock.sendto(reply, socket_of_krc)
if __name__ == '__main__':
signals = {'up' : multiprocessing.Event(),
'down' : multiprocessing.Event(),
'stop' : multiprocessing.Event(),
'quit' : multiprocessing.Event()}
kuka_process = multiprocessing.Process(name='kuka',
target=run_kuka_communication,
args=(signals,))
kuka_process.start()
while not signals['quit'].is_set():
print("U: Up")
print("D: Down")
print("Q: Quit")
key = raw_input('Press Any other key and/or Enter to stop:\n')
if key == 'u' or key == 'U':
signals['up'].set()
elif key == 'd' or key == 'D':
signals['down'].set()
elif key == 'q' or key == 'Q':
signals['quit'].set()
else:
print("Sending stop signal")
signals['stop'].set()
kuka_process.join()