Skip to content

Commit a4c8f84

Browse files
authored
Refactor speechMove functions for improved structure
1 parent 2498d5b commit a4c8f84

1 file changed

Lines changed: 264 additions & 51 deletions

File tree

gestures/speechMove.py

Lines changed: 264 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,283 @@
11
import random
22

3+
# ----------------------------------
4+
# SPEED CONFIG (natural + controlled)
5+
# ----------------------------------
36
def speechMove():
4-
moves = [speechMove1, speechMove2, speechMove3, speechMove4]
5-
choice = random.choice(moves)
6-
choice()
7-
8-
def EndSpeechMove():
9-
i01_torso.moveTo(95.0,90.0,90.0)
10-
i01_rightHand.moveTo(81.0,66.0,82.0,60.0,90.0)
11-
i01_rightArm.moveTo(5.0,82.0,25.0,12.0)
12-
i01_leftHand.moveTo(92.0,33.0,37.0,60.0,90.0)
13-
i01_leftArm.moveTo(5.0,84.0,25.0,12.0)
14-
sleep(1)
15-
print('speechMove')
7+
8+
i01.setHandSpeed("left", 30,30,30,30,30,30)
9+
i01.setHandSpeed("right",30,30,30,30,30,30)
10+
11+
i01.setArmSpeed("left",50,50,50,50)
12+
i01.setArmSpeed("right",50,50,50,50)
13+
14+
i01.setHeadSpeed(50,45,50)
15+
i01.setTorsoSpeed(50,50,50)
16+
# ----------------------------------
17+
# START POSITION
18+
# ----------------------------------
19+
moves = [speechMove1, speechMove2, speechMove3, speechMove4, speechMove5, speechMove6, speechMove7, speechMove8]
20+
choice = random.choice(moves)
21+
choice()
22+
23+
# ----------------------------------
24+
# ARM + HEAD RAMP SYSTEM
25+
# ----------------------------------
26+
27+
def rampArm(side, a, b, steps=8, delay=0.05):
28+
for i in range(steps):
29+
t = i / float(steps - 1)
30+
k = t * t * (3 - 2 * t)
31+
32+
x = a[0] + (b[0] - a[0]) * k
33+
y = a[1] + (b[1] - a[1]) * k
34+
z = a[2] + (b[2] - a[2]) * k
35+
r = a[3] + (b[3] - a[3]) * k
36+
37+
i01.moveArm(side, x, y, z, r)
38+
sleep(delay)
39+
40+
def rampHead(yawStart, yawEnd, pitch, steps=10, delay=0.04):
41+
for i in range(steps):
42+
t = i / float(steps - 1)
43+
k = t * t * (3 - 2 * t)
44+
45+
yaw = yawStart + (yawEnd - yawStart) * k
46+
i01.moveHead(yaw, pitch, 90)
47+
sleep(delay)
48+
49+
# ----------------------------------
50+
# ✋ HAND RAMP SYSTEM
51+
# ----------------------------------
52+
53+
def rampHand(side, a, b, steps=6, delay=0.04):
54+
for i in range(steps):
55+
t = i / float(steps - 1)
56+
k = t * t * (3 - 2 * t)
57+
58+
f1 = a[0] + (b[0] - a[0]) * k
59+
f2 = a[1] + (b[1] - a[1]) * k
60+
f3 = a[2] + (b[2] - a[2]) * k
61+
f4 = a[3] + (b[3] - a[3]) * k
62+
f5 = a[4] + (b[4] - a[4]) * k
63+
twist = a[5] + (b[5] - a[5]) * k
64+
65+
i01.moveHand(side, f1,f2,f3,f4,f5,twist)
66+
sleep(delay)
67+
68+
69+
1670

1771
def speechMove1():
18-
i01_torso.setSpeed(20.0, 20.0, 20.0)
19-
i01_rightHand.setSpeed(30.0, 30.0, 30.0, 30.0, 30.0, 30.0)
20-
i01_rightArm.setSpeed(25.0, 25.0, 25.0, 25.0)
21-
i01_leftHand.setSpeed(30.0, 30.0, 30.0, 30.0, 30.0, 30.0)
22-
i01_leftArm.setSpeed(25.0, 25.0, 25.0, 25.0)
23-
i01_torso.moveTo(89.0,86.0,89.0)
24-
i01_rightHand.moveTo(60.0,15.0,15.0,13.0,90.0)
25-
i01_rightArm.moveTo(5.0,79.0,36.0,17.0)
26-
i01_leftHand.moveTo(24.0,120.0,95.0,83.0,90.0)
27-
i01_leftArm.moveTo(6.0,63.0,38.0,15.0)
72+
# ----------------------------------
73+
# INTRODUCTION
74+
# ----------------------------------
75+
76+
rampArm("right", [55,82,42,15], [35,72,38,15])
77+
78+
# ✋ presenting gesture (soft cup)
79+
rampHand("right",
80+
[30,25,25,25,25,40],
81+
[70,45,40,40,35,25])
82+
83+
sleep(0.4)
84+
85+
rampArm("right", [35,120,48,15], [40,130,40,15])
2886
sleep(1)
29-
EndSpeechMove()
3087
print('speechMove1')
88+
speechReset()
3189

