Skip to content

Commit c0686bb

Browse files
committed
Merge branch 'develop' into 180_2-stream-audiovideo-from-rpi
2 parents 8884b2b + 5ab4663 commit c0686bb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+2162
-846
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@
1111
*.stl filter=lfs diff=lfs merge=lfs -text
1212
*.npz filter=lfs diff=lfs merge=lfs -text
1313
*.onnx filter=lfs diff=lfs merge=lfs -text
14+
*.svg filter=lfs diff=lfs merge=lfs -text

.github/workflows/lint.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@ jobs:
2323
python -m pip install --upgrade pip
2424
pip install .[dev]
2525
- name : Lint with mypy
26-
run : mypy -v
26+
run : |
27+
mypy --install-types --non-interactive

.gitignore

Lines changed: 252 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,256 @@
1+
# Byte-compiled / optimized / DLL files
12
__pycache__/
2-
reachy_mini.egg-info/
3+
*.py[codz]
4+
*$py.class
5+
6+
# C extensions
7+
*.so
8+
9+
# Distribution / packaging
10+
.Python
11+
build/
12+
develop-eggs/
13+
dist/
14+
downloads/
15+
eggs/
16+
.eggs/
17+
lib/
18+
lib64/
19+
parts/
20+
sdist/
21+
var/
22+
wheels/
23+
share/python-wheels/
324
*.egg-info/
4-
build/*
5-
dist/*
25+
.installed.cfg
26+
*.egg
27+
MANIFEST
28+
29+
# PyInstaller
30+
# Usually these files are written by a python script from a template
31+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
32+
*.manifest
33+
*.spec
34+
35+
# Installer logs
36+
pip-log.txt
37+
pip-delete-this-directory.txt
38+
39+
# Unit test / coverage reports
40+
htmlcov/
41+
.tox/
42+
.nox/
43+
.coverage
44+
.coverage.*
45+
.cache
46+
nosetests.xml
47+
coverage.xml
48+
*.cover
49+
*.py.cover
50+
.hypothesis/
51+
.pytest_cache/
52+
cover/
53+
54+
# Translations
55+
*.mo
56+
*.pot
57+
58+
# Django stuff:
59+
*.log
60+
local_settings.py
61+
db.sqlite3
62+
db.sqlite3-journal
63+
64+
# Flask stuff:
65+
instance/
66+
.webassets-cache
67+
68+
# Scrapy stuff:
69+
.scrapy
70+
71+
# Sphinx documentation
72+
docs/_build/
73+
74+
# PyBuilder
75+
.pybuilder/
76+
target/
77+
78+
# Jupyter Notebook
79+
.ipynb_checkpoints
80+
81+
# IPython
82+
profile_default/
83+
ipython_config.py
84+
85+
# pyenv
86+
# For a library or package, you might want to ignore these files since the code is
87+
# intended to run in multiple environments; otherwise, check them in:
88+
# .python-version
89+
90+
# pipenv
91+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
93+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
94+
# install all needed dependencies.
95+
# Pipfile.lock
96+
97+
# UV
98+
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
99+
# This is especially recommended for binary packages to ensure reproducibility, and is more
100+
# commonly ignored for libraries.
101+
# uv.lock
102+
103+
# poetry
104+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
105+
# This is especially recommended for binary packages to ensure reproducibility, and is more
106+
# commonly ignored for libraries.
107+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
108+
# poetry.lock
109+
# poetry.toml
110+
111+
# pdm
112+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
113+
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
114+
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
115+
# pdm.lock
116+
# pdm.toml
117+
.pdm-python
118+
.pdm-build/
119+
120+
# pixi
121+
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
122+
# pixi.lock
123+
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
124+
# in the .venv directory. It is recommended not to include this directory in version control.
125+
.pixi
126+
127+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
128+
__pypackages__/
129+
130+
# Celery stuff
131+
celerybeat-schedule
132+
celerybeat.pid
133+
134+
# Redis
135+
*.rdb
136+
*.aof
137+
*.pid
138+
139+
# RabbitMQ
140+
mnesia/
141+
rabbitmq/
142+
rabbitmq-data/
143+
144+
# ActiveMQ
145+
activemq-data/
146+
147+
# SageMath parsed files
148+
*.sage.py
149+
150+
# Environments
151+
.env
152+
.envrc
153+
.venv
154+
env/
155+
venv/
156+
ENV/
157+
env.bak/
158+
venv.bak/
159+
160+
# Spyder project settings
161+
.spyderproject
162+
.spyproject
163+
164+
# Rope project settings
165+
.ropeproject
166+
167+
# mkdocs documentation
168+
/site
169+
170+
# mypy
171+
.mypy_cache/
172+
.dmypy.json
173+
dmypy.json
174+
175+
# Pyre type checker
176+
.pyre/
177+
178+
# pytype static type analyzer
179+
.pytype/
180+
181+
# Cython debug symbols
182+
cython_debug/
183+
184+
# PyCharm
185+
.idea/**/workspace.xml
186+
.idea/**/tasks.xml
187+
.idea/**/usage.statistics.xml
188+
.idea/**/dictionaries
189+
.idea/**/shelf
190+
.idea/**/dataSources/
191+
.idea/**/dataSources.ids
192+
.idea/**/dataSources.local.xml
193+
.idea/**/sqlDataSources.xml
194+
.idea/**/dynamic.xml
195+
.idea/**/uiDesigner.xml
196+
.idea/**/dbnavigator.xml
197+
.idea/**/contentModel.xml
198+
199+
# Abstra
200+
# Abstra is an AI-powered process automation framework.
201+
# Ignore directories containing user credentials, local state, and settings.
202+
# Learn more at https://abstra.io/docs
203+
.abstra/
204+
205+
# Visual Studio Code
206+
.vscode/*
207+
!.vscode/settings.json
208+
!.vscode/tasks.json
209+
!.vscode/launch.json
210+
!.vscode/extensions.json
211+
!.vscode/*.code-snippets
212+
!*.code-workspace
213+
214+
# Ruff stuff:
215+
.ruff_cache/
216+
217+
# PyPI configuration file
218+
.pypirc
219+
220+
# Marimo
221+
marimo/_static/
222+
marimo/_lsp/
223+
__marimo__/
224+
225+
# Streamlit
226+
.streamlit/secrets.toml
227+
228+
# General for macOS
229+
.DS_Store
230+
__MACOSX/
231+
.AppleDouble
232+
.LSOverride
233+
Icon[]
234+
235+
# General for Linux
236+
*~
237+
.fuse_hidden*
238+
.directory
239+
.Trash-*
240+
.nfs*
241+
nohup.out
242+
243+
# General for Windows
244+
Thumbs.db
245+
Thumbs.db:encryptable
246+
ehthumbs.db
247+
ehthumbs_vista.db
248+
[Dd]esktop.ini
249+
*.stackdump
250+
$RECYCLE.BIN/
251+
*.lnk
252+
253+
# Project specific ignores
6254
src/reachy_mini_dashboard/installed_apps/*
7255
examples/debug/measures/*
256+
.DS_Store

README.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,12 @@ The daemon is built in Python, so you need to have Python installed on your comp
6060

6161
You can install Reachy Mini from the source code or from PyPI.
6262

63+
First, make sure `git-lfs` is installed on your system:
64+
65+
- On Linux: `sudo apt install git-lfs`
66+
- On macOS: `brew install git-lfs`
67+
- On Windows: [Follow the instructions here](https://docs.github.com/en/repositories/working-with-files/managing-large-files/installing-git-large-file-storage?platform=windows)
68+
6369
From PyPI, you can install the package with:
6470

6571
```bash
@@ -146,10 +152,18 @@ For more information about the daemon and its options, you can run:
146152
reachy-mini-daemon --help
147153
```
148154

149-
## Run the demo
155+
### Dashboard
156+
157+
You can access a simple dashboard to monitor the robot's status at [http://localhost:8000/](http://localhost:8000/) when the daemon is running. This lets you turn your robot on and off, run some basic movements, and browse spaces for Reachy Mini!
158+
159+
![Reachy Mini Dashboard](docs/assets/dashboard.png)
160+
161+
## Run the demo & awesome apps
150162

151163
Conversational demo for the Reachy Mini robot combining LLM realtime APIs, vision pipelines, and choreographed motion libraries: [reachy_mini_conversation_demo](https://github.com/pollen-robotics/reachy_mini_conversation_demo).
152164

165+
You can find more awesome apps and demos for Reachy Mini on [Hugging Face spaces](https://huggingface.co/spaces?q=reachy_mini)!
166+
153167
## Using the Python SDK
154168

155169
The API is designed to be simple and intuitive. You can control the robot's features such as the head, antennas, camera, speakers, and microphone. For instance, to move the head of the robot, you can use the `goto_target` method as shown in the example below:

docs/assets/dashboard.png

Lines changed: 3 additions & 0 deletions
Loading

docs/awesome-apps.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Awesome Reachy Mini Apps
2+
3+
This repository contains a collection of awesome applications and demos built for the Reachy Mini robot. These applications showcase the capabilities of Reachy Mini in various domains, including robotics, AI, and human-robot interaction.
4+
5+
Feel free to explore and contribute to this list!
6+
7+
## Applications and Demos
8+
9+
- **[Conversational Demo](https://github.com/pollen-robotics/reachy_mini_conversation_demo)**: by Pollen Robotics. A demo that combines LLM realtime APIs, vision pipelines, and choreographed motion libraries to enable natural conversations with Reachy Mini.
10+
11+
- **[Reachy Mini Dancer](https://github.com/LAURA-agent/reachy_mini_dancer)**: by @Townie. A desktop viewer with daemon UI and choreography system.

examples/rerun_viewer.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
Open a wav and push samples to the speaker. This is a toy example, in real
44
conditions output from a microphone or a text-to-speech engine would be
55
pushed to the speaker instead.
6+
7+
It requires the 'rerun-loader-urdf' package to be installed. It's not on PyPI,
8+
so you need to install it from the GitHub repository: pip install git+https://github.com/rerun-io/rerun-loader-python-example-urdf.git
69
"""
710

811
import logging

pyproject.toml

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ requires-python = ">=3.10"
1212
dependencies = [
1313
"numpy>=2.2.5,<2.3.0",
1414
"scipy==1.15.3",
15-
"reachy_mini_motor_controller>=1.0.0",
15+
"reachy_mini_motor_controller>=1.2.0",
1616
"eclipse-zenoh>=1.4.0",
1717
"opencv-python<=5.0",
1818
"cv2_enumerate_cameras>=1.2.1",
@@ -29,7 +29,8 @@ dependencies = [
2929
"aiohttp",
3030
"log-throttling==0.0.3",
3131
"pyusb>=1.2.1",
32-
"libusb_package>=1.0.26.3"
32+
"libusb_package>=1.0.26.3",
33+
"pip>=25",
3334
]
3435

3536

@@ -44,20 +45,22 @@ dev = [
4445
"pre-commit",
4546
"mypy==1.18.2",
4647
"rustypot>=1.3.0",
47-
"types-requests"
48+
"types-requests",
4849
]
4950
examples = ["pynput"]
5051
mujoco = ["mujoco==3.3.0"]
5152
nn_kinematics = ["onnxruntime==1.22.1"]
5253
placo_kinematics = ["placo==0.9.14"]
5354
gstreamer = ["PyGObject>=3.42.2,<=3.46.0", "gst-signalling==1.1.1"]
54-
rerun = ["rerun-sdk>=0.23.4",
55-
"rerun-loader-urdf @ git+https://github.com/rerun-io/rerun-loader-python-example-urdf.git",
55+
rerun = [
56+
"rerun-sdk>=0.23.4",
57+
# See https://github.com/rerun-io/rerun-loader-python-example-urdf/issues/12
58+
# "rerun-loader-urdf @ git+https://github.com/rerun-io/rerun-loader-python-example-urdf.git",
5659
]
5760

5861
[project.scripts]
5962
reachy-mini-daemon = "reachy_mini.daemon.app.main:main"
60-
reachy-mini-make-app = "reachy_mini.apps.apps.app:main"
63+
reachy-mini-make-app = "reachy_mini.apps.app:main"
6164

6265
[tool.setuptools]
6366
package-dir = { "" = "src" }

src/reachy_mini/apps/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ class SourceKind(str, Enum):
99
"""Kinds of app source."""
1010

1111
HF_SPACE = "hf_space"
12+
LOCAL = "local"
1213
INSTALLED = "installed"
1314

1415

0 commit comments

Comments
 (0)