Skip to content

SLAM Navigation Service Interface

FunctionC++PythonC#JavaROS
Start Mapping
Stop Mapping
Load Map
Get Map List
Upload Map
Download Map
Get Localization State
Get Current Pose
Relocalization
Add Navigation Location
Add Virtual Location
Delete Location
Get Available Locations
Navigation Control
Multi-parameter Navigation
Cancel Navigation
Get Navigation Events

Attention!!!

  1. Map Requirements: Before using navigation interfaces, map files must be created by scanning the environment with LiDAR:

    ● External LiDAR Mapping: Use a phone or handheld LiDAR device for mapping (Format: PCD point cloud file, Coordinate System: Right-handed system, Z-axis up)

    ● Internal Robot LiDAR Mapping: Start/Stop mapping by calling SDK interfaces or using the SDK visualization panel tool. During mapping, remotely control the robot dog to move slowly. Upon successfully stopping mapping, the map will be saved in the robot dog, and you can choose whether to load the map for use.

    ● Ensure the navigation area is completely scanned to generate point cloud information.

  2. Mode Requirements: To start navigation control, the robot mode must be switched to navigation mode. This can be done via the companion controller app or by calling the "Set Control Mode" interface in the "High-Level Motion Service Interfaces" chapter in your program.

  3. Navigation Workflow:

    ● Robot has no map or map needs changing: Mapping ---> Relocalization Success ---> Create Location ---> Execute Navigation (Location name or Coordinates)

    ● Robot has current environment map: Relocalization Success ---> Get Locations ---> Create Location (Optional) ---> Execute Navigation (Location name or Coordinates)

  4. Current navigation supports straight-line walking and does not support automatic obstacle avoidance. When creating locations, ensure there are no obstacles on the straight line between two points.

Mapping Interfaces

Python Interface

Optional[Dict] start_mapping(timeout=10.0)

Function Description
Start mapping.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
timeoutintDefault: 5Timeout (seconds).

Return Value

TypeDescription
Optional[Dict]Contains operation result.

Call Example

python
from daystar_sdk import WebSocketRobotClient

with WebSocketRobotClient(host='localhost', port=5252) as client:
    result = await client.start_mapping()

Optional[Dict] stop_mapping(map_name, auto_reload=True, timeout=10.0)

Function Description
Stop mapping and save map.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
map_namestrRequiredName to save the map as.
auto_reloadboolDefault: TrueWhether to automatically load this map after saving.
timeoutintDefault: 60Timeout (seconds).

Return Value

TypeDescription
Optional[Dict]Contains operation result.

Call Example

python
from daystar_sdk import WebSocketRobotClient

with WebSocketRobotClient(host='localhost', port=5252) as client:
    result = await client.stop_mapping("office_map", auto_reload=True)

C# Interface

(bool success, string message) StartMapping(int id = 209, int timeoutMs = 10000)

Function Description
Start mapping task.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
idintDefault: 210Request ID.
timeoutMsintDefault: 5000Timeout.

Return Value

TypeDescription
(bool success, string message)Operation result.

Call Example

python
private RobotSDKManager _robotSDKManager;
private RobotNavigationClient _navigationClient;

_robotSDKManager = RobotSDKManager.Instance;
_navigationClient = _robotSDKManager.CreateRobotNavigationClient();

var result = _navigationClient.StartMapping();
if (result.success)
{
    Debug.Log("Start Mapping...");
}

(bool success, string message) StopMapping(string mapName, bool autoReload = true, int id = 210, int timeoutMs = 10000)

Function Description
Stop mapping and save.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
mapNamestringRequiredMap name.
autoReloadboolDefault: trueWhether to automatically load this map after saving.
idintDefault: 211Request ID.
timeoutMsintDefault: 60000Timeout.

Return Value

TypeDescription
(bool success, string message)Operation result.

Call Example

python
private RobotSDKManager _robotSDKManager;
private RobotNavigationClient _navigationClient;

_robotSDKManager = RobotSDKManager.Instance;
_navigationClient = _robotSDKManager.CreateRobotNavigationClient();

var result = _navigationClient.StopMapping("office_v1");
if (result.success)
{
    Debug.Log("Map Saved Successful!");
}

Java Interface

void StartMapping(String mapName)

Function Description
Start mapping.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
mapNameStringRequiredTemporary map name (usually empty or used for identification).

Call Example

python
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;

slamNaviClient.StartMapping("");

void StopMapping(String mapName, boolean autoReload)

Function Description
Stop mapping.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
mapNameStringRequiredMap name to save.
autoReloadboolDefault: trueWhether to automatically load this map after saving.

Call Example

python
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;

slamNaviClient.StopMapping("office_map", true);

C++ Interface

CommReply startMapping()

Function Description
Start mapping.

Return Value

TypeDescription
CommReplyContains success (bool) and message (string).

Call Example

python
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();

if (sysb.connect()) {
    auto reply = sysb.startMapping();
    if (reply.success) {
        std::cout << "Mapping mode has been started." << std::endl;
    }
}

CommReply stopMapping(const std::string &map_name, bool auto_reload = true)

Function Description
Stop mapping.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
mapNameStringRequiredMap name to save.
autoReloadboolDefault: trueWhether to automatically load this map after saving.

Return Value

TypeDescription
CommReplyContains success (bool) and message (string).

Call Example

python
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();

if (sysb.connect()) {
    auto reply = sysb.stopMapping("office_floor1");
    if (reply.success) {
        std::cout << "Mapping completed and saved." << std::endl;
    }
}

ROS2 Interface

Start Mapping

This interface is used to start the robot's mapping mode.

Service NameService TypeRole
/sdk/nav/start_mappingapi_msgs::srv::StartMappingServer

Request Structure

Field NameTypeDescription
(None)-No parameters required.

Response Structure

Field NameTypeDescription
successboolWhether mapping started successfully.
messagestringOperation result message.

Call Example

bash
ros2 service call /sdk/nav/start_mapping api_msgs/srv/StartMapping '{}'

Stop Mapping

This interface is used to stop mapping and save the map.

Service NameService TypeRole
/sdk/nav/stop_mappingapi_msgs::srv::StopMappingServer

Request Structure

Field NameTypeDescription
map_namestringName to save the map as.
auto_reloadboolWhether to automatically load the map after saving.
need_2d_mapboolWhether to generate a 2D map.
blockboolWhether to block until completion.
timeoutint32Timeout (seconds).

Response Structure

Field NameTypeDescription
successboolWhether stopping and saving was successful.
messagestringOperation result message.

Call Example

bash
ros2 service call /sdk/nav/stop_mapping api_msgs/srv/StopMapping '{map_name: "office_map", auto_reload: true, need_2d_map: false, block: true, timeout: 10}'

Map Management Interfaces

Python Interface

Optional[Dict] load_map(map_name, auto_reload=False, timeout=15.0)

Function Description
Load a specific map.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
map_namestrRequiredMap name to load.
auto_reloadboolDefault: FalseWhether to set as the default map (True: auto-load after robot reboot, False: load for current session only)
timeoutintDefault: 20Timeout.

Return Value

TypeDescription
Optional[Dict]Contains success (bool) and message (str).

Call Example

bash
from daystar_sdk import WebSocketRobotClient

with WebSocketRobotClient(host='localhost', port=5252) as client:
    result = await client.load_map("office_map")

Optional[Dict] get_map_list(timeout=10.0)

Function Description
Get list of available maps.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
timeoutintDefault: 10Timeout.

Return Value

TypeDescription
Optional[Dict]Contains maps list in result (List[str]).

Call Example

bash
from daystar_sdk import WebSocketRobotClient

with WebSocketRobotClient(host='localhost', port=5252) as client:
    res = await client.get_map_list()
    print(res.get('map_names', []))

bool upload_map(map_name: str, map_data: bytes, progress_callback: Callable = None)

Function Description
Upload map file.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
map_namestrRequiredMap name.
map_databytesRequiredMap file binary data.
progress_callbackCallableDefault: NoneProgress callback (current, total, bytes).

Return Value

TypeDescription
boolWhether upload succeeded.

Call Example

python
with open("office.pcd", "rb") as f:
    await client.upload_map("office", f.read())

Optional[bytes] download_map(map_name: str, progress_callback: Callable = None)

Function Description
Download map file.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
map_namestrRequiredMap name.
progress_callbackCallableDefault: NoneProgress callback.

Return Value

TypeDescription
Optional[bytes]Map data if successful, None otherwise.

Call Example

python
data = await client.download_map("office")
if data:
    with open("office.pcd", "wb") as f:
        f.write(data)

