/* eslint-disable */ import { Vec2, SE3Pose } from "../geometry"; import _m0 from "protobufjs/minimal"; export const protobufPackage = "bosdyn.api.spot_cam"; export interface Camera { /** Identifier for the camera. */ name: string; /** Resolution of the sensor, where x = width and y = height. */ resolution: Vec2 | undefined; /** * The frame name for the parent frame of this camera. This frame will show up in the FrameTreeSnapshot * grabbed from the payload registration service. */ baseFrameName: string; /** * 'base_tfrom_sensor' defines the transform from the specific camera to the named base from. * This is deprecated in favor of 'base_tform_sensor' which follows the intended naming convention * and FrameTree directionality convention of the Spot system as defined in geometry.proto. * * @deprecated */ baseTfromSensor: SE3Pose | undefined; /** The transform from the named base frame to this specific camera */ baseTformSensor: SE3Pose | undefined; /** Physical cameras */ pinhole: Camera_PinholeIntrinsics | undefined; /** Only synthetic spherical panoramas */ spherical: Camera_SphericalLimits | undefined; } export interface Camera_PinholeIntrinsics { /** Focal_length in pixels */ focalLength: Vec2 | undefined; /** Center point in pixels */ centerPoint: Vec2 | undefined; /** * The following 4 parameters are radial distortion coefficeints to 4 orders. * See: https://en.wikipedia.org/wiki/Distortion_(optics)#Software_correction * If all 4 of these values are 0, do not apply any correction. */ k1: number; k2: number; k3: number; k4: number; } /** * Spherical limits are the minimum and maximum angle of the image. * IE the upper left pixel is at min_angle.x, min_angle.y * and the lower right pixel is at max_angle.x, max_angle.y * for a full-FOV image this will be (-180, 90) and (180, -90) */ export interface Camera_SphericalLimits { minAngle: Vec2 | undefined; maxAngle: Vec2 | undefined; } function createBaseCamera(): Camera { return { name: "", resolution: undefined, baseFrameName: "", baseTfromSensor: undefined, baseTformSensor: undefined, pinhole: undefined, spherical: undefined, }; } export const Camera = { encode( message: Camera, writer: _m0.Writer = _m0.Writer.create() ): _m0.Writer { if (message.name !== "") { writer.uint32(10).string(message.name); } if (message.resolution !== undefined) { Vec2.encode(message.resolution, writer.uint32(18).fork()).ldelim(); } if (message.baseFrameName !== "") { writer.uint32(26).string(message.baseFrameName); } if (message.baseTfromSensor !== undefined) { SE3Pose.encode( message.baseTfromSensor, writer.uint32(34).fork() ).ldelim(); } if (message.baseTformSensor !== undefined) { SE3Pose.encode( message.baseTformSensor, writer.uint32(58).fork() ).ldelim(); } if (message.pinhole !== undefined) { Camera_PinholeIntrinsics.encode( message.pinhole, writer.uint32(42).fork() ).ldelim(); } if (message.spherical !== undefined) { Camera_SphericalLimits.encode( message.spherical, writer.uint32(50).fork() ).ldelim(); } return writer; }, decode(input: _m0.Reader | Uint8Array, length?: number): Camera { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseCamera(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: message.name = reader.string(); break; case 2: message.resolution = Vec2.decode(reader, reader.uint32()); break; case 3: message.baseFrameName = reader.string(); break; case 4: message.baseTfromSensor = SE3Pose.decode(reader, reader.uint32()); break; case 7: message.baseTformSensor = SE3Pose.decode(reader, reader.uint32()); break; case 5: message.pinhole = Camera_PinholeIntrinsics.decode( reader, reader.uint32() ); break; case 6: message.spherical = Camera_SphericalLimits.decode( reader, reader.uint32() ); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): Camera { return { name: isSet(object.name) ? String(object.name) : "", resolution: isSet(object.resolution) ? Vec2.fromJSON(object.resolution) : undefined, baseFrameName: isSet(object.baseFrameName) ? String(object.baseFrameName) : "", baseTfromSensor: isSet(object.baseTfromSensor) ? SE3Pose.fromJSON(object.baseTfromSensor) : undefined, baseTformSensor: isSet(object.baseTformSensor) ? SE3Pose.fromJSON(object.baseTformSensor) : undefined, pinhole: isSet(object.pinhole) ? Camera_PinholeIntrinsics.fromJSON(object.pinhole) : undefined, spherical: isSet(object.spherical) ? Camera_SphericalLimits.fromJSON(object.spherical) : undefined, }; }, toJSON(message: Camera): unknown { const obj: any = {}; message.name !== undefined && (obj.name = message.name); message.resolution !== undefined && (obj.resolution = message.resolution ? Vec2.toJSON(message.resolution) : undefined); message.baseFrameName !== undefined && (obj.baseFrameName = message.baseFrameName); message.baseTfromSensor !== undefined && (obj.baseTfromSensor = message.baseTfromSensor ? SE3Pose.toJSON(message.baseTfromSensor) : undefined); message.baseTformSensor !== undefined && (obj.baseTformSensor = message.baseTformSensor ? SE3Pose.toJSON(message.baseTformSensor) : undefined); message.pinhole !== undefined && (obj.pinhole = message.pinhole ? Camera_PinholeIntrinsics.toJSON(message.pinhole) : undefined); message.spherical !== undefined && (obj.spherical = message.spherical ? Camera_SphericalLimits.toJSON(message.spherical) : undefined); return obj; }, fromPartial, I>>(object: I): Camera { const message = createBaseCamera(); message.name = object.name ?? ""; message.resolution = object.resolution !== undefined && object.resolution !== null ? Vec2.fromPartial(object.resolution) : undefined; message.baseFrameName = object.baseFrameName ?? ""; message.baseTfromSensor = object.baseTfromSensor !== undefined && object.baseTfromSensor !== null ? SE3Pose.fromPartial(object.baseTfromSensor) : undefined; message.baseTformSensor = object.baseTformSensor !== undefined && object.baseTformSensor !== null ? SE3Pose.fromPartial(object.baseTformSensor) : undefined; message.pinhole = object.pinhole !== undefined && object.pinhole !== null ? Camera_PinholeIntrinsics.fromPartial(object.pinhole) : undefined; message.spherical = object.spherical !== undefined && object.spherical !== null ? Camera_SphericalLimits.fromPartial(object.spherical) : undefined; return message; }, }; function createBaseCamera_PinholeIntrinsics(): Camera_PinholeIntrinsics { return { focalLength: undefined, centerPoint: undefined, k1: 0, k2: 0, k3: 0, k4: 0, }; } export const Camera_PinholeIntrinsics = { encode( message: Camera_PinholeIntrinsics, writer: _m0.Writer = _m0.Writer.create() ): _m0.Writer { if (message.focalLength !== undefined) { Vec2.encode(message.focalLength, writer.uint32(10).fork()).ldelim(); } if (message.centerPoint !== undefined) { Vec2.encode(message.centerPoint, writer.uint32(18).fork()).ldelim(); } if (message.k1 !== 0) { writer.uint32(29).float(message.k1); } if (message.k2 !== 0) { writer.uint32(37).float(message.k2); } if (message.k3 !== 0) { writer.uint32(45).float(message.k3); } if (message.k4 !== 0) { writer.uint32(53).float(message.k4); } return writer; }, decode( input: _m0.Reader | Uint8Array, length?: number ): Camera_PinholeIntrinsics { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseCamera_PinholeIntrinsics(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: message.focalLength = Vec2.decode(reader, reader.uint32()); break; case 2: message.centerPoint = Vec2.decode(reader, reader.uint32()); break; case 3: message.k1 = reader.float(); break; case 4: message.k2 = reader.float(); break; case 5: message.k3 = reader.float(); break; case 6: message.k4 = reader.float(); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): Camera_PinholeIntrinsics { return { focalLength: isSet(object.focalLength) ? Vec2.fromJSON(object.focalLength) : undefined, centerPoint: isSet(object.centerPoint) ? Vec2.fromJSON(object.centerPoint) : undefined, k1: isSet(object.k1) ? Number(object.k1) : 0, k2: isSet(object.k2) ? Number(object.k2) : 0, k3: isSet(object.k3) ? Number(object.k3) : 0, k4: isSet(object.k4) ? Number(object.k4) : 0, }; }, toJSON(message: Camera_PinholeIntrinsics): unknown { const obj: any = {}; message.focalLength !== undefined && (obj.focalLength = message.focalLength ? Vec2.toJSON(message.focalLength) : undefined); message.centerPoint !== undefined && (obj.centerPoint = message.centerPoint ? Vec2.toJSON(message.centerPoint) : undefined); message.k1 !== undefined && (obj.k1 = message.k1); message.k2 !== undefined && (obj.k2 = message.k2); message.k3 !== undefined && (obj.k3 = message.k3); message.k4 !== undefined && (obj.k4 = message.k4); return obj; }, fromPartial, I>>( object: I ): Camera_PinholeIntrinsics { const message = createBaseCamera_PinholeIntrinsics(); message.focalLength = object.focalLength !== undefined && object.focalLength !== null ? Vec2.fromPartial(object.focalLength) : undefined; message.centerPoint = object.centerPoint !== undefined && object.centerPoint !== null ? Vec2.fromPartial(object.centerPoint) : undefined; message.k1 = object.k1 ?? 0; message.k2 = object.k2 ?? 0; message.k3 = object.k3 ?? 0; message.k4 = object.k4 ?? 0; return message; }, }; function createBaseCamera_SphericalLimits(): Camera_SphericalLimits { return { minAngle: undefined, maxAngle: undefined }; } export const Camera_SphericalLimits = { encode( message: Camera_SphericalLimits, writer: _m0.Writer = _m0.Writer.create() ): _m0.Writer { if (message.minAngle !== undefined) { Vec2.encode(message.minAngle, writer.uint32(10).fork()).ldelim(); } if (message.maxAngle !== undefined) { Vec2.encode(message.maxAngle, writer.uint32(18).fork()).ldelim(); } return writer; }, decode( input: _m0.Reader | Uint8Array, length?: number ): Camera_SphericalLimits { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); let end = length === undefined ? reader.len : reader.pos + length; const message = createBaseCamera_SphericalLimits(); while (reader.pos < end) { const tag = reader.uint32(); switch (tag >>> 3) { case 1: message.minAngle = Vec2.decode(reader, reader.uint32()); break; case 2: message.maxAngle = Vec2.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); break; } } return message; }, fromJSON(object: any): Camera_SphericalLimits { return { minAngle: isSet(object.minAngle) ? Vec2.fromJSON(object.minAngle) : undefined, maxAngle: isSet(object.maxAngle) ? Vec2.fromJSON(object.maxAngle) : undefined, }; }, toJSON(message: Camera_SphericalLimits): unknown { const obj: any = {}; message.minAngle !== undefined && (obj.minAngle = message.minAngle ? Vec2.toJSON(message.minAngle) : undefined); message.maxAngle !== undefined && (obj.maxAngle = message.maxAngle ? Vec2.toJSON(message.maxAngle) : undefined); return obj; }, fromPartial, I>>( object: I ): Camera_SphericalLimits { const message = createBaseCamera_SphericalLimits(); message.minAngle = object.minAngle !== undefined && object.minAngle !== null ? Vec2.fromPartial(object.minAngle) : undefined; message.maxAngle = object.maxAngle !== undefined && object.maxAngle !== null ? Vec2.fromPartial(object.maxAngle) : undefined; return message; }, }; type Builtin = | Date | Function | Uint8Array | string | number | boolean | undefined; export type DeepPartial = T extends Builtin ? T : T extends Array ? Array> : T extends ReadonlyArray ? ReadonlyArray> : T extends {} ? { [K in keyof T]?: DeepPartial } : Partial; type KeysOfUnion = T extends T ? keyof T : never; export type Exact = P extends Builtin ? P : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never; }; function isSet(value: any): boolean { return value !== null && value !== undefined; }