SLAM导航服务接口
| 功能 | C++ | Python | C# |
|---|---|---|---|
| 获取定位状态 | ✔ | ✔ | ✔ |
| 获取当前位置 | ✔ | ✔ | ✔ |
| 添加导航点位 | ✔ | ✔ | ✔ |
| 删除点位 | ✔ | ✔ | ✔ |
| 获取可用点位 | ✔ | ✔ | ✔ |
| 导航控制 | ✔ | ✔ | ✔ |
| 取消导航 | ✔ | ✔ | ✔ |
| 获取导航事件 | ✔ | ✔ | ✔ |
| 获取导航状态 | ✔ | ✔ | ✔ |
注意事项!!!
地图要求:在使用导航接口前,需通过雷达设备扫描环境生成点云数据创建地图文件:
a. 外部雷达设备建图:使用手机或者手持雷达设备建图(格式:pcd点云文件, 坐标系:右手坐标系,Z轴朝上)
b. 需要确保导航的区域进行完整的扫描生成点云信息模式要求:启动导航控制需将机器人模式切换到导航模式,可通过配套手柄应用切换,或者在二次开发的程序中调用《高层运行服务接口》章节“设置控制模式”接口切换成导航模式。
导航使用流程:
a. 机器狗无地图或者需变更地图:建图 ---> 重定位成功 ---> 创建点位 ---> 执行导航(点位名称或坐标)
b. 机器狗有当前环境地图:重定位成功 ---> 获取点位 ---> 创建点位(可选) ---> 执行导航(点位名称或坐标)当前导航支持直线行走,不支持自动绕障,在创建点位时需注意两个点位直线上不要有障碍物。
定位接口
Python接口
Optional[Dict] get_localization_state()
功能说明
获取定位状态。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
| - | - | - | 无参数。 |
返回值
| 类型 | 说明 |
|---|---|
Optional[Dict] | 包含以下字段: - success (bool): 是否获取成功 - loc_state (int): 定位状态 - 0: NORMAL (正常) - 1: LACKDATA (数据不足) - 2: LOST (定位丢失) |
调用示例
from daystar_sdk.client import RobotClient
# 初始化客户端
with RobotClient(host='localhost', port=3232) as client:
result = await client.get_localization_state()
if result and result.get('success'):
loc_state = result.get('loc_state')
state_names = {0: "正常", 1: "数据不足", 2: "定位丢失"}
print(f"定位状态: {state_names.get(loc_state, '未知')}")
else:
print(f"获取定位状态失败: {result.get('message') if result else 'Unknown error'}")Optional[Dict] get_current_pose()
功能说明
获取当前位置。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
| - | - | - | 无参数。 |
返回值
| 类型 | 说明 |
|---|---|
Optional[Dict] | 包含以下字段: - success (bool): 是否获取成功 - message (str): 操作结果信息 - location_pose (Dict): 位置姿态信息 - position (Dict): 位置坐标 {x, y, z} - orientation (Dict): 姿态四元数 |
调用示例
from daystar_sdk.client import RobotClient
# 初始化客户端
with RobotClient(host='localhost', port=3232) as client:
# 位置获取
result = await client.get_current_pose()
if result and result.get('success'):
pose = result.get('location_pose', {})
position = pose.get('position', {})
orientation = pose.get('orientation', {})
print(f"当前位置: x={position.get('x')}, y={position.get('y')}, z={position.get('z')}")
print(f"当前姿态: x={orientation.get('x')}, y={orientation.get('y')}, z={orientation.get('z')}, w={orientation.get('w')}")
else:
print(f"获取位置失败: {result.get('message') if result else 'Unknown error'}")C#接口
(bool success, string message) Relocalization(bool autoRelocation, string locationName = null, PoseData locationPose = null, int id = 212, int timeoutMs = 10000)
功能说明
重定位。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
autoRelocation | bool | 必填 | 是否自动重定位。 |
locationName | string | 可选 | 位置点名称。 |
locationPose | PoseData | 可选 | 位置姿态。 |
id | int | 默认: 212 | 请求ID。 |
timeoutMs | int | 默认: 10000 | 超时时间(毫秒)。 |
返回值
| 类型 | 说明 |
|---|---|
(bool success, string message) | 操作结果元组。 |
调用示例
// 调用重定位
var (success, message) = _navigationClient.Relocalization(true);
if (success)
{
Debug.Log($"✓ 重定位成功");
}PoseStamped? GetCurrentPose(int id = 207, int timeoutMs = 5000)
功能说明
获取当前机器人位置(同步方法)。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
id | int | 默认: 207 | 请求ID。 |
timeoutMs | int | 默认: 5000 | 超时时间(毫秒)。 |
返回值
| 类型 | 说明 |
|---|---|
PoseStamped? | 机器人当前位置信息。失败返回 null。 包含以下字段: - header (Header): 消息头 -- stamp (string): 时间戳 -- frame_id (string): 坐标系ID - pose (Pose3D): 姿态信息 -- position (Point3D): 位置 {x, y, z} -- orientation (Quaternion3D): 方向 |
调用示例
var pose = _navigationClient.GetCurrentPose();
if (pose.HasValue)
{
var position = pose.Value.pose.position;
Debug.Log($"位置: ({position.x}, {position.y}, {position.z})");
}(bool success, int loc_state)? GetLocalizationStateSync(int id = 208, int timeoutMs = 5000)
功能说明
获取定位状态(同步方法)。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
id | int | 默认: 208 | 请求ID。 |
timeoutMs | int | 默认: 5000 | 超时时间(毫秒)。 |
返回值
| 类型 | 说明 |
|---|---|
(bool success, int loc_state)? | 定位状态元组,包含是否成功和状态值。失败返回 null。 loc_state 状态值说明:- 0: NORMAL (正常) - 1: LACKDATA (数据不足) - 2: LOST (定位丢失) |
调用示例
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}");
}C++接口
bool getLocalizationState(int &loc_state)
功能说明
获取定位系统状态。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
loc_state | int & | 必填 | 返回定位状态。 |
返回值
| 类型 | 说明 |
|---|---|
bool | true 成功,false 失败。 |
调用示例
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();
if (sysb.connect()) {
int loc_state;
if (sysb.getLocalizationState(loc_state)) {
std::cout << "定位状态: " << loc_state << std::endl;
}
}bool getCurrentPose(Pose ¤t_pose)
功能说明
获取机器人当前位置。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
current_pose | Pose & | 必填 | 返回当前位置信息。 |
返回值
| 类型 | 说明 |
|---|---|
bool | true 成功,false 失败。 |
调用示例
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();
if (sysb.connect()) {
Pose current_pose;
if (sysb.getCurrentPose(current_pose)) {
std::cout << "当前位置: ("
<< current_pose.position.x << ", "
<< current_pose.position.y << ", "
<< current_pose.position.z << ")" << std::endl;
}
}添加导航点位
Python接口
Optional[Dict] add_location(location_name, timeout=30)
功能说明
添加导航点位。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
location_name | str | 必填 | 位置点名称。 |
timeout | int | 默认: 30 | 超时时间,单位秒。 |
返回值
| 类型 | 说明 |
|---|---|
Optional[Dict] | 包含以下字段: - success (bool): 是否添加成功 - message (str): 操作结果信息 - location_pose (Dict): 位置坐标信息 - map_name (str): 地图名称 |
调用示例
from daystar_sdk import WebSocketRobotClient
# 初始化客户端
with WebSocketRobotClient(host='localhost', port=3232) as client:
add_result = client.add_location("home_position", timeout=30)C#接口
void AddLocation(string locationName, int timeout = 30, int id = 200)
功能说明
添加当前位置为导航点位。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
locationName | string | 必填 | 位置点名称。 |
timeout | int | 默认: 30 | 超时时间(秒)。 |
id | int | 默认: 200 | 请求ID。 |
返回值
| 类型 | 说明 |
|---|---|
void | 无返回值。 |
调用示例
string locationName = $"Location_{System.DateTime.Now:yyyyMMdd_HHmmss}";
var result = _navigationClient.AddLocation(locationName);
if (result.success)
{
Debug.Log($"Successfully added location '{locationName}'");
}C++接口
bool addLocation(const std::string &location_name, int timeout = 30)
功能说明
添加位置点。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
location_name | const std::string & | 必填 | 位置点名称。 |
timeout | int | 默认: 30 | 超时时间(秒)。 |
返回值
| 类型 | 说明 |
|---|---|
bool | true 成功,false 失败。 |
调用示例
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();
if (sysb.connect()) {
if (sysb.addLocation("办公室入口", 30)) {
std::cout << "位置点'办公室入口'添加成功" << std::endl;
} else {
std::cerr << "位置点添加失败" << std::endl;
}
}删除点位接口
Python接口
Optional[Dict] delete_location(location_name)
功能说明
删除导航点位。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
location_name | str | 必填 | 要删除的位置点名称。 |
返回值
| 类型 | 说明 |
|---|---|
Optional[Dict] | 包含以下字段: - success (bool): 是否删除成功 - message (str): 操作结果信息 |
调用示例
from daystar_sdk import WebSocketRobotClient
# 初始化客户端
with WebSocketRobotClient(host='localhost', port=3232) as client:
result = client.delete_location("position")C#接口
void DeleteLocation(string locationName, int id = 201)
功能说明
删除指定的导航点位。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
locationName | string | 必填 | 要删除的位置点名称。 |
id | int | 默认: 201 | 请求ID。 |
返回值
| 类型 | 说明 |
|---|---|
void | 无返回值。 |
调用示例
_navigationClient.DeleteLocation("location_name");C++接口
bool deleteLocation(const std::string &location_name)
功能说明
删除位置点。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
location_name | const std::string & | 必填 | 位置点名称。 |
返回值
| 类型 | 说明 |
|---|---|
bool | true 成功,false 失败。 |
调用示例
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();
if (sysb.connect()) {
if (sysb.deleteLocation("办公室入口")) {
std::cout << "位置点'办公室入口'删除成功" << std::endl;
} else {
std::cerr << "位置点删除失败" << std::endl;
}
}获取可用点位接口
Python接口
Optional[Dict] get_available_locations()
功能说明
获取现有点位。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
| - | - | - | 无参数。 |
返回值
| 类型 | 说明 |
|---|---|
Optional[Dict] | 包含以下字段: - location_names (List[str]): 位置点名称列表 |
调用示例
from daystar_sdk import WebSocketRobotClient
# 初始化客户端
with WebSocketRobotClient(host='localhost', port=3232) as client:
result = client.get_available_locations()
location_names = result.get('location_names', [])C#接口
List<string> GetAvailableLocations(int id = 202, int timeoutMs = 5000)
功能说明
获取所有可用的导航点位(同步方法,直接返回位置列表)。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
id | int | 默认: 202 | 请求ID。 |
timeoutMs | int | 默认: 5000 | 超时时间(毫秒)。 |
返回值
| 类型 | 说明 |
|---|---|
List<string> | 位置名称列表,失败时返回空列表。 |
调用示例
var locations = _navigationClient.GetAvailableLocations();
if (locations.Count > 0)
{
foreach (var loc in locations)
{
Debug.Log($"Location: {loc}");
}
}C++接口
bool getAvailableLocations(std::vector<std::string> &location_names, std::vector<Pose> &location_poses)
功能说明
获取所有可用的位置点。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
location_names | std::vector<std::string> & | 必填 | 返回位置点名称列表。 |
location_poses | std::vector<Pose> & | 必填 | 返回位置点坐标列表。 |
返回值
| 类型 | 说明 |
|---|---|
bool | true 成功,false 失败。 |
调用示例
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 << "可用位置点:" << std::endl;
for (size_t i = 0; i < names.size(); ++i) {
std::cout << " " << names[i] << " - ("
<< poses[i].position.x << ", "
<< poses[i].position.y << ", "
<< poses[i].position.z << ")" << std::endl;
}
}
}导航控制接口
Python接口
Optional[Dict] navigate_to_location(location_name, timeout=60)
功能说明
导航到预设位置。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
location_name | str | 必填 | 目标位置点名称。 |
timeout | int | 默认: 60 | 导航超时时间,单位秒。 |
返回值
| 类型 | 说明 |
|---|---|
Optional[Dict] | 包含以下字段: - success (bool): 是否启动成功 - message (str): 操作结果信息 |
调用示例
from daystar_sdk import WebSocketRobotClient
# 初始化客户端
with WebSocketRobotClient(host='localhost', port=3232) as client:
navigate_result = client.navigate_to_location("home_position", timeout=30)Optional[Dict] navigate_to_xyz(x, y, z, timeout=60, frame_id="map")
功能说明
导航到指定坐标。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
x | float | 必填 | x坐标。 |
y | float | 必填 | y坐标。 |
z | float | 必填 | z坐标。 |
timeout | int | 默认: 60 | 导航超时时间,单位秒。 |
frame_id | str | 默认: "map" | 坐标系名称。 |
返回值
| 类型 | 说明 |
|---|---|
Optional[Dict] | 包含以下字段: - success (bool): 是否启动成功 - message (str): 操作结果信息 |
调用示例
from daystar_sdk import WebSocketRobotClient
# 初始化客户端
with WebSocketRobotClient(host='localhost', port=3232) as client:
navigate_result = client.navigate_to_xyz(x=5.0, y=3.0, z=0.0, timeout=30)C#接口
void NavigateToLocation(string locationName, int timeout = 60, int id = 203)
功能说明
导航到预设位置点。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
locationName | string | 必填 | 目标位置点名称。 |
timeout | int | 默认: 60 | 导航超时时间(秒)。 |
id | int | 默认: 203 | 请求ID。 |
返回值
| 类型 | 说明 |
|---|---|
void | 无返回值。 |
调用示例
_navigationClient.NavigateToLocation("location_name");void NavigateToPosition(float x, float y, float z, int timeout = 60, string frameId = "map", int id = 205)
功能说明
导航到指定坐标位置(XYZ坐标)。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
x | float | 必填 | x坐标。 |
y | float | 必填 | y坐标。 |
z | float | 必填 | z坐标。 |
timeout | int | 默认: 60 | 导航超时时间(秒)。 |
frameId | string | 默认: "map" | 坐标系名称。 |
id | int | 默认: 205 | 请求ID。 |
返回值
| 类型 | 说明 |
|---|---|
void | 无返回值。 |
调用示例
_navigationClient.NavigateToPosition(1.0f, 0.0f, 0.0f);C++接口
bool navigateToLocation(const std::string &location_name, int timeout = 60)
功能说明
导航到指定位置点。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
location_name | const std::string & | 必填 | 目标位置点名称。 |
timeout | int | 默认: 60 | 超时时间(秒)。 |
返回值
| 类型 | 说明 |
|---|---|
bool | true 成功,false 失败。 |
调用示例
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();
if (sysb.connect()) {
if (sysb.navigateToLocation("办公室入口", 60)) {
std::cout << "开始导航到'办公室入口'" << std::endl;
} else {
std::cerr << "导航启动失败" << std::endl;
}
}bool navigateToPosition(const PoseStamped &target_pose, int timeout = 60)
功能说明
导航到指定姿态。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
target_pose | const PoseStamped & | 必填 | 目标姿态。 |
timeout | int | 默认: 60 | 超时时间(秒)。 |
返回值
| 类型 | 说明 |
|---|---|
bool | true 成功,false 失败。 |
调用示例
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();
if (sysb.connect()) {
// 创建目标姿态
auto target_pose = sysb.createPose(5.0f, 3.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, "map");
if (sysb.navigateToPosition(target_pose, 60)) {
std::cout << "开始导航到指定姿态" << std::endl;
} else {
std::cerr << "导航启动失败" << std::endl;
}
}取消导航控制
Python接口
Optional[Dict] cancel_navigation(task_id="")
功能说明
取消导航控制。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
task_id | str | 默认: "" | 任务 ID,空字符串表示取消当前任务。 |
返回值
| 类型 | 说明 |
|---|---|
Optional[Dict] | 包含以下字段: - success (bool): 是否取消成功 - message (str): 操作结果信息 |
调用示例
from daystar_sdk import WebSocketRobotClient
# 初始化客户端
with WebSocketRobotClient(host='localhost', port=3232) as client:
result = await client.cancel_navigation()
if result and result.get('success'):
print(f"取消导航成功: {result.get('message')}")
else:
print(f"取消导航失败: {result.get('message') if result else 'Unknown error'}")C#接口
void CancelNavigation(string taskId = "", int id = 206)
功能说明
取消当前导航任务。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
taskId | string | 默认: "" | 任务ID,空字符串表示取消当前任务。 |
id | int | 默认: 206 | 请求ID。 |
返回值
| 类型 | 说明 |
|---|---|
void | 无返回值。 |
调用示例
_navigationClient.CancelNavigation();C++接口
bool cancelNavigation(const std::string &task_id = "")
功能说明
取消当前导航任务。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
task_id | const std::string & | 默认: "" | 任务ID (空字符串表示取消当前任务)。 |
返回值
| 类型 | 说明 |
|---|---|
bool | true 成功,false 失败。 |
调用示例
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();
if (sysb.connect()) {
// 开始导航
sysb.navigateToLocation("办公室入口");
// 等待5秒后取消导航
std::this_thread::sleep_for(std::chrono::seconds(5));
if (sysb.cancelNavigation()) {
std::cout << "导航已取消" << std::endl;
}
}获取导航事件接口
Python接口
bool register_navigation_result(callback)
功能说明
注册导航结果事件回调。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
callback | function | 必填 | 回调函数,必须接收2个参数: - result_type (str): 结果类型 ("complete" | "failed") - data (Dict): 事件数据 |
返回值
| 类型 | 说明 |
|---|---|
bool | 注册成功返回 True,失败返回 False。 |
事件数据示例
{
"location_name": "目标点A",
"success": true,
"message": "导航完成",
"timestamp": 1693632000.123,
"task_id": "nav_task_001"
}调用示例
from daystar_sdk import WebSocketRobotClient
# 初始化客户端
with WebSocketRobotClient(host='localhost', port=3232) as client:
# 定义导航结果回调函数
def on_navigation_result(result_type, data):
if result_type == "complete":
print(f"导航完成: {data}")
elif result_type == "failed":
print(f"导航失败: {data}")
# 注册导航结果回调
success = await client.register_navigation_result(on_navigation_result)bool unregister_navigation_result()
功能说明
取消注册导航结果回调。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
| - | - | - | 无参数。 |
返回值
| 类型 | 说明 |
|---|---|
bool | 取消成功返回 True,失败返回 False。 |
bool register_navigation_feedback(callback)
功能说明
注册导航反馈状态回调。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
callback | function | 必填 | 回调函数,接收1个参数: - data (Dict): 导航反馈数据 |
返回值
| 类型 | 说明 |
|---|---|
bool | 注册成功返回 True,失败返回 False。 |
反馈数据示例
{
"status": "navigating",
"current_pose": {
"position": {"x": 1.23, "y": 4.56, "z": 0.0},
"orientation": {"x": 0, "y": 0, "z": 0, "w": 1}
},
"target_pose": {
"position": {"x": 5.0, "y": 8.0, "z": 0.0},
"orientation": {"x": 0, "y": 0, "z": 0, "w": 1}
},
"progress": 0.75,
"distance_to_goal": 1.2,
"message": "正在前往目标点A",
"timestamp": 1693632001.456
}状态类型说明
navigating: 正在导航paused: 导航暂停idle: 空闲状态planning: 路径规划中recovering: 恢复中
调用示例
from daystar_sdk import WebSocketRobotClient
# 初始化客户端
with WebSocketRobotClient(host='localhost', port=3232) as client:
# 定义导航反馈回调函数
def on_navigation_feedback(data):
print(f"导航状态: {data.get('status')}")
print(f"当前位置: {data.get('current_pose')}")
print(f"导航进度: {data.get('progress', 0)*100:.1f}%")
# 注册导航反馈回调
success = await client.register_navigation_feedback(on_navigation_feedback)bool unregister_navigation_feedback()
功能说明
取消注册导航反馈回调。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
| - | - | - | 无参数。 |
返回值
| 类型 | 说明 |
|---|---|
bool | 取消成功返回 True,失败返回 False。 |
C#接口
bool RegisterNavigationResultCallback(Action<string, object> callback)
功能说明
注册导航结果事件回调。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
callback | Action<string, object> | 必填 | 回调函数,接收2个参数: - result (string): 结果类型 (如 "complete", "failed") - data (object): 事件数据 |
返回值
| 类型 | 说明 |
|---|---|
bool | 注册成功返回 true,失败返回 false。 |
调用示例
_navigationClient.RegisterNavigationResultCallback((result, data) =>
{
Debug.Log($"Navigation Result: {result}, Data: {data}");
});bool UnregisterNavigationResultCallback()
功能说明
取消注册导航结果回调。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
| - | - | - | 无参数。 |
返回值
| 类型 | 说明 |
|---|---|
bool | 取消成功返回 true,失败返回 false。 |
调用示例
_navigationClient.UnregisterNavigationResultCallback();bool RegisterNavigationFeedbackCallback(Action<object> callback)
功能说明
注册导航反馈状态回调。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
callback | Action<object> | 必填 | 回调函数,接收1个参数: - feedback (object): 导航反馈数据 |
返回值
| 类型 | 说明 |
|---|---|
bool | 注册成功返回 true,失败返回 false。 |
调用示例
_navigationClient.RegisterNavigationFeedbackCallback((feedback) =>
{
if (feedback is string jsonString)
{
Debug.Log($"Navigation Feedback (JSON): {jsonString}");
}
else
{
Debug.Log($"Navigation Feedback (Object): {feedback}");
}
});bool UnregisterNavigationFeedbackCallback()
功能说明
取消注册导航反馈回调。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
| - | - | - | 无参数。 |
返回值
| 类型 | 说明 |
|---|---|
bool | 取消成功返回 true,失败返回 false。 |
调用示例
_navigationClient.UnregisterNavigationFeedbackCallback();C++接口
void setNavigationResultCallback(std::function<void(const std::string &, const std::string &)> callback)
功能说明
设置导航结果回调。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
callback | std::function<void(const std::string &, const std::string &)> | 必填 | 回调函数,接收2个参数: - task_id (std::string): 任务ID - result (std::string): 导航结果数据(JSON字符串) |
返回值
| 类型 | 说明 |
|---|---|
void | 无返回值。 |
bool registerNavigationResult()
功能说明
注册导航结果事件。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
| - | - | - | 无参数。 |
返回值
| 类型 | 说明 |
|---|---|
bool | 成功返回 true,否则 false。 |
调用示例
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();
// 设置导航结果回调
sysb.setNavigationResultCallback([](const std::string &task_id, const std::string &result) {
std::cout << "导航任务 " << task_id << " 结果: " << result << std::endl;
});
if (sysb.connect()) {
sysb.registerNavigationResult();
sysb.navigateToLocation("办公室入口");
}void setNavigationFeedbackCallback(std::function<void(const std::string &)> callback)
功能说明
设置导航反馈回调。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
callback | std::function<void(const std::string &)> | 必填 | 回调函数,接收1个参数: - feedback (std::string): 导航反馈数据(JSON字符串) |
返回值
| 类型 | 说明 |
|---|---|
void | 无返回值。 |
bool registerNavigationFeedback()
功能说明
注册导航反馈事件。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
| - | - | - | 无参数。 |
返回值
| 类型 | 说明 |
|---|---|
bool | 成功返回 true,否则 false。 |
调用示例
Lenovo::Daystar::SDK sdk;
auto &sysb = sdk.getSYSB();
// 设置导航反馈回调
sysb.setNavigationFeedbackCallback([](const std::string &feedback) {
std::cout << "导航反馈: " << feedback << std::endl;
});
if (sysb.connect()) {
sysb.registerNavigationFeedback();
sysb.navigateToLocation("办公室入口");
}