C# Interface

(bool success, string message) LoadMap(string mapName, bool autoReload = false, int id = 211, int timeoutMs = 10000)

Function Description
Load a map.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
map_namestrRequiredMap name.
autoReloadboolDefault: falseWhether to set as the default map (true: auto-load after robot reboot, false: load for current session only)
idintDefault: 211Request ID (can be ignored).
timeoutMsintDefault: 10000Timeout.

Return Value

TypeDescription
(bool success, string message)Operation result tuple.

Call Example

python
private RobotSDKManager _robotSDKManager;
private RobotNavigationClient _navigationClient;

_robotSDKManager = RobotSDKManager.Instance;
_navigationClient = _robotSDKManager.CreateRobotNavigationClient();

_navigationClient.LoadMap("office_map");

(bool success, string[] map_names, string message) GetMapList(int id = 213, int timeoutMs = 10000)

Function Description
Get map list.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
idintDefault: 213Request ID (can be ignored)
timeoutMsintDefault: 10000Timeout duration

Return Value

TypeDescription
(bool success, string[] map_names, string message)Operation result tuple.

Call Example

csharp
private RobotSDKManager _robotSDKManager;
private RobotNavigationClient _navigationClient;

_robotSDKManager = RobotSDKManager.Instance;
_navigationClient = _robotSDKManager.CreateRobotNavigationClient();

var result = _navigationClient.GetMapList();
if (result.success)
{
    foreach(var name in result.map_names) Debug.Log(name);
}

(string status, string message) UploadMap(string mapName, byte[] mapData, int requestId = 300, int timeoutMs = 30000)

Function Description
Upload map file.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
mapNamestringRequiredMap name.
mapDatabyte[]RequiredMap data.
requestIdintDefault: 300Request ID.
timeoutMsintDefault: 30000Timeout.

Return Value

TypeDescription
(string status, string message)Operation result ("success" / "error").

Call Example

csharp
private RobotSDKManager _robotSDKManager;
private RobotNavigationClient _navigationClient;

_robotSDKManager = RobotSDKManager.Instance;
_navigationClient = _robotSDKManager.CreateRobotNavigationClient();

string localMapPath = "Assets/Maps/map.pcd";
byte[] mapData = System.IO.File.ReadAllBytes(localMapPath);

_navigationClient.RegisterUploadProgressCallback(OnUploadProgress); 
_navigationClient.UploadMap("office", mapData);


void OnUploadProgress(AssetTransferProgress progress)
{
    try
    {

        string displayText = $"【Upload Progress】\n" +
                           $"Request ID: {progress.request_id}\n" +
                           $"Chunk : {progress.completed_chunks}/{progress.total_chunks}\n" +
                           $"Byte : {FormatBytes(progress.transferred_bytes)}/{FormatBytes(progress.total_bytes)}\n" +
                           $"Progress: {progress.progress_percentage:F1}%\n" +
                           $"Status: {progress.status}";
        
        if (progress.is_completed)
        {
            if (progress.status == "completed")
            {
                displayText += "\n✓ Upload Success!";
            }
            else if (progress.status == "failed")
            {
                displayText += $"\n✗ Upload Failed: {progress.error_message}";
            }
        }
        
    }
    catch (Exception ex)
    {
        Debug.LogError($"Error in OnUploadProgress: {ex.Message}");
    }
}


_navigationClient.UnregisterUploadProgressCallback();

void DownloadMap(string mapName, int requestId = 301)

Function Description
Download map file (Result via callback).

Parameter Description

Parameter NameTypeRequired/DefaultDescription
mapNamestringRequiredMap name.
requestIdintDefault: 301Request ID.

Return Value

TypeDescription
voidNo return value (Must register callback).

Call Example

csharp
private RobotSDKManager _robotSDKManager;
private RobotNavigationClient _navigationClient;

_robotSDKManager = RobotSDKManager.Instance;
_navigationClient = _robotSDKManager.CreateRobotNavigationClient();

_navigationClient.RegisterDownloadProgressCallback(OnDownloadProgress); //Monitor download progress

_navigationClient.DownloadMap("office");

void OnDownloadProgress(AssetTransferProgress progress)
{
    try
    {
        string displayText = $"【Upload Progress】\n" +
                           $"Request ID: {progress.request_id}\n" +
                           $"Chunk : {progress.completed_chunks}/{progress.total_chunks}\n" +
                           $"Byte : {FormatBytes(progress.transferred_bytes)}/{FormatBytes(progress.total_bytes)}\n" +
                           $"Progress: {progress.progress_percentage:F1}%\n" +
                           $"Status: {progress.status}";
        Debug.Log($"[DownloadProgress] {progressText}");
        if (progress.is_completed)
        {
            if (progress.status == "completed")
            {
                displayText += "\n✓ Download Success!";
            }
            else if (progress.status == "failed")
            {
                displayText += $"\n✗ Download Failed: {progress.error_message}";
            }
        }
        
    }
    catch (Exception ex)
    {
        Debug.LogError($"Error in OnDownloadProgress: {ex.Message}");
    }
}

_navigationClient.UnregisterDownloadProgressCallback();

Java Interface

ServiceOperationResponse LoadMap(String mapName, boolean auto_reload)

Function Description
Load a specific map.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
mapNameStringRequiredMap name.
auto_reloadbooleanRequiredWhether to auto reload.

Return Value

TypeDescription
ServiceOperationResponseContains isSuccess() (boolean) and getMessage() (String).

Call Example

java
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;

// Load map
slamNaviClient.LoadMap("office_map", true);

List<String> GetMapList()

Function Description
Get list of available maps.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
---No parameters.

Return Value

TypeDescription
List<String>List of map names.

Call Example

java
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;
import java.util.List;

// Get map list
List<String> maps = slamNaviClient.GetMapList();
for (String map : maps) {
    System.out.println("Found map: " + map);
}

CompletableFuture<UploadResourceResponse> uploadMap(String mapName, byte[] data, int timeoutSeconds)

Function Description
Upload map file.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
mapNameStringRequiredMap name.
databyte[]RequiredMap file binary data.
timeoutSecondsintRequiredTimeout (seconds).

Return Value

TypeDescription
CompletableFuture<UploadResourceResponse>Async upload result, contains status and message.

Call Example

java
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;
import java.nio.file.Files;
import java.nio.file.Paths;

// Upload map
byte[] mapData = Files.readAllBytes(Paths.get("office.pcd"));
slamNaviClient.uploadMap("office", mapData, 30).thenAccept(response -> {
    if (response.isSuccess()) {
        System.out.println("Upload success");
    }
});

CompletableFuture<byte[]> downloadMap(String mapName, int timeoutSeconds)

Function Description
Download map file.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
mapNameStringRequiredMap name.
timeoutSecondsintRequiredTimeout (seconds).

Return Value

TypeDescription
CompletableFuture<byte[]>Async returns map binary data.

Call Example

java
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;
import java.nio.file.Files;
import java.nio.file.Paths;

