reachy-mini 1.2.5rc1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- reachy_mini/__init__.py +4 -0
- reachy_mini/apps/__init__.py +25 -0
- reachy_mini/apps/app.py +258 -0
- reachy_mini/apps/assistant.py +787 -0
- reachy_mini/apps/manager.py +312 -0
- reachy_mini/apps/sources/__init__.py +4 -0
- reachy_mini/apps/sources/hf_space.py +106 -0
- reachy_mini/apps/sources/local_common_venv.py +567 -0
- reachy_mini/apps/templates/README.md.j2 +12 -0
- reachy_mini/apps/templates/gitignore.j2 +3 -0
- reachy_mini/apps/templates/index.html.j2 +40 -0
- reachy_mini/apps/templates/main.py.j2 +74 -0
- reachy_mini/apps/templates/pyproject.toml.j2 +28 -0
- reachy_mini/apps/templates/static/index.html.j2 +27 -0
- reachy_mini/apps/templates/static/main.js.j2 +47 -0
- reachy_mini/apps/templates/static/style.css.j2 +25 -0
- reachy_mini/apps/templates/style.css.j2 +411 -0
- reachy_mini/apps/utils.py +30 -0
- reachy_mini/assets/config/hardware_config.yaml +164 -0
- reachy_mini/assets/confused1.wav +0 -0
- reachy_mini/assets/count.wav +0 -0
- reachy_mini/assets/dance1.wav +0 -0
- reachy_mini/assets/firmware/CHANGELOG.md +15 -0
- reachy_mini/assets/firmware/reachymini_ua_io16_lin_v2.1.2.bin +0 -0
- reachy_mini/assets/firmware/reachymini_ua_io16_lin_v2.1.3.bin +0 -0
- reachy_mini/assets/firmware/update.sh +9 -0
- reachy_mini/assets/go_sleep.wav +0 -0
- reachy_mini/assets/impatient1.wav +0 -0
- reachy_mini/assets/kinematics_data.json +253 -0
- reachy_mini/assets/models/fknetwork.dynamic.onnx +0 -0
- reachy_mini/assets/models/fknetwork.onnx +0 -0
- reachy_mini/assets/models/fknetwork_int8.onnx +0 -0
- reachy_mini/assets/models/iknetwork.onnx +0 -0
- reachy_mini/assets/wake_up.wav +0 -0
- reachy_mini/daemon/__init__.py +1 -0
- reachy_mini/daemon/app/__init__.py +1 -0
- reachy_mini/daemon/app/bg_job_register.py +142 -0
- reachy_mini/daemon/app/dashboard/static/assets/KO-cartoon-static.svg +40 -0
- reachy_mini/daemon/app/dashboard/static/assets/awake-cartoon-static.svg +42 -0
- reachy_mini/daemon/app/dashboard/static/assets/awake-cartoon.svg +6 -0
- reachy_mini/daemon/app/dashboard/static/assets/go-to-sleep-cartoon.svg +6 -0
- reachy_mini/daemon/app/dashboard/static/assets/no-wifi-cartoon-static.svg +50 -0
- reachy_mini/daemon/app/dashboard/static/assets/no-wifi-cartoon.svg +6 -0
- reachy_mini/daemon/app/dashboard/static/assets/reachy-mini-awake.svg +18 -0
- reachy_mini/daemon/app/dashboard/static/assets/reachy-mini-connection-lost-animation.svg +6 -0
- reachy_mini/daemon/app/dashboard/static/assets/reachy-mini-go-to-sleep-animation.svg +6 -0
- reachy_mini/daemon/app/dashboard/static/assets/reachy-mini-ko-animation.svg +6 -0
- reachy_mini/daemon/app/dashboard/static/assets/reachy-mini-ko.svg +22 -0
- reachy_mini/daemon/app/dashboard/static/assets/reachy-mini-sleeping-static.svg +41 -0
- reachy_mini/daemon/app/dashboard/static/assets/reachy-mini-sleeping.svg +18 -0
- reachy_mini/daemon/app/dashboard/static/assets/reachy-mini-wake-up-animation.svg +6 -0
- reachy_mini/daemon/app/dashboard/static/css/app.css +1433 -0
- reachy_mini/daemon/app/dashboard/static/fonts/Archivo-Italic-VariableFont_wdth,wght.ttf +0 -0
- reachy_mini/daemon/app/dashboard/static/fonts/Archivo-VariableFont_wdth,wght.ttf +0 -0
- reachy_mini/daemon/app/dashboard/static/fonts/Asap-Italic-VariableFont_wdth,wght.ttf +0 -0
- reachy_mini/daemon/app/dashboard/static/fonts/Asap-VariableFont_wdth,wght.ttf +0 -0
- reachy_mini/daemon/app/dashboard/static/js/3rdparty/gstwebrtc-api-2.0.0.min.js +5 -0
- reachy_mini/daemon/app/dashboard/static/js/apps.js +323 -0
- reachy_mini/daemon/app/dashboard/static/js/appstore.js +167 -0
- reachy_mini/daemon/app/dashboard/static/js/daemon.js +169 -0
- reachy_mini/daemon/app/dashboard/static/js/health_check.js +9 -0
- reachy_mini/daemon/app/dashboard/static/js/move_player.js +132 -0
- reachy_mini/daemon/app/dashboard/static/js/notification.js +41 -0
- reachy_mini/daemon/app/dashboard/static/js/update.js +132 -0
- reachy_mini/daemon/app/dashboard/static/js/volume_control.js +252 -0
- reachy_mini/daemon/app/dashboard/static/js/wifi.js +176 -0
- reachy_mini/daemon/app/dashboard/tailwindcss/README.md +15 -0
- reachy_mini/daemon/app/dashboard/tailwindcss/package-lock.json +1127 -0
- reachy_mini/daemon/app/dashboard/tailwindcss/package.json +6 -0
- reachy_mini/daemon/app/dashboard/tailwindcss/pnpm-lock.yaml +608 -0
- reachy_mini/daemon/app/dashboard/tailwindcss/postcss.config.js +6 -0
- reachy_mini/daemon/app/dashboard/tailwindcss/styles/app.css +185 -0
- reachy_mini/daemon/app/dashboard/tailwindcss/tailwind.config.js +11 -0
- reachy_mini/daemon/app/dashboard/templates/base.html +21 -0
- reachy_mini/daemon/app/dashboard/templates/index.html +20 -0
- reachy_mini/daemon/app/dashboard/templates/sections/apps.html +8 -0
- reachy_mini/daemon/app/dashboard/templates/sections/appstore.html +35 -0
- reachy_mini/daemon/app/dashboard/templates/sections/daemon.html +45 -0
- reachy_mini/daemon/app/dashboard/templates/sections/move_player.html +121 -0
- reachy_mini/daemon/app/dashboard/templates/sections/notification.html +19 -0
- reachy_mini/daemon/app/dashboard/templates/sections/update.html +54 -0
- reachy_mini/daemon/app/dashboard/templates/sections/wifi.html +46 -0
- reachy_mini/daemon/app/dashboard/templates/settings.html +14 -0
- reachy_mini/daemon/app/dependencies.py +41 -0
- reachy_mini/daemon/app/main.py +469 -0
- reachy_mini/daemon/app/models.py +149 -0
- reachy_mini/daemon/app/routers/apps.py +114 -0
- reachy_mini/daemon/app/routers/daemon.py +85 -0
- reachy_mini/daemon/app/routers/kinematics.py +57 -0
- reachy_mini/daemon/app/routers/motors.py +41 -0
- reachy_mini/daemon/app/routers/move.py +265 -0
- reachy_mini/daemon/app/routers/state.py +146 -0
- reachy_mini/daemon/app/routers/update.py +86 -0
- reachy_mini/daemon/app/routers/volume.py +423 -0
- reachy_mini/daemon/app/routers/wifi_config.py +219 -0
- reachy_mini/daemon/app/services/__init__.py +1 -0
- reachy_mini/daemon/app/services/bluetooth/bluetooth_service.py +796 -0
- reachy_mini/daemon/app/services/bluetooth/commands/HOTSPOT.sh +7 -0
- reachy_mini/daemon/app/services/bluetooth/commands/RESTART_DAEMON.sh +4 -0
- reachy_mini/daemon/app/services/bluetooth/commands/SOFTWARE_RESET.sh +7 -0
- reachy_mini/daemon/app/services/bluetooth/install_service_bluetooth.sh +39 -0
- reachy_mini/daemon/app/services/gpio_shutdown/__init__.py +1 -0
- reachy_mini/daemon/app/services/gpio_shutdown/install_service.sh +33 -0
- reachy_mini/daemon/app/services/gpio_shutdown/launcher.sh +3 -0
- reachy_mini/daemon/app/services/gpio_shutdown/shutdown_monitor.py +28 -0
- reachy_mini/daemon/app/services/wireless/generate_asoundrc.sh +70 -0
- reachy_mini/daemon/app/services/wireless/install_service.sh +33 -0
- reachy_mini/daemon/app/services/wireless/launcher.sh +5 -0
- reachy_mini/daemon/backend/__init__.py +1 -0
- reachy_mini/daemon/backend/abstract.py +815 -0
- reachy_mini/daemon/backend/mujoco/__init__.py +36 -0
- reachy_mini/daemon/backend/mujoco/backend.py +395 -0
- reachy_mini/daemon/backend/mujoco/utils.py +59 -0
- reachy_mini/daemon/backend/mujoco/video_udp.py +57 -0
- reachy_mini/daemon/backend/robot/__init__.py +8 -0
- reachy_mini/daemon/backend/robot/backend.py +597 -0
- reachy_mini/daemon/daemon.py +651 -0
- reachy_mini/daemon/utils.py +116 -0
- reachy_mini/descriptions/reachy_mini/mjcf/additional.xml +6 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/5w_speaker.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/5w_speaker.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna_body_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna_body_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna_holder_l_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna_holder_l_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna_holder_r_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna_holder_r_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna_interface_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna_interface_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/arducam.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/arducam.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/b3b_eh.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/b3b_eh.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/b3b_eh_1.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/b3b_eh_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/bearing_85x110x13.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/bearing_85x110x13.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/big_lens_d40.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/big_lens_d40.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/body_down_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/body_down_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/body_foot_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/body_foot_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/body_top_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/body_top_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/body_turning_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/body_turning_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/bts2_m2_6x8.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/bts2_m2_6x8.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/README.m +1 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/coarse/body_top_3dprint_collider_back_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/coarse/body_top_3dprint_collider_back_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/coarse/body_top_3dprint_collider_back_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/coarse/body_top_3dprint_collider_back_3.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/coarse/body_top_3dprint_collider_front_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/coarse/body_top_3dprint_collider_front_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/coarse/body_top_3dprint_collider_front_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/coarse/head_one_3dprint_collider_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/fine/body_top_3dprint_collider_back_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/fine/body_top_3dprint_collider_back_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/fine/body_top_3dprint_collider_back_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/fine/body_top_3dprint_collider_back_3.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/fine/body_top_3dprint_collider_front_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/fine/body_top_3dprint_collider_front_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/fine/body_top_3dprint_collider_front_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/fine/head_one_3dprint_collider_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/croissant_1k.blend/croissant_1k.obj +5021 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/croissant_1k.blend/textures/croissant_diff_1k.png +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_case_b_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_case_b_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_case_f_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_case_f_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_case_m_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_case_m_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_horn_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_horn_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_led_cap2_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_led_cap2_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/food_apple_01_1k.blend/food_apple_01_1k.obj +18045 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/food_apple_01_1k.blend/textures/food_apple_01_diff_1k.png +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/glasses_dolder_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/glasses_dolder_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/head_back_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/head_back_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/head_front_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/head_front_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/head_mic_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/head_mic_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/lens_cap_d30_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/lens_cap_d30_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/lens_cap_d40_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/lens_cap_d40_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/m12_fisheye_lens_1_8mm.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/m12_fisheye_lens_1_8mm.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/mp01062_stewart_arm_3.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/mp01062_stewart_arm_3.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/neck_reference_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/neck_reference_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/phs_1_7x20_5_dc10.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/phs_1_7x20_5_dc10.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/phs_1_7x20_5_dc10_1.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/phs_1_7x20_5_dc10_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/phs_1_7x20_5_dc10_2.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/phs_1_7x20_5_dc10_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/phs_1_7x20_5_dc10_3.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/phs_1_7x20_5_dc10_3.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/pp01102_arducam_carter.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/pp01102_arducam_carter.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/rubber_duck_toy_1k.blend/rubber_duck_toy_1k.obj +8940 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/rubber_duck_toy_1k.blend/textures/rubber_duck_toy_diff_1k.png +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/small_lens_d30.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/small_lens_d30.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_link_ball.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_link_ball.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_link_ball__2.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_link_ball__2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_link_rod.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_link_rod.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_main_plate_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_main_plate_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_tricap_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_tricap_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/wooden_table_02_1k.blend/textures/wooden_table_02_diff_1k.png +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/wooden_table_02_1k.blend/wooden_table_02_1k.obj +485 -0
- reachy_mini/descriptions/reachy_mini/mjcf/config.json +21 -0
- reachy_mini/descriptions/reachy_mini/mjcf/joints_properties.xml +29 -0
- reachy_mini/descriptions/reachy_mini/mjcf/reachy_mini.xml +642 -0
- reachy_mini/descriptions/reachy_mini/mjcf/reachy_mini.xml.bak +442 -0
- reachy_mini/descriptions/reachy_mini/mjcf/scene.xml +24 -0
- reachy_mini/descriptions/reachy_mini/mjcf/scenes/empty.xml +27 -0
- reachy_mini/descriptions/reachy_mini/mjcf/scenes/minimal.xml +132 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/5w_speaker.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/5w_speaker.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna_body_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna_body_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna_holder_l_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna_holder_l_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna_holder_r_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna_holder_r_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna_interface_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna_interface_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/arducam.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/arducam.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/arm.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/arm.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/b3b_eh.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/b3b_eh.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/b3b_eh_1.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/b3b_eh_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/ball.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/ball.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/bearing_85x110x13.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/bearing_85x110x13.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/big_lens.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/big_lens.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/big_lens_d40.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/big_lens_d40.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/body_down_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/body_down_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/body_foot_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/body_foot_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/body_top_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/body_top_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/body_turning_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/body_turning_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/bottom_body.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/bottom_body.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/bts2_m2_6x8.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/bts2_m2_6x8.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/README.m +1 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/coarse/body_top_3dprint_collider_back_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/coarse/body_top_3dprint_collider_back_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/coarse/body_top_3dprint_collider_back_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/coarse/body_top_3dprint_collider_back_3.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/coarse/body_top_3dprint_collider_front_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/coarse/body_top_3dprint_collider_front_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/coarse/body_top_3dprint_collider_front_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/coarse/head_one_3dprint_collider_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/fine/body_top_3dprint_collider_back_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/fine/body_top_3dprint_collider_back_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/fine/body_top_3dprint_collider_back_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/fine/body_top_3dprint_collider_back_3.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/fine/body_top_3dprint_collider_front_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/fine/body_top_3dprint_collider_front_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/fine/body_top_3dprint_collider_front_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/fine/head_one_3dprint_collider_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_case_b_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_case_b_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_case_f_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_case_f_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_case_m_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_case_m_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_horn_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_horn_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_led_cap2_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_led_cap2_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/drive_palonier__configuration_default.part +14 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/drive_palonier__configuration_default.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/drive_palonier__configuration_simple_axe.part +14 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/drive_palonier__configuration_simple_axe.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/eye_support.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/eye_support.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/foot.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/foot.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/glasses_dolder_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/glasses_dolder_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_back_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_back_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_front_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_front_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_head_back.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_head_back.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_interface.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_interface.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_mic_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_mic_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_shell_front.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_shell_front.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/lens_cap_d30_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/lens_cap_d30_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/lens_cap_d40_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/lens_cap_d40_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/m12_fisheye_lens_1_8mm.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/m12_fisheye_lens_1_8mm.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/m12_lens.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/m12_lens.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/main_plate.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/main_plate.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/mid_plate.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/mid_plate.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/mp01062_stewart_arm_3.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/mp01062_stewart_arm_3.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/neck_reference_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/neck_reference_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/phs_1_7x20_5_dc10.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/phs_1_7x20_5_dc10.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/phs_1_7x20_5_dc10_1.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/phs_1_7x20_5_dc10_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/phs_1_7x20_5_dc10_2.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/phs_1_7x20_5_dc10_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/phs_1_7x20_5_dc10_3.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/phs_1_7x20_5_dc10_3.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/plateform.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/plateform.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp00xxx_stewart_rod.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp00xxx_stewart_rod.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01062_stewart_arm.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01062_stewart_arm.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01063_stewart_plateform.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01063_stewart_plateform.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01064_stewart_main_plate.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01064_stewart_main_plate.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01065_stewart_side_plate.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01065_stewart_side_plate.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01066_stewart_mid_plate.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01066_stewart_mid_plate.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01067_bottom_body.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01067_bottom_body.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01068_top_body.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01068_top_body.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01069_head_shell_front.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01069_head_shell_front.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01070_head_head_back.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01070_head_head_back.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01071_turning_bowl.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01071_turning_bowl.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01072_turning_end.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01072_turning_end.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01078_glasses.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01078_glasses.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01079_back_big_eye.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01079_back_big_eye.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01080_back_small_eye.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01080_back_small_eye.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01102_arducam_carter.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01102_arducam_carter.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/rod.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/rod.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/shape.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/shape.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/side_plate.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/side_plate.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/small_lens.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/small_lens.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/small_lens_d30.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/small_lens_d30.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_link_ball.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_link_ball.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_link_ball__2.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_link_ball__2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_link_rod.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_link_rod.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_main_plate_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_main_plate_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_tricap_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_tricap_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/test_antenna.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/test_antenna.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/test_antenna_body.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/test_antenna_body.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/top_body.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/top_body.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/turning_bowl.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/turning_bowl.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/uc_a37_rev_a_step.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/uc_a37_rev_a_step.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0122topcabinetcase_95__configuration_default.part +14 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0122topcabinetcase_95__configuration_default.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0122topcabinetcase_95__configuration_simple_axe.part +14 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0122topcabinetcase_95__configuration_simple_axe.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0123middlecase_56__configuration_default.part +14 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0123middlecase_56__configuration_default.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0123middlecase_56__configuration_simple_axe.part +14 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0123middlecase_56__configuration_simple_axe.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0124bottomcase_45__configuration_default.part +14 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0124bottomcase_45__configuration_default.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0124bottomcase_45__configuration_simple_axe.part +14 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0124bottomcase_45__configuration_simple_axe.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/config.json +18 -0
- reachy_mini/descriptions/reachy_mini/urdf/robot.urdf +3281 -0
- reachy_mini/descriptions/reachy_mini/urdf/robot.urdf.bak +3282 -0
- reachy_mini/descriptions/reachy_mini/urdf/robot_no_collision.urdf +2316 -0
- reachy_mini/descriptions/reachy_mini/urdf/robot_simple_collision.urdf +2399 -0
- reachy_mini/io/__init__.py +15 -0
- reachy_mini/io/abstract.py +70 -0
- reachy_mini/io/audio_ws.py +242 -0
- reachy_mini/io/protocol.py +44 -0
- reachy_mini/io/video_ws.py +135 -0
- reachy_mini/io/ws_controller.py +120 -0
- reachy_mini/io/zenoh_client.py +273 -0
- reachy_mini/io/zenoh_server.py +230 -0
- reachy_mini/kinematics/__init__.py +68 -0
- reachy_mini/kinematics/analytical_kinematics.py +151 -0
- reachy_mini/kinematics/nn_kinematics.py +109 -0
- reachy_mini/kinematics/placo_kinematics.py +656 -0
- reachy_mini/media/__init__.py +1 -0
- reachy_mini/media/audio_base.py +111 -0
- reachy_mini/media/audio_control_utils.py +455 -0
- reachy_mini/media/audio_gstreamer.py +272 -0
- reachy_mini/media/audio_sounddevice.py +321 -0
- reachy_mini/media/audio_utils.py +114 -0
- reachy_mini/media/camera_base.py +100 -0
- reachy_mini/media/camera_constants.py +152 -0
- reachy_mini/media/camera_gstreamer.py +231 -0
- reachy_mini/media/camera_opencv.py +89 -0
- reachy_mini/media/camera_utils.py +111 -0
- reachy_mini/media/media_manager.py +281 -0
- reachy_mini/media/webrtc_client_gstreamer.py +288 -0
- reachy_mini/media/webrtc_daemon.py +334 -0
- reachy_mini/motion/__init__.py +4 -0
- reachy_mini/motion/goto.py +71 -0
- reachy_mini/motion/move.py +43 -0
- reachy_mini/motion/recorded_move.py +146 -0
- reachy_mini/reachy_mini.py +753 -0
- reachy_mini/tools/reflash_motors.py +116 -0
- reachy_mini/tools/setup_motor.py +422 -0
- reachy_mini/tools/setup_motor_rpi.py +108 -0
- reachy_mini/utils/__init__.py +46 -0
- reachy_mini/utils/constants.py +9 -0
- reachy_mini/utils/hardware_config/__init__.py +1 -0
- reachy_mini/utils/hardware_config/parser.py +65 -0
- reachy_mini/utils/interpolation.py +227 -0
- reachy_mini/utils/parse_urdf_for_kinematics.py +110 -0
- reachy_mini/utils/rerun.py +320 -0
- reachy_mini/utils/wireless_version/__init__.py +1 -0
- reachy_mini/utils/wireless_version/startup_check.py +144 -0
- reachy_mini/utils/wireless_version/update.py +20 -0
- reachy_mini/utils/wireless_version/update_available.py +61 -0
- reachy_mini/utils/wireless_version/utils.py +39 -0
- reachy_mini-1.2.5rc1.dist-info/METADATA +161 -0
- reachy_mini-1.2.5rc1.dist-info/RECORD +479 -0
- reachy_mini-1.2.5rc1.dist-info/WHEEL +5 -0
- reachy_mini-1.2.5rc1.dist-info/entry_points.txt +4 -0
- reachy_mini-1.2.5rc1.dist-info/licenses/LICENSE +201 -0
- reachy_mini-1.2.5rc1.dist-info/top_level.txt +1 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Changelog of Reachy Mini Audio Firmware
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
## 2.1.3
|
|
5
|
+
|
|
6
|
+
*For Beta units only*
|
|
7
|
+
|
|
8
|
+
Fixes the initialization issue on Reachy Mini beta hardware. An additional 2-second delay is added during initialization to prevent the XMOS chip from starting before the other components.
|
|
9
|
+
|
|
10
|
+
There is no need to apply this firmware to the Lite and Wireless versions, as the issue is fixed at the hardware level.
|
|
11
|
+
|
|
12
|
+
## 2.1.2
|
|
13
|
+
|
|
14
|
+
Improved parameters for acoustic echo cancellation (AEC).
|
|
15
|
+
PP_DTSENSITIVE is set to 1 by default.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
{
|
|
2
|
+
"motor_arm_length": 0.04000000000000001,
|
|
3
|
+
"rod_length": 0.08499999999999995,
|
|
4
|
+
"head_z_offset": 0.177,
|
|
5
|
+
"motors": [
|
|
6
|
+
{
|
|
7
|
+
"name": "stewart_1",
|
|
8
|
+
"branch_frame": "closing_1_2",
|
|
9
|
+
"offset": 0,
|
|
10
|
+
"solution": 0,
|
|
11
|
+
"T_motor_world": [
|
|
12
|
+
[
|
|
13
|
+
0.8660247915798898,
|
|
14
|
+
-0.5000010603626028,
|
|
15
|
+
-2.298079077119539e-06,
|
|
16
|
+
-0.009999848080267933
|
|
17
|
+
],
|
|
18
|
+
[
|
|
19
|
+
4.490195936008854e-06,
|
|
20
|
+
3.1810770986818273e-06,
|
|
21
|
+
0.999999999984859,
|
|
22
|
+
-0.07663346037245178
|
|
23
|
+
],
|
|
24
|
+
[
|
|
25
|
+
-0.500001060347722,
|
|
26
|
+
-0.8660247915770963,
|
|
27
|
+
4.999994360718464e-06,
|
|
28
|
+
0.03666015757925319
|
|
29
|
+
],
|
|
30
|
+
[
|
|
31
|
+
0.0,
|
|
32
|
+
0.0,
|
|
33
|
+
0.0,
|
|
34
|
+
1.0
|
|
35
|
+
]
|
|
36
|
+
],
|
|
37
|
+
"branch_position": [
|
|
38
|
+
0.020648178337122566,
|
|
39
|
+
0.021763723638894568,
|
|
40
|
+
1.0345743467476964e-07
|
|
41
|
+
],
|
|
42
|
+
"limits": [
|
|
43
|
+
-3.141592653589793,
|
|
44
|
+
3.141592653589793
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "stewart_2",
|
|
49
|
+
"branch_frame": "closing_2_2",
|
|
50
|
+
"offset": 0,
|
|
51
|
+
"solution": 1,
|
|
52
|
+
"T_motor_world": [
|
|
53
|
+
[
|
|
54
|
+
-0.8660211183436269,
|
|
55
|
+
0.5000074225224785,
|
|
56
|
+
2.298069723064582e-06,
|
|
57
|
+
-0.01000055227585102
|
|
58
|
+
],
|
|
59
|
+
[
|
|
60
|
+
-4.490219645842903e-06,
|
|
61
|
+
-3.181063409649239e-06,
|
|
62
|
+
-0.999999999984859,
|
|
63
|
+
0.07663346037219607
|
|
64
|
+
],
|
|
65
|
+
[
|
|
66
|
+
-0.5000074225075973,
|
|
67
|
+
-0.8660211183408337,
|
|
68
|
+
5.00001124330122e-06,
|
|
69
|
+
0.03666008712637943
|
|
70
|
+
],
|
|
71
|
+
[
|
|
72
|
+
0.0,
|
|
73
|
+
0.0,
|
|
74
|
+
0.0,
|
|
75
|
+
1.0
|
|
76
|
+
]
|
|
77
|
+
],
|
|
78
|
+
"branch_position": [
|
|
79
|
+
0.00852381571767217,
|
|
80
|
+
0.028763668526131346,
|
|
81
|
+
1.183437210727778e-07
|
|
82
|
+
],
|
|
83
|
+
"limits": [
|
|
84
|
+
-3.141592653589793,
|
|
85
|
+
3.141592653589793
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"name": "stewart_3",
|
|
90
|
+
"branch_frame": "closing_3_2",
|
|
91
|
+
"offset": 0,
|
|
92
|
+
"solution": 0,
|
|
93
|
+
"T_motor_world": [
|
|
94
|
+
[
|
|
95
|
+
6.326794896519466e-06,
|
|
96
|
+
0.9999999999799852,
|
|
97
|
+
-7.0550646912150425e-12,
|
|
98
|
+
-0.009999884140839245
|
|
99
|
+
],
|
|
100
|
+
[
|
|
101
|
+
-1.0196153102346142e-06,
|
|
102
|
+
1.3505961633338446e-11,
|
|
103
|
+
0.9999999999994795,
|
|
104
|
+
-0.07663346037438698
|
|
105
|
+
],
|
|
106
|
+
[
|
|
107
|
+
0.9999999999794655,
|
|
108
|
+
-6.326794896940104e-06,
|
|
109
|
+
1.0196153098685706e-06,
|
|
110
|
+
0.036660683387545835
|
|
111
|
+
],
|
|
112
|
+
[
|
|
113
|
+
0.0,
|
|
114
|
+
0.0,
|
|
115
|
+
0.0,
|
|
116
|
+
1.0
|
|
117
|
+
]
|
|
118
|
+
],
|
|
119
|
+
"branch_position": [
|
|
120
|
+
-0.029172011376922807,
|
|
121
|
+
0.0069999429399361995,
|
|
122
|
+
4.0290270064691214e-08
|
|
123
|
+
],
|
|
124
|
+
"limits": [
|
|
125
|
+
-3.141592653589793,
|
|
126
|
+
3.141592653589793
|
|
127
|
+
]
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"name": "stewart_4",
|
|
131
|
+
"branch_frame": "closing_4_2",
|
|
132
|
+
"offset": 0,
|
|
133
|
+
"solution": 1,
|
|
134
|
+
"T_motor_world": [
|
|
135
|
+
[
|
|
136
|
+
-3.673205069955933e-06,
|
|
137
|
+
-0.9999999999932537,
|
|
138
|
+
-6.767968877969483e-14,
|
|
139
|
+
-0.010000000000897517
|
|
140
|
+
],
|
|
141
|
+
[
|
|
142
|
+
1.0196153102837198e-06,
|
|
143
|
+
-3.6775764393585005e-12,
|
|
144
|
+
-0.9999999999994795,
|
|
145
|
+
0.0766334603742898
|
|
146
|
+
],
|
|
147
|
+
[
|
|
148
|
+
0.9999999999927336,
|
|
149
|
+
-3.673205070385213e-06,
|
|
150
|
+
1.0196153102903487e-06,
|
|
151
|
+
0.03666065685180194
|
|
152
|
+
],
|
|
153
|
+
[
|
|
154
|
+
0.0,
|
|
155
|
+
0.0,
|
|
156
|
+
0.0,
|
|
157
|
+
1.0
|
|
158
|
+
]
|
|
159
|
+
],
|
|
160
|
+
"branch_position": [
|
|
161
|
+
-0.029172040355214434,
|
|
162
|
+
-0.0069999960097160766,
|
|
163
|
+
-3.1608172912367394e-08
|
|
164
|
+
],
|
|
165
|
+
"limits": [
|
|
166
|
+
-3.141592653589793,
|
|
167
|
+
3.141592653589793
|
|
168
|
+
]
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"name": "stewart_5",
|
|
172
|
+
"branch_frame": "closing_5_2",
|
|
173
|
+
"offset": 0,
|
|
174
|
+
"solution": 0,
|
|
175
|
+
"T_motor_world": [
|
|
176
|
+
[
|
|
177
|
+
-0.8660284647694133,
|
|
178
|
+
-0.4999946981757419,
|
|
179
|
+
2.298079429767357e-06,
|
|
180
|
+
-0.010000231529504576
|
|
181
|
+
],
|
|
182
|
+
[
|
|
183
|
+
4.490172883391843e-06,
|
|
184
|
+
-3.1811099293773187e-06,
|
|
185
|
+
0.9999999999848591,
|
|
186
|
+
-0.07663346037246624
|
|
187
|
+
],
|
|
188
|
+
[
|
|
189
|
+
-0.4999946981608617,
|
|
190
|
+
0.8660284647666201,
|
|
191
|
+
4.999994384073154e-06,
|
|
192
|
+
0.03666016059492482
|
|
193
|
+
],
|
|
194
|
+
[
|
|
195
|
+
0.0,
|
|
196
|
+
0.0,
|
|
197
|
+
0.0,
|
|
198
|
+
1.0
|
|
199
|
+
]
|
|
200
|
+
],
|
|
201
|
+
"branch_position": [
|
|
202
|
+
0.008523809101930114,
|
|
203
|
+
-0.028763713010385224,
|
|
204
|
+
-1.4344916837716326e-07
|
|
205
|
+
],
|
|
206
|
+
"limits": [
|
|
207
|
+
-3.141592653589793,
|
|
208
|
+
3.141592653589793
|
|
209
|
+
]
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"name": "stewart_6",
|
|
213
|
+
"branch_frame": "passive_7_link_y",
|
|
214
|
+
"offset": 0,
|
|
215
|
+
"solution": 1,
|
|
216
|
+
"T_motor_world": [
|
|
217
|
+
[
|
|
218
|
+
0.8660247915798897,
|
|
219
|
+
0.5000010603626025,
|
|
220
|
+
-2.298069644866714e-06,
|
|
221
|
+
-0.009999527331574583
|
|
222
|
+
],
|
|
223
|
+
[
|
|
224
|
+
-4.490196220318687e-06,
|
|
225
|
+
3.1810964558725514e-06,
|
|
226
|
+
-0.9999999999848591,
|
|
227
|
+
0.07663346037272492
|
|
228
|
+
],
|
|
229
|
+
[
|
|
230
|
+
-0.500001060347722,
|
|
231
|
+
0.8660247915770967,
|
|
232
|
+
5.000011266610794e-06,
|
|
233
|
+
0.036660231042625266
|
|
234
|
+
],
|
|
235
|
+
[
|
|
236
|
+
0.0,
|
|
237
|
+
0.0,
|
|
238
|
+
0.0,
|
|
239
|
+
1.0
|
|
240
|
+
]
|
|
241
|
+
],
|
|
242
|
+
"branch_position": [
|
|
243
|
+
0.020648186722822436,
|
|
244
|
+
-0.02176369606185343,
|
|
245
|
+
-8.957920105689965e-08
|
|
246
|
+
],
|
|
247
|
+
"limits": [
|
|
248
|
+
-3.141592653589793,
|
|
249
|
+
3.141592653589793
|
|
250
|
+
]
|
|
251
|
+
}
|
|
252
|
+
]
|
|
253
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Daemon for Reachy Mini."""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""FastAPI app initialization."""
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"""Background jobs management for Reachy Mini Daemon."""
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
import logging
|
|
5
|
+
import threading
|
|
6
|
+
import uuid
|
|
7
|
+
from dataclasses import dataclass
|
|
8
|
+
from enum import Enum
|
|
9
|
+
from typing import Any, Awaitable, Callable
|
|
10
|
+
|
|
11
|
+
from fastapi import WebSocket, WebSocketDisconnect
|
|
12
|
+
from pydantic import BaseModel
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class JobStatus(Enum):
|
|
16
|
+
"""Enum for job status."""
|
|
17
|
+
|
|
18
|
+
PENDING = "pending"
|
|
19
|
+
IN_PROGRESS = "in_progress"
|
|
20
|
+
DONE = "done"
|
|
21
|
+
FAILED = "failed"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class JobInfo(BaseModel):
|
|
25
|
+
"""Pydantic model for install job status."""
|
|
26
|
+
|
|
27
|
+
command: str
|
|
28
|
+
status: JobStatus
|
|
29
|
+
logs: list[str]
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@dataclass
|
|
33
|
+
class JobHandler:
|
|
34
|
+
"""Handler for background jobs."""
|
|
35
|
+
|
|
36
|
+
uuid: str
|
|
37
|
+
info: JobInfo
|
|
38
|
+
new_log_evt: dict[str, asyncio.Event]
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
register: dict[str, JobHandler] = {}
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def run_command(
|
|
45
|
+
command: str,
|
|
46
|
+
coro_func: Callable[..., Awaitable[None]],
|
|
47
|
+
*args: Any,
|
|
48
|
+
) -> str:
|
|
49
|
+
"""Start a background job, with a custom logger and return its job_id."""
|
|
50
|
+
job_uuid = str(uuid.uuid4())
|
|
51
|
+
|
|
52
|
+
jh = JobHandler(
|
|
53
|
+
uuid=job_uuid,
|
|
54
|
+
info=JobInfo(command=command, status=JobStatus.PENDING, logs=[]),
|
|
55
|
+
new_log_evt={},
|
|
56
|
+
)
|
|
57
|
+
register[job_uuid] = jh
|
|
58
|
+
|
|
59
|
+
start_evt = threading.Event()
|
|
60
|
+
|
|
61
|
+
async def wrapper() -> None:
|
|
62
|
+
jh.info.status = JobStatus.IN_PROGRESS
|
|
63
|
+
|
|
64
|
+
class JobLogger(logging.Handler):
|
|
65
|
+
def emit(self, record: logging.LogRecord) -> None:
|
|
66
|
+
jh.info.logs.append(self.format(record))
|
|
67
|
+
for ws in jh.new_log_evt.values():
|
|
68
|
+
ws.set()
|
|
69
|
+
|
|
70
|
+
logger = logging.getLogger(f"logs_job_{job_uuid}")
|
|
71
|
+
logger.setLevel(logging.INFO)
|
|
72
|
+
logger.handlers.clear()
|
|
73
|
+
logger.addHandler(JobLogger())
|
|
74
|
+
|
|
75
|
+
start_evt.set()
|
|
76
|
+
|
|
77
|
+
try:
|
|
78
|
+
await coro_func(*args, logger=logger)
|
|
79
|
+
jh.info.status = JobStatus.DONE
|
|
80
|
+
logger.info(f"Job '{command}' completed successfully")
|
|
81
|
+
except Exception as e:
|
|
82
|
+
jh.info.status = JobStatus.FAILED
|
|
83
|
+
logger.error(f"Job '{command}' failed with error: {e}")
|
|
84
|
+
|
|
85
|
+
t = threading.Thread(target=lambda: asyncio.run(wrapper()))
|
|
86
|
+
t.start()
|
|
87
|
+
# background_tasks.add_task(wrapper)
|
|
88
|
+
start_evt.wait()
|
|
89
|
+
|
|
90
|
+
return job_uuid
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def get_info(job_id: str) -> JobInfo:
|
|
94
|
+
"""Get the info of a job by its ID."""
|
|
95
|
+
job = register.get(job_id)
|
|
96
|
+
|
|
97
|
+
if not job:
|
|
98
|
+
raise ValueError("Job ID not found")
|
|
99
|
+
|
|
100
|
+
return job.info
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
async def ws_poll_info(websocket: WebSocket, job_uuid: str) -> None:
|
|
104
|
+
"""WebSocket endpoint to stream job logs in real time."""
|
|
105
|
+
job = register.get(job_uuid)
|
|
106
|
+
if not job:
|
|
107
|
+
await websocket.send_json({"error": "Job ID not found"})
|
|
108
|
+
await websocket.close()
|
|
109
|
+
return
|
|
110
|
+
|
|
111
|
+
assert job is not None
|
|
112
|
+
|
|
113
|
+
ws_uuid = str(uuid.uuid4())
|
|
114
|
+
last_log_len = 0
|
|
115
|
+
|
|
116
|
+
try:
|
|
117
|
+
job.new_log_evt[ws_uuid] = asyncio.Event()
|
|
118
|
+
|
|
119
|
+
while True:
|
|
120
|
+
await job.new_log_evt[ws_uuid].wait()
|
|
121
|
+
job.new_log_evt[ws_uuid].clear()
|
|
122
|
+
|
|
123
|
+
new_logs = job.info.logs[last_log_len:]
|
|
124
|
+
|
|
125
|
+
if new_logs:
|
|
126
|
+
for log_entry in new_logs:
|
|
127
|
+
await websocket.send_text(log_entry)
|
|
128
|
+
last_log_len = len(job.info.logs)
|
|
129
|
+
|
|
130
|
+
await websocket.send_text(
|
|
131
|
+
JobInfo(
|
|
132
|
+
command=job.info.command,
|
|
133
|
+
status=job.info.status,
|
|
134
|
+
logs=new_logs,
|
|
135
|
+
).model_dump_json()
|
|
136
|
+
)
|
|
137
|
+
if job.info.status in (JobStatus.DONE, JobStatus.FAILED):
|
|
138
|
+
break
|
|
139
|
+
except WebSocketDisconnect:
|
|
140
|
+
pass
|
|
141
|
+
finally:
|
|
142
|
+
job.new_log_evt.pop(ws_uuid, None)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<svg width="918" height="591" viewBox="0 0 918 591" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_563_1781)">
|
|
3
|
+
<mask id="mask0_563_1781" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="-1" y="0" width="919" height="591">
|
|
4
|
+
<path d="M903.703 0H13.7031C5.97114 0 -0.296875 6.26801 -0.296875 14V577C-0.296875 584.732 5.97114 591 13.7031 591H903.703C911.435 591 917.703 584.732 917.703 577V14C917.703 6.26801 911.435 0 903.703 0Z" fill="white"/>
|
|
5
|
+
</mask>
|
|
6
|
+
<g mask="url(#mask0_563_1781)">
|
|
7
|
+
<path d="M904 0H14C6.26801 0 0 6.26801 0 14V577C0 584.732 6.26801 591 14 591H904C911.732 591 918 584.732 918 577V14C918 6.26801 911.732 0 904 0Z" fill="#FF6170"/>
|
|
8
|
+
</g>
|
|
9
|
+
<path d="M285.477 313.805L272.112 305.233" stroke="black" stroke-width="6.2755" stroke-linecap="round"/>
|
|
10
|
+
<path d="M296.911 295.977L283.546 287.405" stroke="black" stroke-width="6.2755" stroke-linecap="round"/>
|
|
11
|
+
<path d="M293.1 301.92L279.735 293.348" stroke="black" stroke-width="6.2755" stroke-linecap="round"/>
|
|
12
|
+
<path d="M289.289 307.863L275.924 299.291" stroke="black" stroke-width="6.2755" stroke-linecap="round"/>
|
|
13
|
+
<path d="M213.065 411.888L277.032 312.148" stroke="black" stroke-width="6.2755" stroke-linecap="round"/>
|
|
14
|
+
<path d="M214.346 409.89L218.158 403.947" stroke="black" stroke-width="10.9821" stroke-linecap="round"/>
|
|
15
|
+
<path d="M291.42 289.714L304.972 268.584" stroke="black" stroke-width="6.2755" stroke-linecap="round"/>
|
|
16
|
+
<path d="M471.249 120.618L486.584 124.731" stroke="black" stroke-width="6.2755" stroke-linecap="round"/>
|
|
17
|
+
<path d="M465.76 141.076L481.098 145.188" stroke="black" stroke-width="6.2755" stroke-linecap="round"/>
|
|
18
|
+
<path d="M467.59 134.256L482.927 138.369" stroke="black" stroke-width="6.2755" stroke-linecap="round"/>
|
|
19
|
+
<path d="M469.419 127.437L484.754 131.55" stroke="black" stroke-width="6.2755" stroke-linecap="round"/>
|
|
20
|
+
<path d="M510.49 5.19073L479.798 119.636" stroke="black" stroke-width="6.2755" stroke-linecap="round"/>
|
|
21
|
+
<path d="M509.876 7.4823L508.047 14.3016" stroke="black" stroke-width="10.9821" stroke-linecap="round"/>
|
|
22
|
+
<path d="M472.894 145.377L466.391 169.622" stroke="black" stroke-width="6.2755" stroke-linecap="round"/>
|
|
23
|
+
<path d="M377.259 210.561C402.022 194.219 420.965 182.766 435.073 174.8C455.196 163.437 479.091 169.081 493.817 187.074C500.604 195.365 506.911 203.382 510.15 208.289C512.992 212.597 516.863 219.65 520.842 227.324C531.639 248.145 527.606 273.28 509.949 288.583C496.29 300.416 478.035 314.913 455.807 329.583C433.034 344.612 412.071 355.937 395.64 363.943C375.185 373.907 351.066 368.437 336.822 350.687C331.908 344.563 327.02 338.074 322.916 331.855C317.524 323.684 311.657 314.19 306.389 305.443C296.624 289.224 298.849 269.256 313.253 257.241C326.764 245.971 347.215 230.389 377.259 210.561Z" fill="#F3EDE7" stroke="black" stroke-width="2.87605"/>
|
|
24
|
+
<path d="M408.302 275.08C418.984 291.265 414.522 313.044 398.337 323.726C382.152 334.407 360.373 329.945 349.692 313.76C339.011 297.575 343.472 275.796 359.657 265.115C375.842 254.434 397.621 258.895 408.302 275.08Z" fill="black"/>
|
|
25
|
+
<path d="M478.876 222.762C487.734 236.185 484.033 254.248 470.611 263.106C457.188 271.965 439.125 268.265 430.267 254.842C421.408 241.418 425.108 223.356 438.531 214.497C451.954 205.639 470.017 209.339 478.876 222.762Z" fill="black"/>
|
|
26
|
+
<path d="M400.948 270.027L432.753 249.037L437.506 256.238L405.7 277.229L400.948 270.027Z" fill="black"/>
|
|
27
|
+
<path d="M399.927 591H517.922C528.254 591 537.163 583.952 539.643 574.073C539.291 574.07 538.886 574.068 538.438 574.065C536.537 574.056 533.807 574.044 530.49 574.027C523.854 573.996 514.864 573.955 505.452 573.912C486.623 573.828 466.105 573.744 459.327 573.744C452.549 573.744 432.031 573.828 413.203 573.912C403.79 573.955 394.801 573.996 388.165 574.027C384.847 574.044 382.118 574.056 380.218 574.065C379.742 574.068 379.318 574.07 378.95 574.073C381.061 583.875 389.752 591 399.927 591Z" fill="#353533" stroke="black" stroke-width="2.87605"/>
|
|
28
|
+
<path d="M391.64 576.141H521.478C545.132 576.141 564.653 557.64 565.923 534.021L568.178 492.033C567.519 492.021 566.652 492.009 565.597 491.992C562.989 491.951 559.243 491.894 554.69 491.824C545.585 491.685 533.249 491.501 520.333 491.316C494.491 490.947 466.344 490.578 457.05 490.578C447.756 490.578 419.608 490.947 393.768 491.316C380.851 491.501 368.516 491.685 359.41 491.824C354.857 491.894 351.111 491.951 348.504 491.992C347.44 492.009 346.567 492.023 345.904 492.033L347.699 534.038C348.704 557.576 368.08 576.141 391.64 576.141Z" fill="#F3EDE7" stroke="black" stroke-width="2.87605"/>
|
|
29
|
+
<path d="M457.05 339.346C518.468 339.346 568.257 389.135 568.257 450.553V497.471C567.586 497.49 566.685 497.517 565.578 497.548C562.97 497.622 559.224 497.73 554.673 497.859C545.565 498.113 533.232 498.456 520.316 498.799C494.47 499.482 466.333 500.165 457.05 500.165C447.767 500.165 419.631 499.482 393.785 498.799C380.869 498.456 368.534 498.113 359.429 497.859C354.875 497.73 351.13 497.622 348.523 497.548C347.416 497.517 346.514 497.49 345.843 497.471V450.553C345.843 389.135 395.632 339.346 457.05 339.346Z" fill="#F3EDE7" stroke="black" stroke-width="2.87605"/>
|
|
30
|
+
<line x1="379.067" y1="275.175" x2="379.078" y2="313.386" stroke="white" stroke-width="11.6292" stroke-linecap="round"/>
|
|
31
|
+
<line x1="359.968" y1="293.455" x2="398.178" y2="293.445" stroke="white" stroke-width="11.6292" stroke-linecap="round"/>
|
|
32
|
+
<line x1="456.825" y1="222.88" x2="454.018" y2="254.202" stroke="white" stroke-width="9.571" stroke-linecap="round"/>
|
|
33
|
+
<line x1="439.821" y1="236.456" x2="471.143" y2="239.264" stroke="white" stroke-width="9.571" stroke-linecap="round"/>
|
|
34
|
+
</g>
|
|
35
|
+
<defs>
|
|
36
|
+
<clipPath id="clip0_563_1781">
|
|
37
|
+
<rect width="918" height="591" fill="white"/>
|
|
38
|
+
</clipPath>
|
|
39
|
+
</defs>
|
|
40
|
+
</svg>
|