add models
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user