3.4 Callback参考
本文档定义了机器人 SDK 中的数据回调与控制命令回调接口。
命名空间:robot_sdk
接口概览
IDataCallback:数据上报回调接口IControlCallback:控制命令回调接口(非阻塞模式)
IDataCallback
用户需根据需要实现此接口以接收来自机器人系统的数据。
⚠️ 回调函数必须轻量级,不能执行耗时操作。
在回调函数中仅建议进行数据复制、校验等快速操作。
若需执行耗时任务(如数据库写入、文件I/O、复杂计算、网络发送等),请在回调函数内部将数据复制到独立线程或线程池中处理。
定义
class ROBOT_EXPORT_API IDataCallback {
public:
virtual void OnImuData(const ImuData& data) {}
virtual void OnLuxData(const LuxData& data) {}
virtual void OnMcData(const MotionData& data) {}
virtual void OnSpeedData(const SpeedData& data) {}
virtual void OnRobotStateData(const RobotState& data) {}
virtual void OnFaultData(const FaultDatas& data) {}
virtual void OnControlLost(const ControlLostInfo& info) {}
virtual void OnControlAvailable(const ControlAvailableInfo& info) {}
virtual ~IDataCallback() = default;
};
回调列表
🧭 OnImuData
描述:IMU 数据回调(配置后定频上报)
参数:
const ImuData& data— IMU 数据结构调用频率:按配置频率上报
💡 OnLuxData
描述:光照强度数据回调(配置后定频 1Hz 上报)
参数:
const LuxData& data— 光照强度数据结构
🤖 OnMcData
描述:机器人运动数据回调(配置后定频 50Hz 上报)
参数:
const MotionData& data— 运动数据结构
🤖 OnSpeedData
描述:机器人速度数据回调
参数:
const SpeedData& data— 速度数据结构
🤖 OnRobotStateData
描述:机器人状态数据回调(1Hz 主动上报)
参数:
const RobotState& data— 机器人状态结构
⚠️ OnFaultData
描述:故障信息数据回调(发生故障时主动上报)
参数:
const FaultDatas& data— 故障数据集合
🔓 OnControlLost
描述:控制权丢失回调
参数:
const ControlLostInfo& info— 控制权丢失信息
🔒 OnControlAvailable
描述:控制权可用回调
参数:
const ControlAvailableInfo& info— 控制权可用信息
IControlCallback
该接口用于接收机器人确认“已收到”控制命令的回调。
仅在非阻塞模式下使用。
定义
class ROBOT_EXPORT_API IControlCallback {
public:
virtual void OnSoftEmergencyStop(bool on) {}
virtual void OnStandUp() {}
virtual void OnLieDown() {}
virtual void OnCrawl() {}
virtual void OnClimb() {}
virtual void OnSlim() {}
virtual void OnGait() {}
virtual void OnReverseHeadTail() {}
virtual void OnMode(int mode) {}
virtual void OnSpeed(int speed_level) {}
virtual void OnLocked() {}
virtual void OnFrontLight(bool on) {}
virtual void OnBackLight(bool on) {}
virtual void OnAutoModeLight(bool on) {}
virtual void OnLuxConfig(bool on) {}
virtual void OnImuConfig(int freq) {}
virtual void OnMcConfig(bool on) {}
virtual void OnSpeedReportConfig(bool on, uint32_t frequency) {}
virtual void OnTakeControlAck(const TakeControlAck& ack) {}
virtual void OnReleaseControlAck(const ReleaseControlAck& ack) {}
virtual void OnUpdateCameraBitrateAck(const CameraBitrateAck& ack) {}
virtual ~IControlCallback() = default;
};
回调列表
回调函数 |
说明 |
参数 |
|---|---|---|
|
已收到急停命令 |
|
|
已收到站立命令 |
— |
|
已收到卧倒命令 |
— |
|
已收到匍匐命令 |
— |
|
已收到爬高台命令 |
— |
|
已收到瘦身命令 |
— |
|
已收到步态命令 |
— |
|
已收到调转头尾命令 |
— |
|
已收到模式切换命令 |
模式编号 |
|
已收到速度切换命令 |
速度档位 |
|
已收到锁定命令 |
— |
|
已收到前补光灯命令 |
|
|
已收到后补光灯命令 |
|
|
已收到自动补光灯模式命令 |
|
|
已收到光强值配置命令 |
|
|
已收到 IMU 配置命令 |
频率值 |
|
已收到运动数据配置命令 |
|
|
已收到速度数据配置命令 |
|
|
已收到获取控制权命令应答 |
应答信息 |
|
已收到释放控制权命令应答 |
应答信息 |
|
已收到码率更新命令 |
应答信息,更新后的码率 |
实现示例
#include "robot_sdk/sdk_callback.hpp"
class MyDataCallback : public robot_sdk::IDataCallback {
public:
void OnImuData(const ImuData& data) override {
// 轻量处理,例如缓存
}
};
class MyControlCallback : public robot_sdk::IControlCallback {
public:
void OnStandUp() override {
// 收到站立命令应答
}
};
注意事项
不要在回调中执行耗时任务。
若需要耗时处理,请在回调中将数据复制并投递至独立线程。