Alina Lozovskaya commited on
Commit
fbce00b
·
2 Parent(s): d554873 927fd13

Merge remote-tracking branch 'origin/develop' into add-github-workflows

Browse files
README.md CHANGED
@@ -12,6 +12,9 @@ Conversational demo for the Reachy Mini robot combining OpenAI's realtime APIs,
12
 
13
  ## Installation
14
 
 
 
 
15
  ### Using uv
16
  You can set up the project quickly using [uv](https://docs.astral.sh/uv/):
17
 
@@ -34,7 +37,7 @@ You can combine extras or include dev dependencies:
34
  uv sync --extra all_vision --group dev
35
  ```
36
 
37
- ### Using pip (test on Ubuntu 24.04)
38
 
39
  ```bash
40
  python -m venv .venv # Create a virtual environment
 
12
 
13
  ## Installation
14
 
15
+ > [!IMPORTANT]
16
+ > Windows support is currently experimental and has not been extensively tested. Use with caution.
17
+
18
  ### Using uv
19
  You can set up the project quickly using [uv](https://docs.astral.sh/uv/):
20
 
 
37
  uv sync --extra all_vision --group dev
38
  ```
39
 
40
+ ### Using pip
41
 
42
  ```bash
43
  python -m venv .venv # Create a virtual environment
pyproject.toml CHANGED
@@ -24,9 +24,9 @@ dependencies = [
24
  "openai>=2.1",
25
 
26
  #Reachy mini
27
- "reachy_mini_dances_library@git+ssh://git@github.com/pollen-robotics/reachy_mini_dances_library@main",
28
- "reachy_mini_toolbox@git+ssh://git@github.com/pollen-robotics/reachy_mini_toolbox@main",
29
- "reachy_mini@git+ssh://git@github.com/pollen-robotics/reachy_mini@develop",
30
  ]
31
 
32
  [project.optional-dependencies]
 
24
  "openai>=2.1",
25
 
26
  #Reachy mini
27
+ "reachy_mini_dances_library",
28
+ "reachy_mini_toolbox",
29
+ "reachy_mini>=1.0.0.rc4",
30
  ]
31
 
32
  [project.optional-dependencies]
src/reachy_mini_conversation_demo/utils.py CHANGED
@@ -3,7 +3,6 @@ import argparse
3
  import warnings
4
 
5
  from reachy_mini_conversation_demo.camera_worker import CameraWorker
6
- from reachy_mini_conversation_demo.vision.processors import initialize_vision_manager
7
 
8
 
9
  def parse_args():
@@ -16,7 +15,12 @@ def parse_args():
16
  help="Choose head tracker (default: None)",
17
  )
18
  parser.add_argument("--no-camera", default=False, action="store_true", help="Disable camera usage")
19
- parser.add_argument("--local-vision", default=False, action="store_true", help="Use local vision model instead of gpt-realtime vision")
 
 
 
 
 
20
  parser.add_argument("--gradio", default=False, action="store_true", help="Open gradio interface")
21
  parser.add_argument("--debug", default=False, action="store_true", help="Enable debug logging")
22
  return parser.parse_args()
@@ -37,9 +41,11 @@ def handle_vision_stuff(args, current_robot):
37
  if args.head_tracker is not None:
38
  if args.head_tracker == "yolo":
39
  from reachy_mini_conversation_demo.vision.yolo_head_tracker import HeadTracker
 
40
  head_tracker = HeadTracker()
41
  elif args.head_tracker == "mediapipe":
42
  from reachy_mini_toolbox.vision import HeadTracker
 
43
  head_tracker = HeadTracker()
44
 
45
  # Initialize camera worker
@@ -47,9 +53,18 @@ def handle_vision_stuff(args, current_robot):
47
 
48
  # Initialize vision manager only if local vision is requested
49
  if args.local_vision:
50
- vision_manager = initialize_vision_manager(camera_worker)
 
 
 
 
 
 
 
51
  else:
52
- logging.getLogger(__name__).info("Using gpt-realtime for vision (default). Use --local-vision for local processing.")
 
 
53
 
54
  return camera_worker, head_tracker, vision_manager
55
 
 
3
  import warnings
4
 
5
  from reachy_mini_conversation_demo.camera_worker import CameraWorker
 
6
 
7
 
8
  def parse_args():
 
15
  help="Choose head tracker (default: None)",
16
  )
17
  parser.add_argument("--no-camera", default=False, action="store_true", help="Disable camera usage")
18
+ parser.add_argument(
19
+ "--local-vision",
20
+ default=False,
21
+ action="store_true",
22
+ help="Use local vision model instead of gpt-realtime vision",
23
+ )
24
  parser.add_argument("--gradio", default=False, action="store_true", help="Open gradio interface")
25
  parser.add_argument("--debug", default=False, action="store_true", help="Enable debug logging")
26
  return parser.parse_args()
 
41
  if args.head_tracker is not None:
42
  if args.head_tracker == "yolo":
43
  from reachy_mini_conversation_demo.vision.yolo_head_tracker import HeadTracker
44
+
45
  head_tracker = HeadTracker()
46
  elif args.head_tracker == "mediapipe":
47
  from reachy_mini_toolbox.vision import HeadTracker
48
+
49
  head_tracker = HeadTracker()
50
 
51
  # Initialize camera worker
 
53
 
54
  # Initialize vision manager only if local vision is requested
55
  if args.local_vision:
56
+ try:
57
+ from reachy_mini_conversation_demo.vision.processors import initialize_vision_manager
58
+
59
+ vision_manager = initialize_vision_manager(camera_worker)
60
+ except ImportError as e:
61
+ raise ImportError(
62
+ "To use --local-vision, please install the extra dependencies: pip install '.[local_vision]'"
63
+ ) from e
64
  else:
65
+ logging.getLogger(__name__).info(
66
+ "Using gpt-realtime for vision (default). Use --local-vision for local processing."
67
+ )
68
 
69
  return camera_worker, head_tracker, vision_manager
70
 
src/reachy_mini_conversation_demo/vision/yolo_head_tracker.py CHANGED
@@ -3,8 +3,15 @@ import logging
3
  from typing import Tuple, Optional
4
 
5
  import numpy as np
6
- from supervision import Detections
7
- from ultralytics import YOLO
 
 
 
 
 
 
 
8
  from huggingface_hub import hf_hub_download
9
 
10
 
 
3
  from typing import Tuple, Optional
4
 
5
  import numpy as np
6
+
7
+
8
+ try:
9
+ from supervision import Detections
10
+ from ultralytics import YOLO
11
+ except ImportError as e:
12
+ raise ImportError(
13
+ "To use YOLO head tracker, please install the extra dependencies: pip install '.[yolo_vision]'"
14
+ ) from e
15
  from huggingface_hub import hf_hub_download
16
 
17
 
uv.lock CHANGED
The diff for this file is too large to render. See raw diff