Alina Lozovskaya commited on
Commit
1899742
·
1 Parent(s): b1ab0ab

Remove --sim argument

Browse files
README.md CHANGED
@@ -58,7 +58,6 @@ reachy-mini-conversation-demo
58
 
59
  | Option | Values | Default | Description |
60
  |--------|--------|---------|-------------|
61
- | `--sim` | *(flag)* | off | Run in **simulation mode** (no physical robot required). |
62
  | `--head-tracker` | `yolo`, `mediapipe` | `None` | Enable **head tracking** using the specified tracker:<br>• **yolo** → YOLO-based head tracker.<br>• **mediapipe** → MediaPipe-based head tracker.<br>*(Automatically disabled when `--sim` is active)* |
63
  | `--no-camera` | *(flag)* | off | Disable **camera usage** entirely. |
64
  | `--gradio` | *(flag)* | off | **⚠️ Under construction** - Open Gradio interface (currently not implemented). |
 
58
 
59
  | Option | Values | Default | Description |
60
  |--------|--------|---------|-------------|
 
61
  | `--head-tracker` | `yolo`, `mediapipe` | `None` | Enable **head tracking** using the specified tracker:<br>• **yolo** → YOLO-based head tracker.<br>• **mediapipe** → MediaPipe-based head tracker.<br>*(Automatically disabled when `--sim` is active)* |
62
  | `--no-camera` | *(flag)* | off | Disable **camera usage** entirely. |
63
  | `--gradio` | *(flag)* | off | **⚠️ Under construction** - Open Gradio interface (currently not implemented). |
src/reachy_mini_conversation_demo/camera_worker.py CHANGED
@@ -25,11 +25,10 @@ logger = logging.getLogger(__name__)
25
  class CameraWorker:
26
  """Thread-safe camera worker with frame buffering and face tracking."""
27
 
28
- def __init__(self, reachy_mini: ReachyMini, head_tracker=None, use_sim: bool = False):
29
  """Initialize."""
30
  self.reachy_mini = reachy_mini
31
  self.head_tracker = head_tracker
32
- self.use_sim = use_sim
33
 
34
  # Thread-safe frame storage
35
  self.latest_frame: Optional[np.ndarray] = None
@@ -37,16 +36,6 @@ class CameraWorker:
37
  self._stop_event = threading.Event()
38
  self._thread: Optional[threading.Thread] = None
39
 
40
- # Local camera for simulation mode
41
- self.local_camera: Optional[cv2.VideoCapture] = None
42
- if self.use_sim:
43
- self.local_camera = cv2.VideoCapture(0)
44
- if not self.local_camera.isOpened():
45
- logger.error("Failed to open local camera in simulation mode")
46
- self.local_camera = None
47
- else:
48
- logger.info("Local camera opened for simulation mode")
49
-
50
  # Face tracking state
51
  self.is_head_tracking_enabled = True
