Skip to content

Locations

lcgao edited this page Apr 1, 2022 · 51 revisions

Navigation & Map

There are two main use cases with regards to locations. The first is location management, and the second is location navigation. The SDK provides methods that allows developers to handle both. Location management allows you to control temi's locations by saving, deleting, fetching and monitoring their changes, while location navigation allows you to send temi to one of those locations and monitor its navigation status while it's in motion.


API Overview

Return Method Description
boolean saveLocation(String location) Save location
boolean deleteLocation(String location) Delete location
List<String> getLocations() Fetch all saved locations
void goTo(String location, boolean backwards, boolean noBypass, SpeedLevel speedLevel) Send temi to a specific location
void goToPosition(Position position, boolean backwards, boolean noBypass, SpeedLevel speedLevel) Send temi to a specific position(coordinate)
MapDataModel getMapData() Get the map data
void repose() Repositioning temi
List<MapModel> getMapList() Get the list of backed up map
void loadMap(String mapId) Load map by map ID
void loadMap(String packageName, String mapId, boolean reposeRequired, Position position) Load the map by map ID and the specific position of the target map
Interface Description
OnLocationsUpdatedListener Locations updated listener
OnGoToLocationStatusChangedListener Go to location(position) status changed listener
OnDistanceToLocationChangedListener Distance to locations changed listener
OnCurrentPositionChangedListener Current position changed listener
OnReposeStatusChangedListener Listener for the status changed of repositioning
OnLoadMapStatusChangedListener Listener for the status changed of loading map
OnDistanceToDestinationChangedListener Listener for the distance left to the destination
Model Description
Position Position(coordinate) in the map
MapDataModel The map data
MapImage The map image data

Methods

saveLocation()

Use this method to save a new location for temi. Locate temi at the location you wish to save and give it a name, the location coordinates are extracted and passed automatically in the request.

  • Parameters

    Parameter Type Description
    location String Location name you wish to save
  • Return

    Type Description
    boolean true if save successfully, false otherwise
  • Prototype

    boolean saveLocation(String location);
  • Required permissions

    None.

  • Support from

    0.10.36


deleteLocation()

Use this method to delete a saved location.

  • Parameters

    Parameter Type Description
    location String Location name you wish to delete
  • Return

    Type Description
    boolean true if delete successfully, false otherwise
  • Prototype

    boolean deleteLocation(String location);
  • Required permissions

    None.

  • Support from

    0.10.44


getLocations()

Use this method to fetch a list of saved locations.

  • Return

    Type Description
    List<String> Locations list
  • Prototype

    List<String> getLocations();
  • Required permissions

    None.

  • Support from

    0.10.36


goTo()

Use this method to send temi to one of your saved locations.

  • Parameters

    Parameter Type Description
    location String Location name you wish the robot to navigate to
    backwards boolean If true will walk backwards to the destination. false by default. Support from 0.10.80
    noByPass boolean If true will disallow bypass the obstacles during go to. Pass null to follow the Settings -> Navigation Settings. Support from 0.10.80
    speedLevel SpeedLevel The speed level of this single go to session. Pass null to start with the speed level in Settings -> Navigation Settings. Support from 0.10.80
  • Prototype

    void goTo(String location, boolean backwards, boolean noBypass, SpeedLevel speedLevel);
  • Required permissions

    None.

  • Support from

    0.10.36


getMapData()

Use this method to get the map data.

This method currently(0.10.70) only supports relatively small map, we will support large map in the next version.
(Fixed in version 0.10.71)

Newly added virtual walls, navigation paths and locations data in 0.10.74.

  • Return

    Type Description
    MapDataModel The map data
  • Prototype

    MapDataModel getMapData();
  • Required permissions

    Map

  • Support from

    0.10.70

  • Note

    This method is a time-consuming operation and is recommended to be used in a non-main thread. For more details please refer to the Sampe code.


goToPosition()

