Download jericho/dance.py from Jarilo-Project/Jericho: direct link, hf CLI and curl.
- Browser
- Download file 3.89 kB
-
https://huggingface.co/Jarilo-Project/Jericho/resolve/main/jericho/dance.py
- Command line
-
hf download hf://Jarilo-Project/Jericho/jericho/dance.py
-
curl -L -o dance.py https://huggingface.co/Jarilo-Project/Jericho/resolve/main/jericho/dance.py
3.89 kB
| import time | |
| import threading | |
| import numpy as np | |
| from reachy_mini import ReachyMini, ReachyMiniApp | |
| from reachy_mini.utils import create_head_pose | |
| class TestDance1(ReachyMiniApp): | |
| def run(self, reachy_mini: ReachyMini, stop_event: threading.Event): | |
| reachy_mini.goto_target(create_head_pose(), antennas=[0.0, 0.0], duration=1.0) | |
| start_time = time.time() | |
| while not stop_event.is_set(): | |
| t = time.time() | |
| elapsed_time = t - start_time | |
| compteur = int(elapsed_time / 2) | |
| antennas_offset = np.deg2rad(20 * np.sin(2 * np.pi * 0.5 * t)) | |
| sinus_rot = np.deg2rad(20 * np.sin(2 * np.pi * 0.5 * t)) | |
| sinus_trans = 0.03 * np.sin(2 * np.pi * 0.5 * t) | |
| current_roll = 0.0 | |
| current_pitch = 0.0 | |
| current_yaw = 0.0 | |
| current_x = 0.0 | |
| current_y = 0.0 | |
| current_z = 0.0 | |
| if compteur < 3: | |
| current_roll = sinus_rot | |
| elif compteur < 6: | |
| current_pitch = sinus_rot | |
| elif compteur < 9: | |
| current_yaw = sinus_rot | |
| elif compteur < 12: | |
| current_x = sinus_trans | |
| elif compteur < 15: | |
| current_y = sinus_trans | |
| elif compteur < 18: | |
| current_z = sinus_trans | |
| else: | |
| start_time = time.time() | |
| continue | |
| head_pose = create_head_pose( | |
| x=current_x, | |
| y=current_y, | |
| z=current_z, | |
| roll=current_roll, | |
| pitch=current_pitch, | |
| yaw=current_yaw, | |
| degrees=False, | |
| mm=False, | |
| ) | |
| reachy_mini.set_target(head=head_pose, antennas=[antennas_offset, antennas_offset]) | |
| time.sleep(0.01) | |
| class TestDance2(ReachyMiniApp): | |
| def run(self, reachy_mini: ReachyMini, stop_event: threading.Event): | |
| reachy_mini.goto_target(create_head_pose(), antennas=[0.0, 0.0], duration=1.0) | |
| start_time = time.time() | |
| while not stop_event.is_set(): | |
| t = time.time() | |
| elapsed_time = t - start_time | |
| compteur = int(elapsed_time / 2) | |
| antennas_offset = np.deg2rad(20 * np.sin(2 * np.pi * 0.5 * t)) | |
| sinus_rot = np.deg2rad(20 * np.sin(2 * np.pi * 0.5 * 4 * t)) | |
| sinus_trans = 0.03 * np.sin(2 * np.pi * 0.5 * t) | |
| cosinus_trans = 0.03 * np.cos(2 * np.pi * 0.5 * t) | |
| current_roll = 0.0 | |
| current_pitch = 0.0 | |
| current_yaw = 0.0 | |
| current_x = 0.0 | |
| current_y = 0.0 | |
| current_z = 0.0 | |
| if compteur < 3: | |
| current_pitch = sinus_rot | |
| current_y = sinus_trans | |
| elif compteur < 6: | |
| current_x = sinus_trans | |
| current_y = cosinus_trans | |
| else: | |
| start_time = time.time() | |
| continue | |
| head_pose = create_head_pose( | |
| x=current_x, | |
| y=current_y, | |
| z=current_z, | |
| roll=current_roll, | |
| pitch=current_pitch, | |
| yaw=current_yaw, | |
| degrees=False, | |
| mm=False, | |
| ) | |
| reachy_mini.set_target(head=head_pose, antennas=[antennas_offset, antennas_offset]) | |
| time.sleep(0.01) | |
| if __name__ == "__main__": | |
| print("Lancement manuel depuis le terminal...") | |
| with ReachyMini(media_backend="no_media") as robot: | |
| # 👉 Choisis ici ta danse | |
| # mon_app = TestDance1() | |
| mon_app = TestDance2() | |
| stop_event = threading.Event() | |
| try: | |
| mon_app.run(robot, stop_event) | |
| except KeyboardInterrupt: | |
| print("\nArrêt du programme") | |
| stop_event.set() |