Skip to content

Commit e4deec6

Browse files
authored
Merge pull request #3346 from pareenaverma/content_review
Reachy Mini LP tech review
2 parents 69dd7f9 + 3f44e63 commit e4deec6

6 files changed

Lines changed: 41 additions & 27 deletions

File tree

content/learning-paths/cross-platform/build-a-reachy-robot-app-on-pi/extend.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ motion, or packaging.
2525

2626
## Change the classifier
2727

28-
Trying adding new gesture controls. Start in `gesture.py`, where the app maps MediaPipe labels such as `Thumb_Up` and `Thumb_Down` to app labels. Then add matching robot behavior in `moves.py` and branch on the new label in `main.py`.
28+
Try adding new gesture controls. Start in `gesture.py`, where the app maps MediaPipe labels such as `Thumb_Up` and `Thumb_Down` to app labels. Then add matching robot behavior in `moves.py` and branch on the new label in `main.py`.
2929

3030
Some game-themed ideas:
3131

3232
- Map `Closed_Fist` to `challenge`, and make Reachy repeat the current move
3333
- Map `Pointing_Up` to `reroll`, and make Reachy reject the current move and
3434
choose another one.
35-
- Map `Number of fingers` to choosing a specific move.
35+
- Map the number of fingers shown to choose a specific move.
3636

3737
## Add audio output
3838

@@ -50,7 +50,7 @@ robot motion and sound effects easy to change independently.
5050
## Replace thumbs with audio input
5151

5252
The vision-based verdict is one edge AI input modality. You can replace
53-
or complement it with audio - many webcams include microphones or you can use a USB microphone.
53+
or complement it with audio. Many webcams include microphones, or you can use a USB microphone.
5454