Use this method to send temi to a specific position(coordinate).

  • Parameters

    Parameter Type Description
    position Position Destination coordinate. Ignore its' attribute tiltAngle in this method.
    backwards boolean If true will walk backwards to the destination. false by default. Support from 0.10.80
    noByPass boolean If true will disallow bypass the obstacles during go to. Pass null to follow the Settings -> Navigation Settings. Support from 0.10.80
    speedLevel SpeedLevel The speed level of this single go to session. Pass null to start with the speed level in Settings -> Navigation Settings. Support from 0.10.80
  • Prototype

    void goToPosition(Position position, boolean backwards, boolean noBypass, SpeedLevel speedLevel);
  • Required permissions

    None.

  • Support from

    0.10.70


repose()

Use this method to start repositioning if temi has lost his position(Caused by being lifted, dragged, etc.).

  • Prototype

    void repose();
  • Required permissions

    None.

  • Support from

    0.10.72


getMapList()

Use this method to get the list of the backed up maps.

  • Return

    Type Description
    List<MapModel> List of maps
  • Prototype

    List<MapModel> getMapList();
  • Required permissions

    Map

  • Support from

    0.10.74


loadMap()

Use this method to load the map by map ID.

  • Parameters

    Parameter Type Description
    mapId String ID of the map
  • Prototype

    void loadMap(String mapId);
  • Required permissions

    Map

  • Support from

    0.10.74


loadMap()

Use this method to load the map by map ID and the specific position of the target map.

  • Parameters

    Parameter Type Description
    mapId String ID of the map
    reposeRequired boolean Need to do repose after loading map or not
    position Position The current position of the target map when loading the map. Note that the position here is the position in the map to be loaded
  • Prototype

    void loadMap(String mapId, boolean reposeRequired, Position position);
  • Required permissions

    Map

  • Support from

    0.10.76


Interfaces

OnLocationsUpdatedListener

Set your context to implement this listener and add the override method to get the list of saved locations every time it changes.

Prototype

package com.robotemi.sdk.listeners;

interface OnLocationsUpdatedListener {}

Abstract methods

  • Parameters

    Parameter Type Description
    locations List<String> All saved locations list
  • Prototype

    abstract void onLocationsUpdated(List<String> locations)

Method for adding listener

  • Parameters

    Parameter Type Description
    listener OnLocationsUpdatedListener An instance of a class that implements this interface
  • Prototype

    void addOnLocationsUpdatedListener(OnLocationsUpdatedListener listener);

Method for removing listener

  • Parameters

    Parameter Type Description
    listener OnLocationsUpdatedListener An instance of a class that implements this interface
  • Prototype

    void removeOnLocationsUpdatedListener(OnLocationsUpdatedListener listener);
  • Support from

    0.10.36


OnGoToLocationStatusChangedListener

Set your context to implement this listener and add the override method to get navigation information regarding temi's go to location action.

Prototype

package com.robotemi.sdk.listeners;

interface OnGoToLocationStatusChangedListener {}

Static constants

Constant Type Value Description
START String "start" Navigation to the location has started
CALCULATING String "calculating" Calculating the route to the location
GOING String "going" Calculated the route and is on its' way
COMPLETE String "complete" Arrived at the desired location
ABORT String "abort" Navigation aborted
REPOSING String "reposing" Reposing during the navigation

Abstract methods

  • Parameters

    Parameter Type Description
    location String The name of the location temi is navigating to
    status String Navigation status
    descriptionId int Numerical code that reflects the description of the status
    description String Verbose more informative description of the navigation status (Such as obstacle info)
  • Prototype

    void onGoToLocationStatusChanged(String location, String status, int descriptionId, String description);

Method for adding listener

  • Parameters

    Parameter Type Description
    listener OnGoToLocationStatusChangedListener An instance of a class that implements this interface
  • Prototype

    void addOnGoToLocationStatusChangedListener(OnGoToLocationStatusChangedListener listener);

Method for removing listener

  • Parameters

    Parameter Type Description
    listener OnGoToLocationStatusChangedListener An instance of a class that implements this interface
  • Prototype

    void removeOnGoToLocationStatusChangedListener(OnGoToLocationStatusChangedListener listener);
  • Support from

    0.10.36


OnDistanceToLocationChangedListener

Set your context to implement this listener and add the override method to get the distances to saved locations.

Prototype

