From a6767bf15427fda92a28088f62a6add649a54090 Mon Sep 17 00:00:00 2001 From: Lucca Pirovano Date: Thu, 16 Jul 2026 16:16:13 -0400 Subject: [PATCH] added 6 7 gesture to slot 3 --- naowalk.py | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/naowalk.py b/naowalk.py index 0758c32..65b8adc 100644 --- a/naowalk.py +++ b/naowalk.py @@ -280,6 +280,53 @@ class NaoTeleop: except Exception as e: print(f"Cena gesture error: {e}") + def six_seven_gesture(self): + if self.typing_mode: return + print("🖐️ SIX... SEVEN...") + try: + self.tts.say("Six, seven") + + self.motion.setStiffnesses(["RArm", "LArm"], 1.0) + + # Lock both arms up in front of the body, hands held out like a scale. + # ElbowYaw is rotated ~90° off zero here - that's what points the elbow's + # bend axis so flexing tips the forearm forward/down instead of curling + # it in across the chest. These joints don't move again until the return. + hold_names = [ + "RShoulderPitch", "RShoulderRoll", "RElbowYaw", "RWristYaw", "RHand", + "LShoulderPitch", "LShoulderRoll", "LElbowYaw", "LWristYaw", "LHand" + ] + hold_angles = [ + 0.2, -0.2, 1.4, 1.57, 0.6, + 0.2, 0.2, -1.4, -1.57, 0.6 + ] + self.motion.angleInterpolationWithSpeed(hold_names, hold_angles, 0.25) + + # Only the elbows seesaw now - a small tip back and forth, one arm + # rising while the other falls, like weighing something in each hand + # ("six... seven..."). Small amplitude so it stays a wobble, not a fold. + elbow_names = ["RElbowRoll", "LElbowRoll"] + r_low, r_high = 0.6, 1.0 + l_low, l_high = -0.6, -1.0 + + elbow_angles = [ + [r_low, r_high, r_low, r_high, r_low, r_high], + [l_high, l_low, l_high, l_low, l_high, l_low], + ] + times = [[0.35, 0.7, 1.05, 1.4, 1.75, 2.1]] * 2 + self.motion.angleInterpolation(elbow_names, elbow_angles, times, True) + + # Return everything to neutral + neutral_names = hold_names + elbow_names + neutral = [1.5, -0.15, 1.2, 0.0, 0.0, + 1.5, 0.15, -1.2, 0.0, 0.0, + 0.5, -0.5] + self.motion.angleInterpolationWithSpeed(neutral_names, neutral, 0.3) + # Relaxed stiffness after completion + self.motion.setStiffnesses(["RArm", "LArm"], 0.3) + except Exception as e: + print(f"Six seven gesture error: {e}") + def handle_head_movement(self): if self.typing_mode or self.music_search_mode: return keys = pygame.key.get_pressed() @@ -340,7 +387,7 @@ class NaoTeleop: self._safe("moveInit", self.motion.moveInit) print("🦶 Walk engine ready") - print("\n🎮 Controls: WASD/Arrows=Walk | [/]=Speed | IJKL=Head | SPACE=Reset head | 1=Wave | 2=Cena | M=Music search | X=Stop | -/==Volume | T=TTS | ESC=Quit") + print("\n🎮 Controls: WASD/Arrows=Walk | [/]=Speed | IJKL=Head | SPACE=Reset head | 1=Wave | 2=Cena | 3=6-7 | M=Music search | X=Stop | -/==Volume | T=TTS | ESC=Quit") try: while self.running: @@ -420,6 +467,8 @@ class NaoTeleop: self.wave_gesture() elif event.key == pygame.K_2: self.cena_gesture() + elif event.key == pygame.K_3: + self.six_seven_gesture() elif event.key == pygame.K_SPACE: self.reset_head() elif event.key == pygame.K_m: