Skip to content

Localization Service Interfaces

Introduction

Localization Service Interfaces:
Provides robot localization operations within a loaded map, including triggering relocalization and querying current localization state.

PurposePython
Set Localization / Relocalize
Get Localization State

Localization Operations

Python Interface

set_localization(auto_relocation=True, location_name='', pose=None, timeout=200)

Function Description
Trigger robot localization or relocalization. Supports automatic relocalization (scanning the environment to match the map) and manual pose specification.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
auto_relocationboolTrueIf True, use automatic relocalization; if False, use manual pose for localization.
location_namestr''Trigger relocalization using a saved location as the initial pose. Empty string starts from the origin or current estimated position.
posePoseZero poseUsed as the localization initial pose when auto_relocation=False.
timeoutint200Timeout in seconds for localization to complete.

Return Value

TypeDescription
SetLocationResponsestate.code == 0 indicates localization succeeded.

Example

python
from daystar_api.lowlevel_skills import set_localization

# Automatic relocalization (recommended)
result = set_localization()
if result.state.code == 0:
    print("Relocalization succeeded")

# Use a known saved location as initial pose
result = set_localization(location_name="entrance", timeout=300)

# Manual pose localization
from daystar_api.lowlevel_skills import Pose
pose = Pose()
pose.position.x = 1.0
pose.position.y = 2.0
pose.orientation.w = 1.0
result = set_localization(auto_relocation=False, pose=pose)

get_localization_state()

Function Description
Get the robot's current localization state with automatic data validation (waits up to 3 seconds, 5-second staleness threshold). Returns UNKNOWN_LOC when data is unavailable.

Parameter Description

No parameters.

Return Value

TypeDescription
GetLocalizationStateResponsestate.code == 0 indicates query succeeded; loc_state is a LocalizationState enum: NORMAL(0) normal, LACKDATA(1) insufficient data, LOST(2) localization lost, UNKNOWN_LOC(99) unknown.

Example

python
from daystar_api.lowlevel_skills import get_localization_state, LocalizationState

response = get_localization_state()
if response.state.code == 0:
    if response.loc_state == LocalizationState.NORMAL:
        print("Localization is normal, ready to navigate")
    elif response.loc_state == LocalizationState.LOST:
        print("Localization lost, relocalization required")