mirror of
https://github.com/PhotonVision/photonvision
synced 2026-06-29 02:21:41 +00:00
UI patches (#905)
- Show 0 clients when NT server props are undefined - Add Prettier --------- Co-authored-by: Matthew Morley <matthew.morley.ca@gmail.com>
This commit is contained in:
@@ -1,29 +1,29 @@
|
||||
export interface Pose {
|
||||
x: number,
|
||||
y: number,
|
||||
z: number,
|
||||
angle_z: number,
|
||||
qw: number,
|
||||
qx: number,
|
||||
qy: number,
|
||||
qz: number
|
||||
x: number;
|
||||
y: number;
|
||||
z: number;
|
||||
angle_z: number;
|
||||
qw: number;
|
||||
qx: number;
|
||||
qy: number;
|
||||
qz: number;
|
||||
}
|
||||
|
||||
export interface PhotonTarget {
|
||||
yaw: number,
|
||||
pitch: number,
|
||||
skew: number,
|
||||
area: number,
|
||||
// -1 if not set
|
||||
ambiguity: number,
|
||||
// -1 if not set
|
||||
fiducialId: number,
|
||||
// undefined if 3d isn't enabled
|
||||
pose?: Pose
|
||||
yaw: number;
|
||||
pitch: number;
|
||||
skew: number;
|
||||
area: number;
|
||||
// -1 if not set
|
||||
ambiguity: number;
|
||||
// -1 if not set
|
||||
fiducialId: number;
|
||||
// undefined if 3d isn't enabled
|
||||
pose?: Pose;
|
||||
}
|
||||
|
||||
export interface PipelineResult {
|
||||
fps: number,
|
||||
latency: number,
|
||||
targets: PhotonTarget[]
|
||||
fps: number;
|
||||
latency: number;
|
||||
targets: PhotonTarget[];
|
||||
}
|
||||
|
||||
@@ -1,244 +1,277 @@
|
||||
import type { WebsocketNumberPair } from "@/types/WebsocketDataTypes";
|
||||
|
||||
export enum PipelineType {
|
||||
DriverMode=1,
|
||||
Reflective=2,
|
||||
ColoredShape=3,
|
||||
AprilTag=4,
|
||||
Aruco=5
|
||||
DriverMode = 1,
|
||||
Reflective = 2,
|
||||
ColoredShape = 3,
|
||||
AprilTag = 4,
|
||||
Aruco = 5
|
||||
}
|
||||
|
||||
export enum AprilTagFamily {
|
||||
Family36h11=0,
|
||||
Family25h9=1,
|
||||
Family16h5=2
|
||||
Family36h11 = 0,
|
||||
Family25h9 = 1,
|
||||
Family16h5 = 2
|
||||
}
|
||||
|
||||
export enum RobotOffsetPointMode {
|
||||
None=0,
|
||||
Single=1,
|
||||
Dual=2
|
||||
None = 0,
|
||||
Single = 1,
|
||||
Dual = 2
|
||||
}
|
||||
|
||||
export enum TargetModel {
|
||||
InfiniteRechargeHighGoalOuter=0,
|
||||
InfiniteRechargeHighGoalInner=1,
|
||||
DeepSpaceDualTarget=2,
|
||||
CircularPowerCell7in=3,
|
||||
RapidReactCircularCargoBall=4,
|
||||
StrongholdHighGoal=5,
|
||||
Apriltag_200mm=6,
|
||||
Aruco6in_16h5=7,
|
||||
Apriltag6in_16h5=8
|
||||
InfiniteRechargeHighGoalOuter = 0,
|
||||
InfiniteRechargeHighGoalInner = 1,
|
||||
DeepSpaceDualTarget = 2,
|
||||
CircularPowerCell7in = 3,
|
||||
RapidReactCircularCargoBall = 4,
|
||||
StrongholdHighGoal = 5,
|
||||
Apriltag_200mm = 6,
|
||||
Aruco6in_16h5 = 7,
|
||||
Apriltag6in_16h5 = 8
|
||||
}
|
||||
|
||||
export interface PipelineSettings {
|
||||
offsetRobotOffsetMode: RobotOffsetPointMode
|
||||
streamingFrameDivisor: number
|
||||
offsetDualPointBArea: number
|
||||
contourGroupingMode: number
|
||||
hsvValue: WebsocketNumberPair | [number, number]
|
||||
cameraGain: number
|
||||
cameraBlueGain: number
|
||||
cameraRedGain: number
|
||||
cornerDetectionSideCount: number
|
||||
contourRatio: WebsocketNumberPair | [number, number]
|
||||
contourTargetOffsetPointEdge: number
|
||||
pipelineNickname: string
|
||||
inputImageRotationMode: number
|
||||
contourArea: WebsocketNumberPair | [number, number]
|
||||
solvePNPEnabled: boolean
|
||||
contourFullness: WebsocketNumberPair | [number, number]
|
||||
pipelineIndex: number
|
||||
inputShouldShow: boolean
|
||||
cameraAutoExposure: boolean
|
||||
contourSpecklePercentage: number
|
||||
contourTargetOrientation: number
|
||||
targetModel: TargetModel
|
||||
cornerDetectionUseConvexHulls: boolean
|
||||
outputShouldShow: boolean
|
||||
outputShouldDraw: boolean
|
||||
offsetDualPointA: {x: number, y: number}
|
||||
offsetDualPointB: {x: number, y: number}
|
||||
hsvHue: WebsocketNumberPair | [number, number]
|
||||
ledMode: boolean
|
||||
hueInverted: boolean
|
||||
outputShowMultipleTargets: boolean
|
||||
contourSortMode: number
|
||||
cameraExposure: number
|
||||
offsetSinglePoint: {x: number, y: number}
|
||||
cameraBrightness: number
|
||||
offsetDualPointAArea: number
|
||||
cornerDetectionExactSideCount: boolean
|
||||
cameraVideoModeIndex: number
|
||||
cornerDetectionStrategy: number
|
||||
cornerDetectionAccuracyPercentage: number
|
||||
hsvSaturation: WebsocketNumberPair | [number, number]
|
||||
pipelineType: PipelineType
|
||||
contourIntersection: number
|
||||
offsetRobotOffsetMode: RobotOffsetPointMode;
|
||||
streamingFrameDivisor: number;
|
||||
offsetDualPointBArea: number;
|
||||
contourGroupingMode: number;
|
||||
hsvValue: WebsocketNumberPair | [number, number];
|
||||
cameraGain: number;
|
||||
cameraBlueGain: number;
|
||||
cameraRedGain: number;
|
||||
cornerDetectionSideCount: number;
|
||||
contourRatio: WebsocketNumberPair | [number, number];
|
||||
contourTargetOffsetPointEdge: number;
|
||||
pipelineNickname: string;
|
||||
inputImageRotationMode: number;
|
||||
contourArea: WebsocketNumberPair | [number, number];
|
||||
solvePNPEnabled: boolean;
|
||||
contourFullness: WebsocketNumberPair | [number, number];
|
||||
pipelineIndex: number;
|
||||
inputShouldShow: boolean;
|
||||
cameraAutoExposure: boolean;
|
||||
contourSpecklePercentage: number;
|
||||
contourTargetOrientation: number;
|
||||
targetModel: TargetModel;
|
||||
cornerDetectionUseConvexHulls: boolean;
|
||||
outputShouldShow: boolean;
|
||||
outputShouldDraw: boolean;
|
||||
offsetDualPointA: { x: number; y: number };
|
||||
offsetDualPointB: { x: number; y: number };
|
||||
hsvHue: WebsocketNumberPair | [number, number];
|
||||
ledMode: boolean;
|
||||
hueInverted: boolean;
|
||||
outputShowMultipleTargets: boolean;
|
||||
contourSortMode: number;
|
||||
cameraExposure: number;
|
||||
offsetSinglePoint: { x: number; y: number };
|
||||
cameraBrightness: number;
|
||||
offsetDualPointAArea: number;
|
||||
cornerDetectionExactSideCount: boolean;
|
||||
cameraVideoModeIndex: number;
|
||||
cornerDetectionStrategy: number;
|
||||
cornerDetectionAccuracyPercentage: number;
|
||||
hsvSaturation: WebsocketNumberPair | [number, number];
|
||||
pipelineType: PipelineType;
|
||||
contourIntersection: number;
|
||||
}
|
||||
export type ConfigurablePipelineSettings = Partial<Omit<PipelineSettings, "offsetDualPointAArea" | "cornerDetectionSideCount" | "pipelineNickname" | "pipelineIndex" | "pipelineType" | "cornerDetectionUseConvexHulls" | "offsetDualPointA" | "offsetDualPointB" | "ledMode" | "offsetSinglePoint" | "offsetDualPointBArea" | "cornerDetectionExactSideCount" | "cornerDetectionStrategy">>
|
||||
export type ConfigurablePipelineSettings = Partial<
|
||||
Omit<
|
||||
PipelineSettings,
|
||||
| "offsetDualPointAArea"
|
||||
| "cornerDetectionSideCount"
|
||||
| "pipelineNickname"
|
||||
| "pipelineIndex"
|
||||
| "pipelineType"
|
||||
| "cornerDetectionUseConvexHulls"
|
||||
| "offsetDualPointA"
|
||||
| "offsetDualPointB"
|
||||
| "ledMode"
|
||||
| "offsetSinglePoint"
|
||||
| "offsetDualPointBArea"
|
||||
| "cornerDetectionExactSideCount"
|
||||
| "cornerDetectionStrategy"
|
||||
>
|
||||
>;
|
||||
export const DefaultPipelineSettings: PipelineSettings = {
|
||||
offsetRobotOffsetMode: RobotOffsetPointMode.None,
|
||||
streamingFrameDivisor: 0,
|
||||
offsetDualPointBArea: 0,
|
||||
contourGroupingMode: 0,
|
||||
hsvValue: { first: 50, second: 255 },
|
||||
cameraBlueGain: 20,
|
||||
cameraRedGain: 11,
|
||||
cornerDetectionSideCount: 4,
|
||||
contourRatio: { first: 0, second: 20 },
|
||||
contourTargetOffsetPointEdge: 0,
|
||||
pipelineNickname: "Placeholder Pipeline",
|
||||
inputImageRotationMode: 0,
|
||||
contourArea: { first: 0, second: 100 },
|
||||
solvePNPEnabled: false,
|
||||
contourFullness: { first: 0, second: 100 },
|
||||
pipelineIndex: 0,
|
||||
inputShouldShow: false,
|
||||
cameraAutoExposure: false,
|
||||
contourSpecklePercentage: 5,
|
||||
contourTargetOrientation: 1,
|
||||
cornerDetectionUseConvexHulls: true,
|
||||
outputShouldShow: true,
|
||||
outputShouldDraw: true,
|
||||
offsetDualPointA: { x: 0, y: 0 },
|
||||
offsetDualPointB: { x: 0, y: 0 },
|
||||
hsvHue: { first: 50, second: 180 },
|
||||
hueInverted: false,
|
||||
contourSortMode: 0,
|
||||
offsetSinglePoint: { x: 0, y: 0 },
|
||||
cameraBrightness: 50,
|
||||
offsetDualPointAArea: 0,
|
||||
cornerDetectionExactSideCount: false,
|
||||
cameraVideoModeIndex: 0,
|
||||
cornerDetectionStrategy: 0,
|
||||
cornerDetectionAccuracyPercentage: 10,
|
||||
hsvSaturation: { first: 50, second: 255 },
|
||||
contourIntersection: 1,
|
||||
offsetRobotOffsetMode: RobotOffsetPointMode.None,
|
||||
streamingFrameDivisor: 0,
|
||||
offsetDualPointBArea: 0,
|
||||
contourGroupingMode: 0,
|
||||
hsvValue: { first: 50, second: 255 },
|
||||
cameraBlueGain: 20,
|
||||
cameraRedGain: 11,
|
||||
cornerDetectionSideCount: 4,
|
||||
contourRatio: { first: 0, second: 20 },
|
||||
contourTargetOffsetPointEdge: 0,
|
||||
pipelineNickname: "Placeholder Pipeline",
|
||||
inputImageRotationMode: 0,
|
||||
contourArea: { first: 0, second: 100 },
|
||||
solvePNPEnabled: false,
|
||||
contourFullness: { first: 0, second: 100 },
|
||||
pipelineIndex: 0,
|
||||
inputShouldShow: false,
|
||||
cameraAutoExposure: false,
|
||||
contourSpecklePercentage: 5,
|
||||
contourTargetOrientation: 1,
|
||||
cornerDetectionUseConvexHulls: true,
|
||||
outputShouldShow: true,
|
||||
outputShouldDraw: true,
|
||||
offsetDualPointA: { x: 0, y: 0 },
|
||||
offsetDualPointB: { x: 0, y: 0 },
|
||||
hsvHue: { first: 50, second: 180 },
|
||||
hueInverted: false,
|
||||
contourSortMode: 0,
|
||||
offsetSinglePoint: { x: 0, y: 0 },
|
||||
cameraBrightness: 50,
|
||||
offsetDualPointAArea: 0,
|
||||
cornerDetectionExactSideCount: false,
|
||||
cameraVideoModeIndex: 0,
|
||||
cornerDetectionStrategy: 0,
|
||||
cornerDetectionAccuracyPercentage: 10,
|
||||
hsvSaturation: { first: 50, second: 255 },
|
||||
contourIntersection: 1,
|
||||
|
||||
// These settings will be overridden by different pipeline types
|
||||
cameraGain: -1,
|
||||
targetModel: -1,
|
||||
ledMode: false,
|
||||
outputShowMultipleTargets: false,
|
||||
cameraExposure: -1,
|
||||
pipelineType: -1
|
||||
// These settings will be overridden by different pipeline types
|
||||
cameraGain: -1,
|
||||
targetModel: -1,
|
||||
ledMode: false,
|
||||
outputShowMultipleTargets: false,
|
||||
cameraExposure: -1,
|
||||
pipelineType: -1
|
||||
};
|
||||
|
||||
export interface ReflectivePipelineSettings extends PipelineSettings {
|
||||
pipelineType: PipelineType.Reflective
|
||||
contourFilterRangeY: number
|
||||
contourFilterRangeX: number
|
||||
pipelineType: PipelineType.Reflective;
|
||||
contourFilterRangeY: number;
|
||||
contourFilterRangeX: number;
|
||||
}
|
||||
export type ConfigurableReflectivePipelineSettings = Partial<Omit<ReflectivePipelineSettings, "pipelineType">> & ConfigurablePipelineSettings
|
||||
export type ConfigurableReflectivePipelineSettings = Partial<Omit<ReflectivePipelineSettings, "pipelineType">> &
|
||||
ConfigurablePipelineSettings;
|
||||
export const DefaultReflectivePipelineSettings: ReflectivePipelineSettings = {
|
||||
...DefaultPipelineSettings,
|
||||
cameraGain: 20,
|
||||
targetModel: TargetModel.InfiniteRechargeHighGoalOuter,
|
||||
ledMode: true,
|
||||
outputShowMultipleTargets: false,
|
||||
cameraExposure: 6,
|
||||
pipelineType: PipelineType.Reflective,
|
||||
...DefaultPipelineSettings,
|
||||
cameraGain: 20,
|
||||
targetModel: TargetModel.InfiniteRechargeHighGoalOuter,
|
||||
ledMode: true,
|
||||
outputShowMultipleTargets: false,
|
||||
cameraExposure: 6,
|
||||
pipelineType: PipelineType.Reflective,
|
||||
|
||||
contourFilterRangeY: 2,
|
||||
contourFilterRangeX: 2
|
||||
contourFilterRangeY: 2,
|
||||
contourFilterRangeX: 2
|
||||
};
|
||||
|
||||
export interface ColoredShapePipelineSettings extends PipelineSettings {
|
||||
pipelineType: PipelineType.ColoredShape
|
||||
erode: boolean
|
||||
cameraCalibration: null
|
||||
dilate: boolean
|
||||
circleAccuracy: number
|
||||
contourRadius: WebsocketNumberPair | [number, number]
|
||||
circleDetectThreshold: number
|
||||
accuracyPercentage: number
|
||||
contourShape: number
|
||||
contourPerimeter: WebsocketNumberPair | [number, number]
|
||||
minDist: number
|
||||
maxCannyThresh: number
|
||||
pipelineType: PipelineType.ColoredShape;
|
||||
erode: boolean;
|
||||
cameraCalibration: null;
|
||||
dilate: boolean;
|
||||
circleAccuracy: number;
|
||||
contourRadius: WebsocketNumberPair | [number, number];
|
||||
circleDetectThreshold: number;
|
||||
accuracyPercentage: number;
|
||||
contourShape: number;
|
||||
contourPerimeter: WebsocketNumberPair | [number, number];
|
||||
minDist: number;
|
||||
maxCannyThresh: number;
|
||||
}
|
||||
export type ConfigurableColoredShapePipelineSettings = Partial<Omit<ColoredShapePipelineSettings, "pipelineType" | "erode" | "cameraCalibration" | "dilate" | "minDist" >> & ConfigurablePipelineSettings
|
||||
export type ConfigurableColoredShapePipelineSettings = Partial<
|
||||
Omit<ColoredShapePipelineSettings, "pipelineType" | "erode" | "cameraCalibration" | "dilate" | "minDist">
|
||||
> &
|
||||
ConfigurablePipelineSettings;
|
||||
export const DefaultColoredShapePipelineSettings: ColoredShapePipelineSettings = {
|
||||
...DefaultPipelineSettings,
|
||||
cameraGain: 75,
|
||||
targetModel: TargetModel.InfiniteRechargeHighGoalOuter,
|
||||
ledMode: true,
|
||||
outputShowMultipleTargets: false,
|
||||
cameraExposure: 20,
|
||||
pipelineType: PipelineType.ColoredShape,
|
||||
...DefaultPipelineSettings,
|
||||
cameraGain: 75,
|
||||
targetModel: TargetModel.InfiniteRechargeHighGoalOuter,
|
||||
ledMode: true,
|
||||
outputShowMultipleTargets: false,
|
||||
cameraExposure: 20,
|
||||
pipelineType: PipelineType.ColoredShape,
|
||||
|
||||
erode: false,
|
||||
cameraCalibration: null,
|
||||
dilate: false,
|
||||
circleAccuracy: 20,
|
||||
contourRadius: { first: 0, second: 100 },
|
||||
circleDetectThreshold: 5,
|
||||
accuracyPercentage: 10,
|
||||
contourShape: 2,
|
||||
contourPerimeter: { first: 0, second: 1.7976931348623157e+308 },
|
||||
minDist: 20,
|
||||
maxCannyThresh: 90
|
||||
erode: false,
|
||||
cameraCalibration: null,
|
||||
dilate: false,
|
||||
circleAccuracy: 20,
|
||||
contourRadius: { first: 0, second: 100 },
|
||||
circleDetectThreshold: 5,
|
||||
accuracyPercentage: 10,
|
||||
contourShape: 2,
|
||||
contourPerimeter: { first: 0, second: 1.7976931348623157e308 },
|
||||
minDist: 20,
|
||||
maxCannyThresh: 90
|
||||
};
|
||||
|
||||
export interface AprilTagPipelineSettings extends PipelineSettings {
|
||||
pipelineType: PipelineType.AprilTag
|
||||
hammingDist: number
|
||||
numIterations: number
|
||||
decimate: number
|
||||
blur: number
|
||||
decisionMargin: number
|
||||
refineEdges: boolean
|
||||
debug: boolean
|
||||
threads: number
|
||||
tagFamily: AprilTagFamily
|
||||
pipelineType: PipelineType.AprilTag;
|
||||
hammingDist: number;
|
||||
numIterations: number;
|
||||
decimate: number;
|
||||
blur: number;
|
||||
decisionMargin: number;
|
||||
refineEdges: boolean;
|
||||
debug: boolean;
|
||||
threads: number;
|
||||
tagFamily: AprilTagFamily;
|
||||
}
|
||||
export type ConfigurableAprilTagPipelineSettings = Partial<Omit<AprilTagPipelineSettings, "pipelineType" | "hammingDist" | "debug">> & ConfigurablePipelineSettings
|
||||
export type ConfigurableAprilTagPipelineSettings = Partial<
|
||||
Omit<AprilTagPipelineSettings, "pipelineType" | "hammingDist" | "debug">
|
||||
> &
|
||||
ConfigurablePipelineSettings;
|
||||
export const DefaultAprilTagPipelineSettings: AprilTagPipelineSettings = {
|
||||
...DefaultPipelineSettings,
|
||||
cameraGain: 75,
|
||||
targetModel: TargetModel.Apriltag6in_16h5,
|
||||
ledMode: false,
|
||||
outputShowMultipleTargets: true,
|
||||
cameraExposure: 20,
|
||||
pipelineType: PipelineType.AprilTag,
|
||||
...DefaultPipelineSettings,
|
||||
cameraGain: 75,
|
||||
targetModel: TargetModel.Apriltag6in_16h5,
|
||||
ledMode: false,
|
||||
outputShowMultipleTargets: true,
|
||||
cameraExposure: 20,
|
||||
pipelineType: PipelineType.AprilTag,
|
||||
|
||||
hammingDist: 0,
|
||||
numIterations: 40,
|
||||
decimate: 1,
|
||||
blur: 0,
|
||||
decisionMargin: 35,
|
||||
refineEdges: true,
|
||||
debug: false,
|
||||
threads: 4,
|
||||
tagFamily: AprilTagFamily.Family16h5
|
||||
hammingDist: 0,
|
||||
numIterations: 40,
|
||||
decimate: 1,
|
||||
blur: 0,
|
||||
decisionMargin: 35,
|
||||
refineEdges: true,
|
||||
debug: false,
|
||||
threads: 4,
|
||||
tagFamily: AprilTagFamily.Family16h5
|
||||
};
|
||||
|
||||
export interface ArucoPipelineSettings extends PipelineSettings {
|
||||
pipelineType: PipelineType.Aruco
|
||||
decimate: number
|
||||
threads: number
|
||||
numIterations: number
|
||||
cornerAccuracy: number
|
||||
useAruco3: boolean
|
||||
pipelineType: PipelineType.Aruco;
|
||||
decimate: number;
|
||||
threads: number;
|
||||
numIterations: number;
|
||||
cornerAccuracy: number;
|
||||
useAruco3: boolean;
|
||||
}
|
||||
export type ConfigurableArucoPipelineSettings = Partial<Omit<ArucoPipelineSettings, "pipelineType">> & ConfigurablePipelineSettings
|
||||
export type ConfigurableArucoPipelineSettings = Partial<Omit<ArucoPipelineSettings, "pipelineType">> &
|
||||
ConfigurablePipelineSettings;
|
||||
export const DefaultArucoPipelineSettings: ArucoPipelineSettings = {
|
||||
...DefaultPipelineSettings,
|
||||
outputShowMultipleTargets: true,
|
||||
targetModel: TargetModel.Aruco6in_16h5,
|
||||
cameraExposure: -1,
|
||||
cameraAutoExposure: true,
|
||||
ledMode: false,
|
||||
pipelineType: PipelineType.Aruco,
|
||||
...DefaultPipelineSettings,
|
||||
outputShowMultipleTargets: true,
|
||||
targetModel: TargetModel.Aruco6in_16h5,
|
||||
cameraExposure: -1,
|
||||
cameraAutoExposure: true,
|
||||
ledMode: false,
|
||||
pipelineType: PipelineType.Aruco,
|
||||
|
||||
decimate: 1,
|
||||
threads: 2,
|
||||
numIterations: 100,
|
||||
cornerAccuracy: 25,
|
||||
useAruco3: true
|
||||
decimate: 1,
|
||||
threads: 2,
|
||||
numIterations: 100,
|
||||
cornerAccuracy: 25,
|
||||
useAruco3: true
|
||||
};
|
||||
|
||||
export type ActivePipelineSettings = ReflectivePipelineSettings | ColoredShapePipelineSettings | AprilTagPipelineSettings | ArucoPipelineSettings
|
||||
export type ActiveConfigurablePipelineSettings = ConfigurableReflectivePipelineSettings | ConfigurableColoredShapePipelineSettings | ConfigurableAprilTagPipelineSettings | ConfigurableArucoPipelineSettings
|
||||
export type ActivePipelineSettings =
|
||||
| ReflectivePipelineSettings
|
||||
| ColoredShapePipelineSettings
|
||||
| AprilTagPipelineSettings
|
||||
| ArucoPipelineSettings;
|
||||
export type ActiveConfigurablePipelineSettings =
|
||||
| ConfigurableReflectivePipelineSettings
|
||||
| ConfigurableColoredShapePipelineSettings
|
||||
| ConfigurableAprilTagPipelineSettings
|
||||
| ConfigurableArucoPipelineSettings;
|
||||
|
||||
@@ -1,152 +1,152 @@
|
||||
import { type ActivePipelineSettings, DefaultAprilTagPipelineSettings } from "@/types/PipelineTypes";
|
||||
|
||||
export interface GeneralSettings {
|
||||
version?: string
|
||||
gpuAcceleration?: string
|
||||
hardwareModel?: string
|
||||
hardwarePlatform?: string
|
||||
version?: string;
|
||||
gpuAcceleration?: string;
|
||||
hardwareModel?: string;
|
||||
hardwarePlatform?: string;
|
||||
}
|
||||
|
||||
export interface MetricData {
|
||||
cpuTemp?: string,
|
||||
cpuUtil?: string,
|
||||
cpuMem?: string,
|
||||
gpuMem?: string,
|
||||
ramUtil?: string
|
||||
gpuMemUtil?: string,
|
||||
cpuThr?: string,
|
||||
cpuUptime?: string,
|
||||
diskUtilPct?: string,
|
||||
cpuTemp?: string;
|
||||
cpuUtil?: string;
|
||||
cpuMem?: string;
|
||||
gpuMem?: string;
|
||||
ramUtil?: string;
|
||||
gpuMemUtil?: string;
|
||||
cpuThr?: string;
|
||||
cpuUptime?: string;
|
||||
diskUtilPct?: string;
|
||||
}
|
||||
|
||||
export enum NetworkConnectionType {
|
||||
DHCP = 0,
|
||||
Static = 1
|
||||
DHCP = 0,
|
||||
Static = 1
|
||||
}
|
||||
|
||||
export interface NetworkSettings {
|
||||
ntServerAddress: string
|
||||
connectionType: NetworkConnectionType,
|
||||
staticIp: string,
|
||||
hostname: string,
|
||||
runNTServer: boolean
|
||||
shouldManage: boolean,
|
||||
networkManagerIface?: string,
|
||||
physicalInterface?: string,
|
||||
setStaticCommand?: string,
|
||||
setDHCPcommand?: string
|
||||
ntServerAddress: string;
|
||||
connectionType: NetworkConnectionType;
|
||||
staticIp: string;
|
||||
hostname: string;
|
||||
runNTServer: boolean;
|
||||
shouldManage: boolean;
|
||||
networkManagerIface?: string;
|
||||
physicalInterface?: string;
|
||||
setStaticCommand?: string;
|
||||
setDHCPcommand?: string;
|
||||
}
|
||||
|
||||
export interface LightingSettings {
|
||||
supported: boolean,
|
||||
brightness: number
|
||||
supported: boolean;
|
||||
brightness: number;
|
||||
}
|
||||
|
||||
export enum LogLevel {
|
||||
ERROR=0,
|
||||
WARN=1,
|
||||
INFO=2,
|
||||
DEBUG=3,
|
||||
TRACE=4
|
||||
ERROR = 0,
|
||||
WARN = 1,
|
||||
INFO = 2,
|
||||
DEBUG = 3,
|
||||
TRACE = 4
|
||||
}
|
||||
|
||||
export interface LogMessage {
|
||||
level: LogLevel,
|
||||
message: string
|
||||
level: LogLevel;
|
||||
message: string;
|
||||
}
|
||||
|
||||
export interface Resolution {
|
||||
width: number,
|
||||
height: number
|
||||
width: number;
|
||||
height: number;
|
||||
}
|
||||
|
||||
export interface VideoFormat {
|
||||
resolution: Resolution
|
||||
fps: number,
|
||||
pixelFormat: string,
|
||||
index?: number,
|
||||
diagonalFOV?: number,
|
||||
horizontalFOV?: number,
|
||||
verticalFOV?: number,
|
||||
standardDeviation?: number,
|
||||
mean?: number
|
||||
resolution: Resolution;
|
||||
fps: number;
|
||||
pixelFormat: string;
|
||||
index?: number;
|
||||
diagonalFOV?: number;
|
||||
horizontalFOV?: number;
|
||||
verticalFOV?: number;
|
||||
standardDeviation?: number;
|
||||
mean?: number;
|
||||
}
|
||||
|
||||
export interface CameraCalibrationResult {
|
||||
resolution: Resolution
|
||||
distCoeffs: number[],
|
||||
standardDeviation: number,
|
||||
perViewErrors: number[],
|
||||
intrinsics: number[],
|
||||
resolution: Resolution;
|
||||
distCoeffs: number[];
|
||||
standardDeviation: number;
|
||||
perViewErrors: number[];
|
||||
intrinsics: number[];
|
||||
}
|
||||
|
||||
export interface ConfigurableCameraSettings {
|
||||
fov: number
|
||||
fov: number;
|
||||
}
|
||||
|
||||
export interface CameraSettings {
|
||||
nickname: string
|
||||
nickname: string;
|
||||
|
||||
fov: {
|
||||
value: number,
|
||||
managedByVendor: boolean
|
||||
}
|
||||
stream: {
|
||||
inputPort: number,
|
||||
outputPort: number
|
||||
}
|
||||
fov: {
|
||||
value: number;
|
||||
managedByVendor: boolean;
|
||||
};
|
||||
stream: {
|
||||
inputPort: number;
|
||||
outputPort: number;
|
||||
};
|
||||
|
||||
validVideoFormats: VideoFormat[]
|
||||
completeCalibrations: CameraCalibrationResult[]
|
||||
validVideoFormats: VideoFormat[];
|
||||
completeCalibrations: CameraCalibrationResult[];
|
||||
|
||||
lastPipelineIndex?: number,
|
||||
currentPipelineIndex: number,
|
||||
pipelineNicknames: string[],
|
||||
pipelineSettings: ActivePipelineSettings
|
||||
lastPipelineIndex?: number;
|
||||
currentPipelineIndex: number;
|
||||
pipelineNicknames: string[];
|
||||
pipelineSettings: ActivePipelineSettings;
|
||||
}
|
||||
|
||||
export const PlaceholderCameraSettings: CameraSettings = {
|
||||
nickname: "Placeholder Camera",
|
||||
fov: {
|
||||
value: 70,
|
||||
managedByVendor: true
|
||||
nickname: "Placeholder Camera",
|
||||
fov: {
|
||||
value: 70,
|
||||
managedByVendor: true
|
||||
},
|
||||
stream: {
|
||||
inputPort: 0,
|
||||
outputPort: 0
|
||||
},
|
||||
validVideoFormats: [
|
||||
{
|
||||
resolution: { width: 1920, height: 1080 },
|
||||
fps: 60,
|
||||
pixelFormat: "RGB"
|
||||
},
|
||||
stream: {
|
||||
inputPort: 0,
|
||||
outputPort: 0
|
||||
{
|
||||
resolution: { width: 1280, height: 720 },
|
||||
fps: 60,
|
||||
pixelFormat: "RGB"
|
||||
},
|
||||
validVideoFormats: [
|
||||
{
|
||||
resolution: { width: 1920, height: 1080 },
|
||||
fps: 60,
|
||||
pixelFormat: "RGB"
|
||||
},
|
||||
{
|
||||
resolution: { width: 1280, height: 720 },
|
||||
fps: 60,
|
||||
pixelFormat: "RGB"
|
||||
},
|
||||
{
|
||||
resolution: { width: 640, height: 480 },
|
||||
fps: 30,
|
||||
pixelFormat: "RGB"
|
||||
}
|
||||
],
|
||||
completeCalibrations: [],
|
||||
pipelineNicknames: ["Placeholder Pipeline"],
|
||||
lastPipelineIndex: 0,
|
||||
currentPipelineIndex: 0,
|
||||
pipelineSettings: DefaultAprilTagPipelineSettings
|
||||
{
|
||||
resolution: { width: 640, height: 480 },
|
||||
fps: 30,
|
||||
pixelFormat: "RGB"
|
||||
}
|
||||
],
|
||||
completeCalibrations: [],
|
||||
pipelineNicknames: ["Placeholder Pipeline"],
|
||||
lastPipelineIndex: 0,
|
||||
currentPipelineIndex: 0,
|
||||
pipelineSettings: DefaultAprilTagPipelineSettings
|
||||
};
|
||||
|
||||
export enum CalibrationBoardTypes {
|
||||
Chessboard=0,
|
||||
DotBoard=1
|
||||
Chessboard = 0,
|
||||
DotBoard = 1
|
||||
}
|
||||
|
||||
export enum RobotOffsetType {
|
||||
Clear=0,
|
||||
Single=1,
|
||||
DualFirst=2,
|
||||
DualSecond=3
|
||||
Clear = 0,
|
||||
Single = 1,
|
||||
DualFirst = 2,
|
||||
DualSecond = 3
|
||||
}
|
||||
|
||||
@@ -3,116 +3,122 @@ import type { ActivePipelineSettings } from "@/types/PipelineTypes";
|
||||
import type { LogLevel } from "@/types/SettingTypes";
|
||||
|
||||
export interface WebsocketLogMessage {
|
||||
logMessage: {
|
||||
logLevel: LogLevel,
|
||||
logMessage: string
|
||||
}
|
||||
logMessage: {
|
||||
logLevel: LogLevel;
|
||||
logMessage: string;
|
||||
};
|
||||
}
|
||||
export interface WebsocketSettingsUpdate {
|
||||
general: Required<GeneralSettings>,
|
||||
lighting: Required<LightingSettings>,
|
||||
networkSettings: NetworkSettings
|
||||
general: Required<GeneralSettings>;
|
||||
lighting: Required<LightingSettings>;
|
||||
networkSettings: NetworkSettings;
|
||||
}
|
||||
|
||||
export interface WebsocketNumberPair {
|
||||
first: number,
|
||||
second: number
|
||||
first: number;
|
||||
second: number;
|
||||
}
|
||||
|
||||
export interface WebsocketCompleteCalib {
|
||||
distCoeffs: number[],
|
||||
height: number,
|
||||
width: number,
|
||||
standardDeviation: number,
|
||||
perViewErrors: number[],
|
||||
intrinsics: number[]
|
||||
distCoeffs: number[];
|
||||
height: number;
|
||||
width: number;
|
||||
standardDeviation: number;
|
||||
perViewErrors: number[];
|
||||
intrinsics: number[];
|
||||
}
|
||||
|
||||
export type WebsocketVideoFormat = Record<number, {
|
||||
fps: number,
|
||||
height: number,
|
||||
width: number,
|
||||
pixelFormat: string,
|
||||
index?: number,
|
||||
diagonalFOV?: number,
|
||||
horizontalFOV?: number,
|
||||
verticalFOV?: number,
|
||||
standardDeviation?: number,
|
||||
mean?: number
|
||||
}>
|
||||
export type WebsocketVideoFormat = Record<
|
||||
number,
|
||||
{
|
||||
fps: number;
|
||||
height: number;
|
||||
width: number;
|
||||
pixelFormat: string;
|
||||
index?: number;
|
||||
diagonalFOV?: number;
|
||||
horizontalFOV?: number;
|
||||
verticalFOV?: number;
|
||||
standardDeviation?: number;
|
||||
mean?: number;
|
||||
}
|
||||
>;
|
||||
|
||||
export interface WebsocketCameraSettingsUpdate {
|
||||
calibrations: WebsocketCompleteCalib[],
|
||||
currentPipelineIndex: number,
|
||||
currentPipelineSettings: ActivePipelineSettings,
|
||||
fov: number,
|
||||
inputStreamPort: number,
|
||||
isFovConfigurable: boolean,
|
||||
nickname: string,
|
||||
outputStreamPort: number,
|
||||
pipelineNicknames: string[],
|
||||
videoFormatList: WebsocketVideoFormat
|
||||
calibrations: WebsocketCompleteCalib[];
|
||||
currentPipelineIndex: number;
|
||||
currentPipelineSettings: ActivePipelineSettings;
|
||||
fov: number;
|
||||
inputStreamPort: number;
|
||||
isFovConfigurable: boolean;
|
||||
nickname: string;
|
||||
outputStreamPort: number;
|
||||
pipelineNicknames: string[];
|
||||
videoFormatList: WebsocketVideoFormat;
|
||||
}
|
||||
export interface WebsocketNTUpdate {
|
||||
connected: boolean,
|
||||
address?: string,
|
||||
clients?: number
|
||||
connected: boolean;
|
||||
address?: string;
|
||||
clients?: number;
|
||||
}
|
||||
export type WebsocketPipelineResultUpdate = Record<number, {
|
||||
fps: number,
|
||||
latency: number,
|
||||
export type WebsocketPipelineResultUpdate = Record<
|
||||
number,
|
||||
{
|
||||
fps: number;
|
||||
latency: number;
|
||||
targets: {
|
||||
yaw: number,
|
||||
pitch: number,
|
||||
skew: number,
|
||||
area: number,
|
||||
ambiguity: number,
|
||||
fiducialId: number,
|
||||
pose: {
|
||||
"angle_z": number,
|
||||
"qw": number,
|
||||
"qx": number,
|
||||
"x": number,
|
||||
"qy": number,
|
||||
"y": number,
|
||||
"qz": number,
|
||||
"z": number
|
||||
},
|
||||
}[]
|
||||
}>
|
||||
yaw: number;
|
||||
pitch: number;
|
||||
skew: number;
|
||||
area: number;
|
||||
ambiguity: number;
|
||||
fiducialId: number;
|
||||
pose: {
|
||||
angle_z: number;
|
||||
qw: number;
|
||||
qx: number;
|
||||
x: number;
|
||||
qy: number;
|
||||
y: number;
|
||||
qz: number;
|
||||
z: number;
|
||||
};
|
||||
}[];
|
||||
}
|
||||
>;
|
||||
|
||||
export interface WebsocketCalibrationData {
|
||||
"patternWidth": number,
|
||||
"boardType": number,
|
||||
"hasEnough": boolean,
|
||||
"count": number,
|
||||
"minCount": number,
|
||||
"videoModeIndex": number,
|
||||
"patternHeight": number,
|
||||
"squareSizeIn": number
|
||||
patternWidth: number;
|
||||
boardType: number;
|
||||
hasEnough: boolean;
|
||||
count: number;
|
||||
minCount: number;
|
||||
videoModeIndex: number;
|
||||
patternHeight: number;
|
||||
squareSizeIn: number;
|
||||
}
|
||||
|
||||
export interface IncomingWebsocketData {
|
||||
log?: WebsocketLogMessage,
|
||||
settings?: WebsocketSettingsUpdate,
|
||||
cameraSettings?: WebsocketCameraSettingsUpdate[],
|
||||
ntConnectionInfo?: WebsocketNTUpdate,
|
||||
metrics?: Required<MetricData>,
|
||||
updatePipelineResult?: WebsocketPipelineResultUpdate,
|
||||
networkInfo?: {
|
||||
possibleRios: string[],
|
||||
deviceips: string[]
|
||||
}
|
||||
mutatePipelineSettings?: Partial<ActivePipelineSettings>,
|
||||
cameraIndex?: number // Sent when mutating pipeline settings to check against currently active
|
||||
calibrationData?: WebsocketCalibrationData,
|
||||
log?: WebsocketLogMessage;
|
||||
settings?: WebsocketSettingsUpdate;
|
||||
cameraSettings?: WebsocketCameraSettingsUpdate[];
|
||||
ntConnectionInfo?: WebsocketNTUpdate;
|
||||
metrics?: Required<MetricData>;
|
||||
updatePipelineResult?: WebsocketPipelineResultUpdate;
|
||||
networkInfo?: {
|
||||
possibleRios: string[];
|
||||
deviceips: string[];
|
||||
};
|
||||
mutatePipelineSettings?: Partial<ActivePipelineSettings>;
|
||||
cameraIndex?: number; // Sent when mutating pipeline settings to check against currently active
|
||||
calibrationData?: WebsocketCalibrationData;
|
||||
}
|
||||
|
||||
export enum WebsocketPipelineType {
|
||||
Calib3d=-2,
|
||||
DriverMode=-1,
|
||||
Reflective=0,
|
||||
ColoredShape=1,
|
||||
AprilTag=2,
|
||||
Aruco=3
|
||||
Calib3d = -2,
|
||||
DriverMode = -1,
|
||||
Reflective = 0,
|
||||
ColoredShape = 1,
|
||||
AprilTag = 2,
|
||||
Aruco = 3
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user