系统底层服务接口
| 功能 | C++ | ROS | C# | Python |
|---|---|---|---|---|
| 进入/退出充电模式 | ✔ | ✔ | ✔ | |
| 获取电量信息 | ✔ | ✔ | ✔ | ✔ |
| 获取充电信息 | ✔ | ✔ | ✔ | ✔ |
| 获取机器人软件版本号 | ✔ | ✔ | ✔ | |
| 获取机器人名称 | ✔ | ✔ | ✔ | |
| 获取气体传感器数据 | ✔ | ✔ |
进入或退出充电模式(充电桩)
C++ 接口
bool enterOrExitCharge(bool enter)
功能说明
控制机器人上桩充电/退桩取消充电。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
enter | bool | 必填 | true表示进入充电模式,false表示退出充电模式。 |
返回值
| 类型 | 说明 |
|---|---|
bool | 操作是否成功。 |
调用示例
Lenovo::Daystar::SDK sdk;
auto &sport = sdk.getSport();
sport.enterOrExitCharge(enter);C# 接口
void SetChargingState(bool charge)
功能说明
控制机器人上桩充电/退桩取消充电。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
charge | bool | 必填 | true表示进入充电模式,false表示退出充电模式。 |
返回值
| 类型 | 说明 |
|---|---|
void | 无返回值。 |
Python 接口
bool enter_charge(source=2)
功能说明
控制机器人上桩充电。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
source | int | 2 | 控制模式 (1:导航控制模式, 2:手柄控制模式)。 |
返回值
| 类型 | 说明 |
|---|---|
bool | 是否下发成功(仅表示指令调用是否成功返回)。 |
调用示例
from daystar_sdk import RobotClient
with RobotClient() as client:
# # 开始上桩充电
success = client.enter_charge()
if success:
print("上桩指令发送成功")bool exit_charge(source=2)
功能说明
控制机器人退桩取消充电。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
source | int | 2 | 控制模式 (1:导航控制模式, 2:手柄控制模式)。 |
返回值
| 类型 | 说明 |
|---|---|
bool | 是否下发成功(仅表示指令调用是否成功返回)。 |
调用示例
from daystar_sdk import RobotClient
with RobotClient() as client:
# # 退出充电
success = client.exit_charge()
if success:
print("退桩指令发送成功")获取电量及充电信息
C++ 接口
订阅获取
void setStatusCallback(RPSStatusCallback callback)
功能说明
设置RPS状态回调(合并回调接口)。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
callback | RPSStatusCallback | 必填 | RPS状态回调函数,接收包含充电状态、电池电量和急停状态的完整状态结构体。 |
返回值
| 类型 | 说明 |
|---|---|
void | 无返回值。 |
调用示例
// RPS状态回调函数
void onRPSStatusChanged(const RPSStatusInfo &status)
{
std::cout << "\n===== RPS 状态更新 =====" << std::endl;
std::cout << "充电状态: " << (status.isCharging ? "正在充电" : "未充电") << std::endl;
std::cout << "电池电量: " << status.batteryLevel << "%" << std::endl;
std::cout << "急停状态: " << (status.isEstopActive ? "已激活" : "未激活") << std::endl;
std::cout << "========================" << std::endl;
}
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 &rps = sdk.getRPS();
rps.setStatusCallback(onRPSStatusChanged);主动调用
std::pair<bool, int> getRPSStatus()
功能说明
获取RPS状态(充电状态和电池电量)。
参数说明
无。
返回值
| 类型 | 说明 |
|---|---|
std::pair<bool, int> | 返回一个包含充电状态和电池电量的pair,bool表示是否正在充电,int表示电池电量百分比。 |
调用示例
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 &rps = sdk.getRPS();
auto status = rps.getRPSStatus();
std::cout << "Manually retrieve RPS Status: "
<< "Charging=" << (status.first ? "YES" : "NO")
<< ", Battery Level=" << status.second << "%"
<< std::endl;注意事项
com_state必须指向有效的common::ROBOT_COMMON_STATUS结构体。
ROS2 接口
电量信息
该接口用于发布机器人的电池电量信息。
| Topic 名称 | Topic类型 | 角色 |
|---|---|---|
/battery_state | sensor_msgs::msg::BatteryState | 发布方 |
消息结构
sensor_msgs::msg::BatteryState 消息类型包含以下字段:
| 字段名称 | 类型 | 描述 |
|---|---|---|
header | Header | 标准消息头 |
percentage | float32 | 表示电池的当前电量百分比 |
示例消息
sensor_msgs::msg::BatteryState battery_state_msg;
battery_state_msg.header.stamp = rclcpp::Time();
battery_state_msg.percentage = 75.0; // 75% 电量测试方法
使用以下命令查看/battery_state topic的消息:
ros2 topic echo /battery_state充电状态
该接口用于发布机器人的是否正在充电。
| Topic 名称 | Topic 类型 | 角色 |
|---|---|---|
/charge_state | std_msgs::msg::Bool | 发布方 |
消息结构
std_msgs::msg::Bool 消息类型包含以下字段:
| 字段名称 | 类型 | 描述 |
|---|---|---|
data | bool | 表示机器人的当前模式。 true: 正在充电 false: 不在充电 |
示例消息
std_msgs::msg::Int32 msg;
msg.data = true;测试方法
ros2 topic echo /dock_modeC# 接口
主动调用
Task<bool> GetChargingStatus()
功能说明
异步获取机器人充电状态。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
| 无 | - | - | 无参数 |
返回值
| 类型 | 说明 |
|---|---|
Task<bool> | true表示正在充电,false表示未充电。 |
调用示例
bool isCharging = await robot.GetChargingStatus();
Console.WriteLine($"Is Charging: {isCharging}");订阅获取
void SubscribeBasicSystemState(IBasicSystemStateListener basicSystemStateListener)
功能说明
订阅电量和充电信息。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
basicSystemStateListener | IBasicSystemStateListener | 必填 | 基础系统状态监听器。 |
返回值
| 类型 | 说明 |
|---|---|
void | 无返回值。 |
调用示例
private RobotSDKManager _robotSDKManager;
private RobotStateListener _robotSystemState;
public class RobotSDKSample : MonoBehaviour, IConnectionStateListener, IBasicSystemStateListener
{
void Start(){
_robotSDKManager = RobotSDKManager.Instance;
_robotSDKManager?.InitialRobot(RobotType.IS, "", "", this);
_robotSystemState = _robotSDKManager.CreateRobotBasicSystemState();
_robotSystemState?.SubscribeBasicSystemState(this);
}
public void onConnected()
{
Debug.Log("robot connect success!");
}
public void onFailed()
{
Debug.Log("robot connect failed!");
}
public void onDisConnect()
{
Debug.Log("robot disconnect!");
}
public void OnBatteryInfoCallback(bool isCharging, int batteryLevel)
{
}
void onDestroy(){
_robotSystemState?.UnSubscribeMotionState();
}
}Python 接口
tuple rps_get_battery_level()
功能说明
获取电池电量。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
| 无 | - | - | 无参数 |
返回值
| 类型 | 说明 |
|---|---|
tuple | 返回 (success, battery_level, message)。success为布尔值,battery_level为整数(0-100),message为字符串信息。 |
调用示例
success, level, msg = client.rps_get_battery_level()
if success:
print(f"Battery Level: {level}%")tuple rps_get_charging_status()
功能说明
获取充电状态。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
| 无 | - | - | 无参数 |
返回值
| 类型 | 说明 |
|---|---|
tuple | 返回 (success, is_charging, message)。success为布尔值,is_charging为布尔值,message为字符串信息。 |
调用示例
success, is_charging, msg = client.rps_get_charging_status()
if success:
print(f"Is Charging: {is_charging}")获取机器人软件版本号
C++ 接口
std::string getMcVersion(int mcIndex = 0)
功能说明
获取软件版本信息
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
mcIndex | int | 0 | MC索引。 |
返回值
| 类型 | 说明 |
|---|---|
std::string | MC版本字符串,如果获取失败则返回空字符串。 |
调用示例
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 &sport = sdk.getSport();
int mc_index = 0;
std::string mc_version = sport.getMcVersion(mc_index);
std::cout << "Motion Controller Version: " << mc_version << std::endl;C# 接口
Task<string> GetRobotSystemVersion(ServiceType serviceType)
功能说明
获取软件版本信息
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
serviceType | ServiceType | 必填 | 机器人主机类型。ServiceType.Motion: 运控主机, ServiceType.Perception: 感知主机。 |
返回值
| 类型 | 说明 |
|---|---|
Task<string> | 机器人系统版本。 |
调用示例
private async Task getSystemVerion()
{
_robotSDKManager = RobotSDKManager.Instance;
_robotSDKManager?.InitialRobot(RobotType.IS, "", "", this);
_robotSportClient = _robotSDKManager.CreateRobotSportClient();
string systemAVersionInfo = await _robotSportClient?.GetRobotSystemVersion(ServiceType.Motion);
string systemBVersionInfo = await _robotSportClient?.GetRobotSystemVersion(ServiceType.Perception);
}
getSystemVerion();Python 接口
tuple get_mc_version(mc_index=0)
功能说明
获取软件版本信息
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
mc_index | int | 0 | MC索引。 |
返回值
| 类型 | 说明 |
|---|---|
tuple | 返回 (success, version)。success为布尔值,version为版本号字符串。 |
调用示例
success, version = client.get_mc_version()
if success:
print(f"MC Version: {version}")获取机器人名称
C++ 接口
RobotNameReply GetRobotName(const McIndexRequest &request)
功能说明
获取机器人名称。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
request | McIndexRequest | 必填 | 包含MC索引的请求对象。 |
返回值
| 类型 | 说明 |
|---|---|
RobotNameReply | 包含机器人名称的响应对象。 |
调用示例
McsClient mcs_client(channel);
McIndexRequest request;
request.set_index(0);
RobotNameReply reply = mcs_client.GetRobotName(request);
std::cout << "Robot Name: " << reply.name() << std::endl;C# 接口
Task<string> GetRobotName()
功能说明
异步获取机器人名称。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
| 无 | - | - | 无参数 |
返回值
| 类型 | 说明 |
|---|---|
Task<string> | 机器人名称字符串。 |
调用示例
string name = await robot.GetRobotName();
Console.WriteLine($"Robot Name: {name}");Python 接口
tuple get_robot_name(mc_index=0)
功能说明
获取机器人名称。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
mc_index | int | 0 | MC索引。 |
返回值
| 类型 | 说明 |
|---|---|
tuple | 返回 (success, name)。success为布尔值,name为机器人名称字符串。 |
调用示例
success, name = client.get_robot_name()
if success:
print(f"Robot Name: {name}")from daystar_sdk import RobotClient
with RobotClient() as client:
# # 退出充电桩
success = client.exit_charge()
if success:
print("退桩指令发送成功")获取气体传感器数据
C# 接口
void RegisterEnvironmentSensorListener(IEnvironmentSensorListener listener)
功能说明
注册环境传感器数据监听器。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
listener | IEnvironmentSensorListener | 必填 | 环境传感器数据监听接口。 |
返回值
| 类型 | 说明 |
|---|---|
void | 无返回值。 |
回调数据结构 (EnvironmentSensorData)
| 字段名 | 类型 | 说明 |
|---|---|---|
type | uint | 传感器类型(详见传感器类型说明表) |
value | string | 传感器数值 |
unit | string | 数值单位 |
timestamp | ServiceTimestamp | 时间戳(包含 sec 和 nanosec) |
void UnregisterEnvironmentSensorListener(IEnvironmentSensorListener listener)
功能说明
注销环境传感器数据监听器。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
listener | IEnvironmentSensorListener | 必填 | 环境传感器数据监听接口。 |
返回值
| 类型 | 说明 |
|---|---|
void | 无返回值。 |
调用示例
public class PerceptionSDKSample : MonoBehaviour, IEnvironmentSensorListener
{
private RobotSensorClient _robotSensorClient;
void Start()
{
_robotSensorClient = RobotSDKManager.Instance.CreateRobotSensorClient();
if (_robotSensorClient != null)
{
_robotSensorClient.RegisterEnvironmentSensorListener(this);
}
}
public void OnEnvironmentSensorData(EnvironmentSensorData data)
{
string sensorTypeName = ((EnvironmentSensorType)data.type).ToString();
Debug.Log($"[EnvSensor] Type={sensorTypeName}, Value={data.value} {data.unit}");
}
void OnDestroy()
{
if (_robotSensorClient != null)
{
_robotSensorClient.UnregisterEnvironmentSensorListener(this);
}
}
}Python 接口
async register_module_data(topic, topic_type, callback)
功能说明
注册模块数据监听,用于获取环境传感器数据。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
topic | str | 必填 | 订阅主题,固定为 "/sensor/environment_sensor_data" |
topic_type | str | 必填 | 主题类型,固定为 "rms_msgs/msg/EnvironmentSensorData" |
callback | function | 必填 | 数据回调函数,接收 msg_data (dict) 参数 |
返回值
| 类型 | 说明 |
|---|---|
bool | 注册是否成功 |
回调数据说明
回调函数接收的 msg_data 字典包含以下字段:
| 字段名 | 类型 | 说明 |
|---|---|---|
type | int | 传感器类型(见下表) |
value | str | 传感器数值 |
unit | str | 数值单位 |
timestamp | dict | 时间戳信息 |
async unregister_module_data(topic)
功能说明
取消注册模块数据监听。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
topic | str | 必填 | 订阅主题,固定为 "/sensor/environment_sensor_data" |
返回值
| 类型 | 说明 |
|---|---|
bool | 取消注册是否成功 |
调用示例
## 气体传感器数据回调函数
def on_environment_sensor_data(msg_data):
if isinstance(msg_data, dict):
sensor_type = msg_data.get('type', 0)
value = msg_data.get('value', '')
unit = msg_data.get('unit', '')
print(f"Type: {sensor_type}, Value: {value}{unit}")
## 订阅气体传感器数据
await client.register_module_data(
topic="/sensor/environment_sensor_data",
topic_type="rms_msgs/msg/EnvironmentSensorData",
callback=on_environment_sensor_data
)
## ... 在不需要时取消订阅
await client.unregister_module_data(topic="/sensor/environment_sensor_data")传感器类型说明 (SENSOR_TYPES)
| 类型值 | 说明 | 类型值 | 说明 |
|---|---|---|---|
| 1 | 环境温度 | 9 | 声音检测 |
| 2 | 环境湿度 | 10 | 烟感 |
| 3 | 风速 | 11 | 氢气 |
| 4 | 雨量 | 12 | 硫化氢 |
| 5 | 风向 | 13 | 一氧化碳 |
| 6 | 气压 | 14 | 甲烷 |
| 7 | 氧气 | 15 | 丙烷 |
| 8 | SF6 | 16 | VOC |