works fine with web and oak

master
Eliza Moscovskaya 1 month ago
parent 0ff938ebc3
commit 991530ff26

@ -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'

@ -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()

@ -1 +1 @@
Subproject commit 988ce22d01ab7cb25442915d01c1fe53c09b5583
Subproject commit a751f510788aa8cc30a30687eb2270244ec55279
Loading…
Cancel
Save