// Download map
slamNaviClient.downloadMap("office", 30).thenAccept(data -> {
    if (data != null) {
        try {
            Files.write(Paths.get("office.pcd"), data);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
});

C++ Interface

GetAvailableMapsReply getAvailableMaps()

Function Description
Get the list of all available maps.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
----

Return Value

TypeDescription
GetAvailableMapsReplyIncludes a success flag, a message, and a maps list of type std::vectorstd::string.

Call Example

cpp
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();
if (sysb.connect()) {
    auto reply = sysb.getAvailableMaps();
    for (const auto &map_name : reply.maps) {
        std::cout << "Found map: " << map_name << std::endl;
    }
}

CommReply loadMap(const std::string &map_name, bool auto_reload = false)

Function Description
Load map.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
map_nameconst std::string &RequiredMap name.
auto_reloadboolDefault: falseSet as default map? (true: auto-load after robot restart; false: load for current session only).

Return Value

TypeDescription
CommReplyIncludes a success flag, a message.

Call Example

cpp
Lenovo::Daystar::SDK sdk;
if (!sdk.isConnected()) {
    std::cerr << "Can not connect SDK server with default settings"
              << std::endl;
    return 1;
} else {
    std::cout << "Connected with default settings" << std::endl;
}
auto &sysb = sdk.getSYSB();
if (sysb.connect()) {
    sysb.loadMap("office_map");
}

CommReply uploadMap(const std::string &map_name, const std::vector<uint8_t> &file_data)

Function Description
Upload map file.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
map_nameconst std::string &RequiredMap name.
file_dataconst std::vector<uint_8> &RequiredMap data.

Return Value

TypeDescription
CommReplyIncludes a success flag, a message.

Call Example

cpp
// C++
Lenovo::Daystar::SDK sdk;

if (!sdk.isConnected()) {
    std::cerr << "Can not connect SDK server with default settings"
              << std::endl;
    return 1;
} else {
    std::cout << "Connected with default settings" << std::endl;
}
auto &sysb = sdk.getSYSB();
std::string name = getStringInput("Please enter the name for the uploaded map file: ");
std::string filepath = getStringInput("Please enter the path of the local map file: ");
// Read file data
std::ifstream file_stream(filepath, std::ios::binary);
if (!file_stream)
{
    std::cout << "✗ Failed to open the file: " << filepath << std::endl;
    break;
}
std::vector<uint8_t> file_data((std::istreambuf_iterator<char>(file_stream)), std::istreambuf_iterator<char>());
file_stream.close();

auto result = sysb.uploadMap(name, file_data);
if (result.success == true)
{
    std::cout << "✓ Map file uploaded successfully: " << name << std::endl;
}
else
{
    std::cout << "✗ Map file uploaded failed: " << result.message << std::endl;
}

CommReply downloadMap(const std::string &map_name, const std::vector<uint8_t> &file_data)

Function Description
Download map data.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
map_nameconst std::string &RequiredMap name.
file_dataconst std::vector<uint_8> &RequiredMap data.

Return Value

TypeDescription
CommReplyIncludes a success flag, a message.

Call Example

cpp
// C++
Lenovo::Daystar::SDK sdk;

if (!sdk.isConnected()) {
    std::cerr << "Can not connect SDK server with default settings"
              << std::endl;
    return 1;
} else {
    std::cout << "Connected with default settings" << std::endl;
}
auto &sysb = sdk.getSYSB();
std::string name = getStringInput("Please enter the name of the map file to download: ");
std::vector<uint8_t> file_data;

auto result = sysb.downloadMap(name, file_data);
if (result.success == true)
{
    // save map date as .pcd
    std::string filename = name;
    if (filename.find(".pcd") == std::string::npos) {
        filename += ".pcd";
    }
                    
    std::string download_dir = ensureDownloadDir();
    std::string save_path = download_dir + "/" + filename;
                    
    std::ofstream out_file(save_path, std::ios::binary);
    if (!out_file) {
        std::cout << "✗ Failed to create the file: " << save_path << std::endl;
        break;
    }
                    
    out_file.write(reinterpret_cast<const char *>(file_data.data()), file_data.size());
    out_file.close();
                    
    if (out_file.fail()) {
        std::cout << "✗ File write failed: " << save_path << std::endl;
    } else {
        std::cout << "✓ Map file downloaded successfully" << std::endl;
        std::cout << "  File size: " << (file_data.size() / 1024.0 / 1024.0) << " MB" << std::endl;
        std::cout << "  Save to: " << save_path << std::endl;
    }
}
else
{
    std::cout << "✗ Map file download failed: " << result.message << std::endl;
}

ROS2 Interface

Load Map

This interface is used to load a specific map.

Service NameService TypeRole
/sdk/nav/load_mapapi_msgs::srv::LoadMapServer

Request Structure

Field NameTypeDescription
map_namestringMap name.
auto_reloadboolWhether to set as default map (true: auto-load on robot restart, false: load for current session only).

Response Structure

Field NameTypeDescription
successboolWhether loading was successful.
messagestringOperation result message.

Call Example

bash
ros2 service call /sdk/nav/load_map api_msgs/srv/LoadMap '{map_name: "office_map", auto_reload: true}'

Get Map List

This interface is used to get a list of all available map names on the robot.

Service NameService TypeRole
/sdk/nav/get_available_mapsapi_msgs::srv::GetA, location_name="", location_pose=None, timeout=60.0)

Function Description\ Relocalization.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
auto_relocalizationboolRequiredWhether to auto-relocalize.
location_namestrDefault: ""Location name (optional).
location_poseDictDefault: NoneLocation pose (optional).
timeoutfloatDefault: 60.0Timeout (seconds)
Call Example
bash
ros2 service call /sdk/nav/get_available_maps api_msgs/srv/GetAvailableMaps '{}'

Localization Interfaces

Python Interface

Optional[Dict] get_localization_state()

Function Description
Get localization state.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
---No parameters.

Return Value

TypeDescription
Optional[Dict]Contains the following fields: - success (bool): Whether the acquisition was successful - loc_state (int): Localization state - 0: NORMAL - 1: LACKDATA - 2: LOST

Call Example

python
from daystar_sdk.client import RobotClient
# Initialize client
with RobotClient(host='localhost', port=5252) as client:
    result = await client.get_localization_state()
    if result and result.get('success'):
        loc_state = result.get('loc_state')
        # ... logic omitted ...
        print(f"Localization State: {state_names.get(loc_state, 'Unknown')}")
    else:
        print(f"Failed to get localization state: {result.get('message') if result else 'Unknown error'}")

Optional[Dict] get_current_pose()

Function Description
Get current pose.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
---No parameters.

Return Value

TypeDescription
Optional[Dict]Contains the following fields: - success (bool): Whether the acquisition was successful - message (str): Operation result message - location_pose (Dict): Position and orientation info - position (Dict): Position coordinates {x, y, z} - orientation (Dict): Orientation quaternion

Call Example

python
from daystar_sdk.client import RobotClient
# Initialize client
with RobotClient(host='localhost', port=5252) as client:
    # Get pose
    result = await client.get_current_pose()
    if result and result.get('success'):
        pose = result.get('location_pose', {})
        # ... logic omitted ...
        print(f"Current Pose: x={orientation.get('x')}, y={orientation.get('y')}, z={orientation.get('z')}, w={orientation.get('w')}")
    else:
        print(f"Failed to get pose: {result.get('message') if result else 'Unknown error'}")

Optional[Dict] relocalization(auto_relocalization: bool, location_name: str = "", x: float = 0.0, y: float = 0.0, theta: float = 0.0, timeout: int = 20)

Function Description
Manual relocalization interface.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
auto_relocalizationboolRequiredWhether to maintain current estimated pose (True) or use new parameters (False).
location_namestrDefault: ""Location name to relocate to (used if auto_relocalization=False).
xfloatDefault: 0.0X coordinate (used if location_name is empty).
yfloatDefault: 0.0Y coordinate.
thetafloatDefault: 0.0Orientation angle.
timeoutintDefault: 20Timeout in seconds.

Return Value

TypeDescription
Optional[Dict]Contains operation result.

Call Example

python
# 1. Auto Relocalization (keep current estimate)
await client.relocalization(auto_relocalization=True)

# 2. Relocalize to "Home"
await client.relocalization(auto_relocalization=False, location_name="Home")

# 3. Relocalize to specific coordinates
await client.relocalization(auto_relocalization=False, x=1.5, y=2.0, theta=0.0)

C# Interface

(bool success, string message) Relocalization(bool autoRelocation, string locationName = null, PoseData locationPose = null, int id = 212, int timeoutMs = 10000)

Function Description
Relocalization.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
autoRelocationboolRequiredWhether to auto-relocate.
locationNamestringOptionalLocation name.
locationPosePoseDataOptionalLocation pose.
idintDefault: 212Request ID.
timeoutMsintDefault: 10000Timeout (ms).

Return Value

TypeDescription
(bool success, string message)Operation result tuple.

Call Example

csharp
private RobotSDKManager _robotSDKManager;
private RobotNavigationClient _navigationClient;

_robotSDKManager = RobotSDKManager.Instance;
_navigationClient = _robotSDKManager.CreateRobotNavigationClient();

// Call relocalization
var (success, message) = _navigationClient.Relocalization(true);
if (success)
{
    Debug.Log($"✓ Relocalization Successful");
}

PoseStamped? GetCurrentPose(int id = 207, int timeoutMs = 5000)

Function Description
Get current robot pose (Sync method).

Parameter Description

Parameter NameTypeRequired/DefaultDescription
idintDefault: 207Request ID.
timeoutMsintDefault: 5000Timeout (ms).

Return Value

TypeDescription
PoseStamped?Robot current pose information. Returns null on failure. Contains fields: - header (Header): Message header - stamp (string): Timestamp - frame_id (string): Frame ID - pose (Pose3D): Pose info - position (Point3D): Position {x, y, z} - orientation (Quaternion3D): Orientation

Call Example

csharp
private RobotSDKManager _robotSDKManager;
private RobotNavigationClient _navigationClient;

_robotSDKManager = RobotSDKManager.Instance;
_navigationClient = _robotSDKManager.CreateRobotNavigationClient();

var pose = _navigationClient.GetCurrentPose();
if (pose.HasValue)
{
    var position = pose.Value.pose.position;
    Debug.Log($"Position: ({position.x}, {position.y}, {position.z})");
}

(bool success, int loc_state)? GetLocalizationStateSync(int id = 208, int timeoutMs = 5000)

Function Description
Get localization state (Sync method).

Parameter Description

Parameter NameTypeRequired/DefaultDescription
idintDefault: 208Request ID.
timeoutMsintDefault: 5000Timeout (ms).

Return Value

TypeDescription
(bool success, int loc_state)?Localization state tuple, contains success flag and state value. Returns null on failure. loc_state values: - 0: NORMAL - 1: LACKDATA - 2: LOST

Call Example

csharp
private RobotSDKManager _robotSDKManager;
private RobotNavigationClient _navigationClient;

_robotSDKManager = RobotSDKManager.Instance;
_navigationClient = _robotSDKManager.CreateRobotNavigationClient();

var result = _navigationClient.GetLocalizationStateSync(208, 5000);
if (result.HasValue)
{
    bool success = result.Value.success;
    int locState = result.Value.loc_state;
    Debug.Log($"Localization State: {locState}");
}

Java Interface

int GetLocalizationState()

Function Description
Get current localization state.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
---No parameters.

Return Value

TypeDescription
intLocalization state code. - 0: NORMAL - 1: LACKDATA - 2: LOST

Call Example

java
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;

// Get localization state
int state = slamNaviClient.GetLocalizationState();
String stateStr;
switch (state) {
    case 0: stateStr = "NORMAL"; break;
    case 1: stateStr = "LACKDATA"; break;
    case 2: stateStr = "LOST"; break;
    default: stateStr = "Unknown(" + state + ")"; break;
}
System.out.println("Localization State: " + stateStr);

LocationPose GetCurrentLocationPose()

Function Description
Get robot current pose (structured object form).

Parameter Description

Parameter NameTypeRequired/DefaultDescription
---No parameters.

Return Value

TypeDescription
LocationPoseCurrent pose object. Contains fields: - position (Point3D): Position coordinates {x, y, z} - orientation (Quaternion3D): Orientation quaternion

Call Example

java
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;
import com.lenovo.daystar_bot_sdk_client.DataEntities.LocationPose;

// Get current pose
LocationPose pose = slamNaviClient.GetCurrentLocationPose();
String poseStr = String.format("Position: (%.3f, %.3f, %.3f)\nOrientation: (%.3f, %.3f, %.3f, %.3f)",
    pose.position.x, pose.position.y, pose.position.z,
    pose.orientation.x, pose.orientation.y, pose.orientation.z, pose.orientation.w);
System.out.println(poseStr);

void Relocalization(boolean auto_relocalization, String locationName, LocationPose virtual_pose)

Function Description
Trigger relocalization manually.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
auto_relocalizationbooleanRequiredWhether to use auto relocalization (maintain current estimate).
locationNameStringRequiredTarget location name (if !auto_relocalization).
virtual_poseLocationPoseRequiredTarget pose structure (if locationName is empty).

Return Value

TypeDescription
voidNo return value.

Call Example

java
// Auto relocalization
slamNaviClient.Relocalization(true, "", null);

void AutoRelocalization()

Function Description
Trigger automatic relocalization.

Return Value

TypeDescription
voidNo return value.

Call Example

java
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;

slamNaviClient.AutoRelocalization();
System.out.println("Trigger automatic relocalization.");

void RelocateWithName(boolean autoRelocalize, String locationName)

Function Description
Relocalize using a named position point.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
autoRelocalizebooleanRequiredWhether to attempt automatic relocalization first.
locationNameStringRequiredName of the position point.

Return Value

TypeDescription
voidNo return value.

Call Example

java
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;

slamNaviClient.RelocateWithName(true, "home_position");

void RelocateWithPosition(boolean autoRelocalize, LocationPose poseData)

Function Description
Relocalize using the specified pose.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
autoRelocalizebooleanRequiredWhether to attempt automatic relocalization first.
poseDataLocationPoseRequiredTarget pose (including position and orientation).

Return Value

TypeDescription
voidNo return value.

Call Example

java
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;
import com.lenovo.daystar_bot_sdk_client.DataEntities.LocationPose;


LocationPose pose = new LocationPose(/* args */);
slamNaviClient.RelocateWithPosition(true, pose);

C++ Interface

bool getLocalizationState(int &loc_state)

Function Description
Get localization system state.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
loc_stateint &RequiredReturns localization state.

Return Value

TypeDescription
booltrue success, false failure.

Call Example

cpp
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();

if (sysb.connect()) {
    int loc_state;
    if (sysb.getLocalizationState(loc_state)) {
        std::cout << "Localization State: " << loc_state << std::endl;
    }
}

bool getCurrentPose(Pose &current_pose)

Function Description
Get robot current pose.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
current_posePose &RequiredReturns current pose information.

Return Value

TypeDescription
booltrue success, false failure.

Call Example

cpp
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();

if (sysb.connect()) {
    Pose current_pose;
    if (sysb.getCurrentPose(current_pose)) {
        std::cout << "Current Pose: (" << current_pose.position.x << ", " << current_pose.position.y << ", " << current_pose.position.z << ")" << std::endl;
    }
}

CommReply relocalization(bool auto_relocalization, const std::string &location_name, const Pose &virtual_pose, int timeout = 20)

Function Description
Trigger relocalization.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
auto_relocalizationboolRequiredAuto relocalization flag.
location_nameconst std::string &RequiredLocation name target.
virtual_poseconst Pose &RequiredCoordinate target.
timeoutintDefault: 20Timeout (seconds).

Return Value

TypeDescription
CommReplyContains success (bool) and message (string).

Call Example

cpp
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();

if (sysb.connect()) {
    auto reply = sysb.relocalization(true, "", Pose());
    if (reply.success) {
        std::cout << "Relocation command has been sent." << std::endl;
    }
}

ROS2 Interface

GetLocalization State

This interface is used to obtain the current positioning status of the robot.

Service NameService TypeRole
/sdk/nav/get_localization_stateapi_msgs::srv::GetLocalizationStateServer

Response Structure

Field NameTypeDescription
successboolWhether the acquisition is successful
loc_stateuint8Location status code
messagestringOperation result information

Location status code

ValueDescription
0NORMAL (Normal positioning)
1LACKDATA (Insufficient data)
2LOST (Positioning lost)

Call Example

bash
ros2 service call /sdk/nav/get_localization_state api_msgs/srv/GetLocalizationState '{}'

Get Current Position

This interface is used to obtain the current coordinate position of the robot on the map (only available when positioning status is normal).

Service NameService TypeRole
/sdk/nav/get_current_poseapi_msgs::srv::GetCurrentPoseServer

Response Structure

Field NameTypeDescription
location_posegeometry_msgs/PoseCurrent position and posture of the robot.
successboolWhether the acquisition is successful.
messagestringOperation result information.

Call Example

bash
ros2 service call /sdk/nav/get_current_pose api_msgs/srv/GetCurrentPose '{}'

Relocalization

This interface is used to trigger robot relocation, allowing automatic relocation or manual position specification.

Service NameService TypeRole
/sdk/nav/set_localizationapi_msgs::srv::SetLocalizationServer

Request Structure

Field NameTypeDescription
auto_relocationboolWhether to relocate automatically (the last two parameters are ignored when true).
location_namestringName of the specified relocation point (optional, pass an empty string).
location_posegeometry_msgs/PoseCoordinates for the specified relocation (optional).

Response Structure

Field NameTypeDescription
successboolWhether the relocation command was sent successfully.
messagestringOperation result information.

Call Example

bash
ros2 service call /sdk/nav/set_localization api_msgs/srv/SetLocalization '{auto_relocation: true, location_name: ""}'

Add Navigation Location

Python Interface

Optional[Dict] add_location(location_name: str, use_virtual_pose: bool = False, x: float = 0.0, y: float = 0.0, theta: float = 0.0, timeout: int = 30)

Function Description
Add navigation location.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
location_namestrRequiredLocation name.
use_virtual_poseboolDefault: FalseWhether to use virtual coordinates instead of current robot pose.
xfloatDefault: 0.0X coordinate (if use_virtual_pose=True).
yfloatDefault: 0.0Y coordinate (if use_virtual_pose=True).
thetafloatDefault: 0.0Orientation angle (if use_virtual_pose=True).
timeoutintDefault: 30Timeout in seconds.

Return Value

TypeDescription
Optional[Dict]Contains operation result.

Call Example

python
from daystar_sdk import WebSocketRobotClient
# Initialize client
with WebSocketRobotClient(host='localhost', port=5252) as client:
    # Add current location
    client.add_location("home_position")
    # Add virtual location
    client.add_location("virtual_point", use_virtual_pose=True, x=1.0, y=2.0)

C# Interface

void AddLocation(string locationName, int timeout = 30, int id = 200)

Function Description
Add current pose as a navigation location.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
locationNamestringRequiredLocation name.
timeoutintDefault: 30Timeout (seconds).
idintDefault: 200Request ID.

Return Value

TypeDescription
voidNo return value.

Call Example

csharp
string locationName = $"Location_{System.DateTime.Now:yyyyMMdd_HHmmss}";
var result = _navigationClient.AddLocation(locationName);
if (result.success)
{
    Debug.Log($"Successfully added location '{locationName}'");
}

(bool success, string message) AddLocation(string locationName, bool useVirtualPose, PoseData virtualPose, int id = 200, int timeoutMs = 30000)

Function Description
Add navigation location (supports virtual pose).

Parameter Description

Parameter NameTypeRequired/DefaultDescription
locationNamestringRequiredLocation name.
useVirtualPoseboolRequiredUse virtual pose flag.
virtualPosePoseDataRequiredVirtual pose data.
idintDefault: 200Request ID.
timeoutMsintDefault: 30000Timeout.

Return Value

TypeDescription
(bool success, string message)Operation result.

Call Example

csharp
var vPose = new PoseData();
_navigationClient.AddLocation("v_point", true, vPose);

Java Interface

void AddLocation(String locationName, boolean use_virtual_pose, LocationPose virtual_pose)

Function Description
Add a named location point (waypoint/marker).

Parameter Description

Parameter NameTypeRequired/DefaultDescription
locationNameStringRequiredLocation point name.
use_virtual_posebooleanRequiredWhether to use virtual pose. Pass false to use current robot pose.
virtual_poseLocationPoseOptionalVirtual pose. Must provide when use_virtual_pose is true, otherwise pass null.

Return Value

TypeDescription
voidNo return value.

Call Example

java
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;

// Add current position as navigation location
String locationName = "home_position";
slamNaviClient.AddLocation(locationName, false, null);
System.out.println("✓ Successfully added location: " + locationName);

C++ Interface

bool addLocation(const std::string &location_name, int timeout = 30)

Function Description
Add location point.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
location_nameconst std::string &RequiredLocation name.
timeoutintDefault: 30Timeout (seconds).

Return Value

TypeDescription
booltrue success, false failure.

Call Example

cpp
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();

if (sysb.connect()) {
    if (sysb.addLocation("OfficeEntrance", 30)) {
        std::cout << "Location 'OfficeEntrance' added successfully" << std::endl;
    } else {
        std::cerr << "Failed to add location" << std::endl;
    }
}

bool addLocation(const std::string &location_name, bool use_virtual_pose, const Pose &virtual_pose, int timeout = 30)

Function Description
Add navigation location (virtual pose support).

Parameter Description

Parameter NameTypeRequired/DefaultDescription
location_nameconst std::string &RequiredLocation name.
use_virtual_poseboolRequiredUse virtual pose flag.
virtual_poseconst Pose &RequiredVirtual pose data.
timeoutintDefault: 30Timeout.

Return Value

TypeDescription
boolSuccess flag.

Call Example

cpp
Pose p;
sysb.addLocation("v_pt", true, p);

ROS2 Interface

Add Navigation Location

This interface is used to add a navigation location at the robot's current position or at specified virtual coordinates.

Service NameService TypeRole
/sdk/nav/add_locationapi_msgs::srv::AddLocationServer

Request Structure

Field NameTypeDescription
location_namestringLocation name.
timeoutint32Timeout (seconds).
use_virtual_poseboolWhether to use virtual coordinates to add the location (uses virtual_pose if true).
virtual_posegeometry_msgs/PoseVirtual location coordinates (effective when use_virtual_pose is true).

Response Structure

Field NameTypeDescription
location_posegeometry_msgs/PoseThe actual saved location coordinates.
map_namestringThe name of the map it belongs to.
successboolWhether adding was successful.
messagestringOperation result message.

Call Example

cpp
# Add a location at the current position
ros2 service call /sdk/nav/add_location api_msgs/srv/AddLocation '{location_name: "OfficeEntrance", timeout: 30, use_virtual_pose: false}'

# Add a virtual location
ros2 service call /sdk/nav/add_location api_msgs/srv/AddLocation '{location_name: "VirtualPointA", timeout: 30, use_virtual_pose: true, virtual_pose: {position: {x: 1.0, y: 2.0, z: 0.0}, orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0}}}'

Delete Location Interfaces

Python Interface

Optional[Dict] delete_location(location_name)

Function Description
Delete navigation location.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
location_namestrRequiredName of location to delete.

Return Value

TypeDescription
Optional[Dict]Contains the following fields: - success (bool): Whether deleted successfully - message (str): Operation result message

Call Example

python
from daystar_sdk import WebSocketRobotClient
# Initialize client
with WebSocketRobotClient(host='localhost', port=5252) as client:
    result = client.delete_location("position")

C# Interface

(bool success, string message) DeleteLocation(string locationName, int id = 201, int timeoutMs = 5000)

Function Description
Delete specified navigation location.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
locationNamestringRequiredName of location to delete.
idintDefault: 201Request ID.
timeoutMsintDefault: 5000Timeout (ms).

Return Value

TypeDescription
(bool success, string message)Operation result tuple.

Call Example

csharp
var result = _navigationClient.DeleteLocation("location_name");
if (result.success)
{
    Debug.Log("Delete success"); 
}

Java Interface

void DeleteLocation(String locationName)

Function Description
Delete a named location point.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
locationNameStringRequiredName of location to delete.

Return Value

TypeDescription
voidNo return value.

Call Example

java
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;

// Delete location point
String locationName = "home_position";
slamNaviClient.DeleteLocation(locationName);
System.out.println("✓ Successfully deleted location: " + locationName);

C++ Interface

bool deleteLocation(const std::string &location_name)

Function Description
Delete location point.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
location_nameconst std::string &RequiredLocation name.

Return Value

TypeDescription
booltrue success, false failure.

Call Example

cpp
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();

if (sysb.connect()) {
    if (sysb.deleteLocation("OfficeEntrance")) {
        std::cout << "Location 'OfficeEntrance' deleted successfully" << std::endl;
    } else {
        std::cerr << "Failed to delete location" << std::endl;
    }
}

ROS2 Interface

Delete point

This interface is used to delete the navigation point with the specified name.

Service NameService TypeRole
/sdk/nav/delete_locationapi_msgs::srv::DeleteLocationServer

Request Structure

Field NameTypeDescription
location_namestringName of the point to be deleted.

Response Structure

Field NameTypeDescription
successboolWhether deletion is successful
messagestringOperation result information

Call Example

bash
ros2 service call /sdk/nav/delete_location api_msgs/srv/DeleteLocation '{location_name: "office_1"}'

Get Available Locations Interfaces

Python Interface

Optional[Dict] get_available_locations()

Function Description
Get existing locations.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
---No parameters.

Return Value

TypeDescription
Optional[Dict]Contains the following fields: - location_names (List[str]): List of location names

Call Example

python
from daystar_sdk import WebSocketRobotClient
# Initialize client
with WebSocketRobotClient(host='localhost', port=5252) as client:
    result = client.get_available_locations()
    location_names = result.get('location_names', [])

C# Interface

List<string> GetAvailableLocations(int id = 202, int timeoutMs = 5000)

Function Description
Get all available navigation locations (Sync method, returns list directly).

Parameter Description

Parameter NameTypeRequired/DefaultDescription
idintDefault: 202Request ID.
timeoutMsintDefault: 5000Timeout (ms).

Return Value

TypeDescription
List<string>List of location names, returns empty list on failure.

Call Example

csharp
var locations = _navigationClient.GetAvailableLocations();
if (locations.Count > 0)
{
    foreach (var loc in locations)
    {
        Debug.Log($"Location: {loc}");
    }
}

Java Interface

List<String> GetLocationList()

Function Description
Get saved location point name list.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
---No parameters.

Return Value

TypeDescription
List<String>List of location point names.

Call Example

java
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;
import java.util.List;

// Get location list
List<String> locations = slamNaviClient.GetLocationList();
System.out.println("✓ Got " + locations.size() + " locations:");
for (String loc : locations) {
    System.out.println("  - " + loc);
}

LocationListDetails GetLocationListDetails()

Function Description
Get detailed list of saved location points.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
---No parameters.

Return Value

TypeDescription
LocationListDetailsObject containing detailed location information.

Call Example

java
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;
import com.lenovo.daystar_bot_sdk_client.DataEntities.LocationListDetails;

LocationListDetails details = slamNaviClient.GetLocationListDetails();
// Process details data

C++ Interface

bool getAvailableLocations(std::vector<std::string> &location_names, std::vector<Pose> &location_poses)

Function Description
Get all available location points.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
location_namesstd::vector<std::string> &RequiredReturns list of location names.
location_posesstd::vector<Pose> &RequiredReturns list of location poses.

Return Value

TypeDescription
booltrue success, false failure.

Call Example

cpp
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();

if (sysb.connect()) {
    std::vector<std::string> names;
    std::vector<Pose> poses;
    
    if (sysb.getAvailableLocations(names, poses)) {
        std::cout << "Available Locations:" << std::endl;
        # ... logic omitted ...
        
    }
}

ROS2 Interface

Get Avaliable Locations

This interface is used to obtain the list of all saved navigation points in the current map.

Service NameService TypeRole
/sdk/nav/get_available_locationsapi_msgs::srv::GetAvailableLocationsServer

Response Structure

Service NameService TypeRole
successboolWhether the acquisition is successful
location_namesstring[]List of point names
location_posesgeometry_msgs/Pose[]List of corresponding point coordinates
messagestringOperation result information

Call Example

bash
ros2 service call /sdk/nav/get_available_locations api_msgs/srv/GetAvailableLocations '{}'

Navigation Control Interfaces

In the navigation control interface, detailed navigation behaviors can be configured via the TravelParams object.

Parameter NameTypeDescriptionValues/Notes
speed_modeintSpeed Mode0=UNKNOWN, 1=NORMAL, 2=LOW, 3=HIGH
distance_tolerancefloatDistance ToleranceThreshold for goal reached, Unit: meters
gaitintGait Mode1=AUTO, 2=TROT, 3=CRAWL, 4=AMBLE, 5=SLOPE, 7=NORMAL_STAIR, etc.
path_following_modeintPath Following Mode0=UNKNOWN, 1=DEFAULT, 2=OFF (Free Nav), 3=AUTO, 4=STRICT
direction_constraintintDirection Constraint1=NONE, 2=NO_TURN, 3=FORWARD, 4=REVERSE
ignore_final_yawboolIgnore Final Yawtrue=Ignore, false=Match
disable_body_obstacle_avoidanceboolDisable Obstacle Avoidancetrue=Disable, false=Enable

Python Interface

Optional[Dict] navigate_to_location(location_name, timeout=60, travel_params=None)

Function Description
Navigate to preset location. Can specify detailed navigation parameters via travel_params.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
location_namestrRequiredTarget location name.
timeoutintDefault: 60Navigation timeout in seconds.
travel_paramsMsgTravelParamsDefault: NoneNavigation parameters object (from daystar_api import MsgTravelParams).

Return Value

TypeDescription
Optional[Dict]Contains the following fields: - success (bool): Whether started successfully - message (str): Operation result message

Call Example

python
from daystar_sdk import WebSocketRobotClient
from daystar_api import MsgTravelParams

# Initialize client
with WebSocketRobotClient(host='localhost', port=5252) as client:
    # Default navigation
    client.navigate_to_location("home_position")

    # Navigation with parameters
    params = MsgTravelParams()
    params.speed_mode = 2 # LOW
    client.navigate_to_location("office", timeout=30, travel_params=params)

Optional[Dict] navigate_to_xyz(x, y, z, timeout=60, frame_id="map", travel_params=None)

Function Description
Navigate to specified coordinates.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
xfloatRequiredx coordinate.
yfloatRequiredy coordinate.
zfloatRequiredz coordinate.
timeoutintDefault: 60Navigation timeout in seconds.
frame_idstrDefault: "map"Frame ID.
travel_paramsMsgTravelParamsDefault: NoneNavigation parameters object.

Return Value

TypeDescription
Optional[Dict]Contains the following fields: - success (bool): Whether started successfully - message (str): Operation result message

Call Example

python
from daystar_sdk import WebSocketRobotClient
from daystar_api import MsgTravelParams

# Initialize client
with WebSocketRobotClient(host='localhost', port=5252) as client:
    params = MsgTravelParams()
    params.path_following_mode = 2 # OFF (Free Nav)
    client.navigate_to_xyz(x=5.0, y=3.0, z=0.0, timeout=30, travel_params=params)

C# Interface

void NavigateToLocation(string locationName, TravelParams travelParams, int timeout = 60, int id = 203)

Function Description
Navigate to preset location point (with detailed parameters).

Parameter Description

Parameter NameTypeRequired/DefaultDescription
locationNamestringRequiredTarget location name.
travelParamsTravelParamsRequiredNavigation parameters object.
timeoutintDefault: 60Navigation timeout (seconds).
idintDefault: 203Request ID.

Return Value

TypeDescription
voidNo return value.

Call Example

csharp
var params = new TravelParams();
params.speed_mode = 2; // Low speed
_navigationClient.NavigateToLocation("location_name", params);

void NavigateToPosition(float x, float y, float z, TravelParams travelParams, int timeout = 60, string frameId = "map", int id = 205)

Function Description
Navigate to specified coordinate position (with detailed parameters).

Parameter Description

Parameter NameTypeRequired/DefaultDescription
x, y, zfloatRequiredTarget coordinates.
travelParamsTravelParamsRequiredNavigation parameters object.
timeoutintDefault: 60Navigation timeout.
frameIdstringDefault: "map"Frame ID.
idintDefault: 205Request ID.

Return Value

TypeDescription
voidNo return value.

Call Example

csharp
var params = new TravelParams();
params.path_following_mode = 1; // Default
_navigationClient.NavigateToPosition(1.0f, 0.0f, 0.0f, params);

void NavigateToLocation(string locationName, int timeout = 60, int id = 203)

Function Description
Navigate to preset location point.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
locationNamestringRequiredTarget location name.
timeoutintDefault: 60Navigation timeout (seconds).
idintDefault: 203Request ID.

Return Value

TypeDescription
voidNo return value.

Call Example

csharp
_navigationClient.NavigateToLocation("location_name");

void NavigateToPosition(float x, float y, float z, int timeout = 60, string frameId = "map", int id = 205)

Function Description
Navigate to specified coordinate position (XYZ).

Parameter Description

Parameter NameTypeRequired/DefaultDescription
xfloatRequiredx coordinate.
yfloatRequiredy coordinate.
zfloatRequiredz coordinate.
timeoutintDefault: 60Navigation timeout (seconds).
frameIdstringDefault: "map"Frame ID.
idintDefault: 205Request ID.

Return Value

TypeDescription
voidNo return value.

Call Example

csharp
_navigationClient.NavigateToPosition(1.0f, 0.0f, 0.0f);

Java Interface

void NavigateToLocation(String locationName, Optional<MsgTravelParams> params, int timeout)

Function Description
Navigate to specified named location point.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
locationNameStringRequiredTarget location point name.
paramsOptional<MsgTravelParams>RequiredNavigation parameter configuration. Pass Optional.empty() for default parameters.
timeoutintRequiredNavigation timeout (unit: seconds).

Return Value

TypeDescription
voidNo return value.

Call Example

java
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;
import java.util.Optional;

// Navigate to location
String locationName = "home_position";
int timeout = 60;
slamNaviClient.NavigateToLocation(locationName, Optional.empty(), timeout);
System.out.println("✓ Started navigation to location: " + locationName);

void NavigateToPosition(LocationPose pose, Optional<MsgTravelParams> params, int timeout, String frameId)

Function Description
Navigate to specified coordinate pose.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
poseLocationPoseRequiredTarget pose.
paramsOptional <MsgTravelParams>RequiredNavigation parameters.
timeoutintRequiredNavigation timeout (unit: seconds).
frameIdStringRequiredFrame ID (e.g., "map")

Return Value

TypeDescription
voidNo return value.

Call Example

java
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;
import com.lenovo.daystar_bot_sdk_client.DataEntities.*;
import java.util.Optional;

// Navigate to coordinate position
LocationPose pose = new LocationPose(
    new Point3D(1.0f, 0.0f, 0.0f),
    new Quaternion3D(0.0f, 0.0f, 0.0f, 1.0f)
);
slamNaviClient.NavigateToPosition(pose, Optional.empty(), 60, "map");
System.out.println("✓ Started navigation to coordinates: (1.0, 0.0, 0.0)");

void NavigateViaPoses(List<PoseStamped> exec_waypoints, Optional<MsgTravelParams> params, int execType)

Function Description
Navigate via a sequence of poses (Path Navigation).

Parameter Description

Parameter NameTypeRequired/DefaultDescription
exec_waypointsList<PoseStamped>RequiredList of waypoints.
paramsOptional<MsgTravelParams>RequiredNavigation parameters.
execTypeintRequiredExecution type.

Return Value

TypeDescription
voidNo return value.

Call Example

java
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;
import java.util.Collections;
import java.util.Optional;

// Path navigation example
slamNaviClient.NavigateViaPoses(Collections.emptyList(), Optional.empty(), 0);

C++ Interface

bool navigateToLocation(const std::string &location_name, int timeout = 60, const MsgTravelParams& travel_params = MsgTravelParams())

Function Description
Navigate to specified location point.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
location_nameconst std::string &RequiredTarget location name.
timeoutintDefault: 60Timeout (seconds).
travel_paramsconst MsgTravelParams &Default: Default ctorNavigation parameters object.

Return Value

TypeDescription
booltrue success, false failure.

Call Example

cpp
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();

// Default navigation
if (sysb.connect()) {
    if (sysb.navigateToLocation("OfficeEntrance", 60)) {
        std::cout << "Started navigation to 'OfficeEntrance'" << std::endl;
    }
}

// Navigation with parameters
if (sysb.connect()) {
    MsgTravelParams params;
    params.speed_mode.value = 2; // LOW
    sysb.navigateToLocation("MeetingRoom", 60, params);
}

bool navigateToPosition(const PoseStamped &target_pose, int timeout = 60, const MsgTravelParams& travel_params = MsgTravelParams())

Function Description
Navigate to specified pose.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
target_poseconst PoseStamped &RequiredTarget pose.
timeoutintDefault: 60Timeout (seconds).
travel_paramsconst MsgTravelParams &Default: Default ctorNavigation parameters object.

Return Value

TypeDescription
booltrue success, false failure.

Call Example

cpp
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();

if (sysb.connect()) {
    // Create target pose
    auto target_pose = sysb.createPose(5.0f, 3.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, "map");
    
    // Navigation with parameters
    MsgTravelParams params;
    params.ignore_final_yaw = true;
    sysb.navigateToPosition(target_pose, 60, params);
}

ROS2 Interface

This interface is used to control the robot to navigate to a saved named point.

Service NameService TypeRole
/sdk/nav/navigate_to_locationapi_msgs::srv::NavigateToLocationServer

Request Structure

Field NameTypeDescription
location_namestringTarget point name.
travel_paramsapi_msgs/TravelParamsNavigation parameters (optional, default values are used if not filled).
timeoutint32Timeout duration (seconds).

Response Structure

Field NameTypeDescription
successboolWhether navigation is completed successfully.
messagestringOperation result information.

Call Example

bash
ros2 service call /sdk/nav/navigate_to_location api_msgs/srv/NavigateToLocation '{location_name: "office_1", timeout: 60}'

Navigate to Specified Coordinates This interface is used to control the robot to navigate to the specified coordinate position on the map.

Service NameService TypeRole
/sdk/nav/navigate_to_positionapi_msgs::srv::NavigateToPositionServer

Request Structure

Field NameTypeDescription
target_posegeometry_msgs/PoseStampedTarget position and posture (including frame_id).
travel_paramsapi_msgs/TravelParamsNavigation parameters (optional; default values apply if not provided).
timeoutint32Timeout (seconds).

Response Structure

Field NameTypeDescription
successboolWhether navigation is completed successfully.
messagestringOperation result information.

Call Example

bash
ros2 service call /sdk/nav/navigate_to_position api_msgs/srv/NavigateToPosition '{target_pose: {header: {frame_id: "map"}, pose: {position: {x: 5.0, y: 3.0, z: 0.0}, orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0}}}, timeout: 60}'

Multi-waypoint navigation

This interface is used to control the robot to complete navigation by passing through multiple waypoints in sequence.

Service NameService TypeRole
/sdk/nav/navigation_via_posesapi_msgs::srv::NavigationViaPosesServer

Request Structure

Field NameTypeDescription
exec_waypointsgeometry_msgs/PoseStamped[]Waypoint list (executed in sequence).
exec_typeuint8Execution mode.
travel_paramsapi_msgs/TravelParamsNavigation parameters (optional, default values are used if not provided).

exec_type value

ValueDescription
1AUTONOMOUS
2STRICTTRACK
3FITTING_STRAIGHT
4FITTING_CIRCULAR
5FITTING_SINE

Response Structure

Field NameTypeDescription
successboolWhether navigation is completed successfully.
messagestringOperation result information.

Call Example

bash
ros2 service call /sdk/nav/navigation_via_poses api_msgs/srv/NavigationViaPoses '{exec_type: 1, exec_waypoints: [{header: {frame_id: "map"}, pose: {position: {x: 1.0, y: 0.0, z: 0.0}, orientation: {w: 1.0}}}]}'

Cancel Navigation Control

Python Interface

Optional[Dict] cancel_navigation(task_id="")

Function Description
Cancel navigation control.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
task_idstrDefault: ""Task ID, empty string indicates cancelling the current task.

Return Value

TypeDescription
Optional[Dict]Contains the following fields: - success (bool): Whether cancelled successfully - message (str): Operation result message

Call Example

python
from daystar_sdk import WebSocketRobotClient
# Initialize client
with WebSocketRobotClient(host='localhost', port=5252) as client:
    result = await client.cancel_navigation()
    if result and result.get('success'):
        print(f"Navigation cancelled successfully: {result.get('message')}")
    else:
        print(f"Failed to cancel navigation: {result.get('message') if result else 'Unknown error'}")

C# Interface

void CancelNavigation(string taskId = "", int id = 206)

Function Description
Cancel current navigation task.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
taskIdstringDefault: ""Task ID, empty string indicates cancelling the current task.
idintDefault: 206Request ID.

Return Value

TypeDescription
voidNo return value.

Call Example

csharp
_navigationClient.CancelNavigation();

Java Interface

void CancelNavigation(String taskId)

Function Description
Cancel navigation task.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
taskIdStringRequiredTask ID. Pass empty string "" to cancel current task.

Return Value

TypeDescription
voidNo return value.

Call Example

java
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;

// Cancel current navigation task
slamNaviClient.CancelNavigation("");
System.out.println("✓ Cancel navigation command sent");

C++ Interface

bool cancelNavigation(const std::string &task_id = "")

Function Description
Cancel current navigation task.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
task_idconst std::string &Default: ""Task ID (empty string indicates cancelling the current task).

Return Value

TypeDescription
booltrue success, false failure.

Call Example

cpp
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();

if (sysb.connect()) {
    // Start navigation
    sysb.navigateToLocation("OfficeEntrance");
    
    // ... logic omitted ...
    }
}

