add models

This commit is contained in:
Sebastian Unterschütz
2026-04-21 15:45:43 +02:00
parent f5d344cf75
commit e72ba2989e
14 changed files with 1589 additions and 79 deletions

View File

@@ -23,6 +23,7 @@ class FaceTrackingApp:
# State Management
self.is_running = True
self.is_manual = True
self.is_sport = False # NEW: Sport Mode flag
self.is_locked = False
self.is_taking_off = False
self.is_flying = False
@@ -180,9 +181,10 @@ class FaceTrackingApp:
self.locked_person_features = feat
self.is_locked = True
self.lock_trigger = False
self.is_manual = False
break
# UI
# UI Graphics
if self.is_locked and self.locked_person:
(x,y,w,h) = self.locked_person
cv2.rectangle(frame, (x,y), (x+w,y+h), Colors.BLUE, 3)
@@ -204,6 +206,7 @@ class FaceTrackingApp:
rc, status = self.flight_controller.calculate(
faces=faces,
is_manual=self.is_manual,
is_sport=self.is_sport, # NEW
emergency_stop=self.emergency_stop,
is_locked=self.is_locked,
locked_person=self.locked_person,
@@ -215,7 +218,8 @@ class FaceTrackingApp:
manual_rc=active_manual_rc
)
# Throttle and optimized sending
if self.is_sport: status = "SPORT MODE: ACTIVE"
now = time.time()
if now - self.last_rc_time >= 0.1:
changed = any(abs(rc[i] - self._prev_rc[i]) > 1 for i in range(4))
@@ -250,7 +254,6 @@ class FaceTrackingApp:
def _handle_takeoff(self):
if self.is_taking_off or self.is_flying: return
self.is_taking_off = True
self.takeoff_error = False
def _task():
@@ -265,13 +268,13 @@ class FaceTrackingApp:
self.takeoff_error = True
finally:
self.is_taking_off = False
threading.Thread(target=_task, daemon=True).start()
def _handle_input(self, key: int):
if key == 13: self.is_running = False
elif key == 32: self.emergency_stop = not self.emergency_stop
elif key == ord('m'): self.is_manual = not self.is_manual
elif key == ord('2'): self.is_sport = not self.is_sport # Toggle Sport Mode
elif key == ord('k'):
self.lock_trigger = not self.lock_trigger
self.is_locked = False
@@ -287,11 +290,9 @@ class FaceTrackingApp:
except: pass
elif key == ord('1'): self.is_rotating = not self.is_rotating
# Reset manual speed
self.m_lr, self.m_fb, self.m_ud, self.m_yv = 0, 0, 0, 0
if self.is_manual and not self.emergency_stop:
s = 100 # Maximum manual speed
s = 100
if key == ord('w'): self.m_fb = s
elif key == ord('s'): self.m_fb = -s
elif key == ord('a'): self.m_lr = -s