5555
- say "yes" for victory and "no" for defeat,
5656
- clap once for victory and twice for defeat,
@@ -62,10 +62,10 @@ A lightweight keyword-spotting model can map spoken commands to the same game st
6262
If you have a physical Reachy Mini, the quickest way to try the finished
6363
experience is to install the packaged [Reachy Gladiator app](https://huggingface.co/spaces/cossinsmatthew/reachy_gladiator) through the [Reachy Mini Control app](https://github.com/pollen-robotics/reachy-mini-desktop-app).
6464

65-
Simply install Reachy Mini Control on a supported machine, connected to your Reachy, and search for the reachy gladiator app.
65+
Install Reachy Mini Control on a supported machine, connect it to your Reachy, and search for the Reachy Gladiator app.
6666

6767
{{% notice Warning %}}
68-
If using a physical Reachy Mini, use caution and ensure the robot is used in an area with appropriate space. The robot has moving parts and could be a health & safety risk. You are responsible for your safety and the safety of others around you when using physical robotic devices
68+
If using a physical Reachy Mini, use caution and ensure the robot is used in an area with appropriate space. The robot has moving parts and could be a health & safety risk. You are responsible for your safety and the safety of others around you when using physical robotic devices.
6969
{{% /notice %}}
7070

7171
## Adapt this source project for physical Reachy
@@ -129,4 +129,4 @@ Pollen Robotics `AGENTS.md` instructions, provided by the [Reachy Mini project](
129129

130130
## What you learned
131131

132-
You explored options for extending from simulation to a physical Reachy, as well ideas for changing the project to include audio, new vision gestures, or different behaviours.
132+
You explored options for extending from simulation to a physical Reachy, as well as ideas for changing the project to include audio, new vision gestures, or different behaviors.

content/learning-paths/cross-platform/build-a-reachy-robot-app-on-pi/reachy-app.md

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,20 @@ weight: 2
66
layout: learningpathall
77
---
88

9-
## Reachy Gladiator - Decide Reachy's Fate
9+
## Reachy Gladiator - Decide Reachy's fate
1010

11-
In this Learning Path, Reachy is stepping out onto the sands of the Arena. Reachy has practiced their gladiator moves, but are they good enough?
12-
13-
You will decide Reachy's fate in the classic Roman way - a 👍 for **Victory**, or a 👎 for **Defeat**.
11+
In this Learning Path, you build a distributed edge AI application where a Raspberry Pi runs local gesture inference and sends robot motion commands to a simulated Reachy Mini. The app follows a gladiator arena theme: Reachy performs a move, and you give a thumbs-up 👍 for **Victory** or thumbs-down 👎 for **Defeat** to trigger a victory or defeat reaction.
1412

1513
![Illustration of Reachy Mini in a gladiator style pose. The app uses this arena theme for its moves, verdicts, and dashboard.#center](reachy_gladiator.png "Reachy Mini Gladiator App Concept")
1614

1715
## What is Reachy Mini?
1816

19-
Reachy Mini is a small open robotics platform from Pollen Robotics. It is designed for expressive head, antenna, and body motion, and it can be controlled from Python with the Reachy Mini SDK. The Reachy Mini Wireless version includes an onboard Arm-powered Raspberry Pi 4 Compute Module, and the Lite version is operated with external compute (e.g., Raspberry Pi, DGX Spark, Mac/PC).
17+
Reachy Mini is a small open robotics platform from Pollen Robotics. It is designed for expressive head, antenna, and body motion, and it can be controlled from Python with the Reachy Mini SDK. The Reachy Mini Wireless version includes an onboard Arm-powered Raspberry Pi 4 Compute Module, and the Lite version is operated with external compute such as a Raspberry Pi, DGX Spark, or Mac/PC.
2018

2119
Reachy can also be simulated using MuJoCo software. Most developers do not have a physical Reachy Mini robot on their desk, and it is often useful to develop software before hardware is available. Extrapolating from Reachy to more industrial robotics, it is also important to test applications in simulation in advance for safety.
2220

2321
{{% notice Warning %}}
24-
If using a physical Reachy Mini, use caution and ensure the robot is used in an area with appropriate space. The robot has moving parts and could be a health & safety risk. You are responsible for your safety and the safety of others around you when using physical robotic devices
22+
If using a physical Reachy Mini, use caution and ensure the robot is used in an area with appropriate space. The robot has moving parts and could be a health & safety risk. You are responsible for your safety and the safety of others around you when using physical robotic devices.
2523
{{% /notice %}}
2624

2725
## What will you build?
@@ -54,7 +52,7 @@ Keeping perception, robot control, and observability as separate pieces makes it
5452

5553
The app is called Reachy Gladiator. Reachy (in simulation or otherwise) performs a randomly-chosen scripted gladiator move. You provide a 👍 for **Victory**, or a 👎 for **Defeat**. **Victory** makes Reachy celebrate, **Defeat** makes Reachy react sadly.
5654

57-
This learning path starts from the complete `reachy_gladiator_lp` project instead of asking you to create every file from scratch. The simulation host only needs a launcher script, but the Raspberry Pi will clone and run the full project. You will inspect the different parts of the system so you can recreate your own apps running on Reachy or in simulation.
55+
This Learning Path starts from the complete [`reachy_gladiator_lp`](https://github.com/matt-cossins/reachy_gladiator_lp) project instead of asking you to create every file from scratch. The simulation host only needs a launcher script, but the Raspberry Pi will clone and run the full project. You will inspect the different parts of the system so you can recreate your own apps running on Reachy or in simulation.
5856

5957
The Reachy Gladiator app runs a repeated loop:
6058

@@ -96,7 +94,7 @@ The rest of this learning path shows the common Bash commands and calls out the
9694
The simulation host does not need the full project checkout. In the next
9795
section, you will download only the simulation launcher script on that machine.
9896

99-
You will clone the full `reachy_gladiator_lp` project on the Raspberry Pi later on.
97+
You will clone the full `reachy_gladiator_lp` project on the Raspberry Pi later.
10098

10199
The key files are:
102100

content/learning-paths/cross-platform/build-a-reachy-robot-app-on-pi/run-pi-app.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Setup Pi and run Edge AI app
2+
title: Set up the Pi and run the Edge AI app
33
weight: 4
44

55
### FIXED, DO NOT MODIFY
@@ -8,9 +8,9 @@ layout: learningpathall
88

99
## Prepare the Raspberry Pi
1010

11-
The Raspberry Pi should be installed with Raspberry Pi OS Trixie, and be accessible over SSH.
11+
The Raspberry Pi should be installed with Raspberry Pi OS Trixie (Debian 13-based), and be accessible over SSH.
1212

13-
Connect to your Raspberry Pi over SSH using [VSCode Remote - SSH](https://code.visualstudio.com/docs/remote/ssh), or via terminal e.g.,
13+
Connect to your Raspberry Pi over SSH. If you use VS Code, you can use the [Remote - SSH](https://code.visualstudio.com/docs/remote/ssh) extension. From a terminal:
1414

1515
```bash
1616
ssh <user>@<pi-ip-address>
@@ -33,7 +33,7 @@ sudo apt install git-lfs
3333
git lfs install
3434
```
3535

36-
Clone the `reachy_gladiator_lp` project into this directory:
36+
Clone the [`reachy_gladiator_lp`](https://github.com/matt-cossins/reachy_gladiator_lp) project into this directory:
3737

3838
```bash
3939
git clone https://github.com/matt-cossins/reachy_gladiator_lp.git
@@ -52,7 +52,7 @@ again before continuing.
5252

5353
## Install the Pi runtime
5454

55-
Run the Pi setup script:
55+
Run the Pi setup script. This can take several minutes because it installs `pyenv`, builds Python 3.12, and installs all Python dependencies:
5656

5757
```bash
5858
./scripts/setup_pi.sh
@@ -78,7 +78,7 @@ source .venv/bin/activate
7878

7979
The setup script runs an import smoke test. It also runs `pip check`; a MediaPipe NumPy metadata warning is expected for this Pi setup.
8080

81-
Test the MediaPipe gesture worker from a real Python file:
81+
Test the MediaPipe gesture worker by writing a small test script and running it. The `cat` command below creates the file at `/tmp/test_gesture_worker.py` using a heredoc — the text between `<<'PY'` and the closing `PY` becomes the file contents:
8282

8383
```bash
8484
cat > /tmp/test_gesture_worker.py <<'PY'

content/learning-paths/cross-platform/build-a-reachy-robot-app-on-pi/start-simulation.md

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,19 @@ The simulation host does not need the full `reachy_gladiator_lp` project. It
2222
only needs the Reachy Mini SDK with MuJoCo support and the `start_sim.sh`
2323
launcher script.
2424

25+
### macOS prerequisites
26+
27+
{{% notice Note %}}
28+
Python 3.12 is required for the simulation environment. Python 3.13 can cause dependency resolution failures because pre-built wheels for some SDK dependencies are not yet available for that version. Check your version with `python3 --version`. On macOS, install Python 3.12 with [Homebrew](https://brew.sh): `brew install python@3.12`. On Ubuntu or WSL2, install it with `sudo apt install python3.12 python3.12-venv`.
29+
{{% /notice %}}
30+
2531
On the machine that will run the simulation, create a small workspace and a
2632
Python virtual environment:
2733

2834
```bash
2935
mkdir -p ~/reachy_projects/reachy_sim/scripts
3036
cd ~/reachy_projects/reachy_sim
31-
python3 -m venv .venv
37+
python3.12 -m venv .venv
3238
source .venv/bin/activate
3339
python -m pip install --upgrade pip
3440
```
@@ -43,7 +49,7 @@ The `mujoco` extra is required for `--sim`. If you install only `reachy-mini`, t
4349

4450
If you already have a working Reachy Mini simulation environment, you can activate that environment instead.
4551

46-
Download the simulation launcher script from the project repository:
52+
Download the simulation launcher script from the [reachy_gladiator_lp repository](https://github.com/matt-cossins/reachy_gladiator_lp):
4753

4854
```bash
4955
curl -L https://raw.githubusercontent.com/matt-cossins/reachy_gladiator_lp/main/scripts/start_sim.sh -o scripts/start_sim.sh
@@ -64,9 +70,19 @@ source .venv/bin/activate
6470
REACHY_SIM_PORT=18000 ./scripts/start_sim.sh
6571
```
6672

67-
This can take several minutes to start up. Leave this terminal running after it completes and boots the simulation view.
73+
This can take several minutes to start up. When the simulation is ready, the output is similar to:
74+
75+
```output
76+
reachy_mini.daemon.daemon - INFO - Daemon started successfully.
77+
uvicorn.error - INFO - Application startup complete.
78+
uvicorn.error - INFO - Uvicorn running on http://0.0.0.0:18000 (Press CTRL+C to quit)
79+
reachy_mini.utils.discovery - INFO - mDNS service registered: reachy_mini on port 18000
80+
reachy_mini.media.media_server - INFO - Pipeline latency (live=True, min_latency=30000000, max_latency=1200000000)
81+
```
82+
83+
Leave this terminal running after it completes and boots the simulation view.
6884

69-
![MuJoCo Simulation#center](MuJoCo.png "MuJoCo Simulation")
85+
![MuJoCo physics simulation window showing the Reachy Mini robot in a standing position, confirming the simulation started successfully#center](mujoco.png "MuJoCo simulation window with Reachy Mini")
7086

7187

7288
The script starts the Reachy Mini daemon with simulation enabled, binds FastAPI to `0.0.0.0`, and disables localhost-only mode so the Raspberry Pi can connect. This Learning Path uses port `18000`.

content/learning-paths/cross-platform/build-a-reachy-robot-app-on-pi/understand-code.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ XNNPACK delegate to speed up neural-network operations on Arm CPUs.
214214

215215
The detector runs in a worker process instead of the main app thread. This
216216
keeps MediaPipe inference separate from the robot-control loop, dashboard
217-
responses, and camera capture. Other processes therefore don't pause the MediaPipe worker while it is classifying frames.
217+
responses, and camera capture. The robot-control loop and dashboard server therefore remain responsive while MediaPipe is classifying a frame.
218218

219219
The app uses the CPU delegate:
220220

@@ -415,7 +415,7 @@ if __name__ == "__main__":
415415
app.wrapped_run(host=daemon_host, port=daemon_port, timeout=daemon_timeout)
416416
```
417417

418-
Take some time to look through the files and try to understand the different parts. Feel free to ask a coding agent or LLM to help explain any areas you are unsure about.
418+
Take some time to read through the files and understand the different parts before moving on to extend the project.
419419

420420
## What you learned
421421

content/learning-paths/cross-platform/build-a-reachy-robot-app-on-pi/use-the-app.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ http://<pi-ip-address>:8042
3131
This works even when the Pi is headless. The browser only needs network access
3232
to the Pi and port `8042`.
3333

34-
The app will countdown from 10, and then Reachy will start performing moves. Reachy will perform the same move three times, and then await your verdict. After a verdict is given, Reachy will perform the **Victory** or **Defeat** moves. Reachy will then randomly select another move the cycle will repeat.
34+
The app will count down from 10, and then Reachy will start performing moves. Reachy will perform the same move three times, and then await your verdict. After a verdict is given, Reachy will perform the **Victory** or **Defeat** moves. Reachy will then randomly select another move, and the cycle repeats.
3535

3636
![Thumbs Up Victory#center](thumbs-up.gif "Thumbs Up Victory")
3737

0 commit comments

Comments
 (0)