ROS2 Interface

Cancel Naviagtion

This interface is used to cancel the currently executing navigation task.

Service NameService TypeRole
/sdk/nav/cancel_navigationapi_msgs::srv::CancelNavigationServer

Request Structure

Field NameTypeDescription
task_idstringTask ID (An empty string indicates canceling the current task).

Response Structure

Field NameTypeDescription
successboolWhether the cancellation is successful.
messagestringOperation result information.

Call Example

bash
ros2 service call /sdk/nav/cancel_navigation api_msgs/srv/CancelNavigation '{task_id: ""}'

Get Navigation Events Interfaces

Python Interface

bool register_navigation_result(callback)

Function Description
Register navigation result event callback.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
callbackfunctionRequiredCallback function, must receive 2 arguments: - result_type (str): Result type ("complete"

Return Value

TypeDescription
boolReturns True on success, False on failure.

Event Data Example

json
{
    "location_name": "Target Point A",
    // ... logic omitted ...
    "task_id": "nav_task_001"
}

Call Example

python
from daystar_sdk import WebSocketRobotClient

# Initialize client  
with WebSocketRobotClient(host='localhost', port=5252) as client:
    # Define navigation result callback
    # ... logic omitted ...
    success = await client.register_navigation_result(on_navigation_result)

bool unregister_navigation_result()

Function Description
Unregister navigation result callback.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
---No parameters.

Return Value

TypeDescription
boolReturns True on success, False on failure.

bool register_navigation_feedback(callback)

Function Description
Register navigation feedback status callback.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
callbackfunctionRequiredCallback function, receives 1 argument: - data (Dict): Navigation feedback data

Return Value

TypeDescription
boolReturns True on success, False on failure.

Feedback Data Example

json
{
    "status": "navigating",
    // ... logic omitted ...
    "timestamp": 1693632001.456
}

Status Type Description

  • navigating: Navigating
  • paused: Navigation paused
  • idle: Idle
  • planning: Path planning
  • recovering: Recovering

Call Example

python
from daystar_sdk import WebSocketRobotClient

# Initialize client
with WebSocketRobotClient(host='localhost', port=5252) as client:
    # Define navigation feedback callback
    # ... logic omitted ...
    success = await client.register_navigation_feedback(on_navigation_feedback)

bool unregister_navigation_feedback()

Function Description
Unregister navigation feedback callback.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
---No parameters.

Return Value

TypeDescription
boolReturns True on success, False on failure.

C# Interface

bool RegisterNavigationResultCallback(Action<string, object> callback)

Function Description
Register navigation result event callback.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
callbackAction<string, object>RequiredCallback function, receives 2 arguments: - result (string): Result type (e.g. "complete", "failed") - data (object): Event data

Return Value

TypeDescription
boolReturns true on success, false on failure.

Call Example

csharp
_navigationClient.RegisterNavigationResultCallback((result, data) =>
{
    Debug.Log($"Navigation Result: {result}, Data: {data}");
});

bool UnregisterNavigationResultCallback()

Function Description
Unregister navigation result callback.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
---No parameters.

Return Value

TypeDescription
boolReturns true on success, false on failure.

Call Example

csharp
_navigationClient.UnregisterNavigationResultCallback();

bool RegisterNavigationFeedbackCallback(Action<object> callback)

Function Description
Register navigation feedback status callback.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
callbackAction<object>RequiredCallback function, receives 1 argument: - feedback (object): Navigation feedback data

Return Value

TypeDescription
boolReturns true on success, false on failure.

Call Example

csharp
_navigationClient.RegisterNavigationFeedbackCallback((feedback) =>
{
    if (feedback is string jsonString)
    // ... logic omitted ...
    }
});

