0
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
1 import socket
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
2 import math
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
3
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
4 from robot import Robot
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
5 from gait import Creep
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
6
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
7
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
8 def main():
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
9 robot = Robot()
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
10 gait = Creep(robot)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
11 run = gait.run()
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
12
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
13 sock = socket.socket()
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
14 addr = socket.getaddrinfo("0.0.0.0", 1010)[0][4]
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
15 sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
16 sock.setblocking(False)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
17 sock.bind(addr)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
18 sock.listen(1)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
19 try:
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
20 while True:
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
21 try:
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
22 client, addr = sock.accept()
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
23 except OSError:
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
24 next(run)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
25 else:
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
26 try:
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
27 client.setblocking(False)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
28 while True:
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
29 command = client.read(1)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
30 if command == b' ':
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
31 gait.dx = 0
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
32 gait.dy = 0
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
33 gait.rotation = 0
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
34 elif command == b'w':
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
35 gait.dy = min(3, gait.dy + 0.25)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
36 elif command == b's':
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
37 gait.dy = max(-3, gait.dy - 0.25)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
38 elif command == b'a':
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
39 gait.rotation = min(math.pi/90,
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
40 gait.rotation + math.pi/360)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
41 elif command == b'd':
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
42 gait.rotation = max(-math.pi/90,
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
43 gait.rotation - math.pi/360)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
44 next(run)
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
45 finally:
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
46 client.close()
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
47 finally:
|
Radomir Dopieralski <sheep-devel@sheep.art.pl>
parents:
diff
changeset
|
48 sock.close()
|