package com.robotemi.sdk.navigation.listener;

interface OnDistanceToLocationChangedListener {}

Abstract methods

  • Parameters

    Parameter Type Description
    distances Map<String, Float> A key-value pair collection with String type key(location name) and Float type value(distance)
  • Prototype

    void onDistanceToLocationChanged(Map<String, Float> distances);

Method for adding listener

  • Parameters

    Parameter Type Description
    listener OnDistanceToLocationChangedListener An instance of a class that implements this interface
  • Prototype

    void addOnDistanceToLocationChangedListener(OnDistanceToLocationChangedListener listener);

Method for removing listener

  • Parameters

    Parameter Type Description
    listener OnDistanceToLocationChangedListener An instance of a class that implements this interface
  • Prototype

    void removeOnDistanceToLocationChangedListener(OnDistanceToLocationChangedListener listener);
  • Support from

    0.10.70


OnCurrentPositionChangedListener

Set your context to implement this listener and add the override method to get current position information.

Prototype

package com.robotemi.sdk.navigation.listener;

interface OnCurrentPositionChangedListener {}

Abstract methods

  • Parameters

    Parameter Type Description
    position Position Current position
  • Prototype

    void onCurrentPositionChanged(Position position);

Method for adding listener

  • Parameters

    Parameter Type Description
    listener OnCurrentPositionChangedListener An instance of a class that implements this interface
  • Prototype

    void addOnCurrentPositionChangedListener(OnCurrentPositionChangedListener listener);

Method for removing listener

  • Parameters

    Parameter Type Description
    listener OnCurrentPositionChangedListener An instance of a class that implements this interface
  • Prototype

    void removeOnCurrentPositionChangedListener(OnCurrentPositionChangedListener listener);
  • Support from

    0.10.70


OnReposeStatusChangedListener

Set your context to implement this listener and add the override method to listen to the status changes of repositioning.

Prototype

package com.robotemi.sdk.navigation.listener;

interface OnReposeStatusChangedListener {}

Static constant

All constants here are only for the status of repositioning.

Constant Type Value Description
IDLE int 0 Idle
REPOSE_REQUIRED int 1 Ready to reposition
REPOSING_START int 2 Reposition started
REPOSING_GOING int 3 Repositioning
REPOSING_COMPLETE int 4 Reposition completed
REPOSING_OBSTACLE_DETECTED int 5 Obstacle detected during repositioning
REPOSING_ABORT int 6 Reposition abort

Abstract methods

  • Parameters

    Parameter Type Description
    status int Status of reposition
    description String Description of status
  • Prototype

    void onReposeStatusChanged(int status, String description);

Method for adding listener

  • Parameters

    Parameter Type Description
    listener OnReposeStatusChangedListener An instance of a class that implements this interface
  • Prototype

    void addOnReposeStatusChangedListener(OnReposeStatusChangedListener listener);

Method for removing listener

  • Parameters

    Parameter Type Description
    listener OnReposeStatusChangedListener An instance of a class that implements this interface
  • Prototype

    void removeOnReposeStatusChangedListener(OnReposeStatusChangedListener listener);
  • Support from

    0.10.72


OnLoadMapStatusChangedListener

Set your context to implement this listener and add the override method to listen to the status changes of loading map.

Prototype

package com.robotemi.sdk.map;

interface OnLoadMapStatusChangedListener {}

Static constant

All constants here are only for the status of loading map.

Constant Type Value Description
COMPLETE int 0 Complete
START int 1 Start
ERROR_UNKNOWN int 1000 Unknown error
ERROR_ABORT_FROM_ROBOX int 2000 Abort by Robox
ERROR_ABORT_ON_NOT_CHARGING int 2001 Loading without charging
ERROR_ABORT_BUSY int 2002 temi is on another blocking task
ERROR_ABORT_ON_TIMEOUT int 3000 Timeout
ERROR_PB_STREAM_FILE_INVALID int 4000 Invalid PB file
ERROR_GET_MAP_DATA int 5000 Get error while getting map data from remote

Abstract methods

  • Parameters

    Parameter Type Description
    status int Status of loading map
  • Prototype

    void onLoadMapStatusChanged(int status);