bool UnregisterNavigationFeedbackCallback()

Function Description
Unregister navigation feedback callback.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
---No parameters.

Return Value

TypeDescription
boolReturns true on success, false on failure.

Call Example

csharp
_navigationClient.UnregisterNavigationFeedbackCallback();

Java Interface

void RegisterNavigationResultCallback(ServiceHandler<NavCompleteRequest, NavCompleteResponse> onComplete, ServiceHandler<NavFailedRequest, NavFailedResponse> onFailed)

Function Description
Register navigation result callback.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
onCompleteServiceHandler<NavCompleteRequest, NavCompleteResponse>RequiredNavigation completion callback handler.
onFailedServiceHandler<NavFailedRequest, NavFailedResponse>RequiredNavigation failure callback handler.

Return Value

TypeDescription
voidNo return value.

Call Example

java
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;
import com.lenovo.daystar_bot_sdk_client.DataEntities.*;

// Register navigation result callback
slamNaviClient.RegisterNavigationResultCallback(
    // Navigation complete callback
    (request, response) -> {
        System.out.println("✓ Navigation complete: " + request.location_name);
        return response;
    },
    // Navigation failed callback
    (request, response) -> {
        System.out.println("✗ Navigation failed: " + request.message);
        return response;
    }
);

void RegisterNarrowRoadInfo(Consumer<NarrowRoadInfo> callback)