3290
def speechMove2():
33-
i01_torso.setSpeed(50.0, 50.0, 50.0)
34-
i01_rightHand.setSpeed(50.0, 50.0, 50.0, 50.0, 50.0, 50.0)
35-
i01_rightArm.setSpeed(45.0, 45.0, 45.0, 45.0)
36-
i01_leftHand.setSpeed(50.0, 50.0, 50.0, 50.0, 50.0, 50.0)
37-
i01_leftArm.setSpeed(45.0, 45.0, 45.0, 45.0)
38-
i01_torso.moveTo(89.0,86.0,89.0)
39-
i01_rightHand.moveTo(24.0,100.0,95.0,83.0,120.0)
40-
i01_rightArm.moveTo(6.0,30.0,20.0,22.0)
41-
i01_leftHand.moveTo(24.0,120.0,95.0,83.0,90.0)
42-
i01_leftArm.moveTo(6.0,30.0,20.0,22.0)
91+
# ----------------------------------
92+
# POINT 1
93+
# ----------------------------------
94+
95+
rampArm("right", [60,80,40,15], [45,68,35,15])
96+
97+
# ✋ pointing emphasis (not rigid)
98+
rampHand("right",
99+
[30,30,30,30,30,30],
100+
[160,45,150,150,150,40])
101+
102+
sleep(0.8)
103+
104+
rampArm("right", [45,68,35,15], [60,80,40,15])
105+
106+
rampHand("right",
107+
[160,45,150,150,150,20],
108+
[30,30,30,30,30,11])
109+
110+
# small expressive pulse
111+
rampHand("right",
112+
[30,30,30,30,30,11],
113+
[80,50,60,60,50,11], steps=4)
114+
115+
rampHand("right",
116+
[80,50,60,60,50,11],
117+
[30,30,30,30,30,20], steps=4)
43118
sleep(1)
44-
EndSpeechMove()
45119
print('speechMove2')
120+
speechReset()
46121

47122
def speechMove3():
48-
i01_torso.setSpeed(200.0, 200.0, 200.0)
49-
i01_rightHand.setSpeed(300.0, 300.0, 300.0, 300.0, 300.0, 300.0)
50-
i01_rightArm.setSpeed(205.0, 205.0, 205.0, 205.0)
51-
i01_leftHand.setSpeed(300.0, 300.0, 300.0, 300.0, 300.0, 300.0)
52-
i01_leftArm.setSpeed(205.0, 205.0, 205.0, 205.0)
53-
i01_torso.moveTo(91.0,88.0,88.0)
54-
i01_rightHand.moveTo(138.0,177.0,177.0,177.0,177.0)
55-
i01_rightArm.moveTo(1.0,71.0,26.0,25.0)
56-
i01_leftHand.moveTo(78.0,61.0,61.0,61.0,61.0)
57-
i01_leftArm.moveTo(15.0,108.0,35.0,19.0)
123+
# ----------------------------------
124+
# POINT 2
125+
# ----------------------------------
126+
127+
rampArm("left", [35,82,42,15], [55,70,38,15])
128+
129+
# ✋ “two ideas” gesture
130+
rampHand("left",
131+
[30,30,30,30,30,130],
132+
[160,20,20,160,160,150])
133+
134+
sleep(0.7)
135+
136+
rampArm("left", [55,70,38,15], [35,82,42,15])
137+
138+
rampHand("left",
139+
[160,20,20,160,160,150],
140+
[30,30,30,30,30,80])
141+
142+
#rampHead(90,90,90)
58143
sleep(1)
59-
EndSpeechMove()
60144
print('speechMove3')
145+
speechReset()
61146

