Skip to content

系统底层服务接口

功能C++ROSC#Python
进入/退出充电模式
获取电量信息
获取充电信息
获取机器人软件版本号
获取机器人名称
获取气体传感器数据

进入或退出充电模式(充电桩)

C++ 接口

bool enterOrExitCharge(bool enter)

功能说明
控制机器人上桩充电/退桩取消充电。

参数说明

参数名类型必填/默认值说明
enterbool必填true表示进入充电模式,false表示退出充电模式。

返回值

类型说明
bool操作是否成功。

调用示例

cpp
Lenovo::Daystar::SDK sdk;
auto &sport = sdk.getSport();
sport.enterOrExitCharge(enter);

C# 接口

void SetChargingState(bool charge)

功能说明
控制机器人上桩充电/退桩取消充电。

参数说明

参数名类型必填/默认值说明
chargebool必填true表示进入充电模式,false表示退出充电模式。

返回值

类型说明
void无返回值。

Python 接口

bool enter_charge(source=2)

功能说明
控制机器人上桩充电。

参数说明

参数名类型必填/默认值说明
sourceint2控制模式 (1:导航控制模式, 2:手柄控制模式)。

返回值

类型说明
bool是否下发成功(仅表示指令调用是否成功返回)。

调用示例

python
from daystar_sdk import RobotClient

with RobotClient() as client:
#    # 开始上桩充电
    success = client.enter_charge()
    if success:
        print("上桩指令发送成功")

bool exit_charge(source=2)

功能说明
控制机器人退桩取消充电。

参数说明

参数名类型必填/默认值说明
sourceint2控制模式 (1:导航控制模式, 2:手柄控制模式)。

返回值

类型说明
bool是否下发成功(仅表示指令调用是否成功返回)。

调用示例

python
from daystar_sdk import RobotClient

with RobotClient() as client:
#    # 退出充电
    success = client.exit_charge()
    if success:
        print("退桩指令发送成功")

获取电量及充电信息

C++ 接口

订阅获取

void setStatusCallback(RPSStatusCallback callback)

功能说明
设置RPS状态回调(合并回调接口)。

参数说明

参数名类型必填/默认值说明
callbackRPSStatusCallback必填RPS状态回调函数,接收包含充电状态、电池电量和急停状态的完整状态结构体。

返回值

类型说明
void无返回值。

调用示例

cpp
// 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表示电池电量百分比。

调用示例

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 &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_statesensor_msgs::msg::BatteryState发布方

消息结构

sensor_msgs::msg::BatteryState 消息类型包含以下字段:

字段名称类型描述
headerHeader标准消息头
percentagefloat32表示电池的当前电量百分比

示例消息

cpp
sensor_msgs::msg::BatteryState battery_state_msg;
battery_state_msg.header.stamp = rclcpp::Time();
battery_state_msg.percentage = 75.0; // 75% 电量

测试方法

使用以下命令查看/battery_state topic的消息:

bash
ros2 topic echo /battery_state

充电状态

该接口用于发布机器人的是否正在充电。

Topic 名称Topic 类型角色
/charge_statestd_msgs::msg::Bool发布方

消息结构

std_msgs::msg::Bool 消息类型包含以下字段:

字段名称类型描述
databool表示机器人的当前模式。 true: 正在充电 false: 不在充电

示例消息

cpp
std_msgs::msg::Int32 msg;
msg.data = true;

测试方法

bash
ros2 topic echo /dock_mode

C# 接口

主动调用

Task<bool> GetChargingStatus()

功能说明
异步获取机器人充电状态。

参数说明

参数名类型必填/默认值说明
--无参数

返回值

类型说明
Task<bool>true表示正在充电,false表示未充电。

调用示例

csharp
bool isCharging = await robot.GetChargingStatus();
Console.WriteLine($"Is Charging: {isCharging}");

订阅获取

void SubscribeBasicSystemState(IBasicSystemStateListener basicSystemStateListener)

功能说明
订阅电量和充电信息。

参数说明

参数名类型必填/默认值说明
basicSystemStateListenerIBasicSystemStateListener必填基础系统状态监听器。

