GraphNav Service

The GraphNav service is a place-based localization and locomotion service. You access the GraphNavService on the robot by making RPC calls to localize the robot, navigate a route, or download snapshot data.

Maps are recorded using the GraphNavRecording service or by operating the robot using the tablet controller and using the Autowalk feature to record a map.

Maps contain waypoints and edges. Together, these are known as graphs. The recorded map is used by the robot to follow a sequence of waypoints and edges. During playback, the robot compares its real-time sensor data with sensor data stored during the recording process. This helps the robot determine its location or pose during playback so it can make adjustments.

GraphNavService RPCs

RPC Description
SetLocalization Trigger a manual localization. Typically done to provide the initial localization.
NavigateRoute Tell GraphNav to navigate/traverse a given route.
NavigateTo Tell GraphNav to navigate to a waypoint along a route it chooses.
NavigateToAnchor Tell GraphNav to navigate to a goal with respect to the current anchoring.
NavigationFeedback Get feedback on the active navigation command.
GetLocalizationState Get the localization status, pose, and optionally, current sensor data.
ClearGraph Clears the graph structure. Also the localization.
DownloadGraph Download the full list of waypoint IDs, graph topology and other small info.
UploadGraph Upload the full list of waypoint IDs, graph topology and other small info.
UploadWaypointSnapshot Uploads sensor data taken at a particular waypoint. Uses a streaming RPC because of the amount of data in the snapshot.
UploadEdgeSnapshot Uploads large edge snapshot as a stream for a particular edge.
DownloadWaypointSnapshot Download waypoint data from the server.
DownloadEdgeSnapshot Download edge data from the server.
ValidateGraph Verify that the graph is still valid and all required external services are still available.

GraphNavRecordingService RPCs

Map recording is provided by the GraphNavRecordingService RPC.

RPC Description
StartRecording Begin recording a chain of waypoints.
SetRecordingEnvironment Define persistent annotations for edges and waypoints.
GetRecordStatus Get feedback on the state of the recording service.
CreateWaypoint Create a waypoint at the current location.
CreateEdge Create an edge between two waypoints.
StopRecording Pause the recording service.
GetRecordStatus Tells the client the internal state of the record service, and the structure of the map that has been recorded so far.

Once StartRecording is called, the recording service starts creating waypoints, edges, and associated snapshots.