62147
def speechMove4():
63-
i01_torso.moveTo(89.0,91.0,87.0)
64-
i01_rightHand.moveTo(47.0,49.0,49.0,49.0,49.0)
65-
i01_rightArm.moveTo(7.0,66.0,30.0,11.0)
66-
i01_leftHand.moveTo(157.0,152.0,152.0,131.0,97.0)
67-
i01_leftArm.moveTo(5.0,62.0,15.0,11.0)
148+
# ----------------------------------
149+
# COMPARISON
150+
# ----------------------------------
151+
152+
rampArm("left", [55,80,40,15], [40,72,38,15])
153+
rampArm("right", [55,80,40,15], [45,72,38,15])
154+
155+
#rampHead(90,80,90)
156+
rampArm("left", [50,72,38,15], [60,66,35,15])
157+
158+
rampHand("left",
159+
[30,30,30,30,30,90],
160+
[70,45,50,50,45,150])
161+
162+
#rampHead(80,110,90)
163+
rampArm("right", [60,72,38,15], [50,66,35,15])
164+
165+
rampHand("right",
166+
[30,30,30,30,30,30],
167+
[70,45,50,50,45,11])
168+
169+
#rampHead(110,90,90)
68170
sleep(1)
69-
EndSpeechMove()
70171
print('speechMove4')
172+
speechReset()
173+
174+
def speechMove5():
175+
# ----------------------------------
176+
# EXPANSION
177+
# ----------------------------------
178+
179+
rampArm("left", [60,82,40,15], [52,74,38,15], steps=10)
180+
rampArm("right", [60,82,40,15], [52,74,38,15], steps=10)
181+
182+
rampHand("left",
183+
[40,40,40,40,40,120],
184+
[15,15,15,15,15,150])
185+
186+
rampHand("right",
187+
[40,40,40,40,40,11],
188+
[15,15,15,15,15,30])
189+
190+
sleep(0.3)
191+
192+
rampArm("left", [42,74,38,15], [52,84,32,15], steps=10)
193+
rampArm("right", [42,74,38,15], [52,84,32,15], steps=10)
194+
sleep(1)
195+
print('speechMove5')
196+
speechReset()
197+
198+
def speechMove6():
199+
# ----------------------------------
200+
# EMPHASIS LOOP
201+
# ----------------------------------
202+
203+
for _ in range(3):
204+
205+
#rampHead(85,95,88,steps=6)
206+
rampArm("right", [50,80,40,15], [25,70,38,15], steps=6)
207+
208+
rampHand("right",
209+
[30,30,30,30,30,11],
210+
[90,60,70,70,60,25], steps=4)
211+
212+
#rampHead(95,85,88,steps=6)
213+
rampArm("left", [50,80,40,15], [25,70,38,15], steps=6)
214+
215+
rampHand("left",
216+
[30,30,30,30,30,110],
217+
[90,60,70,70,60,150], steps=4)
218+
219+
#rampHead(90,90,90)
220+
sleep(1)
221+
print('speechMove6')
222+
speechReset()
223+
224+
def speechMove7():
225+
# ----------------------------------
226+
# AUDIENCE SWEEP
227+
# ----------------------------------
228+
229+
#rampHead(80,110,90,steps=14)
230+
#rampHead(110,90,90,steps=14)
231+
232+
rampHand("left",
233+
[20,20,20,20,20,110],
234+
[10,10,10,10,10,150])
235+
236+
rampHand("right",
237+
[20,20,20,20,20,11],
238+
[10,10,10,10,10,25])
239+
240+
sleep(1)
241+
print('speechMove7')
242+
speechReset()
243+
244+
def speechMove8():
245+
# ----------------------------------
246+
# CONCLUSION
247+
# ----------------------------------
248+
249+
rampArm("left", [22,80,42,15], [38,76,40,15], steps=8)
250+
rampArm("right", [22,80,42,15], [38,76,40,15], steps=8)
251+
252+
#rampHead(90,80,90,steps=10)
253+
254+
rampHand("left",
255+
[35,35,35,35,35,110],
256+
[40,40,40,40,40,160])
257+
258+
rampHand("right",
259+
[35,35,35,35,35,11],
260+
[40,40,40,40,40,50])
261+
262+
sleep(1.0)
263+
264+
# gentle return
265+
rampArm("left", [38,76,30,15], [40,80,40,15], steps=10)
266+
rampArm("right", [38,76,30,15], [40,80,40,15], steps=10)
267+
print('speechMove8')
268+
speechReset()
269+
270+
def speechReset():
271+
i01.setHandSpeed("left", 43, 43, 43, 43, 43, 43)
272+
i01.setHandSpeed("right", 43, 43, 43, 43, 43, 43)
273+
i01.setArmSpeed("right", 31, 43, 23, 43)
274+
i01.setArmSpeed("left", 60, 23, 31, 31)
275+
i01.setHeadSpeed(43, 43)
276+
i01.setTorsoSpeed(31, 16, 100.0)
277+
#i01.moveHead(79.00,100.00,122.17,64.06,0.00,90.00)
278+
i01.moveArm("left",5.00,84.00,25.00,12.00)
279+
i01.moveArm("right",5.00,82.00,25.00,12.00)
280+
i01.moveHand("left",92.00,33.00,37.00,71.00,66.00,25.00)
281+
i01.moveHand("right",81.00,66.00,82.00,60.00,23.00,160.00)
282+
i01.moveTorso(95.00,90.00,90.00)
283+
print('speechReset')

0 commit comments

Comments
 (0)