diff --git a/config.py b/config.py index c9f9d0c..ec1b4f7 100644 --- a/config.py +++ b/config.py @@ -1,6 +1,7 @@ class Config: # ===== Камера ===== - CAMERA_ID = 0 + CAMERA_ID = 0 # только для 'web' + CAMERA_TYPE = 'oak' # 'web' или 'oak' MIRROR_CAMERA = True # ===== Преобразование позы в скорости ===== @@ -14,7 +15,7 @@ class Config: } # ===== Статические жесты (dome, cross) ===== - SPECIAL_GESTURE_MODE = 'ml' # или 'ml' 'geometric' + SPECIAL_GESTURE_MODE = 'ml' # 'ml' или 'geometric' ML_GESTURE_MODEL = '/home/ubuntu/sirius/models/rf/special_gestures_rf.pkl' ML_GESTURE_CLASSES = ['dome', 'cross', 'none'] @@ -53,4 +54,4 @@ class Config: FIRE_RADIUS = 15 SCORE_PER_FIRE = 10 - ROBOT_MODE = 'simulator' # или 'debug' + ROBOT_MODE = 'simulator' # 'simulator' или 'debug' diff --git a/main.py b/main.py index 0380ea3..9d2bd2e 100644 --- a/main.py +++ b/main.py @@ -13,17 +13,24 @@ from geom_controll.arm_control import ArmController from robot.simulated_robot import DummySimRobot from robot.debug_robot import DebugRobot +from camera.factory import create_camera + def main(): + # Все параметры cfg = Config() + + # Детектор скелета detector = MediaPipeDetector() + + # Детектор статичных жестов special_detector = SpecialGestureDetector( mode=cfg.SPECIAL_GESTURE_MODE, model_path=cfg.ML_GESTURE_MODEL, class_names=cfg.ML_GESTURE_CLASSES ) + # Динамические жесты dynamic_predictor = None - if cfg.DYNAMIC_GESTURE['enabled']: dynamic_predictor = DynamicGesturePredictor( cfg.DYNAMIC_GESTURE['model_path'], @@ -32,16 +39,23 @@ def main(): cfg.DYNAMIC_GESTURE['threshold'] ) + # Геометрический контроллер скоростей arm_control = ArmController(cfg.ARM_CONTROL, mirror=cfg.MIRROR_CAMERA) + + # Тип робота: симуляция - с игрой, дебаг - просто печать команды в консоль if cfg.ROBOT_MODE == 'simulator': robot = DummySimRobot(cfg) else: robot = DebugRobot() + # Захват кадра с камеры + camera = create_camera(camera_type=cfg.CAMERA_TYPE, camera_id=cfg.CAMERA_ID, mirror=cfg.MIRROR_CAMERA) + ''' cap = cv2.VideoCapture(cfg.CAMERA_ID) if not cap.isOpened(): print("Ошибка: не удалось открыть камеру") sys.exit(1) + ''' enabled = False # включение управления жестами @@ -52,11 +66,16 @@ def main(): dome_processed = False while True: + ''' ret, frame = cap.read() if not ret: break if cfg.MIRROR_CAMERA: frame = cv2.flip(frame, 1) + ''' + frame = camera.get_frame() + if frame is None: + continue result = detector.detect(frame) if result['success']: @@ -126,7 +145,8 @@ def main(): if cv2.waitKey(1) & 0xFF == ord('q'): break - cap.release() + #cap.release() + camera.release() cv2.destroyAllWindows() robot.quit() diff --git a/submodules/gesture_detection b/submodules/gesture_detection index 988ce22..a751f51 160000 --- a/submodules/gesture_detection +++ b/submodules/gesture_detection @@ -1 +1 @@ -Subproject commit 988ce22d01ab7cb25442915d01c1fe53c09b5583 +Subproject commit a751f510788aa8cc30a30687eb2270244ec55279