Function Description
Register narrow road intelligence info callback.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
callbackConsumer<NarrowRoadInfo>RequiredNarrow road info callback.

Return Value

TypeDescription
voidNo return value.

void UnregisterNarrowRoadInfo()

Function Description
Unregister narrow road intelligence info callback.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
---No parameters.

Return Value

TypeDescription
voidNo return value.

void RegisterNavigationFeedbackCallback(Consumer<NavigationFeedback> callback)

Function Description
Register navigation process feedback callback.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
callbackConsumer<NavigationFeedback>RequiredFeedback callback. Receives real-time status and progress information during navigation execution.

Return Value

TypeDescription
voidNo return value.

Call Example

java
import com.lenovo.daystar_bot_sdk_client.client.SlamNaviClient;
import com.lenovo.daystar_bot_sdk_client.DataEntities.NavigationFeedback;

// Register navigation feedback callback
slamNaviClient.RegisterNavigationFeedbackCallback(feedback -> {
    System.out.println("Navigation status: " + feedback.status);
    System.out.println("Navigation progress: " + (feedback.progress * 100) + "%");
});

C++ Interface

void setNavigationResultCallback(std::function<void(const std::string &, const std::string &)> callback)

Function Description
Set navigation result callback.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
callbackstd::function<void(const std::string &, const std::string &)>RequiredCallback function, receives 2 arguments: - task_id (std::string): Task ID - result (std::string): Navigation result data (JSON string)