返回值

类型说明
void无返回值。

调用示例

cpp
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为字符串信息。

调用示例

python
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为字符串信息。

调用示例

python
success, is_charging, msg = client.rps_get_charging_status()
if success:
    print(f"Is Charging: {is_charging}")

获取机器人软件版本号

C++ 接口

std::string getMcVersion(int mcIndex = 0)

功能说明
获取软件版本信息

参数说明

参数名类型必填/默认值说明
mcIndexint0MC索引。

返回值

类型说明
std::stringMC版本字符串,如果获取失败则返回空字符串。

调用示例

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 &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)

功能说明
获取软件版本信息

参数说明

参数名类型必填/默认值说明
serviceTypeServiceType必填机器人主机类型。ServiceType.Motion: 运控主机, ServiceType.Perception: 感知主机。

返回值

类型说明
Task<string>机器人系统版本。

调用示例

cpp
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_indexint0MC索引。

返回值

类型说明
tuple返回 (success, version)success为布尔值,version为版本号字符串。

调用示例

python
success, version = client.get_mc_version()
if success:
    print(f"MC Version: {version}")

获取机器人名称

C++ 接口

RobotNameReply GetRobotName(const McIndexRequest &request)

功能说明
获取机器人名称。

参数说明

参数名类型必填/默认值说明
requestMcIndexRequest必填包含MC索引的请求对象。

返回值

类型说明
RobotNameReply包含机器人名称的响应对象。

调用示例

cpp
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>机器人名称字符串。

调用示例

csharp
string name = await robot.GetRobotName();
Console.WriteLine($"Robot Name: {name}");

Python 接口

tuple get_robot_name(mc_index=0)

功能说明
获取机器人名称。

参数说明

参数名类型必填/默认值说明
mc_indexint0MC索引。

返回值

类型说明
tuple返回 (success, name)success为布尔值,name为机器人名称字符串。

调用示例

python
success, name = client.get_robot_name()
if success:
    print(f"Robot Name: {name}")
python
from daystar_sdk import RobotClient

with RobotClient() as client:
#    # 退出充电桩
    success = client.exit_charge()
    if success:
        print("退桩指令发送成功")

获取气体传感器数据

C# 接口

void RegisterEnvironmentSensorListener(IEnvironmentSensorListener listener)

功能说明
注册环境传感器数据监听器。

参数说明

参数名类型必填/默认值说明
listenerIEnvironmentSensorListener必填环境传感器数据监听接口。

返回值

类型说明
void无返回值。

回调数据结构 (EnvironmentSensorData)

字段名类型说明
typeuint传感器类型(详见传感器类型说明表)
valuestring传感器数值
unitstring数值单位
timestampServiceTimestamp时间戳(包含 secnanosec

void UnregisterEnvironmentSensorListener(IEnvironmentSensorListener listener)

功能说明
注销环境传感器数据监听器。

参数说明

参数名类型必填/默认值说明
listenerIEnvironmentSensorListener必填环境传感器数据监听接口。

返回值

类型说明
void无返回值。

调用示例

csharp
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)

功能说明
注册模块数据监听,用于获取环境传感器数据。

参数说明

参数名类型必填/默认值说明
topicstr必填订阅主题,固定为 "/sensor/environment_sensor_data"
topic_typestr必填主题类型,固定为 "rms_msgs/msg/EnvironmentSensorData"
callbackfunction必填数据回调函数,接收 msg_data (dict) 参数

返回值

类型说明
bool注册是否成功

回调数据说明
回调函数接收的 msg_data 字典包含以下字段:

字段名类型说明
typeint传感器类型(见下表)
valuestr传感器数值
unitstr数值单位
timestampdict时间戳信息

async unregister_module_data(topic)

功能说明
取消注册模块数据监听。

参数说明

参数名类型必填/默认值说明
topicstr必填订阅主题,固定为 "/sensor/environment_sensor_data"

返回值

类型说明
bool取消注册是否成功

调用示例

python
## 气体传感器数据回调函数
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丙烷
8SF616VOC