UNPKG

spot-sdk-ts

Version:

TypeScript bindings based on protobufs (proto3) provided by Boston Dynamics

1,190 lines (1,149 loc) 211 kB
/* eslint-disable */ import { SE2TrajectoryCommand_Feedback_BodyMovementStatus, sE2TrajectoryCommand_Feedback_BodyMovementStatusFromJSON, sE2TrajectoryCommand_Feedback_BodyMovementStatusToJSON, } from "../basic_command"; import { LicenseInfo_Status, licenseInfo_StatusFromJSON, licenseInfo_StatusToJSON, } from "../license"; import { Timestamp } from "../../../google/protobuf/timestamp"; import { RequestHeader, ResponseHeader } from "../header"; import { Localization, Route } from "./nav"; import { SE3Pose, SE2VelocityLimit, SE2Pose, Vec3 } from "../geometry"; import { LeaseUseResult, Lease } from "../lease"; import { RobotImpairedState, KinematicState } from "../robot_state"; import { Edge_Id, WaypointSnapshot, Graph } from "./map"; import { DataChunk } from "../data_chunk"; import _m0 from "protobufjs/minimal"; export const protobufPackage = "bosdyn.api.graph_nav"; /** * The SetLocalization request is used to initialize or reset the localization of GraphNav * to a map. A localization consists of a waypoint ID, and a pose of the robot relative to that waypoint. * GraphNav uses the localization to decide how to navigate through a map. * The SetLocalizationRequest contains parameters to help find a correct localization. For example, * AprilTags (fiducials) may be used to set the localization, or the caller can provide an explicit * guess of the localization. * Once the SetLocalizationRequest completes, the current localization to the map * will be modified, and can be retrieved using a GetLocalizationStateRequest. */ export interface SetLocalizationRequest { /** Common request header. */ header: RequestHeader | undefined; /** Operator-supplied guess at localization. */ initialGuess: Localization | undefined; /** * Robot pose when the initial_guess was made. * This overcomes the race that occurs when the client is trying to initialize a moving robot. * GraphNav will use its local ko_tform_body and this ko_tform_body to update the initial * localization guess, if necessary. */ koTformBody: SE3Pose | undefined; /** * The max distance [meters] is how far away the robot is allowed to localize from the position supplied * in the initial guess. If not specified, the offset is used directly. Otherwise it searches a neighborhood * of the given size. */ maxDistance: number; /** * The max yaw [radians] is how different the localized yaw is allowed to be from the supplied yaw * in the initial guess. If not specified, the offset is used directly. Otherwise it searches a neighborhood * of the given size. */ maxYaw: number; /** Tells the initializer whether to use fiducials, and how to use them. */ fiducialInit: SetLocalizationRequest_FiducialInit; /** * If using FIDUCIAL_INIT_SPECIFIC, this is the specific fiducial ID to use for initialization. * If no detection of this fiducial exists, the service will return STATUS_NO_MATCHING_FIDUCIAL. * If detections exist, but are low quality, STATUS_FIDUCIAL_TOO_FAR_AWAY, FIDUCIAL_TOO_OLD, or FIDUCIAL_POSE_UNCERTAIN will be returned. */ useFiducialId: number; /** * If true, and we are using fiducials during initialization, will run ICP after the fiducial * was used for an initial guess. */ refineFiducialResultWithIcp: boolean; /** If true, consider how nearby localizations appear (like turned 180). */ doAmbiguityCheck: boolean; /** * If using FIDUCIAL_INIT_SPECIFIC and this is true, the initializer will only consider * fiducial detections from the target waypoint (from initial_guess). Otherwise, if the * target waypoint does not contain a good measurement of the desired fiducial, nearby waypoints * may be used to infer the robot's location. */ restrictFiducialDetectionsToTargetWaypoint: boolean; } export enum SetLocalizationRequest_FiducialInit { /** FIDUCIAL_INIT_UNKNOWN - It is a programming error to use this one. */ FIDUCIAL_INIT_UNKNOWN = 0, /** FIDUCIAL_INIT_NO_FIDUCIAL - Ignore fiducials during initialization. */ FIDUCIAL_INIT_NO_FIDUCIAL = 1, /** FIDUCIAL_INIT_NEAREST - Localize to the nearest fiducial in any waypoint. */ FIDUCIAL_INIT_NEAREST = 2, /** FIDUCIAL_INIT_NEAREST_AT_TARGET - Localize to nearest fiducial at the target waypoint (from initial_guess). */ FIDUCIAL_INIT_NEAREST_AT_TARGET = 3, /** FIDUCIAL_INIT_SPECIFIC - Localize to the given fiducial at the target waypoint (from initial_guess) if it exists, or any waypoint otherwise. */ FIDUCIAL_INIT_SPECIFIC = 4, UNRECOGNIZED = -1, } export function setLocalizationRequest_FiducialInitFromJSON( object: any ): SetLocalizationRequest_FiducialInit { switch (object) { case 0: case "FIDUCIAL_INIT_UNKNOWN": return SetLocalizationRequest_FiducialInit.FIDUCIAL_INIT_UNKNOWN; case 1: case "FIDUCIAL_INIT_NO_FIDUCIAL": return SetLocalizationRequest_FiducialInit.FIDUCIAL_INIT_NO_FIDUCIAL; case 2: case "FIDUCIAL_INIT_NEAREST": return SetLocalizationRequest_FiducialInit.FIDUCIAL_INIT_NEAREST; case 3: case "FIDUCIAL_INIT_NEAREST_AT_TARGET": return SetLocalizationRequest_FiducialInit.FIDUCIAL_INIT_NEAREST_AT_TARGET; case 4: case "FIDUCIAL_INIT_SPECIFIC": return SetLocalizationRequest_FiducialInit.FIDUCIAL_INIT_SPECIFIC; case -1: case "UNRECOGNIZED": default: return SetLocalizationRequest_FiducialInit.UNRECOGNIZED; } } export function setLocalizationRequest_FiducialInitToJSON( object: SetLocalizationRequest_FiducialInit ): string { switch (object) { case SetLocalizationRequest_FiducialInit.FIDUCIAL_INIT_UNKNOWN: return "FIDUCIAL_INIT_UNKNOWN"; case SetLocalizationRequest_FiducialInit.FIDUCIAL_INIT_NO_FIDUCIAL: return "FIDUCIAL_INIT_NO_FIDUCIAL"; case SetLocalizationRequest_FiducialInit.FIDUCIAL_INIT_NEAREST: return "FIDUCIAL_INIT_NEAREST"; case SetLocalizationRequest_FiducialInit.FIDUCIAL_INIT_NEAREST_AT_TARGET: return "FIDUCIAL_INIT_NEAREST_AT_TARGET"; case SetLocalizationRequest_FiducialInit.FIDUCIAL_INIT_SPECIFIC: return "FIDUCIAL_INIT_SPECIFIC"; case SetLocalizationRequest_FiducialInit.UNRECOGNIZED: default: return "UNRECOGNIZED"; } } /** * Info on whether the robot's current sensor setup is compatible with the recorded data * in the map. */ export interface SensorCompatibilityStatus { /** If true, the loaded map has LIDAR data in it. */ mapHasLidarData: boolean; /** If true, the robot is currently configured to use LIDAR data. */ robotConfiguredForLidar: boolean; } /** The SetLocalization response message contains the resulting localization to the map. */ export interface SetLocalizationResponse { /** Common response header. */ header: ResponseHeader | undefined; /** Result of using the lease. */ leaseUseResult: LeaseUseResult | undefined; /** Return status for the request. */ status: SetLocalizationResponse_Status; /** If set, describes the reason the status is not OK. */ errorReport: string; /** Result of localization. */ localization: Localization | undefined; /** Alternative information if the localization is ambiguous. */ suspectedAmbiguity: SetLocalizationResponse_SuspectedAmbiguity | undefined; /** If the status is ROBOT_IMPAIRED, this is why the robot is impaired. */ impairedState: RobotImpairedState | undefined; /** * This status determines whether the robot has compatible sensors for the * map that was recorded. Note that if sensors aren't working, STATUS_IMPARIED * will be returned, rather than STATUS_INCOMPATIBLE_SENSORS. */ sensorStatus: SensorCompatibilityStatus | undefined; } export enum SetLocalizationResponse_Status { /** STATUS_UNKNOWN - The status is unknown/unset. */ STATUS_UNKNOWN = 0, /** STATUS_OK - Localization success. */ STATUS_OK = 1, /** STATUS_ROBOT_IMPAIRED - Robot is experiencing a condition that prevents localization. */ STATUS_ROBOT_IMPAIRED = 2, /** * STATUS_UNKNOWN_WAYPOINT - The given waypoint is unknown by the system. * This could be due to a client error, or because the graph was changed out from under the * client. */ STATUS_UNKNOWN_WAYPOINT = 3, /** STATUS_ABORTED - Localization was aborted, likely because of a new request. */ STATUS_ABORTED = 4, /** * STATUS_FAILED - Failed to localize for some other reason; see the error_report for details. * This is often because the initial guess was incorrect. */ STATUS_FAILED = 5, /** * STATUS_FIDUCIAL_TOO_FAR_AWAY - Failed to localize because the fiducial requested by 'use_fiducial_id' was too far away from * the robot. */ STATUS_FIDUCIAL_TOO_FAR_AWAY = 6, /** * STATUS_FIDUCIAL_TOO_OLD - Failed to localize because the fiducial requested by 'use_fiducial_id' had a detection time that was too * far in the past. */ STATUS_FIDUCIAL_TOO_OLD = 7, /** * STATUS_NO_MATCHING_FIDUCIAL - Failed to localize because the fiducial requested by 'use_fiducial_id' did not exist in the map at * the required location. */ STATUS_NO_MATCHING_FIDUCIAL = 8, /** * STATUS_FIDUCIAL_POSE_UNCERTAIN - Failed to localize because the fiducial requested by 'use_fiducial_id' had an unreliable * pose estimation, either in the current detection of that fiducial, or in detections that * were saved in the map. Note that when using FIDUCIAL_INIT_SPECIFIC, fiducial detections at * the target waypoint will be used so long as they are not uncertain -- otherwise, detections * at adjacent waypoints may be used. If there exists no uncertain detection of the fiducial * near the target waypoint in the map, the service returns this status. */ STATUS_FIDUCIAL_POSE_UNCERTAIN = 9, /** * STATUS_INCOMPATIBLE_SENSORS - The localization could not be set, because the map was recorded using a different sensor * setup than the robot currently has onboard. See SensorStatus for more details. */ STATUS_INCOMPATIBLE_SENSORS = 10, UNRECOGNIZED = -1, } export function setLocalizationResponse_StatusFromJSON( object: any ): SetLocalizationResponse_Status { switch (object) { case 0: case "STATUS_UNKNOWN": return SetLocalizationResponse_Status.STATUS_UNKNOWN; case 1: case "STATUS_OK": return SetLocalizationResponse_Status.STATUS_OK; case 2: case "STATUS_ROBOT_IMPAIRED": return SetLocalizationResponse_Status.STATUS_ROBOT_IMPAIRED; case 3: case "STATUS_UNKNOWN_WAYPOINT": return SetLocalizationResponse_Status.STATUS_UNKNOWN_WAYPOINT; case 4: case "STATUS_ABORTED": return SetLocalizationResponse_Status.STATUS_ABORTED; case 5: case "STATUS_FAILED": return SetLocalizationResponse_Status.STATUS_FAILED; case 6: case "STATUS_FIDUCIAL_TOO_FAR_AWAY": return SetLocalizationResponse_Status.STATUS_FIDUCIAL_TOO_FAR_AWAY; case 7: case "STATUS_FIDUCIAL_TOO_OLD": return SetLocalizationResponse_Status.STATUS_FIDUCIAL_TOO_OLD; case 8: case "STATUS_NO_MATCHING_FIDUCIAL": return SetLocalizationResponse_Status.STATUS_NO_MATCHING_FIDUCIAL; case 9: case "STATUS_FIDUCIAL_POSE_UNCERTAIN": return SetLocalizationResponse_Status.STATUS_FIDUCIAL_POSE_UNCERTAIN; case 10: case "STATUS_INCOMPATIBLE_SENSORS": return SetLocalizationResponse_Status.STATUS_INCOMPATIBLE_SENSORS; case -1: case "UNRECOGNIZED": default: return SetLocalizationResponse_Status.UNRECOGNIZED; } } export function setLocalizationResponse_StatusToJSON( object: SetLocalizationResponse_Status ): string { switch (object) { case SetLocalizationResponse_Status.STATUS_UNKNOWN: return "STATUS_UNKNOWN"; case SetLocalizationResponse_Status.STATUS_OK: return "STATUS_OK"; case SetLocalizationResponse_Status.STATUS_ROBOT_IMPAIRED: return "STATUS_ROBOT_IMPAIRED"; case SetLocalizationResponse_Status.STATUS_UNKNOWN_WAYPOINT: return "STATUS_UNKNOWN_WAYPOINT"; case SetLocalizationResponse_Status.STATUS_ABORTED: return "STATUS_ABORTED"; case SetLocalizationResponse_Status.STATUS_FAILED: return "STATUS_FAILED"; case SetLocalizationResponse_Status.STATUS_FIDUCIAL_TOO_FAR_AWAY: return "STATUS_FIDUCIAL_TOO_FAR_AWAY"; case SetLocalizationResponse_Status.STATUS_FIDUCIAL_TOO_OLD: return "STATUS_FIDUCIAL_TOO_OLD"; case SetLocalizationResponse_Status.STATUS_NO_MATCHING_FIDUCIAL: return "STATUS_NO_MATCHING_FIDUCIAL"; case SetLocalizationResponse_Status.STATUS_FIDUCIAL_POSE_UNCERTAIN: return "STATUS_FIDUCIAL_POSE_UNCERTAIN"; case SetLocalizationResponse_Status.STATUS_INCOMPATIBLE_SENSORS: return "STATUS_INCOMPATIBLE_SENSORS"; case SetLocalizationResponse_Status.UNRECOGNIZED: default: return "UNRECOGNIZED"; } } export interface SetLocalizationResponse_SuspectedAmbiguity { /** * Example of a potentially ambiguous localization near the * result of the initialization. */ alternateRobotTformWaypoint: SE3Pose | undefined; } export interface RouteGenParams {} /** Parameters describing how to travel along a route. */ export interface TravelParams { /** * Threshold for the maximum distance [meters] that defines when we have reached * the final waypoint. */ maxDistance: number; /** * Threshold for the maximum yaw [radians] that defines when we have reached * the final waypoint (ignored if ignore_final_yaw is set to true). */ maxYaw: number; /** * Speed the robot should use. * Omit to let the robot choose. */ velocityLimit: SE2VelocityLimit | undefined; /** * If true, the robot will only try to achieve * the final translation of the route. Otherwise, * it will attempt to achieve the yaw as well. */ ignoreFinalYaw: boolean; featureQualityTolerance: TravelParams_FeatureQualityTolerance; /** Disable directed exploration to skip blocked portions of route */ disableDirectedExploration: boolean; /** Disable alternate-route-finding; overrides the per-edge setting in the map. */ disableAlternateRouteFinding: boolean; } /** Indicates whether robot will navigate through areas with poor quality features */ export enum TravelParams_FeatureQualityTolerance { /** TOLERANCE_UNKNOWN - Unknown value */ TOLERANCE_UNKNOWN = 0, /** TOLERANCE_DEFAULT - Navigate through default number of waypoints with poor quality features */ TOLERANCE_DEFAULT = 1, /** TOLERANCE_IGNORE_POOR_FEATURE_QUALITY - Navigate through unlimited number of waypoints with poor quality features */ TOLERANCE_IGNORE_POOR_FEATURE_QUALITY = 2, UNRECOGNIZED = -1, } export function travelParams_FeatureQualityToleranceFromJSON( object: any ): TravelParams_FeatureQualityTolerance { switch (object) { case 0: case "TOLERANCE_UNKNOWN": return TravelParams_FeatureQualityTolerance.TOLERANCE_UNKNOWN; case 1: case "TOLERANCE_DEFAULT": return TravelParams_FeatureQualityTolerance.TOLERANCE_DEFAULT; case 2: case "TOLERANCE_IGNORE_POOR_FEATURE_QUALITY": return TravelParams_FeatureQualityTolerance.TOLERANCE_IGNORE_POOR_FEATURE_QUALITY; case -1: case "UNRECOGNIZED": default: return TravelParams_FeatureQualityTolerance.UNRECOGNIZED; } } export function travelParams_FeatureQualityToleranceToJSON( object: TravelParams_FeatureQualityTolerance ): string { switch (object) { case TravelParams_FeatureQualityTolerance.TOLERANCE_UNKNOWN: return "TOLERANCE_UNKNOWN"; case TravelParams_FeatureQualityTolerance.TOLERANCE_DEFAULT: return "TOLERANCE_DEFAULT"; case TravelParams_FeatureQualityTolerance.TOLERANCE_IGNORE_POOR_FEATURE_QUALITY: return "TOLERANCE_IGNORE_POOR_FEATURE_QUALITY"; case TravelParams_FeatureQualityTolerance.UNRECOGNIZED: default: return "UNRECOGNIZED"; } } /** * The NavigateToRequest can be used to command GraphNav to drive the robot to a specific waypoint. * GraphNav will plan a path through the map which most efficiently gets the robot to the specified goal waypoint. * Parameters are provided which influence how GraphNav will generate and follow the path. * This RPC returns immediately after the request is processed. It does not block until GraphNav completes the path * to the goal waypoint. The user is expected to periodically check the status of the NavigateTo command using * the NavigationFeedbackRequest RPC. */ export interface NavigateToRequest { /** Common request header. */ header: RequestHeader | undefined; /** The Leases to show ownership of the robot and the graph. */ leases: Lease[]; /** ID of the waypoint to go to. */ destinationWaypointId: string; /** Preferences on how to pick the route. */ routeParams: RouteGenParams | undefined; /** Parameters that define how to traverse and end the route. */ travelParams: TravelParams | undefined; /** The timestamp (in robot time) that the navigation command is valid until. */ endTime: Date | undefined; /** Identifier provided by the time sync service to verify time sync between robot and client. */ clockIdentifier: string; /** * If provided, graph_nav will move the robot to an SE2 pose relative to the waypoint. * Note that the robot will treat this as a simple goto request. It will first arrive at the * destination waypoint, and then travel in a straight line from the destination waypoint to the * offset goal, attempting to avoid obstacles along the way. */ destinationWaypointTformBodyGoal: SE2Pose | undefined; /** * Unique identifier for the command. If 0, this is a new command, otherwise it is a continuation * of an existing command. If this is a continuation of an existing command, all parameters will be * ignored, and the old parameters will be preserved. */ commandId: number; } /** * Response to a NavigateToRequest. This is returned immediately after the request is processed. A command_id * is provided to specify the ID that the user may use to poll the system for feedback on the NavigateTo command. */ export interface NavigateToResponse { /** Common response header. */ header: ResponseHeader | undefined; /** Results of using the various leases. */ leaseUseResults: LeaseUseResult[]; /** Return status for the request. */ status: NavigateToResponse_Status; /** If the status is ROBOT_IMPAIRED, this is why the robot is impaired. */ impairedState: RobotImpairedState | undefined; /** Unique identifier for the command, If 0, command was not accepted. */ commandId: number; /** On a relevant error status code, these fields contain the waypoint/edge IDs that caused the error. */ errorWaypointIds: string[]; } export enum NavigateToResponse_Status { /** STATUS_UNKNOWN - An unknown / unexpected error occurred. */ STATUS_UNKNOWN = 0, /** STATUS_OK - Request was accepted. */ STATUS_OK = 1, /** STATUS_NO_TIMESYNC - [Time error] Client has not done timesync with robot. */ STATUS_NO_TIMESYNC = 2, /** STATUS_EXPIRED - [Time error] The command was received after its end time had already passed. */ STATUS_EXPIRED = 3, /** STATUS_TOO_DISTANT - [Time error]The command end time was too far in the future. */ STATUS_TOO_DISTANT = 4, /** * STATUS_ROBOT_IMPAIRED - [Robot State Error] Cannot navigate a route if the robot has a critical * perception fault, or behavior fault, or LIDAR not working. */ STATUS_ROBOT_IMPAIRED = 5, /** STATUS_RECORDING - [Robot State Error] Cannot navigate a route while recording a map. */ STATUS_RECORDING = 6, /** STATUS_UNKNOWN_WAYPOINT - [Route Error] One or more of the waypoints specified weren't in the map. */ STATUS_UNKNOWN_WAYPOINT = 7, /** STATUS_NO_PATH - [Route Error] There is no path to the specified waypoint. */ STATUS_NO_PATH = 8, /** STATUS_FEATURE_DESERT - [Route Error] Route contained too many waypoints with low-quality features. */ STATUS_FEATURE_DESERT = 10, /** STATUS_LOST - [Route Error] Happens when you try to issue a navigate to while the robot is lost. */ STATUS_LOST = 11, /** STATUS_NOT_LOCALIZED_TO_MAP - [Route Error] Happens when the current localization doesn't refer to any waypoint in the map (possibly uninitialized localization). */ STATUS_NOT_LOCALIZED_TO_MAP = 13, /** STATUS_COULD_NOT_UPDATE_ROUTE - [Wrestling error] Happens when graph nav refuses to follow the route you specified. */ STATUS_COULD_NOT_UPDATE_ROUTE = 12, /** * STATUS_STUCK - [Route Error] Happens when you try to issue a navigate to while the robot is stuck. Navigate to a different * waypoint, or clear the route and try again. */ STATUS_STUCK = 14, /** STATUS_UNRECOGNIZED_COMMAND - [Request Error] Happens when you try to continue a command that was either expired, or had an unrecognized id. */ STATUS_UNRECOGNIZED_COMMAND = 15, UNRECOGNIZED = -1, } export function navigateToResponse_StatusFromJSON( object: any ): NavigateToResponse_Status { switch (object) { case 0: case "STATUS_UNKNOWN": return NavigateToResponse_Status.STATUS_UNKNOWN; case 1: case "STATUS_OK": return NavigateToResponse_Status.STATUS_OK; case 2: case "STATUS_NO_TIMESYNC": return NavigateToResponse_Status.STATUS_NO_TIMESYNC; case 3: case "STATUS_EXPIRED": return NavigateToResponse_Status.STATUS_EXPIRED; case 4: case "STATUS_TOO_DISTANT": return NavigateToResponse_Status.STATUS_TOO_DISTANT; case 5: case "STATUS_ROBOT_IMPAIRED": return NavigateToResponse_Status.STATUS_ROBOT_IMPAIRED; case 6: case "STATUS_RECORDING": return NavigateToResponse_Status.STATUS_RECORDING; case 7: case "STATUS_UNKNOWN_WAYPOINT": return NavigateToResponse_Status.STATUS_UNKNOWN_WAYPOINT; case 8: case "STATUS_NO_PATH": return NavigateToResponse_Status.STATUS_NO_PATH; case 10: case "STATUS_FEATURE_DESERT": return NavigateToResponse_Status.STATUS_FEATURE_DESERT; case 11: case "STATUS_LOST": return NavigateToResponse_Status.STATUS_LOST; case 13: case "STATUS_NOT_LOCALIZED_TO_MAP": return NavigateToResponse_Status.STATUS_NOT_LOCALIZED_TO_MAP; case 12: case "STATUS_COULD_NOT_UPDATE_ROUTE": return NavigateToResponse_Status.STATUS_COULD_NOT_UPDATE_ROUTE; case 14: case "STATUS_STUCK": return NavigateToResponse_Status.STATUS_STUCK; case 15: case "STATUS_UNRECOGNIZED_COMMAND": return NavigateToResponse_Status.STATUS_UNRECOGNIZED_COMMAND; case -1: case "UNRECOGNIZED": default: return NavigateToResponse_Status.UNRECOGNIZED; } } export function navigateToResponse_StatusToJSON( object: NavigateToResponse_Status ): string { switch (object) { case NavigateToResponse_Status.STATUS_UNKNOWN: return "STATUS_UNKNOWN"; case NavigateToResponse_Status.STATUS_OK: return "STATUS_OK"; case NavigateToResponse_Status.STATUS_NO_TIMESYNC: return "STATUS_NO_TIMESYNC"; case NavigateToResponse_Status.STATUS_EXPIRED: return "STATUS_EXPIRED"; case NavigateToResponse_Status.STATUS_TOO_DISTANT: return "STATUS_TOO_DISTANT"; case NavigateToResponse_Status.STATUS_ROBOT_IMPAIRED: return "STATUS_ROBOT_IMPAIRED"; case NavigateToResponse_Status.STATUS_RECORDING: return "STATUS_RECORDING"; case NavigateToResponse_Status.STATUS_UNKNOWN_WAYPOINT: return "STATUS_UNKNOWN_WAYPOINT"; case NavigateToResponse_Status.STATUS_NO_PATH: return "STATUS_NO_PATH"; case NavigateToResponse_Status.STATUS_FEATURE_DESERT: return "STATUS_FEATURE_DESERT"; case NavigateToResponse_Status.STATUS_LOST: return "STATUS_LOST"; case NavigateToResponse_Status.STATUS_NOT_LOCALIZED_TO_MAP: return "STATUS_NOT_LOCALIZED_TO_MAP"; case NavigateToResponse_Status.STATUS_COULD_NOT_UPDATE_ROUTE: return "STATUS_COULD_NOT_UPDATE_ROUTE"; case NavigateToResponse_Status.STATUS_STUCK: return "STATUS_STUCK"; case NavigateToResponse_Status.STATUS_UNRECOGNIZED_COMMAND: return "STATUS_UNRECOGNIZED_COMMAND"; case NavigateToResponse_Status.UNRECOGNIZED: default: return "UNRECOGNIZED"; } } /** These parameters are specific to how the robot follows a specified route in NavigateRoute. */ export interface RouteFollowingParams { newCmdBehavior: RouteFollowingParams_StartRouteBehavior; existingCmdBehavior: RouteFollowingParams_ResumeBehavior; routeBlockedBehavior: RouteFollowingParams_RouteBlockedBehavior; } /** * This setting applies when a new NavigateRoute command is issued (different route or * final-waypoint-offset), and command_id indicates a new command. */ export enum RouteFollowingParams_StartRouteBehavior { /** START_UNKNOWN - The mode is unset. */ START_UNKNOWN = 0, /** * START_GOTO_START - The robot will find the shortest path to the start of the route, possibly using * edges that are not in the route. After going to the start, the robot will follow the * route. */ START_GOTO_START = 1, /** * START_GOTO_ROUTE - The robot will find the shortest path to any point on the route, and go to the point * that gives that shortest path. Then, the robot will follow the rest of the route from * that point. * If multiple points on the route are similarly close to the robot, the robot will * prefer the earliest on the route. * This is the default. */ START_GOTO_ROUTE = 2, /** START_FAIL_WHEN_NOT_ON_ROUTE - The robot will fail the command with status STATUS_NOT_LOCALIZED_TO_ROUTE. */ START_FAIL_WHEN_NOT_ON_ROUTE = 3, UNRECOGNIZED = -1, } export function routeFollowingParams_StartRouteBehaviorFromJSON( object: any ): RouteFollowingParams_StartRouteBehavior { switch (object) { case 0: case "START_UNKNOWN": return RouteFollowingParams_StartRouteBehavior.START_UNKNOWN; case 1: case "START_GOTO_START": return RouteFollowingParams_StartRouteBehavior.START_GOTO_START; case 2: case "START_GOTO_ROUTE": return RouteFollowingParams_StartRouteBehavior.START_GOTO_ROUTE; case 3: case "START_FAIL_WHEN_NOT_ON_ROUTE": return RouteFollowingParams_StartRouteBehavior.START_FAIL_WHEN_NOT_ON_ROUTE; case -1: case "UNRECOGNIZED": default: return RouteFollowingParams_StartRouteBehavior.UNRECOGNIZED; } } export function routeFollowingParams_StartRouteBehaviorToJSON( object: RouteFollowingParams_StartRouteBehavior ): string { switch (object) { case RouteFollowingParams_StartRouteBehavior.START_UNKNOWN: return "START_UNKNOWN"; case RouteFollowingParams_StartRouteBehavior.START_GOTO_START: return "START_GOTO_START"; case RouteFollowingParams_StartRouteBehavior.START_GOTO_ROUTE: return "START_GOTO_ROUTE"; case RouteFollowingParams_StartRouteBehavior.START_FAIL_WHEN_NOT_ON_ROUTE: return "START_FAIL_WHEN_NOT_ON_ROUTE"; case RouteFollowingParams_StartRouteBehavior.UNRECOGNIZED: default: return "UNRECOGNIZED"; } } /** * This setting applies when a NavigateRoute command is issued with the same route and * final-waypoint-offset. It is not necessary that command_id indicate the same command. * The expected waypoint is the last waypoint that GraphNav was autonomously navigating to. */ export enum RouteFollowingParams_ResumeBehavior { /** RESUME_UNKNOWN - The mode is unset. */ RESUME_UNKNOWN = 0, /** * RESUME_RETURN_TO_UNFINISHED_ROUTE - The robot will find the shortest path to any point on the route after the * furthest-along traversed edge, and go to the point that gives that shortest path. * Then, the robot will follow the rest of the route from that point. * This is the default. */ RESUME_RETURN_TO_UNFINISHED_ROUTE = 1, /** RESUME_FAIL_WHEN_NOT_ON_ROUTE - The robot will fail the command with status STATUS_NOT_LOCALIZED_TO_ROUTE. */ RESUME_FAIL_WHEN_NOT_ON_ROUTE = 2, UNRECOGNIZED = -1, } export function routeFollowingParams_ResumeBehaviorFromJSON( object: any ): RouteFollowingParams_ResumeBehavior { switch (object) { case 0: case "RESUME_UNKNOWN": return RouteFollowingParams_ResumeBehavior.RESUME_UNKNOWN; case 1: case "RESUME_RETURN_TO_UNFINISHED_ROUTE": return RouteFollowingParams_ResumeBehavior.RESUME_RETURN_TO_UNFINISHED_ROUTE; case 2: case "RESUME_FAIL_WHEN_NOT_ON_ROUTE": return RouteFollowingParams_ResumeBehavior.RESUME_FAIL_WHEN_NOT_ON_ROUTE; case -1: case "UNRECOGNIZED": default: return RouteFollowingParams_ResumeBehavior.UNRECOGNIZED; } } export function routeFollowingParams_ResumeBehaviorToJSON( object: RouteFollowingParams_ResumeBehavior ): string { switch (object) { case RouteFollowingParams_ResumeBehavior.RESUME_UNKNOWN: return "RESUME_UNKNOWN"; case RouteFollowingParams_ResumeBehavior.RESUME_RETURN_TO_UNFINISHED_ROUTE: return "RESUME_RETURN_TO_UNFINISHED_ROUTE"; case RouteFollowingParams_ResumeBehavior.RESUME_FAIL_WHEN_NOT_ON_ROUTE: return "RESUME_FAIL_WHEN_NOT_ON_ROUTE"; case RouteFollowingParams_ResumeBehavior.UNRECOGNIZED: default: return "UNRECOGNIZED"; } } /** This setting applies when the robot discovers that the route is blocked. */ export enum RouteFollowingParams_RouteBlockedBehavior { /** ROUTE_BLOCKED_UNKNOWN - The mode is unset. */ ROUTE_BLOCKED_UNKNOWN = 0, /** * ROUTE_BLOCKED_REROUTE - The robot will find the shortest path to any point after the furthest-along blockage, * and after the furthest-along traversed edge, and go to the point that gives that * shortest path. Then, the robot will follow the rest of the route from that point. * If multiple points on the route are similarly close to the robot, the robot will * prefer the earliest on the route. * This is the default. */ ROUTE_BLOCKED_REROUTE = 1, /** ROUTE_BLOCKED_FAIL - The robot will fail the command with status STATUS_STUCK; */ ROUTE_BLOCKED_FAIL = 2, UNRECOGNIZED = -1, } export function routeFollowingParams_RouteBlockedBehaviorFromJSON( object: any ): RouteFollowingParams_RouteBlockedBehavior { switch (object) { case 0: case "ROUTE_BLOCKED_UNKNOWN": return RouteFollowingParams_RouteBlockedBehavior.ROUTE_BLOCKED_UNKNOWN; case 1: case "ROUTE_BLOCKED_REROUTE": return RouteFollowingParams_RouteBlockedBehavior.ROUTE_BLOCKED_REROUTE; case 2: case "ROUTE_BLOCKED_FAIL": return RouteFollowingParams_RouteBlockedBehavior.ROUTE_BLOCKED_FAIL; case -1: case "UNRECOGNIZED": default: return RouteFollowingParams_RouteBlockedBehavior.UNRECOGNIZED; } } export function routeFollowingParams_RouteBlockedBehaviorToJSON( object: RouteFollowingParams_RouteBlockedBehavior ): string { switch (object) { case RouteFollowingParams_RouteBlockedBehavior.ROUTE_BLOCKED_UNKNOWN: return "ROUTE_BLOCKED_UNKNOWN"; case RouteFollowingParams_RouteBlockedBehavior.ROUTE_BLOCKED_REROUTE: return "ROUTE_BLOCKED_REROUTE"; case RouteFollowingParams_RouteBlockedBehavior.ROUTE_BLOCKED_FAIL: return "ROUTE_BLOCKED_FAIL"; case RouteFollowingParams_RouteBlockedBehavior.UNRECOGNIZED: default: return "UNRECOGNIZED"; } } /** * A NavigateRoute request message specifies a route of waypoints/edges and parameters * about how to get there. Like NavigateTo, this command returns immediately upon * processing and provides a command_id that the user can use along with a NavigationFeedbackRequest RPC to * poll the system for feedback on this command. The RPC does not block until the route is completed. */ export interface NavigateRouteRequest { /** Common request header. */ header: RequestHeader | undefined; /** The Lease to show ownership of the robot. */ leases: Lease[]; /** A route for the robot to follow. */ route: Route | undefined; /** * What should the robot do if it is not at the expected point in the route, or the route is * blocked. */ routeFollowParams: RouteFollowingParams | undefined; /** How to travel the route. */ travelParams: TravelParams | undefined; /** The timestamp (in robot time) that the navigation command is valid until. */ endTime: Date | undefined; /** Identifier provided by the time sync service to verify time sync between robot and client. */ clockIdentifier: string; /** * If provided, graph_nav will move the robot to an SE2 pose relative to the final waypoint * in the route. * Note that the robot will treat this as a simple goto request. It will first arrive at the * destination waypoint, and then travel in a straight line from the destination waypoint to the * offset goal, attempting to avoid obstacles along the way. */ destinationWaypointTformBodyGoal: SE2Pose | undefined; /** * Unique identifier for the command. If 0, this is a new command, otherwise it is a continuation * of an existing command. */ commandId: number; } /** * Response to a NavigateRouteRequest. This is returned immediately after the request is processed. A command_id * is provided to specify the ID that the user may use to poll the system for feedback on the NavigateRoute command. */ export interface NavigateRouteResponse { /** Common response header. */ header: ResponseHeader | undefined; /** Details about how the lease was used. */ leaseUseResults: LeaseUseResult[]; /** Return status for the request. */ status: NavigateRouteResponse_Status; /** If the status is ROBOT_IMPAIRED, this is why the robot is impaired. */ impairedState: RobotImpairedState | undefined; /** Unique identifier for the command, If 0, command was not accepted. */ commandId: number; /** On a relevant error status code, these fields contain the waypoint/edge IDs that caused the error. */ errorWaypointIds: string[]; /** On a relevant error status code (STATUS_INVALID_EDGE), this is populated with the edge ID's that cased the error. */ errorEdgeIds: Edge_Id[]; } export enum NavigateRouteResponse_Status { /** STATUS_UNKNOWN - An unknown / unexpected error occurred. */ STATUS_UNKNOWN = 0, /** STATUS_OK - Request was accepted. */ STATUS_OK = 1, /** STATUS_NO_TIMESYNC - [Time Error] Client has not done timesync with robot. */ STATUS_NO_TIMESYNC = 2, /** STATUS_EXPIRED - [Time Error] The command was received after its end time had already passed. */ STATUS_EXPIRED = 3, /** STATUS_TOO_DISTANT - [Time Error] The command end time was too far in the future. */ STATUS_TOO_DISTANT = 4, /** * STATUS_ROBOT_IMPAIRED - [Robot State Error] Cannot navigate a route if the robot has a crtical * perception fault, or behavior fault, or LIDAR not working. */ STATUS_ROBOT_IMPAIRED = 5, /** STATUS_RECORDING - [Robot State Error] Cannot navigate a route while recording a map. */ STATUS_RECORDING = 6, /** STATUS_UNKNOWN_ROUTE_ELEMENTS - [Route Error] One or more waypoints/edges are not in the map. */ STATUS_UNKNOWN_ROUTE_ELEMENTS = 8, /** STATUS_INVALID_EDGE - [Route Error] One or more edges do not connect to expected waypoints. */ STATUS_INVALID_EDGE = 9, /** STATUS_NO_PATH - [Route Error] There is no path to the specified route. */ STATUS_NO_PATH = 20, /** STATUS_CONSTRAINT_FAULT - [Route Error] Route contained a constraint fault. */ STATUS_CONSTRAINT_FAULT = 11, /** STATUS_FEATURE_DESERT - [Route Error] Route contained too many waypoints with low-quality features. */ STATUS_FEATURE_DESERT = 13, /** STATUS_LOST - [Route Error] Happens when you try to issue a navigate route while the robot is lost. */ STATUS_LOST = 14, /** * STATUS_NOT_LOCALIZED_TO_ROUTE - [Route Error] Happens when the current localization doesn't refer to any waypoint * in the route (possibly uninitialized localization). */ STATUS_NOT_LOCALIZED_TO_ROUTE = 16, /** STATUS_NOT_LOCALIZED_TO_MAP - [Route Error] Happens when the current localization doesn't refer to any waypoint in the map (possibly uninitialized localization). */ STATUS_NOT_LOCALIZED_TO_MAP = 19, /** STATUS_COULD_NOT_UPDATE_ROUTE - [Wrestling Errors] Happens when graph nav refuses to follow the route you specified. Try saying please? */ STATUS_COULD_NOT_UPDATE_ROUTE = 15, /** * STATUS_STUCK - [Route Error] Happens when you try to issue a navigate to while the robot is stuck. Navigate a different * route, or clear the route and try again. */ STATUS_STUCK = 17, /** STATUS_UNRECOGNIZED_COMMAND - [Request Error] Happens when you try to continue a command that was either expired, or had an unrecognized id. */ STATUS_UNRECOGNIZED_COMMAND = 18, UNRECOGNIZED = -1, } export function navigateRouteResponse_StatusFromJSON( object: any ): NavigateRouteResponse_Status { switch (object) { case 0: case "STATUS_UNKNOWN": return NavigateRouteResponse_Status.STATUS_UNKNOWN; case 1: case "STATUS_OK": return NavigateRouteResponse_Status.STATUS_OK; case 2: case "STATUS_NO_TIMESYNC": return NavigateRouteResponse_Status.STATUS_NO_TIMESYNC; case 3: case "STATUS_EXPIRED": return NavigateRouteResponse_Status.STATUS_EXPIRED; case 4: case "STATUS_TOO_DISTANT": return NavigateRouteResponse_Status.STATUS_TOO_DISTANT; case 5: case "STATUS_ROBOT_IMPAIRED": return NavigateRouteResponse_Status.STATUS_ROBOT_IMPAIRED; case 6: case "STATUS_RECORDING": return NavigateRouteResponse_Status.STATUS_RECORDING; case 8: case "STATUS_UNKNOWN_ROUTE_ELEMENTS": return NavigateRouteResponse_Status.STATUS_UNKNOWN_ROUTE_ELEMENTS; case 9: case "STATUS_INVALID_EDGE": return NavigateRouteResponse_Status.STATUS_INVALID_EDGE; case 20: case "STATUS_NO_PATH": return NavigateRouteResponse_Status.STATUS_NO_PATH; case 11: case "STATUS_CONSTRAINT_FAULT": return NavigateRouteResponse_Status.STATUS_CONSTRAINT_FAULT; case 13: case "STATUS_FEATURE_DESERT": return NavigateRouteResponse_Status.STATUS_FEATURE_DESERT; case 14: case "STATUS_LOST": return NavigateRouteResponse_Status.STATUS_LOST; case 16: case "STATUS_NOT_LOCALIZED_TO_ROUTE": return NavigateRouteResponse_Status.STATUS_NOT_LOCALIZED_TO_ROUTE; case 19: case "STATUS_NOT_LOCALIZED_TO_MAP": return NavigateRouteResponse_Status.STATUS_NOT_LOCALIZED_TO_MAP; case 15: case "STATUS_COULD_NOT_UPDATE_ROUTE": return NavigateRouteResponse_Status.STATUS_COULD_NOT_UPDATE_ROUTE; case 17: case "STATUS_STUCK": return NavigateRouteResponse_Status.STATUS_STUCK; case 18: case "STATUS_UNRECOGNIZED_COMMAND": return NavigateRouteResponse_Status.STATUS_UNRECOGNIZED_COMMAND; case -1: case "UNRECOGNIZED": default: return NavigateRouteResponse_Status.UNRECOGNIZED; } } export function navigateRouteResponse_StatusToJSON( object: NavigateRouteResponse_Status ): string { switch (object) { case NavigateRouteResponse_Status.STATUS_UNKNOWN: return "STATUS_UNKNOWN"; case NavigateRouteResponse_Status.STATUS_OK: return "STATUS_OK"; case NavigateRouteResponse_Status.STATUS_NO_TIMESYNC: return "STATUS_NO_TIMESYNC"; case NavigateRouteResponse_Status.STATUS_EXPIRED: return "STATUS_EXPIRED"; case NavigateRouteResponse_Status.STATUS_TOO_DISTANT: return "STATUS_TOO_DISTANT"; case NavigateRouteResponse_Status.STATUS_ROBOT_IMPAIRED: return "STATUS_ROBOT_IMPAIRED"; case NavigateRouteResponse_Status.STATUS_RECORDING: return "STATUS_RECORDING"; case NavigateRouteResponse_Status.STATUS_UNKNOWN_ROUTE_ELEMENTS: return "STATUS_UNKNOWN_ROUTE_ELEMENTS"; case NavigateRouteResponse_Status.STATUS_INVALID_EDGE: return "STATUS_INVALID_EDGE"; case NavigateRouteResponse_Status.STATUS_NO_PATH: return "STATUS_NO_PATH"; case NavigateRouteResponse_Status.STATUS_CONSTRAINT_FAULT: return "STATUS_CONSTRAINT_FAULT"; case NavigateRouteResponse_Status.STATUS_FEATURE_DESERT: return "STATUS_FEATURE_DESERT"; case NavigateRouteResponse_Status.STATUS_LOST: return "STATUS_LOST"; case NavigateRouteResponse_Status.STATUS_NOT_LOCALIZED_TO_ROUTE: return "STATUS_NOT_LOCALIZED_TO_ROUTE"; case NavigateRouteResponse_Status.STATUS_NOT_LOCALIZED_TO_MAP: return "STATUS_NOT_LOCALIZED_TO_MAP"; case NavigateRouteResponse_Status.STATUS_COULD_NOT_UPDATE_ROUTE: return "STATUS_COULD_NOT_UPDATE_ROUTE"; case NavigateRouteResponse_Status.STATUS_STUCK: return "STATUS_STUCK"; case NavigateRouteResponse_Status.STATUS_UNRECOGNIZED_COMMAND: return "STATUS_UNRECOGNIZED_COMMAND"; case NavigateRouteResponse_Status.UNRECOGNIZED: default: return "UNRECOGNIZED"; } } /** * The NavigateToAnchorRequest can be used to command GraphNav to drive the robot to a specific * place in an anchoring. GraphNav will find the waypoint that has the shortest path length from * robot's current position but is still close to the goal. GraphNav will plan a path through the * map which most efficiently gets the robot to the goal waypoint, and will then travel * in a straight line from the destination waypoint to the offset goal, attempting to avoid * obstacles along the way. * Parameters are provided which influence how GraphNav will generate and follow the path. * This RPC returns immediately after the request is processed. It does not block until GraphNav * completes the path to the goal waypoint. The user is expected to periodically check the status * of the NavigateToAnchor command using the NavigationFeedbackRequest RPC. */ export interface NavigateToAnchorRequest { /** Common request header. */ header: RequestHeader | undefined; /** The Leases to show ownership of the robot and the graph. */ leases: Lease[]; /** * The goal, expressed with respect to the seed frame of the current anchoring. * The robot will use the z value to find the goal waypoint, but the final z height the robot * achieves will depend on the terrain height at the offset from the goal. */ seedTformGoal: SE3Pose | undefined; /** * These parameters control selection of the goal waypoint. In seed frame, they are the x, y, * and z tolerances with respect to the goal pose within which waypoints will be considered. * If these values are negative, or too small, reasonable defaults will be used. */ goalWaypointRtSeedEwrtSeedTolerance: Vec3 | undefined; /** Preferences on how to pick the route. */ routeParams: RouteGenParams | undefined; /** Parameters that define how to traverse and end the route. */ travelParams: TravelParams | undefined; /** The timestamp (in robot time) that the navigation command is valid until. */ endTime: Date | undefined; /** Identifier provided by the time sync service to verify time sync between robot and client. */ clockIdentifier: string; /** * Unique identifier for the command. If 0, this is a new command, otherwise it is a continuation * of an existing command. If this is a continuation of an existing command, all parameters will be * ignored, and the old parameters will be preserved. */ commandId: number; } /** * Response to a NavigateToAnchorRequest. This is returned immediately after the request is * processed. A command_id is provided to specify the ID that the user may use to poll the system * for feedback on the NavigateTo command. */ export interface NavigateToAnchorResponse { /** Common response header. */ header: ResponseHeader | undefined; /** Results of using the various leases. */ leaseUseResults: LeaseUseResult[]; /** Return status for the request. */ status: NavigateToAnchorResponse_Status; /** If the status is ROBOT_IMPAIRED, this is why the robot is impaired. */ impairedState: RobotImpairedState | undefined; /** Unique identifier for the command, If 0, command was not accepted. */ commandId: number; /** On a relevant error status code, these fields contain the waypoint/edge IDs that caused the error. */ errorWaypointIds: string[]; } export enum NavigateToAnchorResponse_Status { /** STATUS_UNKNOWN - An unknown / unexpected error occurred. */ STATUS_UNKNOWN = 0, /** STATUS_OK - Request was accepted. */ STATUS_OK = 1, /** STATUS_NO_TIMESYNC - [Time error] Client has not done timesync with robot. */ STATUS_NO_TIMESYNC = 2, /** STATUS_EXPIRED - [Time error] The command was received after its end time had already passed. */ STATUS_EXPIRED = 3, /** STATUS_TOO_DISTANT - [Time error]The command end time was too far in the future. */ STATUS_TOO_DISTANT = 4, /** * STATUS_ROBOT_IMPAIRED - [Robot State Error] Cannot navigate a route if the robot has a critical * perception fault, or behavior fault, or LIDAR not working. */ STATUS_ROBOT_IMPAIRED = 5, /** STATUS_RECORDING - [Robot State Error] Cannot navigate a route while recording a map. */ STATUS_RECORDING = 6, /** STATUS_NO_ANCHORING - [Route Error] There is no anchoring. */ STATUS_NO_ANCHORING = 7, /** * STATUS_NO_PATH - [Route Error] There is no path to a waypoint near the specified goal. * If any waypoints were found (but no path), the error_waypoint_ids field * will be filled. */ STATUS_NO_PATH = 8, /** STATUS_FEATURE_DESERT - [Route Error] Route contained too many waypoints with low-quality features. */ STATUS_FEATURE_DESERT = 10, /** STATUS_LOST - [Route Error] Happens when you try to issue a navigate to while the robot is lost. */ STATUS_LOST = 11, /** STATUS_NOT_LOCALIZED_TO_MAP - [Route Error] Happens when the current localization doesn't refer to any waypoint in the map (possibly uninitialized localization). */ STATUS_NOT_LOCALIZED_TO_MAP = 13, /** STATUS_COULD_NOT_UPDATE_ROUTE - [Wrestling error] Happens when graph nav refuses to follow the route you specified. */ STATUS_COULD_NOT_UPDATE_ROUTE = 12, /** * STATUS_STUCK - [Route Error] Happens when you try to issue a navigate to while the robot is stuck. Navigate to a different * waypoint, or clear the route and try again. */ STATUS_STUCK = 14, /** STATUS_UNRECOGNIZED_COMMAND - [Request Error] Happens when you try to continue a command that was either expired, or had an unrecognized id. */ STATUS_UNRECOGNIZED_COMMAND = 15, /** STATUS_INVALID_POSE - [Route Error] The pose is invalid, or known to be unachievable (upside-down, etc). */ STATUS_INVALID_POSE = 16, UNRECOGNIZED = -1, } export function navigateToAnchorResponse_StatusFromJSON( object: any ): NavigateToAnchorResponse_Status { switch (object) { case 0: case "STATUS_UNKNOWN": return NavigateToAnchorResponse_Status.STATUS_UNKNOWN; case 1: case "STATUS_OK": return NavigateToAnchorResponse_Status.STATUS_OK; case 2: case "STATUS_NO_TIMESYNC": return NavigateToAnchorResponse_Status.STATUS_NO_TIMESYNC; case 3: case "STATUS_EXPIRED": return NavigateToAnchorResponse_Status.STATUS_EXPIRED; case 4: case "STATUS_TOO_DISTANT": return NavigateToAnchorResponse_Status.STATUS_TOO_DISTANT; case 5: case "STATUS_ROBOT_IMPAIRED": return NavigateToAnchorResponse_Status.STATUS_ROBOT_IMPAIRED; case 6: case "STATUS_RECORDING": return NavigateToAnchorResponse_Status.STATUS_RECORDING; case 7: case "STATUS_NO_ANCHORING": return NavigateToAnchorResponse_Status.STATUS_NO_ANCHORING; case 8: case "STATUS_NO_PATH": return NavigateToAnchorResponse_Status.STATUS_NO_PATH; case 10: case "STATUS_FEATURE_DESERT": return NavigateToAnchorResponse_Status.STATUS_FEATURE_DESERT; case 11: case "STATUS_LOST": return NavigateToAnchorResponse_Status.STATUS_LOST; case 13: case "STATUS_NOT_LOCALIZED_TO_MAP": return NavigateToAnchorResponse_Status.STATUS_NOT_LOCALIZED_TO_MAP; case 12: case "STATUS_COULD_NOT_UPDATE_ROUTE": return NavigateToAnchorResponse_Status.STATUS_COULD_NOT_UPDATE_ROUTE; case 14: case "STATUS_STUCK": return NavigateToAnchorResponse_Status.STATUS_STUCK; case 15: case "STATUS_UNRECOGNIZED_COMMAND": return NavigateToAnchorResponse_Status.STATUS_UNRECOGNIZED_COMMAND; case 16: case "STATUS_INVALID_POSE": return NavigateToAnchorResponse_Status.STATUS_INVALID_POSE; case -1: case "UNRECOGNIZED": default: return NavigateToAnchorResponse_Status.UNRECOGNIZED; } } export function navigateToAnchorResponse_StatusToJSON( object: NavigateToAnchorResponse_Status ): string { switch (object) { case NavigateToAnchorResponse_Status.STATUS_UNKNOWN: return "STATUS_UNKNOWN"; case NavigateToAnchorResponse_Status.STATUS_OK: return "STATUS_OK"; case NavigateToAnchorResponse_Status.STATUS_NO_TIMESYNC: return "STATUS_NO_TIMESYNC"; case NavigateToAnchorResponse_Status.STATUS_EXPIRED: return "STATUS_EXPIRED"; case NavigateToAnchorResponse_Status.STATUS_TOO_DISTANT: return "STATUS_TOO_DISTANT"; case NavigateToAnchorResponse_Status.STATUS_ROBOT_IMPAIRED: return "STATUS_ROBOT_IMPAIRED"; case NavigateToAnchorResponse_Status.STATUS_RECORDING: return "STATUS_RECORDING"; case NavigateToAnchorResponse_Status.STATUS_NO_ANCHORING: return "STATUS_NO_ANCHORING"; case NavigateToAnchorResponse_Status.STATUS_NO_PATH: return "STATUS_NO_PATH"; case NavigateToAnchorResponse_Status.STATUS_FEATURE_DESERT: return "STATUS_FEATURE_DESERT"; case NavigateToAnchorResponse_Status.STATUS_LOST: return "STATUS_LOST"; case NavigateToAnchorResponse_Status.STATUS_NOT_LOCALIZED_TO_MAP: return "STATUS_NOT_LOCALIZED_TO_MAP"; case NavigateToAnchorResponse_Status.STATUS_COULD_NOT_UPDATE_ROUTE: return "STATUS_COULD_NOT_UPDATE_ROUTE"; case NavigateToAnchorResponse_Sta