spot-sdk-ts
Version:
TypeScript bindings based on protobufs (proto3) provided by Boston Dynamics
1,009 lines • 1.01 MB
TypeScript
import { SE2TrajectoryCommand_Feedback_BodyMovementStatus } from "../basic_command";
import { LicenseInfo_Status } from "../license";
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 declare 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 declare 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 declare function setLocalizationRequest_FiducialInitFromJSON(object: any): SetLocalizationRequest_FiducialInit;
export declare function setLocalizationRequest_FiducialInitToJSON(object: SetLocalizationRequest_FiducialInit): string;
/**
* 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 declare 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 declare function setLocalizationResponse_StatusFromJSON(object: any): SetLocalizationResponse_Status;
export declare function setLocalizationResponse_StatusToJSON(object: SetLocalizationResponse_Status): string;
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 declare 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 declare function travelParams_FeatureQualityToleranceFromJSON(object: any): TravelParams_FeatureQualityTolerance;
export declare function travelParams_FeatureQualityToleranceToJSON(object: TravelParams_FeatureQualityTolerance): string;
/**
* 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 declare 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 declare function navigateToResponse_StatusFromJSON(object: any): NavigateToResponse_Status;
export declare function navigateToResponse_StatusToJSON(object: NavigateToResponse_Status): string;
/** 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 declare 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 declare function routeFollowingParams_StartRouteBehaviorFromJSON(object: any): RouteFollowingParams_StartRouteBehavior;
export declare function routeFollowingParams_StartRouteBehaviorToJSON(object: RouteFollowingParams_StartRouteBehavior): string;
/**
* 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 declare 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 declare function routeFollowingParams_ResumeBehaviorFromJSON(object: any): RouteFollowingParams_ResumeBehavior;
export declare function routeFollowingParams_ResumeBehaviorToJSON(object: RouteFollowingParams_ResumeBehavior): string;
/** This setting applies when the robot discovers that the route is blocked. */
export declare 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 declare function routeFollowingParams_RouteBlockedBehaviorFromJSON(object: any): RouteFollowingParams_RouteBlockedBehavior;
export declare function routeFollowingParams_RouteBlockedBehaviorToJSON(object: RouteFollowingParams_RouteBlockedBehavior): string;
/**
* 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 declare 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 declare function navigateRouteResponse_StatusFromJSON(object: any): NavigateRouteResponse_Status;
export declare function navigateRouteResponse_StatusToJSON(object: NavigateRouteResponse_Status): string;
/**
* 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 declare 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 declare function navigateToAnchorResponse_StatusFromJSON(object: any): NavigateToAnchorResponse_Status;
export declare function navigateToAnchorResponse_StatusToJSON(object: NavigateToAnchorResponse_Status): string;
/**
* The NavigationFeedback request message uses the command_id of a navigation request to get
* the robot's progress and current status for the command. Note that all commands return immediately
* after they are processed, and the robot will continue to execute the command asynchronously until
* it times out or completes. New commands override old ones.
*/
export interface NavigationFeedbackRequest {
/** Common request header. */
header: RequestHeader | undefined;
/**
* Unique identifier for the command, provided by nav command response.
* Omit to get feedback on currently executing command.
*/
commandId: number;
}
/**
* The NavigationFeedback response message returns the robot's
* progress and current status for the command.
*/
export interface NavigationFeedbackResponse {
/** Common response header. */
header: ResponseHeader | undefined;
/** Return status for the request. */
status: NavigationFeedbackResponse_Status;
/** If the status is ROBOT_IMPAIRED, this is why the robot is impaired. */
impairedState: RobotImpairedState | undefined;
/** Remaining part of current route. */
remainingRoute: Route | undefined;
/** ID of the command this feedback corresponds to. */
commandId: number;
/** The most recent transform describing the robot's pose relative to the navigation goal. */
lastKoTformGoal: SE3Pose | undefined;
/** Indicates whether the robot's body is currently in motion. */
bodyMovementStatus: SE2TrajectoryCommand_Feedback_BodyMovementStatus;
}
export declare enum NavigationFeedbackResponse_Status {
/** STATUS_UNKNOWN - An unknown / unexpected error occurred. */
STATUS_UNKNOWN = 0,
/** STATUS_FOLLOWING_ROUTE - The robot is currently, successfully following the route. */
STATUS_FOLLOWING_ROUTE = 1,
/** STATUS_REACHED_GOAL - The robot has reached the final goal of the navigation request. */
STATUS_REACHED_GOAL = 2,
/**
* STATUS_NO_ROUTE - There's no route currently being navigated.
* This can happen if no command has been issued, or if the graph has been changed during
* navigation.
*/
STATUS_NO_ROUTE = 3,
/** STATUS_NO_LOCALIZATION - Robot is not localized to a route. */
STATUS_NO_LOCALIZATION = 4,
/** STATUS_LOST - Robot appears to be lost. */
STATUS_LOST = 5,
/** STATUS_STUCK - Robot appears stuck against an obstacle. */
STATUS_STUCK = 6,
/** STATUS_COMMAND_TIMED_OUT - The command expired. */
STATUS_COMMAND_TIMED_OUT = 7,
/**
* STATUS_ROBOT_IMPAIRED - Cannot navigate a route if the robot has a crtical perception fault, or behavior fault,
* or LIDAR not working. See impared_status for details.
*/
STATUS_ROBOT_IMPAIRED = 8,
/** STATUS_CONSTRAINT_FAULT - The route constraints were not feasible. */
STATUS_CONSTRAINT_FAULT = 11,
/** STATUS_COMMAND_OVERRIDDEN - The command was replaced by a new command */
STATUS_COMMAND_OVERRIDDEN = 12,
/** STATUS_NOT_LOCALIZED_TO_ROUTE - The localization or route changed mid-traverse. */
STATUS_NOT_LOCALIZED_TO_ROUTE = 13,
/** STATUS_LEASE_ERROR - The lease is no longer valid. */
STATUS_LEASE_ERROR = 14,
UNRECOGNIZED = -1
}
export declare function navigationFeedbackResponse_StatusFromJSON(object: any): NavigationFeedbackResponse_Status;
export declare function navigationFeedbackResponse_StatusToJSON(object: NavigationFeedbackResponse_Status): string;
/**
* The GetLocalizationState request message requests the current localization state and any other
* live data from the robot if desired. The localization consists of a waypoint ID and the relative
* pose of the robot with respect to that waypoint.
*/
export interface GetLocalizationStateRequest {
/** Common request header. */
header: RequestHeader | undefined;
/** Return the localization relative to this waypoint, if specified. */
waypointId: string;
/**
* If true, request the live edge-segmented point cloud that was used
* to generate this localization.
*/
requestLivePointCloud: boolean;
/**
* If true, request the live images from realsense cameras at the time of
* localization.
*/
requestLiveImages: boolean;
/** If true, request the live terrain maps at the time of localization. */
requestLiveTerrainMaps: boolean;
/** If true, reqeuest the live world objects at the time of localization. */
requestLiveWorldObjects: boolean;
/** If true, requests the full live robot state at the time of localization. */
requestLiveRobotState: boolean;
/**
* If true, the smallest available encoding will be used for the live point cloud
* data. If false, three 32 bit floats will be used per point in the point cloud.
*/
compressLivePointCloud: boolean;
}
/** Message describing the state of a remote point cloud service (such as a velodyne). */
export interface RemotePointCloudStatus {
/** The name of the point cloud service. */
serviceName: string;
/**
* Boolean indicating if the point cloud service was registered in the robot's directory with
* the provided name.
*/
existsInDirectory: boolean;
/** Boolean indicating if the point cloud service is currently outputting data. */
hasData: boolean;
}
/**
* Message describing whether or not graph nav is lost, and if it is lost, how lost it is.
* If robot is lost, this state can be reset by either:
* * Driving to an area where the robot's localization improves.
* * Calling SetLocalization RPC.
*/
export interface LostDetectorState {
/**
* Whether or not the robot is currently lost. If this is true, graph nav will reject
* NavigateTo or NavigateRoute RPC's.
*/
isLost: boolean;
}
/**
* The GetLocalizationState response message returns the current localization and robot state, as well
* as any requested live data information.
*/
export interface GetLocalizationStateResponse {
/** Common response header. */
header: ResponseHeader | undefined;
/**
* Where the robot currently is. If a waypoint_id was specified in the request, this localization
* will be relative to that waypoint.
*/
localization: Localization | undefined;
/** Robot kinematic state at time of localization. */
robotKinematics: KinematicState | undefined;
/** Status of one or more remote point cloud services (such as velodyne). */
remoteCloudStatus: RemotePointCloudStatus[];
/**
* Contains live data at the time of localization, with elements only filled out
* if requested.
*/
liveData: WaypointSnapshot | undefined;
/**
* If the robot drives around without a good localization for a while, eventually
* it becomes "lost." I.E. it has a localization, but it no longer trusts
* that the localization it has is accurate. Lost detector state is
* available through this message.
*/
lostDetectorState: LostDetectorState | undefined;
}
/**
* Clears the graph on the server. Also clears GraphNav's localization to the graph.
* Note that waypoint and edge snapshots may still be cached on the server after this
* operation. This RPC may not be used while recording a map.
*/
export interface ClearGraphRequest {
/** Common request header. */
header: RequestHeader | undefined;
/** The Lease to show ownership of graph-nav service. */
lease: Lease | undefined;
}
/** The results of the ClearGraphRequest. */
export interface ClearGraphResponse {
/** Common response header. */
header: ResponseHeader | undefined;
/** Details about how the lease was used. */
leaseUseResult: LeaseUseResult | undefined;
/** Status of the ClearGraphResponse. */
status: ClearGraphResponse_Status;
}
export declare enum ClearGraphResponse_Status {
STATUS_UNKNOWN = 0,
STATUS_OK = 1,
/**
* STATUS_RECORDING - Graph Nav is currently recording a map. You must call
* StopRecording from the recording service to continue.
*/
STATUS_RECORDING = 2,
UNRECOGNIZED = -1
}
export declare function clearGraphResponse_StatusFromJSON(object: any): ClearGraphResponse_Status;
export declare function clearGraphResponse_StatusToJSON(object: ClearGraphResponse_Status): string;
/**
* Uploads a graph to the server. This graph will be appended to the graph that
* currently exists on the server.
*/
export interface UploadGraphRequest {
/** Common request header. */
header: RequestHeader | undefined;
/**
* Structure of the graph containing waypoints and edges without
* underlying sensor data.
*/
graph: Graph | undefined;
/** The Lease to show ownership of graph-nav service. */
lease: Lease | undefined;
/** If this is true, generate an (overwrite the) anchoring on upload. */
generateNewAnchoring: boolean;
}
/**
* Response to the UploadGraphRequest. After uploading a graph, the user is expected
* to upload large data at waypoints and edges (called snapshots). The response provides
* a list of snapshot IDs which are not yet cached on the server. Snapshots with these IDs should
* be uploaded by the client.
*/
export interface UploadGraphResponse {
/** Common response header. */
header: ResponseHeader | undefined;
/** Status for an upload request. */
status: UploadGraphResponse_Status;
/** Details about how the lease was used. */
leaseUseResult: LeaseUseResult | undefined;
/** The waypoint snapshot ids for which there was cached data. */
loadedWaypointSnapshotIds: string[];
/** The waypoint snapshot ids for which there is no cached data. */
unknownWaypointSnapshotIds: string[];
/** The edge snapshot ids for which there was cached data. */
loadedEdgeSnapshotIds: string[];
/** The edge snapshot ids for which there was no cached data. */
unknownEdgeSnapshotIds: string[];
/** Large graphs can only be uploaded if the license permits them. */
licenseStatus: LicenseInfo_Status;
sensorStatus: SensorCompatibilityStatus | undefined;
}
export declare enum UploadGraphResponse_Status {
STATUS_UNKNOWN = 0,
STATUS_OK = 1,
/** STATUS_MAP_TOO_LARGE_LICENSE - Can't upload the graph because it was too large for the license. */
STATUS_MAP_TOO_LARGE_LICENSE = 3,
/** STATUS_INVALID_GRAPH - The graph is invalid topologically, for example containing missing waypoints referenced by edges. */
STATUS_INVALID_GRAPH = 4,
STATUS_INCOMPATIBLE_SENSORS = 5,
UNRECOGNIZED = -1
}
export declare function uploadGraphResponse_StatusFromJSON(object: any): UploadGraphResponse_Status;
export declare function uploadGraphResponse_StatusToJSON(object: UploadGraphResponse_Status): string;
/**
* The DownloadGraphRequest requests that the server send the graph (waypoints and edges)
* to the client. Note that the returned Graph message contains only the topological
* structure of the map, and not any large sensor data. Large sensor data should be downloaded
* using DownloadWaypointSnapshotRequest and DownloadEdgeSnapshotRequest. Both snapshots and
* the graph are required to exist on the server for GraphNav to localize and navigate.
*/
export interface DownloadGraphRequest {
/** Common request header. */
header: RequestHeader | undefined;
}
/** The DownloadGraph response message includes the current graph on the robot. */
export interface DownloadGraphResponse {
/** Common request header. */
header: ResponseHeader | undefined;
/** The structure of the graph. */
graph: Graph | undefined;
}
/**
* Used to upload waypoint snapshot in chunks for a specific waypoint snapshot. Waypoint
* snapshots consist of the large sensor data at each waypoint.
* Chunks will be streamed one at a time to the server. Chunk streaming is required to prevent
* overwhelming gRPC with large http requests.
*/
export interface UploadWaypointSnapshotRequest {
/** Common response header. */
header: RequestHeader | undefined;
/**
* Serialized bytes of a WaypointSnapshot message, restricted to a chunk no larger than 4MB in size.
* To break the data into chunks, first serialize it to bytes. Then, send the bytes in order as DataChunk objects.
* The chunks will be concatenated together on the server, and deserialized.
*/
chunk: DataChunk | undefined;
/** The Leases to show ownership of the graph-nav service. */
lease: Lease | undefined;
}
/**
* One response for the entire WaypointSnapshot after all chunks have
* been concatenated and deserialized.
*/
export interface UploadWaypointSnapshotResponse {
/** Common response header. */
header: ResponseHeader | undefined;
/** Details about how the lease was used. */
leaseUseResult: LeaseUseResult | undefined;
status: UploadWaypointSnapshotResponse_Status;
sensorStatus: SensorCompatibilityStatus | undefined;
}
export declare enum UploadWaypointSnapshotResponse_Status {
/** STATUS_UNKNOWN - Unset. */
STATUS_UNKNOWN = 0,
/** STATUS_OK - Success. */
STATUS_OK = 1,
/**
* STATUS_INCOMPATIBLE_SENSORS - The data in this waypoint snapshot is not compatible with the
* current configuration of the robot. Check sensor_status for
* more details.
*/
STATUS_INCOMPATIBLE_SENSORS = 2,
UNRECOGNIZED = -1
}
export declare function uploadWaypointSnapshotResponse_StatusFromJSON(object: any): UploadWaypointSnapshotResponse_Status;
export declare function uploadWaypointSnapshotResponse_StatusToJSON(object: UploadWaypointSnapshotResponse_Status): string;
/**
* Used to upload edge data in chunks for a specific edge snapshot. Edge snapshots contain
* large sensor data associated with each edge.
* Chunks will be streamed one at a time to the server. Chunk streaming is required to prevent
* overwhelming gRPC with large http requests.
*/
export interface UploadEdgeSnapshotRequest {
/** Common response header. */
header: RequestHeader | undefined;
/**
* Serialized bytes of a EdgeSnapshot message, restricted to a chunk no larger than 4MB in size.
* To break the data into chunks, first serialize it to bytes. Then, send the bytes in order as DataChunk objects.
* The chunks will be concatenated together on the server, and deserialized
*/
chunk: DataChunk | undefined;
/** The Leases to show ownership of the graph-nav service. */
lease: Lease | undefined;
}
/**
* One response for the entire EdgeSnapshot after all chunks have
* been concatenated and deserialized.
*/
export interface UploadEdgeSnapshotResponse {
/** Common response header. */
header: ResponseHeader | undefined;
/** Details about how the lease was used. */
leaseUseResult: LeaseUseResult | undefined;
}
/**
* The DownloadWaypointSnapshot request asks for a specific waypoint snapshot id to
* be downloaded and has parameters to decrease the amount of data downloaded. After
* recording a map, first call the DownloadGraph RPC. Then, for each waypoint snapshot id,
* request the waypoint snapshot from the server using the DownloadWaypointSnapshot RPC.
*/
export interface DownloadWaypointSnapshotRequest {
/** Common request header. */
header: RequestHeader | undefined;
/** ID of the snapshot associated with a waypoint. */
waypointSnapshotId: string;
/**
* If true, download the full images and point clouds from
* each camera.
*/
downloadImages: boolean;
/**
* If true, the point cloud will be compressed using the smallest
* available point cloud encoding. If false, three 32-bit floats will
* be used per point.
*/
compressPointCloud: boolean;
/**
* Skip downloading the point cloud, and only download other data such as images or world
* objects.
*/
doNotDownloadPointCloud: boolean;
}
/**
* The DownloadWaypointSnapshot response streams the data of the waypoint snapshot id
* currently being downloaded in data chunks no larger than 4MB in size. It is necessary
* to stream these data to avoid overwhelming gRPC with large http requests.
*/
export interface DownloadWaypointSnapshotResponse {
/** Common response header. */
header: ResponseHeader | undefined;
/** Return status for the request. */
status: DownloadWaypointSnapshotResponse_Status;
/** ID of the snapshot associated with a waypoint. */
waypointSnapshotId: string;
/**
* Chunk of data to download. Responses are sent in sequence until the
* data chunk is complete. After receiving all chunks, concatenate them
* into a single byte string. Then, deserialize the byte string into a
* WaypointSnapshot object.
*/
chunk: DataChunk | undefined;
}
export declare enum DownloadWaypointSnapshotResponse_Status {
STATUS_UNKNOWN = 0,
STATUS_OK = 1,
/** STATUS_SNAPSHOT_DOES_NOT_EXIST - Error where the given snapshot ID does not exist. */
STATUS_SNAPSHOT_DOES_NOT_EXIST = 2,
UNRECOGNIZED = -1
}
export declare function downloadWaypointSnapshotResponse_StatusFromJSON(object: any): DownloadWaypointSnapshotResponse_Status;
export declare function downloadWaypointSnapshotResponse_StatusToJSON(object: DownloadWaypointSnapshotResponse_Status): string;
/**
* The DownloadEdgeSnapshot request asks for a specific edge snapshot id to
* be downloaded. Edge snapshots contain the large sensor data stored in each edge.
*/
export interface DownloadEdgeSnapshotRequest {
/** Common request header. */
header: RequestHeader | undefined;
/** ID of the data associated with an edge. */
edgeSn