diff --git a/backend/app/classes/SettingsManager.py b/backend/app/classes/SettingsManager.py index 76a1f0309..80b89cb3f 100644 --- a/backend/app/classes/SettingsManager.py +++ b/backend/app/classes/SettingsManager.py @@ -30,7 +30,9 @@ class SettingsManager(metaclass=Singleton): "is_binary": "Normal", "sort_mode": "Largest", "target_group": 'Single', - "target_intersection": 'Up' + "target_intersection": 'Up', + "M": 1, + "B": 0 } default_general_settings = { "team_number": 1577, diff --git a/backend/app/handlers/VisionHandler.py b/backend/app/handlers/VisionHandler.py index 56c1433ba..50c4cd51d 100644 --- a/backend/app/handlers/VisionHandler.py +++ b/backend/app/handlers/VisionHandler.py @@ -1,4 +1,6 @@ import asyncio +import time + from networktables import NetworkTables import networktables import cv2 @@ -239,6 +241,7 @@ class VisionHandler(metaclass=Singleton): return pitch def calculate_yaw(self, pixel_x, center_x, h_focal_length): + yaw = math.degrees(math.atan((pixel_x - center_x) / h_focal_length)) return yaw @@ -326,7 +329,8 @@ class VisionHandler(metaclass=Singleton): 'raw_point': nt_data['raw_point'], 'point': { 'pitch': nt_data['pitch'], - 'yaw': nt_data['yaw'] + 'yaw': nt_data['yaw'], + 'fps': nt_data['fps'] } }) except Exception as e: @@ -360,6 +364,10 @@ class VisionHandler(metaclass=Singleton): socket = context.socket(zmq.PAIR) socket.connect('tcp://localhost:%s' % str(port)) filter_contours = self.Filter_Contours(center_x=centerX, center_y=centerY) + x = 1 + counter = 0 + start_time = time.time() + fps = 0 while True: obj = socket.recv_json() image = socket.recv_pyobj() @@ -379,8 +387,10 @@ class VisionHandler(metaclass=Singleton): final_contour = self.output_contour(filtered_contours) try: center = final_contour[0] - pitch = self.calculate_pitch(pixel_y=center[1], center_y=centerY, v_focal_length=V_FOCAL_LENGTH) - yaw = self.calculate_yaw(pixel_x=center[0], center_x=centerX, h_focal_length=H_FOCAL_LENGTH) + center_x = (center[1] - curr_pipeline['B']) / curr_pipeline["M"] + center_y = (center[0] * curr_pipeline["M"]) + curr_pipeline["B"] + pitch = self.calculate_pitch(pixel_y=center[1], center_y=center_x, v_focal_length=V_FOCAL_LENGTH) + yaw = self.calculate_yaw(pixel_x=center[0], center_x=center_y, h_focal_length=H_FOCAL_LENGTH) valid = True except IndexError: center = None @@ -398,7 +408,14 @@ class VisionHandler(metaclass=Singleton): pitch=pitch, yaw=yaw, valid=valid, - raw_point=center + raw_point=center, + fps=fps )) + counter += 1 + if (time.time() - start_time) > x: + fps = (counter / (time.time() - start_time)) + counter = 0 + start_time = time.time() + diff --git a/backend/settings/cams/USB Camera-B4.09.24.1.json b/backend/settings/cams/USB Camera-B4.09.24.1.json index 794e41662..3f4f72410 100644 --- a/backend/settings/cams/USB Camera-B4.09.24.1.json +++ b/backend/settings/cams/USB Camera-B4.09.24.1.json @@ -1 +1 @@ -{"pipelines": {"pipeline0": {"exposure": 50, "brightness": 10, "orientation": "Normal", "hue": [0, 56], "saturation": [0, 47], "value": [0, 100], "erode": false, "dilate": false, "area": [0, 100], "ratio": [0, 99], "extent": [0, 100], "is_binary": 1, "sort_mode": "Rightmost", "target_group": "Single", "target_intersection": "Up"}}, "path": "/dev/v4l/by-path/pci-0000:02:03.0-usb-0:1:1.0-video-index0", "video_mode": {"fps": 15, "width": 640, "height": 480, "pixel_format": "kYUYV"}, "resolution": 14, "FOV": 56} \ No newline at end of file +{"pipelines": {"pipeline0": {"exposure": 50, "brightness": 16, "orientation": "Normal", "hue": [0, 127], "saturation": [0, 138], "value": [0, 122], "erode": false, "dilate": false, "area": [20, 37], "ratio": [0, 80.5], "extent": [0, 100], "is_binary": 1, "sort_mode": "Rightmost", "target_group": "Single", "target_intersection": "Up", "M": 1, "B": 0}}, "path": "/dev/v4l/by-path/pci-0000:02:03.0-usb-0:1:1.0-video-index0", "video_mode": {"fps": 187, "width": 320, "height": 240, "pixel_format": "kYUYV"}, "resolution": 0, "FOV": 56} \ No newline at end of file diff --git a/backend/settings/settings.json b/backend/settings/settings.json index 41fe0b582..4768b240f 100644 --- a/backend/settings/settings.json +++ b/backend/settings/settings.json @@ -1 +1 @@ -{"team_number": 1567, "connection_type": "DHCP", "ip": "", "gateway": "", "hostname": "Chameleon-Vision", "curr_camera": "USB2.0 PC CAMERA", "curr_pipeline": "pipeline0"} \ No newline at end of file +{"team_number": 1567, "connection_type": "DHCP", "ip": "", "gateway": "", "hostname": "Chameleon-Vision", "curr_camera": "USB Camera-B4.09.24.1", "curr_pipeline": "pipeline0"} \ No newline at end of file diff --git a/chameleon-client/src/components/CameraTab.vue b/chameleon-client/src/components/CameraTab.vue index e237466ab..e7c48b2bc 100644 --- a/chameleon-client/src/components/CameraTab.vue +++ b/chameleon-client/src/components/CameraTab.vue @@ -23,8 +23,7 @@ - -