GraphNav and Robot Locomotion

The GraphNav service provides two RPCs for navigating to different locations on the prior map:

  • NavigateTo

  • NavigateRoute

Both RPCs let the client specify maximum speed as well as the size of the goal region at the final waypoint.

Status and feedback

API clients should periodically query for navigation status during map replay using the NavigationFeedback RPC.

  • Unless an error is returned, NavigationFeedbackResponse is returned with status STATUS_FOLLOWING_ROUTE and the remaining list of waypoints and edges in the route.

  • On successful completion, the navigation status changes to STATUS_REACHED_GOAL when the robot reaches the end of the commanded route, matching both the position and yaw of the final waypoint.

Clients requiring high precision should check localization with GetLocalizationState RPC even after reaching the goal, as the robot will be close but not exactly on the goal.

Autonomous navigation errors

The following error types can interrupt an autonomous route:

Error code Description
STATUS_NO_ROUTE Indicates the client changed something that invalidated the route.
STATUS_NO_LOCALIZATION The robot is not localized to the map.
STATUS_NOT_LOCALIZED_TO_ROUTE Localized and not lost but not on the commanded route.
STATUS_COMMAND_OVERRIDDEN A new GraphNav command has overridden the command that the user is asking for feedback about.
STATUS_LOST Lost means the robot is no longer confident in its localization, and must be re-localized.
STATUS_STUCK Stuck means that the robot is still localized but is having trouble reaching the destination (usually because of an obstacle in the way).
Indicates the robot fell or has a hardware problem.
STATUS_CONSTRAINT_FAULT Indicates the route is over-constrained. Choose a different route.
STATUS_LEASE_ERROR Indicates the lease given to GraphNav is no longer valid.
STATUS_COMMAND_TIMED_OUT Indicates a comms problem or the timeout deadline was reached.