Return Value

TypeDescription
voidNo return value.

bool registerNavigationResult()

Function Description
Register navigation result event.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
---No parameters.

Return Value

TypeDescription
boolReturns true on success, otherwise false.

Call Example

cpp
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();

// Set navigation result callback
sysb.setNavigationResultCallback([](const std::string &task_id, const std::string &result) {
    std::cout << "Navigation task " << task_id << " result: " << result << std::endl;
});

if (sysb.connect()) {
    sysb.registerNavigationResult();
    sysb.navigateToLocation("OfficeEntrance");
}

void setNavigationFeedbackCallback(std::function<void(const std::string &)> callback)

Function Description
Set navigation feedback callback.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
callbackstd::function<void(const std::string &)>RequiredCallback function, receives 1 argument: - feedback (std::string): Navigation feedback data (JSON string)

Return Value

TypeDescription
voidNo return value.

bool registerNavigationFeedback()

Function Description
Register navigation feedback event.

Parameter Description

Parameter NameTypeRequired/DefaultDescription
---No parameters.

Return Value

TypeDescription
boolReturns true on success, otherwise false.

Call Example

cpp
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();

// Set navigation feedback callback
sysb.setNavigationFeedbackCallback([](const std::string &feedback) {
    std::cout << "Navigation feedback: " << feedback << std::endl;
});