52
  self.face_tracking_offsets = [
@@ -104,11 +93,6 @@ class CameraWorker:
104
  if self._thread is not None:
105
  self._thread.join()
106
 
107
- # Release local camera if it was opened
108
- if self.local_camera is not None:
109
- self.local_camera.release()
110
- logger.debug("Local camera released")
111
-
112
  logger.debug("Camera worker stopped")
113
 
114
  def working_loop(self) -> None:
@@ -126,14 +110,8 @@ class CameraWorker:
126
  try:
127
  current_time = time.time()
128
 
129
- # Get frame from local camera if in simulation mode, otherwise from robot
130
- if self.use_sim and self.local_camera is not None:
131
- ret, frame = self.local_camera.read()
132
- if not ret:
133
- frame = None
134
- logger.warning("Failed to read frame from local camera")
135
- else:
136
- frame = self.reachy_mini.media.get_frame()
137
 
138
  if frame is not None:
139
  # Thread-safe frame storage
 
25
  class CameraWorker:
26
  """Thread-safe camera worker with frame buffering and face tracking."""
27
 
28
+ def __init__(self, reachy_mini: ReachyMini, head_tracker=None):
29
  """Initialize."""
30
  self.reachy_mini = reachy_mini
31
  self.head_tracker = head_tracker
 
32
 
33
  # Thread-safe frame storage
34
  self.latest_frame: Optional[np.ndarray] = None
 
36
  self._stop_event = threading.Event()
37
  self._thread: Optional[threading.Thread] = None
38
 
 
 
 
 
 
 
 
 
 
 
39
  # Face tracking state
40
  self.is_head_tracking_enabled = True
41
  self.face_tracking_offsets = [
 
93
  if self._thread is not None:
94
  self._thread.join()
95
 
 
 
 
 
 
96
  logger.debug("Camera worker stopped")
97
 
98
  def working_loop(self) -> None:
 
110
  try:
111
  current_time = time.time()
112
 
113
+ # Get frame from robot
114
+ frame = self.reachy_mini.media.get_frame()
 
 
 
 
 
 
115
 
116
  if frame is not None:
117
  # Thread-safe frame storage
src/reachy_mini_conversation_demo/main.py CHANGED
@@ -32,11 +32,7 @@ def main():
32
  logger = setup_logger(args.debug)
33
  logger.info("Starting Reachy Mini Conversation Demo")
34
 
35
- # In simulation mode, disable robot's media system since we use local camera/mic
36
- if args.sim:
37
- robot = ReachyMini(use_sim=True, media_backend="no_media")
38
- else:
39
- robot = ReachyMini(use_sim=False)
40
 
41
  camera_worker, _, vision_manager = handle_vision_stuff(args, robot)
42
 
 
32
  logger = setup_logger(args.debug)
33
  logger.info("Starting Reachy Mini Conversation Demo")
34
 
35
+ robot = ReachyMini()
 
 
 
 
36
 
37
  camera_worker, _, vision_manager = handle_vision_stuff(args, robot)
38
 
src/reachy_mini_conversation_demo/utils.py CHANGED
@@ -8,7 +8,6 @@ from reachy_mini_conversation_demo.camera_worker import CameraWorker
8
  def parse_args():
9
  """Parse command line arguments."""
10
  parser = argparse.ArgumentParser("Reachy Mini Conversation Demo")
11
- parser.add_argument("--sim", action="store_true", help="Run in simulation mode")
12
  parser.add_argument(
13
  "--head-tracker",
14
  choices=["yolo", "mediapipe", None],
@@ -28,8 +27,7 @@ def handle_vision_stuff(args, current_robot):
28
  head_tracker = None
29
  vision_manager = None
30
  if not args.no_camera:
31
- # Head tracking is disabled in simulation mode
32
- if args.head_tracker is not None and not args.sim:
33
  if args.head_tracker == "yolo":
34
  from reachy_mini_conversation_demo.vision.yolo_head_tracker import (
35
  HeadTracker,
@@ -41,12 +39,8 @@ def handle_vision_stuff(args, current_robot):
41
  from reachy_mini_toolbox.vision import HeadTracker
42
 
43
  head_tracker = HeadTracker()
44
- elif args.head_tracker is not None and args.sim:
45
- logger.warning(
46
- f"Head tracking (--head-tracker {args.head_tracker}) is disabled in simulation mode (--sim)"
47
- )
48
 
49
- camera_worker = CameraWorker(current_robot, head_tracker, use_sim=args.sim)
50
 
51
  return camera_worker, head_tracker, vision_manager
52
 
 
8
  def parse_args():
9
  """Parse command line arguments."""
10
  parser = argparse.ArgumentParser("Reachy Mini Conversation Demo")
 
11
  parser.add_argument(
12
  "--head-tracker",
13
  choices=["yolo", "mediapipe", None],
 
27
  head_tracker = None
28
  vision_manager = None
29
  if not args.no_camera:
30
+ if args.head_tracker is not None:
 
31
  if args.head_tracker == "yolo":
32
  from reachy_mini_conversation_demo.vision.yolo_head_tracker import (
33
  HeadTracker,
 
39
  from reachy_mini_toolbox.vision import HeadTracker
40
 
41
  head_tracker = HeadTracker()
 
 
 
 
42
 
43
+ camera_worker = CameraWorker(current_robot, head_tracker)
44
 
45
  return camera_worker, head_tracker, vision_manager
46