Method for adding listener

  • Parameters

    Parameter Type Description
    listener OnLoadMapStatusChangedListener An instance of a class that implements this interface
  • Prototype

    void addOnLoadMapStatusChangedListener(OnLoadMapStatusChangedListener listener);

Method for removing listener

  • Parameters

    Parameter Type Description
    listener OnLoadMapStatusChangedListener An instance of a class that implements this interface
  • Prototype

    void removeOnLoadMapStatusChangedListener(OnLoadMapStatusChangedListener listener);
  • Support from

    0.10.74

OnDistanceToDestinationChangedListener

Set your context to implement this listener and add the override method to get the distance to the destination.

Prototype

package com.robotemi.sdk.navigation.listener;

interface OnDistanceToDestinationChangedListener {}

Abstract methods

  • Parameters

    Parameter Type Description
    location String Location name of the destination
    distance float Distance to the destination
  • Prototype

    void onDistanceToDestinationChanged(location: String, distance: Float);

Method for adding listener

  • Parameters

    Parameter Type Description
    listener OnDistanceToDestinationChangedListener An instance of a class that implements this interface
  • Prototype

    void addOnDistanceToDestinationChangedListener(OnDistanceToDestinationChangedListener listener);

Method for removing listener

  • Parameters

    Parameter Type Description
    listener OnDistanceToDestinationChangedListener An instance of a class that implements this interface
  • Prototype

    void removeOnDistanceToDestinationChangedListener(OnDistanceToDestinationChangedListener listener);
  • Support from

    0.10.80


Models

Position

Used to hold the position information.

Prototype

package com.robotemi.sdk.navigation.model;

class Position {}

Attributes

Attribute Type Description
x float Position coordinate x
y float Position coordinate y
yaw float -
tiltAngle int Head tilt angle

MapDataModel

Used to hold the map data.

Prototype

package com.robotemi.sdk.map;

class MapDataModel {}

Attributes

Attribute Type Description
mapImage MapImage The map image data
mapId String Map ID
mapInfo MapInfo Map information
virtualWalls List<Layer> Layer collection of virtual walls
greenPaths List<Layer> Layer collection of navigation paths
locations List<Layer> Layer collection of locations

MapImage

Used to hold the map image data.

Prototype

package com.robotemi.sdk.map;

class MapImage {}

Attributes

Attribute Type Description
typeId String -
rows int The size of the rows of the map data matrix
cols int The size of the columns of the map data matrix
dt String -
data List<Integer> The one-dimensional array converted from map data matrix

MapInfo

Used to hold the map information.

Prototype

package com.robotemi.sdk.map;

class MapInfo {}

Attributes

Attribute Type Description
height int height
width int width
originX float Origin coordinate x
originY float Origin coordinate y
resolution float Resolution

Layer

Used to hold the map layer data.

Prototype

package com.robotemi.sdk.map;

class Layer {}

Attributes

Attribute Type Description
layerCreationUTC int Timestamp of creating the layer
layerCategory int Layer category
layerId String Layer ID
layerThickness float Layer thickness
layerStatus int Layer status
layerPoses List<LayerPose> Coordinate collection of the layer

LayerPose

Used to hold the coordinate data that make up the map layer.

Prototype

package com.robotemi.sdk.map;

class LayerPose {}

Attributes

Attribute Type Description
x float Coordinate x
y float Coordinate y
theta float -

MapDataModelKt

Prototype

package com.robotemi.sdk.map;

class MapDataModelKt {}

Static constant

Layer category
Constant Type Value Description
GREEN_PATH int 0 Navigation path
VIRTUAL_WALL int 3 Virtual wall
LOCATION int 4 Location
Layer status
Constant Type Value Description
STATUS_CURRENT int 0
STATUS_UPDATE int 1
STATUS_ADD_POSE int 2
STATUS_DELETE int 3

MapModel

Used to hold the map information of the backed up map list.

Prototype

package com.robotemi.sdk.map;

class MapModel {}

Attributes

Attribute Type Description
id String ID of the map
name String Name of the map
Clone this wiki locally