if (sysb.connect()) {
    sysb.registerNavigationFeedback();
    sysb.navigateToLocation("OfficeEntrance");
}

ROS2 Interface

This interface is used to subscribe to real-time progress information during navigation.

Topic NameTopic TypeRole
/sdk/nav/feedbackapi_msgs::msg::NavigationFeedbackPublisher

Message Structure

Field NameTypeDescription
task_idstringCurrent navigation task ID.
target_locationstringTarget point name.
current_posegeometry_msgs/PoseCurrent position of the robot.
distance_remainingfloat32Remaining distance (meters).
navigation_timeint32Elapsed navigation time (seconds).
time_remainingint32Estimated remaining time (seconds).
timestampstringTimestamp.
current_stateuint8Current navigation status code.

current_state

ValueDescription
0UNKNOWN
1STRAIGHT_LINE_NAV
2WAITING
3AUTO_PLANNING_NAV

Call Example

bash
ros2 topic echo /sdk/nav/feedback

When navigation is successfully completed, the SDK service node will invoke this service to notify the upper-layer application. The upper-layer application shall implement the server of this service to receive the navigation completion event.

Service NameService TypeRole
/sdk/nav/nav_complete_eventapi_msgs::srv::NavCompleteEventClient (invoked by the SDK)

Request Structure

Field NameTypeDescription
task_idstringNavigation task ID.
target_locationstringTarget point name.
current_posegeometry_msgs/PoseRobot position upon completion.
navigation_timeint8Time elapsed for navigation (seconds).
timestampstringCompletion timestamp.

Response Structure

Field NameTypeDescription
successboolWhether received and processed.
messagestringProcessing result information.

When navigation fails, the SDK service node will invoke this service to notify the upper-layer application. The upper-layer application shall implement the server of this service to receive the navigation failure event.

Service NameService TypeRole
/sdk/nav/nav_failed_eventapi_msgs::srv::NavFailedEventClient (invoked by the SDK)

Request Structure

Field NameTypeDescription
task_idstringNavigation task ID.
error_typeint8Error type code.
error_msgstringError description.
current_posegeometry_msgs/PoseRobot position on failure.
timestampstringFailure timestamp.
target_locationstringTarget point name.

Response Structure

Field NameTypeDescription
successboolWhether received and processed.
messagestringProcessing result information.