| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Reachy Mini Debug & CI Testbench</title> |
| <link rel="stylesheet" href="style.css"> |
| </head> |
| <body> |
| <div class="container"> |
| <header> |
| <h1>๐ง Reachy Mini Debug & CI Testbench</h1> |
| <p class="subtitle">Comprehensive debugging and validation tool for Reachy Mini</p> |
| </header> |
|
|
| <section class="intro"> |
| <p>A professional web-based toolbox for debugging, testing, and validating Reachy Mini robots. Perfect for development, CI/CD pipelines, and quality assurance.</p> |
| </section> |
|
|
| <section class="features"> |
| <h2>Features</h2> |
|
|
| <div class="feature-grid"> |
| <div class="feature-card"> |
| <h3>๐ Robot Status</h3> |
| <ul> |
| <li>Real-time head pose (roll, pitch, yaw)</li> |
| <li>Detailed motor positions (9 motors)</li> |
| <li>Connection status monitoring</li> |
| </ul> |
| </div> |
|
|
| <div class="feature-card"> |
| <h3>๐ฎ Movement Control</h3> |
| <ul> |
| <li>Head position control with sliders</li> |
| <li>Antenna position control</li> |
| <li>Quick actions (Zero, Wake Up, Sleep)</li> |
| <li>Adjustable movement duration</li> |
| </ul> |
| </div> |
|
|
| <div class="feature-card"> |
| <h3>๐ท Camera</h3> |
| <ul> |
| <li>Live MJPEG camera stream</li> |
| <li>Capture and save images</li> |
| <li>Download captured images</li> |
| <li>Manage saved captures</li> |
| </ul> |
| </div> |
|
|
| <div class="feature-card"> |
| <h3>๐ค Audio Recording</h3> |
| <ul> |
| <li>Record from robot's microphone</li> |
| <li>Playback through robot's speaker</li> |
| <li>Download recordings as WAV files</li> |
| <li>Manage recording library</li> |
| </ul> |
| </div> |
|
|
| <div class="feature-card"> |
| <h3>โ
Rotation Validation Test</h3> |
| <ul> |
| <li>Automated rotation accuracy testing</li> |
| <li>ORB feature matching for validation</li> |
| <li>Expected vs actual comparison</li> |
| <li>PASS/FAIL results with metrics</li> |
| </ul> |
| </div> |
| </div> |
| </section> |
|
|
| <section class="usage"> |
| <h2>Usage</h2> |
|
|
| <div class="code-block"> |
| <h3>Installation</h3> |
| <pre><code>pip install -e .</code></pre> |
| </div> |
|
|
| <div class="code-block"> |
| <h3>Run as Reachy Mini App (daemon on)</h3> |
| <pre><code>reachy-mini app run reachy_mini_testbench</code></pre> |
| </div> |
|
|
| <div class="code-block"> |
| <h3>Direct Launch</h3> |
| <pre><code>python -m reachy_mini_testbench.main</code></pre> |
| </div> |
|
|
| <p>Once running, open <strong>http://localhost:8042</strong> in your browser to access the toolbox interface.</p> |
| </section> |
|
|
| <section class="api"> |
| <h2>API Endpoints</h2> |
|
|
| <div class="api-section"> |
| <h3>Status</h3> |
| <ul> |
| <li><code>GET /api/status</code> - Get robot status and head pose</li> |
| <li><code>GET /api/motor_status</code> - Get detailed motor positions</li> |
| </ul> |
| </div> |
|
|
| <div class="api-section"> |
| <h3>Movement</h3> |
| <ul> |
| <li><code>POST /api/move_head</code> - Move head to specified orientation</li> |
| <li><code>POST /api/move_antennas</code> - Move antennas</li> |
| <li><code>POST /api/go_to_zero</code> - Move to neutral position</li> |
| <li><code>POST /api/wake_up</code> - Execute wake up behavior</li> |
| <li><code>POST /api/go_to_sleep</code> - Execute sleep behavior</li> |
| </ul> |
| </div> |
|
|
| <div class="api-section"> |
| <h3>Camera</h3> |
| <ul> |
| <li><code>GET /api/camera/stream</code> - MJPEG camera stream</li> |
| <li><code>GET /api/camera/capture</code> - Capture single frame</li> |
| <li><code>POST /api/camera/save</code> - Save current frame</li> |
| <li><code>GET /api/camera/list</code> - List saved captures</li> |
| <li><code>GET /api/camera/download/{filename}</code> - Download capture</li> |
| <li><code>DELETE /api/camera/delete/{filename}</code> - Delete capture</li> |
| </ul> |
| </div> |
|
|
| <div class="api-section"> |
| <h3>Audio</h3> |
| <ul> |
| <li><code>POST /api/audio/start_recording</code> - Start recording</li> |
| <li><code>POST /api/audio/stop_recording</code> - Stop and save recording</li> |
| <li><code>GET /api/audio/list</code> - List recordings</li> |
| <li><code>GET /api/audio/download/{filename}</code> - Download recording</li> |
| <li><code>POST /api/audio/play/{filename}</code> - Play on robot</li> |
| <li><code>DELETE /api/audio/delete/{filename}</code> - Delete recording</li> |
| </ul> |
| </div> |
|
|
| <div class="api-section"> |
| <h3>Validation Tests</h3> |
| <ul> |
| <li><code>POST /api/test/rotation_validation</code> - Run rotation test</li> |
| <li><code>GET /api/test/last_rotation_result</code> - Get last test result</li> |
| </ul> |
| </div> |
| </section> |
|
|
| <section class="storage"> |
| <h2>File Storage</h2> |
| <ul> |
| <li><strong>Recordings:</strong> <code>/tmp/reachy_mini_testbench/recordings/</code></li> |
| <li><strong>Captures:</strong> <code>/tmp/reachy_mini_testbench/captures/</code></li> |
| </ul> |
| </section> |
|
|
| <footer> |
| <p>Built for <a href="https://www.pollen-robotics.com/" target="_blank">Pollen Robotics</a> Reachy Mini</p> |
| <p> |
| <a href="https://github.com/pollen-robotics/reachy-mini" target="_blank">Documentation</a> | |
| <a href="https://huggingface.co/blog/pollen-robotics/make-and-publish-your-reachy-mini-apps" target="_blank">App Guide</a> |
| </p> |
| </footer> |
| </div> |
| </body> |
| </html> |
|
|