Spaces:
Running
Running
PanGalactic Claude Opus 4.6 commited on
Commit ·
981199c
1
Parent(s): b59fd08
Replace landing page with detailed feature showcase
Browse files22 annotated screenshots, demo video walkthrough,
full feature descriptions for all dashboard tabs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- demo_video.mp4 +3 -0
- frames/01_status_dashboard.jpg +3 -0
- frames/03_3d_simulation.jpg +3 -0
- frames/04_joystick_cameras.jpg +3 -0
- frames/05_telemetry.jpg +3 -0
- frames/06_emotions_gallery.jpg +3 -0
- frames/07_oscillations.jpg +3 -0
- frames/08_conversation_ai.jpg +3 -0
- frames/09_scratchpad_diagrams.jpg +3 -0
- frames/10_scratchpad_recipe.jpg +3 -0
- frames/11_ai_tool_use.jpg +3 -0
- frames/12_timers_ambient.jpg +3 -0
- frames/13_shell_terminal.jpg +3 -0
- frames/14_vision_settings.jpg +3 -0
- frames/15_pose_detection.jpg +3 -0
- frames/16_audio_settings.jpg +3 -0
- frames/17_tuning_llm.jpg +3 -0
- frames/18_scenes_skins.jpg +3 -0
- frames/21_media_tab.jpg +3 -0
- frames/22_brazil_skin.jpg +3 -0
- frames/24_crystal_cave.jpg +3 -0
- frames/25_clouds_full.jpg +3 -0
- frames/26_floating_panels.jpg +3 -0
- index.html +1059 -83
demo_video.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2d7847eeae9bf20dd708e8d0e49abc26b014660574848076b6821041e39de7fe
|
| 3 |
+
size 28259684
|
frames/01_status_dashboard.jpg
ADDED
|
Git LFS Details
|
frames/03_3d_simulation.jpg
ADDED
|
Git LFS Details
|
frames/04_joystick_cameras.jpg
ADDED
|
Git LFS Details
|
frames/05_telemetry.jpg
ADDED
|
Git LFS Details
|
frames/06_emotions_gallery.jpg
ADDED
|
Git LFS Details
|
frames/07_oscillations.jpg
ADDED
|
Git LFS Details
|
frames/08_conversation_ai.jpg
ADDED
|
Git LFS Details
|
frames/09_scratchpad_diagrams.jpg
ADDED
|
Git LFS Details
|
frames/10_scratchpad_recipe.jpg
ADDED
|
Git LFS Details
|
frames/11_ai_tool_use.jpg
ADDED
|
Git LFS Details
|
frames/12_timers_ambient.jpg
ADDED
|
Git LFS Details
|
frames/13_shell_terminal.jpg
ADDED
|
Git LFS Details
|
frames/14_vision_settings.jpg
ADDED
|
Git LFS Details
|
frames/15_pose_detection.jpg
ADDED
|
Git LFS Details
|
frames/16_audio_settings.jpg
ADDED
|
Git LFS Details
|
frames/17_tuning_llm.jpg
ADDED
|
Git LFS Details
|
frames/18_scenes_skins.jpg
ADDED
|
Git LFS Details
|
frames/21_media_tab.jpg
ADDED
|
Git LFS Details
|
frames/22_brazil_skin.jpg
ADDED
|
Git LFS Details
|
frames/24_crystal_cave.jpg
ADDED
|
Git LFS Details
|
frames/25_clouds_full.jpg
ADDED
|
Git LFS Details
|
frames/26_floating_panels.jpg
ADDED
|
Git LFS Details
|
index.html
CHANGED
|
@@ -1,115 +1,1091 @@
|
|
| 1 |
-
<!
|
| 2 |
<html lang="en">
|
| 3 |
<head>
|
| 4 |
-
<meta charset="
|
| 5 |
-
<meta name="viewport" content="width=device-width, initial-scale=1"
|
| 6 |
-
<title>Hello World
|
| 7 |
-
<
|
| 8 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
</head>
|
| 10 |
<body>
|
| 11 |
|
| 12 |
-
<
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
<div class="
|
| 16 |
-
<
|
| 17 |
-
|
| 18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
</div>
|
| 20 |
</div>
|
| 21 |
-
</nav>
|
| 22 |
|
| 23 |
-
<
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
<div class="hero-img">
|
| 45 |
-
<img src="screenshots/dashboard-overview.png" alt="Hello World dashboard" />
|
| 46 |
</div>
|
| 47 |
</section>
|
| 48 |
|
| 49 |
-
<
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
</div>
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
</div>
|
| 61 |
-
<div class="card">
|
| 62 |
-
<img src="
|
| 63 |
-
<div class="
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 64 |
</div>
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 68 |
</div>
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 74 |
</div>
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
|
|
|
|
|
|
|
|
|
| 78 |
</div>
|
| 79 |
-
<div
|
| 80 |
-
<img src="
|
| 81 |
-
<
|
| 82 |
</div>
|
| 83 |
-
<div
|
| 84 |
-
<img src="
|
| 85 |
-
<
|
| 86 |
</div>
|
| 87 |
</div>
|
| 88 |
</section>
|
| 89 |
|
| 90 |
-
<
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 97 |
</div>
|
| 98 |
-
<div class="
|
| 99 |
-
<
|
| 100 |
-
<
|
| 101 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 102 |
</div>
|
| 103 |
</div>
|
| 104 |
</section>
|
| 105 |
|
| 106 |
-
<
|
|
|
|
| 107 |
<p>
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
|
|
|
|
|
|
|
|
|
| 111 |
</p>
|
| 112 |
-
<p class="footer-sub">Solo project · Python 3.10+ · Vanilla JS · FastAPI · No build step · <a href="https://huggingface.co/spaces/panny247/hello_world/discussions">Feedback welcome</a></p>
|
| 113 |
</footer>
|
| 114 |
|
| 115 |
</body>
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
<html lang="en">
|
| 3 |
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>Hello World - One App to Rule Them All | Reachy Mini Dashboard</title>
|
| 7 |
+
<style>
|
| 8 |
+
* { margin: 0; padding: 0; box-sizing: border-box; }
|
| 9 |
+
|
| 10 |
+
:root {
|
| 11 |
+
--bg-primary: #0a0a0f;
|
| 12 |
+
--bg-secondary: #12121a;
|
| 13 |
+
--bg-card: #1a1a26;
|
| 14 |
+
--bg-card-hover: #222233;
|
| 15 |
+
--accent: #7c5cfc;
|
| 16 |
+
--accent-glow: rgba(124, 92, 252, 0.3);
|
| 17 |
+
--accent-secondary: #5ce0d8;
|
| 18 |
+
--text-primary: #e8e8f0;
|
| 19 |
+
--text-secondary: #9090a8;
|
| 20 |
+
--text-muted: #606078;
|
| 21 |
+
--border: #2a2a3a;
|
| 22 |
+
--success: #4ade80;
|
| 23 |
+
--warning: #fbbf24;
|
| 24 |
+
--danger: #f87171;
|
| 25 |
+
}
|
| 26 |
+
|
| 27 |
+
body {
|
| 28 |
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
|
| 29 |
+
background: var(--bg-primary);
|
| 30 |
+
color: var(--text-primary);
|
| 31 |
+
line-height: 1.6;
|
| 32 |
+
overflow-x: hidden;
|
| 33 |
+
}
|
| 34 |
+
|
| 35 |
+
/* Hero Section */
|
| 36 |
+
.hero {
|
| 37 |
+
position: relative;
|
| 38 |
+
min-height: 100vh;
|
| 39 |
+
display: flex;
|
| 40 |
+
flex-direction: column;
|
| 41 |
+
align-items: center;
|
| 42 |
+
justify-content: center;
|
| 43 |
+
text-align: center;
|
| 44 |
+
padding: 2rem;
|
| 45 |
+
overflow: hidden;
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
+
.hero::before {
|
| 49 |
+
content: '';
|
| 50 |
+
position: absolute;
|
| 51 |
+
top: -50%;
|
| 52 |
+
left: -50%;
|
| 53 |
+
width: 200%;
|
| 54 |
+
height: 200%;
|
| 55 |
+
background: radial-gradient(ellipse at 30% 20%, rgba(124, 92, 252, 0.08) 0%, transparent 50%),
|
| 56 |
+
radial-gradient(ellipse at 70% 80%, rgba(92, 224, 216, 0.06) 0%, transparent 50%);
|
| 57 |
+
animation: drift 20s ease-in-out infinite alternate;
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
@keyframes drift {
|
| 61 |
+
0% { transform: translate(0, 0) rotate(0deg); }
|
| 62 |
+
100% { transform: translate(-2%, -1%) rotate(1deg); }
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
.hero-content {
|
| 66 |
+
position: relative;
|
| 67 |
+
z-index: 1;
|
| 68 |
+
max-width: 900px;
|
| 69 |
+
}
|
| 70 |
+
|
| 71 |
+
.hero-badge {
|
| 72 |
+
display: inline-flex;
|
| 73 |
+
align-items: center;
|
| 74 |
+
gap: 0.5rem;
|
| 75 |
+
padding: 0.4rem 1rem;
|
| 76 |
+
border-radius: 100px;
|
| 77 |
+
background: rgba(124, 92, 252, 0.1);
|
| 78 |
+
border: 1px solid rgba(124, 92, 252, 0.3);
|
| 79 |
+
font-size: 0.85rem;
|
| 80 |
+
color: var(--accent);
|
| 81 |
+
margin-bottom: 1.5rem;
|
| 82 |
+
letter-spacing: 0.02em;
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
.hero-badge .dot {
|
| 86 |
+
width: 6px;
|
| 87 |
+
height: 6px;
|
| 88 |
+
border-radius: 50%;
|
| 89 |
+
background: var(--success);
|
| 90 |
+
animation: pulse-dot 2s ease-in-out infinite;
|
| 91 |
+
}
|
| 92 |
+
|
| 93 |
+
@keyframes pulse-dot {
|
| 94 |
+
0%, 100% { opacity: 1; }
|
| 95 |
+
50% { opacity: 0.4; }
|
| 96 |
+
}
|
| 97 |
+
|
| 98 |
+
h1 {
|
| 99 |
+
font-size: clamp(2.5rem, 6vw, 4.5rem);
|
| 100 |
+
font-weight: 700;
|
| 101 |
+
letter-spacing: -0.03em;
|
| 102 |
+
line-height: 1.1;
|
| 103 |
+
margin-bottom: 1rem;
|
| 104 |
+
}
|
| 105 |
+
|
| 106 |
+
h1 .gradient {
|
| 107 |
+
background: linear-gradient(135deg, var(--accent) 0%, var(--accent-secondary) 100%);
|
| 108 |
+
-webkit-background-clip: text;
|
| 109 |
+
-webkit-text-fill-color: transparent;
|
| 110 |
+
background-clip: text;
|
| 111 |
+
}
|
| 112 |
+
|
| 113 |
+
.hero-subtitle {
|
| 114 |
+
font-size: 1.2rem;
|
| 115 |
+
color: var(--text-secondary);
|
| 116 |
+
max-width: 650px;
|
| 117 |
+
margin: 0 auto 2rem;
|
| 118 |
+
}
|
| 119 |
+
|
| 120 |
+
.hero-stats {
|
| 121 |
+
display: flex;
|
| 122 |
+
gap: 2rem;
|
| 123 |
+
justify-content: center;
|
| 124 |
+
flex-wrap: wrap;
|
| 125 |
+
margin-bottom: 3rem;
|
| 126 |
+
}
|
| 127 |
+
|
| 128 |
+
.stat {
|
| 129 |
+
text-align: center;
|
| 130 |
+
}
|
| 131 |
+
|
| 132 |
+
.stat-number {
|
| 133 |
+
font-size: 2rem;
|
| 134 |
+
font-weight: 700;
|
| 135 |
+
color: var(--accent);
|
| 136 |
+
font-variant-numeric: tabular-nums;
|
| 137 |
+
}
|
| 138 |
+
|
| 139 |
+
.stat-label {
|
| 140 |
+
font-size: 0.8rem;
|
| 141 |
+
color: var(--text-muted);
|
| 142 |
+
text-transform: uppercase;
|
| 143 |
+
letter-spacing: 0.1em;
|
| 144 |
+
}
|
| 145 |
+
|
| 146 |
+
/* Video Section */
|
| 147 |
+
.video-section {
|
| 148 |
+
max-width: 1100px;
|
| 149 |
+
margin: -2rem auto 4rem;
|
| 150 |
+
padding: 0 2rem;
|
| 151 |
+
position: relative;
|
| 152 |
+
z-index: 1;
|
| 153 |
+
}
|
| 154 |
+
|
| 155 |
+
.video-container {
|
| 156 |
+
position: relative;
|
| 157 |
+
border-radius: 16px;
|
| 158 |
+
overflow: hidden;
|
| 159 |
+
border: 1px solid var(--border);
|
| 160 |
+
box-shadow: 0 0 80px rgba(124, 92, 252, 0.15), 0 20px 60px rgba(0, 0, 0, 0.5);
|
| 161 |
+
}
|
| 162 |
+
|
| 163 |
+
.video-container video {
|
| 164 |
+
width: 100%;
|
| 165 |
+
display: block;
|
| 166 |
+
}
|
| 167 |
+
|
| 168 |
+
.video-label {
|
| 169 |
+
text-align: center;
|
| 170 |
+
margin-top: 1rem;
|
| 171 |
+
color: var(--text-muted);
|
| 172 |
+
font-size: 0.85rem;
|
| 173 |
+
}
|
| 174 |
+
|
| 175 |
+
/* Section Layout */
|
| 176 |
+
.section {
|
| 177 |
+
max-width: 1200px;
|
| 178 |
+
margin: 0 auto;
|
| 179 |
+
padding: 4rem 2rem;
|
| 180 |
+
}
|
| 181 |
+
|
| 182 |
+
.section-header {
|
| 183 |
+
text-align: center;
|
| 184 |
+
margin-bottom: 3rem;
|
| 185 |
+
}
|
| 186 |
+
|
| 187 |
+
.section-tag {
|
| 188 |
+
display: inline-block;
|
| 189 |
+
font-size: 0.75rem;
|
| 190 |
+
text-transform: uppercase;
|
| 191 |
+
letter-spacing: 0.15em;
|
| 192 |
+
color: var(--accent);
|
| 193 |
+
margin-bottom: 0.5rem;
|
| 194 |
+
}
|
| 195 |
+
|
| 196 |
+
h2 {
|
| 197 |
+
font-size: clamp(1.8rem, 4vw, 2.5rem);
|
| 198 |
+
font-weight: 700;
|
| 199 |
+
letter-spacing: -0.02em;
|
| 200 |
+
margin-bottom: 0.5rem;
|
| 201 |
+
}
|
| 202 |
+
|
| 203 |
+
.section-desc {
|
| 204 |
+
color: var(--text-secondary);
|
| 205 |
+
max-width: 600px;
|
| 206 |
+
margin: 0 auto;
|
| 207 |
+
}
|
| 208 |
+
|
| 209 |
+
/* Feature Cards */
|
| 210 |
+
.feature-grid {
|
| 211 |
+
display: grid;
|
| 212 |
+
grid-template-columns: repeat(auto-fit, minmax(500px, 1fr));
|
| 213 |
+
gap: 2rem;
|
| 214 |
+
}
|
| 215 |
+
|
| 216 |
+
.feature-card {
|
| 217 |
+
background: var(--bg-card);
|
| 218 |
+
border: 1px solid var(--border);
|
| 219 |
+
border-radius: 16px;
|
| 220 |
+
overflow: hidden;
|
| 221 |
+
transition: transform 0.3s, border-color 0.3s, box-shadow 0.3s;
|
| 222 |
+
}
|
| 223 |
+
|
| 224 |
+
.feature-card:hover {
|
| 225 |
+
transform: translateY(-4px);
|
| 226 |
+
border-color: rgba(124, 92, 252, 0.4);
|
| 227 |
+
box-shadow: 0 12px 40px rgba(0, 0, 0, 0.4);
|
| 228 |
+
}
|
| 229 |
+
|
| 230 |
+
.feature-card.wide {
|
| 231 |
+
grid-column: 1 / -1;
|
| 232 |
+
}
|
| 233 |
+
|
| 234 |
+
.feature-card img {
|
| 235 |
+
width: 100%;
|
| 236 |
+
display: block;
|
| 237 |
+
border-bottom: 1px solid var(--border);
|
| 238 |
+
}
|
| 239 |
+
|
| 240 |
+
.feature-card-body {
|
| 241 |
+
padding: 1.5rem;
|
| 242 |
+
}
|
| 243 |
+
|
| 244 |
+
.feature-card h3 {
|
| 245 |
+
font-size: 1.2rem;
|
| 246 |
+
font-weight: 600;
|
| 247 |
+
margin-bottom: 0.5rem;
|
| 248 |
+
display: flex;
|
| 249 |
+
align-items: center;
|
| 250 |
+
gap: 0.5rem;
|
| 251 |
+
}
|
| 252 |
+
|
| 253 |
+
.feature-card p {
|
| 254 |
+
color: var(--text-secondary);
|
| 255 |
+
font-size: 0.92rem;
|
| 256 |
+
}
|
| 257 |
+
|
| 258 |
+
.tag-row {
|
| 259 |
+
display: flex;
|
| 260 |
+
flex-wrap: wrap;
|
| 261 |
+
gap: 0.4rem;
|
| 262 |
+
margin-top: 0.75rem;
|
| 263 |
+
}
|
| 264 |
+
|
| 265 |
+
.tag {
|
| 266 |
+
display: inline-block;
|
| 267 |
+
padding: 0.2rem 0.6rem;
|
| 268 |
+
border-radius: 6px;
|
| 269 |
+
font-size: 0.75rem;
|
| 270 |
+
font-weight: 500;
|
| 271 |
+
}
|
| 272 |
+
|
| 273 |
+
.tag-purple { background: rgba(124, 92, 252, 0.15); color: var(--accent); }
|
| 274 |
+
.tag-teal { background: rgba(92, 224, 216, 0.15); color: var(--accent-secondary); }
|
| 275 |
+
.tag-green { background: rgba(74, 222, 128, 0.15); color: var(--success); }
|
| 276 |
+
.tag-yellow { background: rgba(251, 191, 36, 0.15); color: var(--warning); }
|
| 277 |
+
.tag-red { background: rgba(248, 113, 113, 0.15); color: var(--danger); }
|
| 278 |
+
|
| 279 |
+
/* Full-width Feature */
|
| 280 |
+
.feature-full {
|
| 281 |
+
margin-bottom: 4rem;
|
| 282 |
+
}
|
| 283 |
+
|
| 284 |
+
.feature-full-inner {
|
| 285 |
+
display: grid;
|
| 286 |
+
grid-template-columns: 1fr 1fr;
|
| 287 |
+
gap: 3rem;
|
| 288 |
+
align-items: center;
|
| 289 |
+
}
|
| 290 |
+
|
| 291 |
+
.feature-full-inner.reverse {
|
| 292 |
+
direction: rtl;
|
| 293 |
+
}
|
| 294 |
+
|
| 295 |
+
.feature-full-inner.reverse > * {
|
| 296 |
+
direction: ltr;
|
| 297 |
+
}
|
| 298 |
+
|
| 299 |
+
.feature-full-img {
|
| 300 |
+
border-radius: 16px;
|
| 301 |
+
overflow: hidden;
|
| 302 |
+
border: 1px solid var(--border);
|
| 303 |
+
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.3);
|
| 304 |
+
}
|
| 305 |
+
|
| 306 |
+
.feature-full-img img {
|
| 307 |
+
width: 100%;
|
| 308 |
+
display: block;
|
| 309 |
+
}
|
| 310 |
+
|
| 311 |
+
.feature-full-text h3 {
|
| 312 |
+
font-size: 1.6rem;
|
| 313 |
+
font-weight: 700;
|
| 314 |
+
margin-bottom: 0.75rem;
|
| 315 |
+
}
|
| 316 |
+
|
| 317 |
+
.feature-full-text p {
|
| 318 |
+
color: var(--text-secondary);
|
| 319 |
+
margin-bottom: 1rem;
|
| 320 |
+
}
|
| 321 |
+
|
| 322 |
+
.feature-list {
|
| 323 |
+
list-style: none;
|
| 324 |
+
padding: 0;
|
| 325 |
+
}
|
| 326 |
+
|
| 327 |
+
.feature-list li {
|
| 328 |
+
padding: 0.35rem 0;
|
| 329 |
+
color: var(--text-secondary);
|
| 330 |
+
font-size: 0.92rem;
|
| 331 |
+
display: flex;
|
| 332 |
+
align-items: center;
|
| 333 |
+
gap: 0.5rem;
|
| 334 |
+
}
|
| 335 |
+
|
| 336 |
+
.feature-list li::before {
|
| 337 |
+
content: '';
|
| 338 |
+
width: 6px;
|
| 339 |
+
height: 6px;
|
| 340 |
+
border-radius: 50%;
|
| 341 |
+
background: var(--accent);
|
| 342 |
+
flex-shrink: 0;
|
| 343 |
+
}
|
| 344 |
+
|
| 345 |
+
/* Divider */
|
| 346 |
+
.divider {
|
| 347 |
+
height: 1px;
|
| 348 |
+
background: linear-gradient(90deg, transparent, var(--border), transparent);
|
| 349 |
+
max-width: 1200px;
|
| 350 |
+
margin: 0 auto;
|
| 351 |
+
}
|
| 352 |
+
|
| 353 |
+
/* Scene Gallery */
|
| 354 |
+
.scene-gallery {
|
| 355 |
+
display: grid;
|
| 356 |
+
grid-template-columns: repeat(3, 1fr);
|
| 357 |
+
gap: 1rem;
|
| 358 |
+
}
|
| 359 |
+
|
| 360 |
+
.scene-gallery img {
|
| 361 |
+
width: 100%;
|
| 362 |
+
border-radius: 12px;
|
| 363 |
+
border: 1px solid var(--border);
|
| 364 |
+
transition: transform 0.3s, box-shadow 0.3s;
|
| 365 |
+
}
|
| 366 |
+
|
| 367 |
+
.scene-gallery img:hover {
|
| 368 |
+
transform: scale(1.03);
|
| 369 |
+
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.4);
|
| 370 |
+
}
|
| 371 |
+
|
| 372 |
+
.scene-label {
|
| 373 |
+
text-align: center;
|
| 374 |
+
font-size: 0.85rem;
|
| 375 |
+
color: var(--text-muted);
|
| 376 |
+
margin-top: 0.4rem;
|
| 377 |
+
}
|
| 378 |
+
|
| 379 |
+
/* Tech Stack */
|
| 380 |
+
.tech-grid {
|
| 381 |
+
display: grid;
|
| 382 |
+
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
| 383 |
+
gap: 1rem;
|
| 384 |
+
}
|
| 385 |
+
|
| 386 |
+
.tech-item {
|
| 387 |
+
background: var(--bg-card);
|
| 388 |
+
border: 1px solid var(--border);
|
| 389 |
+
border-radius: 12px;
|
| 390 |
+
padding: 1.2rem;
|
| 391 |
+
text-align: center;
|
| 392 |
+
transition: border-color 0.3s;
|
| 393 |
+
}
|
| 394 |
+
|
| 395 |
+
.tech-item:hover {
|
| 396 |
+
border-color: rgba(124, 92, 252, 0.4);
|
| 397 |
+
}
|
| 398 |
+
|
| 399 |
+
.tech-icon {
|
| 400 |
+
font-size: 1.8rem;
|
| 401 |
+
margin-bottom: 0.5rem;
|
| 402 |
+
}
|
| 403 |
+
|
| 404 |
+
.tech-item h4 {
|
| 405 |
+
font-size: 0.95rem;
|
| 406 |
+
margin-bottom: 0.25rem;
|
| 407 |
+
}
|
| 408 |
+
|
| 409 |
+
.tech-item p {
|
| 410 |
+
font-size: 0.8rem;
|
| 411 |
+
color: var(--text-muted);
|
| 412 |
+
}
|
| 413 |
+
|
| 414 |
+
/* Footer */
|
| 415 |
+
footer {
|
| 416 |
+
text-align: center;
|
| 417 |
+
padding: 3rem 2rem;
|
| 418 |
+
border-top: 1px solid var(--border);
|
| 419 |
+
color: var(--text-muted);
|
| 420 |
+
font-size: 0.85rem;
|
| 421 |
+
}
|
| 422 |
+
|
| 423 |
+
footer a {
|
| 424 |
+
color: var(--accent);
|
| 425 |
+
text-decoration: none;
|
| 426 |
+
}
|
| 427 |
+
|
| 428 |
+
footer a:hover {
|
| 429 |
+
text-decoration: underline;
|
| 430 |
+
}
|
| 431 |
+
|
| 432 |
+
/* Responsive */
|
| 433 |
+
@media (max-width: 768px) {
|
| 434 |
+
.feature-grid { grid-template-columns: 1fr; }
|
| 435 |
+
.feature-full-inner,
|
| 436 |
+
.feature-full-inner.reverse { grid-template-columns: 1fr; direction: ltr; }
|
| 437 |
+
.scene-gallery { grid-template-columns: 1fr 1fr; }
|
| 438 |
+
.hero-stats { gap: 1.5rem; }
|
| 439 |
+
}
|
| 440 |
+
|
| 441 |
+
@media (max-width: 500px) {
|
| 442 |
+
.feature-grid { grid-template-columns: 1fr; }
|
| 443 |
+
.scene-gallery { grid-template-columns: 1fr; }
|
| 444 |
+
}
|
| 445 |
+
</style>
|
| 446 |
</head>
|
| 447 |
<body>
|
| 448 |
|
| 449 |
+
<!-- Hero -->
|
| 450 |
+
<section class="hero">
|
| 451 |
+
<div class="hero-content">
|
| 452 |
+
<div class="hero-badge">
|
| 453 |
+
<span class="dot"></span>
|
| 454 |
+
Open Source on HuggingFace
|
| 455 |
+
</div>
|
| 456 |
+
<h1>
|
| 457 |
+
<span class="gradient">Hello World</span><br>
|
| 458 |
+
One App to Rule Them All
|
| 459 |
+
</h1>
|
| 460 |
+
<p class="hero-subtitle">
|
| 461 |
+
The most complete web dashboard for Pollen Robotics' Reachy Mini.
|
| 462 |
+
146 APIs, 31 AI tools, computer vision, 81 emotions, MuJoCo 3D simulation,
|
| 463 |
+
voice pipeline, and full system telemetry — all from your browser.
|
| 464 |
+
</p>
|
| 465 |
+
<div class="hero-stats">
|
| 466 |
+
<div class="stat">
|
| 467 |
+
<div class="stat-number">146</div>
|
| 468 |
+
<div class="stat-label">API Endpoints</div>
|
| 469 |
+
</div>
|
| 470 |
+
<div class="stat">
|
| 471 |
+
<div class="stat-number">81</div>
|
| 472 |
+
<div class="stat-label">Emotions</div>
|
| 473 |
+
</div>
|
| 474 |
+
<div class="stat">
|
| 475 |
+
<div class="stat-number">31</div>
|
| 476 |
+
<div class="stat-label">AI Tools</div>
|
| 477 |
+
</div>
|
| 478 |
+
<div class="stat">
|
| 479 |
+
<div class="stat-number">20</div>
|
| 480 |
+
<div class="stat-label">Dances</div>
|
| 481 |
+
</div>
|
| 482 |
+
<div class="stat">
|
| 483 |
+
<div class="stat-number">20</div>
|
| 484 |
+
<div class="stat-label">3D Scenes</div>
|
| 485 |
+
</div>
|
| 486 |
+
<div class="stat">
|
| 487 |
+
<div class="stat-number">21</div>
|
| 488 |
+
<div class="stat-label">Robot Skins</div>
|
| 489 |
+
</div>
|
| 490 |
+
</div>
|
| 491 |
+
</div>
|
| 492 |
+
</section>
|
| 493 |
+
|
| 494 |
+
<!-- Demo Video -->
|
| 495 |
+
<div class="video-section">
|
| 496 |
+
<div class="video-container">
|
| 497 |
+
<video controls autoplay muted loop>
|
| 498 |
+
<source src="demo_video.mp4" type="video/mp4">
|
| 499 |
+
Your browser does not support the video tag.
|
| 500 |
+
</video>
|
| 501 |
+
</div>
|
| 502 |
+
<p class="video-label">Full dashboard walkthrough — every feature in under 2 minutes</p>
|
| 503 |
+
</div>
|
| 504 |
+
|
| 505 |
+
<div class="divider"></div>
|
| 506 |
+
|
| 507 |
+
<!-- System Monitoring -->
|
| 508 |
+
<section class="section">
|
| 509 |
+
<div class="section-header">
|
| 510 |
+
<div class="section-tag">System Monitoring</div>
|
| 511 |
+
<h2>Real-Time System Telemetry</h2>
|
| 512 |
+
<p class="section-desc">Complete visibility into your robot's hardware state with live-updating charts and diagnostics.</p>
|
| 513 |
+
</div>
|
| 514 |
+
|
| 515 |
+
<div class="feature-full">
|
| 516 |
+
<div class="feature-full-inner">
|
| 517 |
+
<div class="feature-full-img">
|
| 518 |
+
<img src="frames/01_status_dashboard.jpg" alt="Status Dashboard">
|
| 519 |
+
</div>
|
| 520 |
+
<div class="feature-full-text">
|
| 521 |
+
<h3>Status Dashboard</h3>
|
| 522 |
+
<p>Nine real-time charts streaming over WebSocket at configurable rates. See your robot's health at a glance.</p>
|
| 523 |
+
<ul class="feature-list">
|
| 524 |
+
<li>CPU temperature, load average, and per-core utilization</li>
|
| 525 |
+
<li>RAM breakdown (Used, Buffer, Cache) and disk I/O</li>
|
| 526 |
+
<li>Network throughput and WiFi signal strength</li>
|
| 527 |
+
<li>Fan RPM, thread count (App vs Daemon)</li>
|
| 528 |
+
<li>Top processes with CPU/memory usage</li>
|
| 529 |
+
<li>Full hardware inventory (board, serial, kernel, firmware)</li>
|
| 530 |
+
</ul>
|
| 531 |
+
<div class="tag-row">
|
| 532 |
+
<span class="tag tag-green">WebSocket</span>
|
| 533 |
+
<span class="tag tag-purple">15Hz Robot / 1Hz Stats</span>
|
| 534 |
+
<span class="tag tag-teal">Raspberry Pi CM4</span>
|
| 535 |
+
</div>
|
| 536 |
+
</div>
|
| 537 |
</div>
|
| 538 |
</div>
|
|
|
|
| 539 |
|
| 540 |
+
<div class="feature-full">
|
| 541 |
+
<div class="feature-full-inner reverse">
|
| 542 |
+
<div class="feature-full-img">
|
| 543 |
+
<img src="frames/05_telemetry.jpg" alt="Head Telemetry">
|
| 544 |
+
</div>
|
| 545 |
+
<div class="feature-full-text">
|
| 546 |
+
<h3>Head Telemetry</h3>
|
| 547 |
+
<p>Live streaming charts for every degree of freedom in Reachy's Stewart platform head mechanism.</p>
|
| 548 |
+
<ul class="feature-list">
|
| 549 |
+
<li>Roll, Pitch, Yaw rotation with real-time graphing</li>
|
| 550 |
+
<li>X, Y, Z translation position tracking</li>
|
| 551 |
+
<li>Left and Right antenna angle monitoring</li>
|
| 552 |
+
<li>Stewart Platform actuator visualization (6 motors)</li>
|
| 553 |
+
<li>Head Pose summary with numeric readout</li>
|
| 554 |
+
</ul>
|
| 555 |
+
<div class="tag-row">
|
| 556 |
+
<span class="tag tag-purple">6-DOF Stewart Platform</span>
|
| 557 |
+
<span class="tag tag-teal">9 Dynamixel Servos</span>
|
| 558 |
+
</div>
|
| 559 |
+
</div>
|
| 560 |
+
</div>
|
|
|
|
|
|
|
| 561 |
</div>
|
| 562 |
</section>
|
| 563 |
|
| 564 |
+
<div class="divider"></div>
|
| 565 |
+
|
| 566 |
+
<!-- Control & Visualization -->
|
| 567 |
+
<section class="section">
|
| 568 |
+
<div class="section-header">
|
| 569 |
+
<div class="section-tag">Control & Visualization</div>
|
| 570 |
+
<h2>Floating Panels & 3D Simulation</h2>
|
| 571 |
+
<p class="section-desc">Draggable, resizable floating panels let you compose your ideal workspace.</p>
|
| 572 |
+
</div>
|
| 573 |
+
|
| 574 |
+
<div class="feature-full" style="margin-bottom: 2rem;">
|
| 575 |
+
<div class="feature-full-inner">
|
| 576 |
+
<div class="feature-full-img">
|
| 577 |
+
<img src="frames/26_floating_panels.jpg" alt="Floating Panels">
|
| 578 |
+
</div>
|
| 579 |
+
<div class="feature-full-text">
|
| 580 |
+
<h3>Composable Floating Panels</h3>
|
| 581 |
+
<p>Two persistent panels hover above every tab, creating a fully customisable workspace.</p>
|
| 582 |
+
<ul class="feature-list">
|
| 583 |
+
<li><strong>Camera Panel</strong> — Live WebRTC feed, snapshot, video/audio recording, listen/speak</li>
|
| 584 |
+
<li><strong>Joystick Panel</strong> — 5-axis head control with return-to-center toggle</li>
|
| 585 |
+
<li>Supports robot camera, laptop webcam, iPhone Continuity Camera</li>
|
| 586 |
+
<li>Draggable, resizable, minimisable — position remembered across sessions</li>
|
| 587 |
+
</ul>
|
| 588 |
+
<div class="tag-row">
|
| 589 |
+
<span class="tag tag-purple">Draggable</span>
|
| 590 |
+
<span class="tag tag-teal">Resizable</span>
|
| 591 |
+
<span class="tag tag-green">Multi-Camera</span>
|
| 592 |
+
</div>
|
| 593 |
+
</div>
|
| 594 |
</div>
|
| 595 |
+
</div>
|
| 596 |
+
|
| 597 |
+
<div class="feature-grid">
|
| 598 |
+
<div class="feature-card">
|
| 599 |
+
<img src="frames/03_3d_simulation.jpg" alt="MuJoCo 3D Simulation">
|
| 600 |
+
<div class="feature-card-body">
|
| 601 |
+
<h3>MuJoCo 3D Simulation</h3>
|
| 602 |
+
<p>Real-time 3D visualization of Reachy Mini powered by MuJoCo and Three.js. The robot's pose mirrors the physical hardware in real time with smooth-shaded GLB meshes.</p>
|
| 603 |
+
<div class="tag-row">
|
| 604 |
+
<span class="tag tag-purple">MuJoCo</span>
|
| 605 |
+
<span class="tag tag-teal">Three.js</span>
|
| 606 |
+
<span class="tag tag-green">Real-time Sync</span>
|
| 607 |
+
</div>
|
| 608 |
+
</div>
|
| 609 |
</div>
|
| 610 |
+
<div class="feature-card">
|
| 611 |
+
<img src="frames/04_joystick_cameras.jpg" alt="Joystick & Cameras">
|
| 612 |
+
<div class="feature-card-body">
|
| 613 |
+
<h3>Joystick & Multi-Camera</h3>
|
| 614 |
+
<p>Intuitive joystick controls for head movement (L/XY/R), look direction, Z/Roll, body rotation, and a reset button. Multiple camera feeds in floating panels — robot camera, FaceTime, and iPhone via WebRTC.</p>
|
| 615 |
+
<div class="tag-row">
|
| 616 |
+
<span class="tag tag-purple">6-axis Control</span>
|
| 617 |
+
<span class="tag tag-teal">WebRTC Cameras</span>
|
| 618 |
+
<span class="tag tag-yellow">Return to Center</span>
|
| 619 |
+
</div>
|
| 620 |
+
</div>
|
| 621 |
</div>
|
| 622 |
+
</div>
|
| 623 |
+
</section>
|
| 624 |
+
|
| 625 |
+
<div class="divider"></div>
|
| 626 |
+
|
| 627 |
+
<!-- Expressive Movement -->
|
| 628 |
+
<section class="section">
|
| 629 |
+
<div class="section-header">
|
| 630 |
+
<div class="section-tag">Expressive Movement</div>
|
| 631 |
+
<h2>81 Emotions, 20 Dances, 6 Oscillations</h2>
|
| 632 |
+
<p class="section-desc">A rich library of pre-built movements organized by mood category, with live preview in the 3D simulation.</p>
|
| 633 |
+
</div>
|
| 634 |
+
|
| 635 |
+
<div class="feature-full">
|
| 636 |
+
<div class="feature-full-inner">
|
| 637 |
+
<div class="feature-full-img">
|
| 638 |
+
<img src="frames/06_emotions_gallery.jpg" alt="Emotions Gallery">
|
| 639 |
+
</div>
|
| 640 |
+
<div class="feature-full-text">
|
| 641 |
+
<h3>Emotions Gallery</h3>
|
| 642 |
+
<p>Browse and trigger 81 unique emotional expressions, filterable by mood categories.</p>
|
| 643 |
+
<ul class="feature-list">
|
| 644 |
+
<li>Categories: Angry, Confused, Curious, Dance, Fear, Happy, Mood, Response</li>
|
| 645 |
+
<li>Each emotion card shows name, duration, and description</li>
|
| 646 |
+
<li>Auto-fit toggle adapts motion to robot's range</li>
|
| 647 |
+
<li>Real-time preview in 3D simulation and on physical robot</li>
|
| 648 |
+
<li>Search bar for quick access to specific emotions</li>
|
| 649 |
+
</ul>
|
| 650 |
+
<div class="tag-row">
|
| 651 |
+
<span class="tag tag-purple">81 Emotions</span>
|
| 652 |
+
<span class="tag tag-teal">20 Dances</span>
|
| 653 |
+
<span class="tag tag-green">HuggingFace Datasets</span>
|
| 654 |
+
</div>
|
| 655 |
+
</div>
|
| 656 |
+
</div>
|
| 657 |
+
</div>
|
| 658 |
+
|
| 659 |
+
<div class="feature-full">
|
| 660 |
+
<div class="feature-full-inner reverse">
|
| 661 |
+
<div class="feature-full-img">
|
| 662 |
+
<img src="frames/07_oscillations.jpg" alt="Oscillation Patterns">
|
| 663 |
+
</div>
|
| 664 |
+
<div class="feature-full-text">
|
| 665 |
+
<h3>Oscillation Patterns</h3>
|
| 666 |
+
<p>Continuous, looping head movement patterns with adjustable amplitude and speed for natural idle behaviour.</p>
|
| 667 |
+
<ul class="feature-list">
|
| 668 |
+
<li><strong>Sway</strong> — Gentle side-to-side head movement</li>
|
| 669 |
+
<li><strong>Nod</strong> — Slow vertical nodding</li>
|
| 670 |
+
<li><strong>Circle</strong> — Circular head motion</li>
|
| 671 |
+
<li><strong>Breathe</strong> — Subtle breathing-like oscillation</li>
|
| 672 |
+
<li><strong>Figure 8</strong> — Figure-eight head pattern</li>
|
| 673 |
+
<li><strong>Look Around</strong> — Curious, exploratory movement</li>
|
| 674 |
+
</ul>
|
| 675 |
+
<div class="tag-row">
|
| 676 |
+
<span class="tag tag-purple">Amplitude Control</span>
|
| 677 |
+
<span class="tag tag-teal">Speed Control</span>
|
| 678 |
+
</div>
|
| 679 |
+
</div>
|
| 680 |
+
</div>
|
| 681 |
+
</div>
|
| 682 |
+
</section>
|
| 683 |
+
|
| 684 |
+
<div class="divider"></div>
|
| 685 |
+
|
| 686 |
+
<!-- AI Conversation -->
|
| 687 |
+
<section class="section">
|
| 688 |
+
<div class="section-header">
|
| 689 |
+
<div class="section-tag">AI-Powered</div>
|
| 690 |
+
<h2>Conversational AI with Tool Use</h2>
|
| 691 |
+
<p class="section-desc">Chat with Reachy using multi-provider LLMs. The AI can express emotions, set timers, create content, and control the robot.</p>
|
| 692 |
+
</div>
|
| 693 |
+
|
| 694 |
+
<div class="feature-grid">
|
| 695 |
+
<div class="feature-card">
|
| 696 |
+
<img src="frames/08_conversation_ai.jpg" alt="AI Conversation">
|
| 697 |
+
<div class="feature-card-body">
|
| 698 |
+
<h3>Multi-Provider AI Chat</h3>
|
| 699 |
+
<p>Full conversation interface with timestamped message log showing confidence and volume. Powered by LiteLLM for unified access to Anthropic, OpenAI, Ollama, and more. The AI triggers emotional expressions automatically based on context.</p>
|
| 700 |
+
<div class="tag-row">
|
| 701 |
+
<span class="tag tag-purple">Claude</span>
|
| 702 |
+
<span class="tag tag-teal">OpenAI</span>
|
| 703 |
+
<span class="tag tag-green">Ollama</span>
|
| 704 |
+
<span class="tag tag-yellow">LiteLLM</span>
|
| 705 |
+
</div>
|
| 706 |
+
</div>
|
| 707 |
+
</div>
|
| 708 |
+
<div class="feature-card">
|
| 709 |
+
<img src="frames/12_timers_ambient.jpg" alt="AI Tool Use">
|
| 710 |
+
<div class="feature-card-body">
|
| 711 |
+
<h3>31 Built-in AI Tools</h3>
|
| 712 |
+
<p>The LLM can call robot-native tools: set timers, trigger emotions, create scratchpad content, play music, control lights, take snapshots, detect objects, and more. Tool calls are displayed inline in the conversation with full transparency.</p>
|
| 713 |
+
<div class="tag-row">
|
| 714 |
+
<span class="tag tag-purple">set_timer</span>
|
| 715 |
+
<span class="tag tag-teal">create_scratchpad</span>
|
| 716 |
+
<span class="tag tag-green">play_emotion</span>
|
| 717 |
+
<span class="tag tag-yellow">31 Tools Total</span>
|
| 718 |
+
</div>
|
| 719 |
+
</div>
|
| 720 |
+
</div>
|
| 721 |
+
</div>
|
| 722 |
+
</section>
|
| 723 |
+
|
| 724 |
+
<div class="divider"></div>
|
| 725 |
+
|
| 726 |
+
<!-- Scratchpad & Generative UI -->
|
| 727 |
+
<section class="section">
|
| 728 |
+
<div class="section-header">
|
| 729 |
+
<div class="section-tag">Generative UI</div>
|
| 730 |
+
<h2>Scratchpad — Rich Content from Conversation</h2>
|
| 731 |
+
<p class="section-desc">The AI creates rich HTML content on demand: recipes, diagrams, charts, and more — all rendered beautifully in the Scratchpad tab.</p>
|
| 732 |
+
</div>
|
| 733 |
+
|
| 734 |
+
<div class="feature-grid">
|
| 735 |
+
<div class="feature-card">
|
| 736 |
+
<img src="frames/10_scratchpad_recipe.jpg" alt="Scratchpad Recipe">
|
| 737 |
+
<div class="feature-card-body">
|
| 738 |
+
<h3>AI-Generated Content</h3>
|
| 739 |
+
<p>Ask Reachy for a pancake recipe and it creates a beautifully formatted page with ingredients, step-by-step instructions, and tips — complete with a themed robot illustration.</p>
|
| 740 |
+
<div class="tag-row">
|
| 741 |
+
<span class="tag tag-purple">Markdown Rendering</span>
|
| 742 |
+
<span class="tag tag-teal">Theme-Aware</span>
|
| 743 |
+
</div>
|
| 744 |
+
</div>
|
| 745 |
+
</div>
|
| 746 |
+
<div class="feature-card">
|
| 747 |
+
<img src="frames/09_scratchpad_diagrams.jpg" alt="Scratchpad Diagrams">
|
| 748 |
+
<div class="feature-card-body">
|
| 749 |
+
<h3>Mermaid Diagrams & Charts</h3>
|
| 750 |
+
<p>Interactive architecture diagrams rendered with Mermaid.js, pie charts, activity heatmaps, and more. The AI can generate visual documentation of the robot's own architecture.</p>
|
| 751 |
+
<div class="tag-row">
|
| 752 |
+
<span class="tag tag-purple">Mermaid.js</span>
|
| 753 |
+
<span class="tag tag-teal">Charts</span>
|
| 754 |
+
<span class="tag tag-green">Searchable</span>
|
| 755 |
+
</div>
|
| 756 |
+
</div>
|
| 757 |
+
</div>
|
| 758 |
+
</div>
|
| 759 |
+
</section>
|
| 760 |
+
|
| 761 |
+
<div class="divider"></div>
|
| 762 |
+
|
| 763 |
+
<!-- Timers & Ambient -->
|
| 764 |
+
<section class="section">
|
| 765 |
+
<div class="section-header">
|
| 766 |
+
<div class="section-tag">Smart Assistant</div>
|
| 767 |
+
<h2>Timers, Alarms & Ambient Sounds</h2>
|
| 768 |
+
<p class="section-desc">Set timers via conversation or the UI. Built-in ambient sound library for focus, relaxation, or atmosphere.</p>
|
| 769 |
+
</div>
|
| 770 |
+
|
| 771 |
+
<div class="feature-full">
|
| 772 |
+
<div class="feature-full-inner">
|
| 773 |
+
<div class="feature-full-img">
|
| 774 |
+
<img src="frames/11_ai_tool_use.jpg" alt="Timers and Ambient Sounds">
|
| 775 |
+
</div>
|
| 776 |
+
<div class="feature-full-text">
|
| 777 |
+
<h3>Timers, Alarms & Soundscapes</h3>
|
| 778 |
+
<p>A complete timer and alarm system with rich sound options.</p>
|
| 779 |
+
<ul class="feature-list">
|
| 780 |
+
<li>Create timers via AI conversation ("Set a timer for 5 mins")</li>
|
| 781 |
+
<li>Named alarms with one-shot or recurring schedules</li>
|
| 782 |
+
<li>9 ambient sounds: Rain, Ocean, Forest, Crickets, Fireplace, Wind, White/Pink/Brown Noise</li>
|
| 783 |
+
<li>3 timer sounds: Bell, Ding, Success</li>
|
| 784 |
+
<li>6 alarm sounds: Birds, Classic Bell, Digital, Gentle Chime, Harp, Marimba</li>
|
| 785 |
+
<li>Upload custom sounds with Add Sound</li>
|
| 786 |
+
</ul>
|
| 787 |
+
<div class="tag-row">
|
| 788 |
+
<span class="tag tag-purple">Voice-Activated</span>
|
| 789 |
+
<span class="tag tag-teal">9 Ambient Sounds</span>
|
| 790 |
+
<span class="tag tag-green">Custom Upload</span>
|
| 791 |
+
</div>
|
| 792 |
+
</div>
|
| 793 |
+
</div>
|
| 794 |
+
</div>
|
| 795 |
+
</section>
|
| 796 |
+
|
| 797 |
+
<div class="divider"></div>
|
| 798 |
+
|
| 799 |
+
<!-- Computer Vision -->
|
| 800 |
+
<section class="section">
|
| 801 |
+
<div class="section-header">
|
| 802 |
+
<div class="section-tag">Computer Vision</div>
|
| 803 |
+
<h2>YOLO Vision — Real-Time Detection</h2>
|
| 804 |
+
<p class="section-desc">On-device and in-browser computer vision with pose estimation, object detection, and segmentation.</p>
|
| 805 |
+
</div>
|
| 806 |
+
|
| 807 |
+
<div class="feature-grid">
|
| 808 |
+
<div class="feature-card">
|
| 809 |
+
<img src="frames/14_vision_settings.jpg" alt="Vision Settings">
|
| 810 |
+
<div class="feature-card-body">
|
| 811 |
+
<h3>YOLO Vision Configuration</h3>
|
| 812 |
+
<p>Three processing modes: Off, CM4 (on-robot), and WebGPU (in-browser via WASM). Choose from pose keypoints, detection, or segmentation tasks. Adjustable FPS, confidence threshold, and model size selection.</p>
|
| 813 |
+
<div class="tag-row">
|
| 814 |
+
<span class="tag tag-purple">WebGPU / WASM</span>
|
| 815 |
+
<span class="tag tag-teal">CM4 On-Device</span>
|
| 816 |
+
<span class="tag tag-green">YOLO Nano</span>
|
| 817 |
+
</div>
|
| 818 |
+
</div>
|
| 819 |
+
</div>
|
| 820 |
+
<div class="feature-card">
|
| 821 |
+
<img src="frames/15_pose_detection.jpg" alt="Pose Detection">
|
| 822 |
+
<div class="feature-card-body">
|
| 823 |
+
<h3>Real-Time Pose Detection</h3>
|
| 824 |
+
<p>Blue skeleton overlay tracks body keypoints in real time from any connected camera. Supports Follow mode where the robot tracks detected poses. Works with robot camera, FaceTime, or iPhone sources.</p>
|
| 825 |
+
<div class="tag-row">
|
| 826 |
+
<span class="tag tag-purple">Pose Keypoints</span>
|
| 827 |
+
<span class="tag tag-teal">Follow Mode</span>
|
| 828 |
+
<span class="tag tag-yellow">Multi-Camera Source</span>
|
| 829 |
+
</div>
|
| 830 |
+
</div>
|
| 831 |
+
</div>
|
| 832 |
+
</div>
|
| 833 |
+
</section>
|
| 834 |
+
|
| 835 |
+
<div class="divider"></div>
|
| 836 |
+
|
| 837 |
+
<!-- Shell Terminal -->
|
| 838 |
+
<section class="section">
|
| 839 |
+
<div class="section-header">
|
| 840 |
+
<div class="section-tag">Developer Tools</div>
|
| 841 |
+
<h2>In-Browser Shell Terminal</h2>
|
| 842 |
+
<p class="section-desc">Full bash terminal access via WebSocket PTY with shared tmux sessions.</p>
|
| 843 |
+
</div>
|
| 844 |
+
|
| 845 |
+
<div class="feature-full">
|
| 846 |
+
<div class="feature-full-inner">
|
| 847 |
+
<div class="feature-full-img">
|
| 848 |
+
<img src="frames/13_shell_terminal.jpg" alt="Shell Terminal">
|
| 849 |
+
</div>
|
| 850 |
+
<div class="feature-full-text">
|
| 851 |
+
<h3>WebSocket Terminal</h3>
|
| 852 |
+
<p>A fully interactive terminal embedded in the dashboard, powered by tmux for persistent, shared sessions.</p>
|
| 853 |
+
<ul class="feature-list">
|
| 854 |
+
<li>Bidirectional PTY via WebSocket</li>
|
| 855 |
+
<li>Terminal and Tmux tab modes</li>
|
| 856 |
+
<li>Shared sessions — multiple users, same terminal</li>
|
| 857 |
+
<li>Connection status indicator</li>
|
| 858 |
+
<li>Full process visibility (ps aux)</li>
|
| 859 |
+
</ul>
|
| 860 |
+
<div class="tag-row">
|
| 861 |
+
<span class="tag tag-purple">WebSocket PTY</span>
|
| 862 |
+
<span class="tag tag-teal">tmux</span>
|
| 863 |
+
<span class="tag tag-green">Shared Sessions</span>
|
| 864 |
+
</div>
|
| 865 |
+
</div>
|
| 866 |
+
</div>
|
| 867 |
+
</div>
|
| 868 |
+
</section>
|
| 869 |
+
|
| 870 |
+
<div class="divider"></div>
|
| 871 |
+
|
| 872 |
+
<!-- Media Library -->
|
| 873 |
+
<section class="section">
|
| 874 |
+
<div class="section-header">
|
| 875 |
+
<div class="section-tag">Media Management</div>
|
| 876 |
+
<h2>Snapshots, Recordings & Music</h2>
|
| 877 |
+
<p class="section-desc">Capture, record, and playback media directly from the dashboard with thumbnail previews and metadata.</p>
|
| 878 |
+
</div>
|
| 879 |
+
|
| 880 |
+
<div class="feature-full">
|
| 881 |
+
<div class="feature-full-inner reverse">
|
| 882 |
+
<div class="feature-full-img">
|
| 883 |
+
<img src="frames/21_media_tab.jpg" alt="Media Library">
|
| 884 |
+
</div>
|
| 885 |
+
<div class="feature-full-text">
|
| 886 |
+
<h3>Media Library</h3>
|
| 887 |
+
<p>A built-in media manager for all your robot's captures and audio content.</p>
|
| 888 |
+
<ul class="feature-list">
|
| 889 |
+
<li>Camera snapshots with preview grid</li>
|
| 890 |
+
<li>Video recordings with duration and thumbnails</li>
|
| 891 |
+
<li>Audio recordings with waveform visualization</li>
|
| 892 |
+
<li>Music library with ID3 metadata and cover art</li>
|
| 893 |
+
<li>Upload, download, and delete with drag-and-drop</li>
|
| 894 |
+
<li>NVR (Network Video Recorder) camera snapshots</li>
|
| 895 |
+
</ul>
|
| 896 |
+
<div class="tag-row">
|
| 897 |
+
<span class="tag tag-purple">Snapshots</span>
|
| 898 |
+
<span class="tag tag-teal">Video Recording</span>
|
| 899 |
+
<span class="tag tag-green">Music Playback</span>
|
| 900 |
+
</div>
|
| 901 |
+
</div>
|
| 902 |
+
</div>
|
| 903 |
+
</div>
|
| 904 |
+
</section>
|
| 905 |
+
|
| 906 |
+
<div class="divider"></div>
|
| 907 |
+
|
| 908 |
+
<!-- Audio & Bluetooth -->
|
| 909 |
+
<section class="section">
|
| 910 |
+
<div class="section-header">
|
| 911 |
+
<div class="section-tag">Audio & Connectivity</div>
|
| 912 |
+
<h2>Volume Mixer, Audio Routing & Bluetooth</h2>
|
| 913 |
+
<p class="section-desc">Fine-grained audio control with channel mixing and Bluetooth A2DP device management.</p>
|
| 914 |
+
</div>
|
| 915 |
+
|
| 916 |
+
<div class="feature-full">
|
| 917 |
+
<div class="feature-full-inner reverse">
|
| 918 |
+
<div class="feature-full-img">
|
| 919 |
+
<img src="frames/16_audio_settings.jpg" alt="Audio Settings">
|
| 920 |
+
</div>
|
| 921 |
+
<div class="feature-full-text">
|
| 922 |
+
<h3>Audio Routing & Volume Mixer</h3>
|
| 923 |
+
<p>Complete audio pipeline management with per-channel volume control.</p>
|
| 924 |
+
<ul class="feature-list">
|
| 925 |
+
<li>Mic Input and Speaker routing (Robot Mic / Robot Speaker)</li>
|
| 926 |
+
<li>6 volume channels: Hardware, Master, Speech, Music, Effects, Ambient</li>
|
| 927 |
+
<li>Bluetooth device scanning and pairing</li>
|
| 928 |
+
<li>A2DP (high-quality music) and HSP (voice) profiles</li>
|
| 929 |
+
<li>AuraBox LED speaker integration</li>
|
| 930 |
+
<li>Test button for audio output verification</li>
|
| 931 |
+
</ul>
|
| 932 |
+
<div class="tag-row">
|
| 933 |
+
<span class="tag tag-purple">6 Volume Channels</span>
|
| 934 |
+
<span class="tag tag-teal">Bluetooth A2DP</span>
|
| 935 |
+
<span class="tag tag-green">GStreamer Pipeline</span>
|
| 936 |
+
</div>
|
| 937 |
+
</div>
|
| 938 |
+
</div>
|
| 939 |
+
</div>
|
| 940 |
+
</section>
|
| 941 |
+
|
| 942 |
+
<div class="divider"></div>
|
| 943 |
+
|
| 944 |
+
<!-- LLM Configuration -->
|
| 945 |
+
<section class="section">
|
| 946 |
+
<div class="section-header">
|
| 947 |
+
<div class="section-tag">Configurability</div>
|
| 948 |
+
<h2>Tuning & LLM Behaviour</h2>
|
| 949 |
+
<p class="section-desc">Full control over voice recognition thresholds and the LLM's personality through an editable system prompt.</p>
|
| 950 |
+
</div>
|
| 951 |
+
|
| 952 |
+
<div class="feature-full">
|
| 953 |
+
<div class="feature-full-inner">
|
| 954 |
+
<div class="feature-full-img">
|
| 955 |
+
<img src="frames/17_tuning_llm.jpg" alt="Tuning and LLM Settings">
|
| 956 |
+
</div>
|
| 957 |
+
<div class="feature-full-text">
|
| 958 |
+
<h3>Tuning & System Prompt</h3>
|
| 959 |
+
<p>Adjust voice recognition sensitivity and customise Reachy's AI personality.</p>
|
| 960 |
+
<ul class="feature-list">
|
| 961 |
+
<li>Confidence threshold for speech recognition</li>
|
| 962 |
+
<li>Volume threshold to filter background noise</li>
|
| 963 |
+
<li>Microphone gain control</li>
|
| 964 |
+
<li>Editable system prompt defining Reachy's personality</li>
|
| 965 |
+
<li>TTS speech output rules built into the prompt</li>
|
| 966 |
+
<li>Save/Reset prompt functionality</li>
|
| 967 |
+
</ul>
|
| 968 |
+
<div class="tag-row">
|
| 969 |
+
<span class="tag tag-purple">Whisper STT</span>
|
| 970 |
+
<span class="tag tag-teal">Kokoro TTS</span>
|
| 971 |
+
<span class="tag tag-green">Editable Prompt</span>
|
| 972 |
+
</div>
|
| 973 |
+
</div>
|
| 974 |
</div>
|
| 975 |
+
</div>
|
| 976 |
+
</section>
|
| 977 |
+
|
| 978 |
+
<div class="divider"></div>
|
| 979 |
+
|
| 980 |
+
<!-- 3D Scenes & Skins -->
|
| 981 |
+
<section class="section">
|
| 982 |
+
<div class="section-header">
|
| 983 |
+
<div class="section-tag">Customisation</div>
|
| 984 |
+
<h2>20 Scenes & 21 Robot Skins</h2>
|
| 985 |
+
<p class="section-desc">Personalise the 3D simulation with procedural environments and paint Reachy in country flags, metallic finishes, or vibrant gradients.</p>
|
| 986 |
+
</div>
|
| 987 |
+
|
| 988 |
+
<div class="feature-full" style="margin-bottom: 2rem;">
|
| 989 |
+
<div class="feature-full-inner">
|
| 990 |
+
<div class="feature-full-img">
|
| 991 |
+
<img src="frames/18_scenes_skins.jpg" alt="3D Scenes and Robot Skins">
|
| 992 |
+
</div>
|
| 993 |
+
<div class="feature-full-text">
|
| 994 |
+
<h3>Scenes & Skins Gallery</h3>
|
| 995 |
+
<p>A rich collection of 3D environments and robot textures, instantly switchable from the Appearance settings.</p>
|
| 996 |
+
<ul class="feature-list">
|
| 997 |
+
<li><strong>20 scenes:</strong> Default, Studio, Sunset, Ocean, Night Sky, Forest, Neon, Rainy City, Winter, Desert, Underwater Cave, Mars, Crystal Cave, Volcano, Candy Land, Zen Garden, Haunted, Space Station, Clouds</li>
|
| 998 |
+
<li><strong>21 skins:</strong> Default, France, Japan, USA, Brazil, Germany, Italy, UK, India, Australia, Gold, Chrome, Matte Black, Carbon, Rainbow, Neon, Sunset, Ocean, Forest, Pollen, Robot</li>
|
| 999 |
+
</ul>
|
| 1000 |
+
<div class="tag-row">
|
| 1001 |
+
<span class="tag tag-purple">20 Scenes</span>
|
| 1002 |
+
<span class="tag tag-teal">21 Skins</span>
|
| 1003 |
+
<span class="tag tag-green">Instant Switch</span>
|
| 1004 |
+
</div>
|
| 1005 |
+
</div>
|
| 1006 |
</div>
|
| 1007 |
+
</div>
|
| 1008 |
+
|
| 1009 |
+
<div class="scene-gallery">
|
| 1010 |
+
<div>
|
| 1011 |
+
<img src="frames/24_crystal_cave.jpg" alt="Crystal Cave Scene">
|
| 1012 |
+
<p class="scene-label">Crystal Cave</p>
|
| 1013 |
</div>
|
| 1014 |
+
<div>
|
| 1015 |
+
<img src="frames/25_clouds_full.jpg" alt="Clouds Scene">
|
| 1016 |
+
<p class="scene-label">Clouds</p>
|
| 1017 |
</div>
|
| 1018 |
+
<div>
|
| 1019 |
+
<img src="frames/22_brazil_skin.jpg" alt="Brazil Skin">
|
| 1020 |
+
<p class="scene-label">Brazil Skin</p>
|
| 1021 |
</div>
|
| 1022 |
</div>
|
| 1023 |
</section>
|
| 1024 |
|
| 1025 |
+
<div class="divider"></div>
|
| 1026 |
+
|
| 1027 |
+
<!-- Tech Stack -->
|
| 1028 |
+
<section class="section">
|
| 1029 |
+
<div class="section-header">
|
| 1030 |
+
<div class="section-tag">Architecture</div>
|
| 1031 |
+
<h2>Built With</h2>
|
| 1032 |
+
<p class="section-desc">Pure Python + vanilla JavaScript. No framework, no bundler, no build step.</p>
|
| 1033 |
+
</div>
|
| 1034 |
+
|
| 1035 |
+
<div class="tech-grid">
|
| 1036 |
+
<div class="tech-item">
|
| 1037 |
+
<div class="tech-icon">⚡</div>
|
| 1038 |
+
<h4>FastAPI</h4>
|
| 1039 |
+
<p>146 REST endpoints + 6 WebSockets</p>
|
| 1040 |
+
</div>
|
| 1041 |
+
<div class="tech-item">
|
| 1042 |
+
<div class="tech-icon">🌐</div>
|
| 1043 |
+
<h4>Vanilla JS</h4>
|
| 1044 |
+
<p>Zero dependencies, SPA</p>
|
| 1045 |
+
</div>
|
| 1046 |
+
<div class="tech-item">
|
| 1047 |
+
<div class="tech-icon">🤖</div>
|
| 1048 |
+
<h4>MuJoCo + Three.js</h4>
|
| 1049 |
+
<p>Physics-accurate 3D simulation</p>
|
| 1050 |
</div>
|
| 1051 |
+
<div class="tech-item">
|
| 1052 |
+
<div class="tech-icon">👁</div>
|
| 1053 |
+
<h4>YOLO + WebGPU</h4>
|
| 1054 |
+
<p>Real-time vision in browser</p>
|
| 1055 |
+
</div>
|
| 1056 |
+
<div class="tech-item">
|
| 1057 |
+
<div class="tech-icon">🗣</div>
|
| 1058 |
+
<h4>Whisper STT</h4>
|
| 1059 |
+
<p>Voice recognition pipeline</p>
|
| 1060 |
+
</div>
|
| 1061 |
+
<div class="tech-item">
|
| 1062 |
+
<div class="tech-icon">🔈</div>
|
| 1063 |
+
<h4>Kokoro TTS</h4>
|
| 1064 |
+
<p>Text-to-speech engine</p>
|
| 1065 |
+
</div>
|
| 1066 |
+
<div class="tech-item">
|
| 1067 |
+
<div class="tech-icon">🧠</div>
|
| 1068 |
+
<h4>LiteLLM</h4>
|
| 1069 |
+
<p>Multi-provider AI (Claude, GPT, Ollama)</p>
|
| 1070 |
+
</div>
|
| 1071 |
+
<div class="tech-item">
|
| 1072 |
+
<div class="tech-icon">🔌</div>
|
| 1073 |
+
<h4>WebSocket-First</h4>
|
| 1074 |
+
<p>All real-time data, zero polling</p>
|
| 1075 |
</div>
|
| 1076 |
</div>
|
| 1077 |
</section>
|
| 1078 |
|
| 1079 |
+
<!-- Footer -->
|
| 1080 |
+
<footer>
|
| 1081 |
<p>
|
| 1082 |
+
Hello World — One App to Rule Them All — Built by
|
| 1083 |
+
<a href="https://huggingface.co/spaces/panny247/hello_world" target="_blank">panny247</a>
|
| 1084 |
+
for the Pollen Robotics community
|
| 1085 |
+
</p>
|
| 1086 |
+
<p style="margin-top: 0.5rem;">
|
| 1087 |
+
<a href="https://huggingface.co/spaces/panny247/hello_world" target="_blank">View on HuggingFace</a>
|
| 1088 |
</p>
|
|
|
|
| 1089 |
</footer>
|
| 1090 |
|
| 1091 |
</body>
|