rpos::features::SystemResource类

系统资源功能特征类,该类提供了对原始激光扫描数据、电源管理系统、底盘状态信息等相关资源的访问API

头文件

rpos/features/system_resource/feature.h

适用于

  • Slamware
  • Mapper

父类

继承自rpos::core::Feature

构造器

/**
* 该构造器仅限SDK内部使用。
*/
SystemResource(boost::shared_ptr<detail::SystemResourceImpl>); 
/**
* 默认构造函数。
*/
SystemResource();  

方法

/**
* 获取电池电量,返回值的单位是百分比。比如电池剩余为56%,则该返回值为56。(底盘相关)
*/
int getBatteryPercentage();  
/**
* 电池是否处于充电状态。(底盘相关)
*/
bool getBatteryIsCharging();  
/**
* 休眠机器人。
*/
void hibernate()   
/**
* 外部电源是否连接。(底盘相关)
*/
bool getDCIsConnected();  
/**
* 获取电源相关信息。(底盘相关)
*/
system_resource::PowerStatus  getPowerStatus();   

返回类型说明,请参考rpos::features::system_resource::PowerStatus

/**
* 唤醒机器人。
*/
void wakeUp();
/**
* 获取主板温度,  单位为摄氏度。(底盘相关)
*/
int getBoardTemperature();  
/**
* 获取底盘版本号。
*/
std::string getSDPVersion();  
/**
* 获取原始激光扫描数据。
*/ 
rpos::features::system_resource::LaserScan getLaserScan();  

返回类型说明请参考rpos::features::system_resource::LaserScan

/**
* 根据指定的重启模式(默认软复位)执行重启操作。
*/
bool restartModule(system_resource::RestartMode mode = system_resource::RestartModeSoft);  
枚举 类型 说明
system_resource::RestartMode RestartModeSoft 软复位,重启SDK,速度较快。建议使用。
RestartModeHard 硬复位,速度较慢,需要几分钟时间。不建议经常使用。
RestartModeBase 重启底盘,有些版本的固件在升级后需要重启底盘才能生效。默认不需要使用。
/**
* 调整系统参数。
*/
bool setSystemParameter(const std::string& param, const std::string& value);  
参数名称 类型 说明
param const std::string& 调整的参数名,目前可设置的参数见下表
value const std::string& 调整的参数值

系统参数

名称 说明 可设置的值
base.max_moving_speed 机器人最大移动速度 浮点数或者三个系统内置值:"high"、"medium"、"low"
motionplan.low_localization_quality_threshold 低定位质量阈值 0~100之间的整数
base.power_off_wait_time 关机等待时间 整数,单位秒

示例

bool bRet = platform.setSystemParameter(SYSPARAM_ROBOT_SPEED, SYSVAL_ROBOT_SPEED_HIGH);
/**
* 获取系统参数,系统参数名见`setSystemParameter`的说明。
*/
std::string getSystemParameter(const std::string& param);  
/**
* 设置新的binary config。(底盘相关)
*/
bool updateBinaryConfig(const Json::Value& jsnCfg); 
/**
* 设置新的Cube配置。
* 配置文件可从RoboStudio的Cube配置工具中导出。
* 注意:调用该函数会重启slamware软件,请稍后重新连接
*/
bool setCubeConfig(const std::string& cfgFilePath);
/**
* 关闭Slamware Core。
*/
bool shutdownSlamcore(const rpos::core::SlamcoreShutdownParam& shutdownArg);  
参数名称 类型 说明
shutdownArg const rpos::core::SlamcoreShutdownParam& 该结构体包含成员:
restartTimeIntervalMinute,表示重启时间间隔;
shutdownTimeIntervalMinute,表示关机时间间隔;
注意重启时间必须大于关机时间,否则会抛出OperationFailException。
/**
* 获取设备信息。(底盘相关)
*/     
system_resource::DeviceInfo getDeviceInfo(); 

返回值类型说明,请参考rpos::features::system_resource::DeviceInfo

/**
* 获取机器人当前的状态信息。
*/ 
rpos::features::system_resource::BaseHealthInfo getRobotHealth();

返回值类型说明,请参考rpos::features::system_resource::BaseHealthInfo

/**
* 清除机器人当前出错的状态信息。
*/
void clearRobotHealth(int errorCode); 
/**
* 配置机器人的网络信息。 
*/
bool configurateNetwork(rpos::features::system_resource::NetworkMode mode, const std::map<std::string, std::string>& options)  
网络模式 ssid password channel ip dns gateway mask
NetworkModeAp 可选 可选 可选 可选 可选 可选 可选
NetworkModeStation 必选 可选 -- -- -- -- --
NetworkModeWifiDisabled -- -- -- -- -- -- --
NetworkModeDHCPDisabled -- -- -- -- -- -- --
NetworkModeDHCPEnabled -- -- -- -- -- -- --
  1. 目前暂支持以上五种mode形式,ssid,password,channel三个选项的信息如上表(--表示不可用)
  2. NetworkModeWifiDisabled将禁用无线设置

示例

std::map<std::string, std::string> options;
options[“ssid”] = “Slamtec”;
options[“password”] = “slamtect”;
Bool bRet = platform.configureNetwork(rpos::features::system_resource::NetworkModeStation,options);
/**
* 获取机器人当前无线网络的配置信息。  
* 注:目前返回的结果只包含mode,ssid和ip三个选项的值。
*/
std::map<std::string, std::string> getNetworkStatus();  
/**
* 启用心跳功能。启用后,客户应用程序将会有规律地向Slamware Core发送数据以表示连接正常。
* 如在设定的时间内未收到返回数据token,系统将判定Slamware core和客户应用程序断开连接,从而取消正在执行的操作。
* 该功能使客户应用程序崩溃后再重新启动时的状态及行为更具可控性。
*/
system_resource::HeartBeatToken startHeartBeat(int heartBeatTimeoutInSeconds);  
参数名称 类型 说明
heartBeatTimeoutInSeconds int 心跳超时时间,单位为秒,即超过该设定时间后将判定为超时
/**
* 刷新心跳。同一时刻仅一个token起作用。
* 如果第二次调用startHeartBeat,之前的token以及timeout将失效,系统将采用新的token和timeout时间。
*/
void refreshHeartBeat(system_resource::HeartBeatToken token);  
参数名称 类型 说明
token system_resource::HeartBeatToken 信令,每次启用心跳功能后返回数据为与该次启动操作唯一对应的信令。
该信令同步传到refreshHeartBeat和stopHeartBeat,以防止后续操作时误调用。
/**
* 停止心跳功能。
*/ 
void stopHeartBeat(system_resource::HeartBeatToken token); 
/**
* 开始更新固件。(底盘相关)
*/ 
void startFirmwareUpgrade(const std::string& filename);
参数名称 类型 说明
filename const std::string& 待升级的的目标固件文件名,包含路径
/**
* 开始更新固件。(底盘相关)
*/
void startFirmwareUpgrade(const std::vector<uint8_t>& firmwareContent);
参数名称 类型 说明
firmwareContent const std::vector& 待升级的的目标固件文件内容
/**
* 向Slamware传输深度摄像头数据。
*/
void publishDepthCamFrame(int sensorId, const rpos::message::depth_camera::DepthCameraFrame& frame);
参数名称 类型 说明
sensorId int 传感器ID,见配置文件
frame const rpos::message::depth_camera::DepthCameraFrame& 一帧摄像头数据
/**
* 发布深度摄像头数据。
*/
void publishDepthCamFrame(const rpos::features::location_provider::BitmapMap& obstacle);
名称 类型 描述
obstacle const rpos::features::location_provider::BitmapMap& 深度摄像头障碍物数据

BitmapMap 数据描述如下图: Depth Frame

/**
* 获取操作日志。
*/
std::vector<system_resource::OperationAuditLog> getOperationAuditLogs();
/**
* 自定义Control-Bus命令。(底盘相关)
*/
int sendAndRecvUserDefinedCBUSMessage(const void * payload, const size_t payloadsize, void * recvBuffer, size_t & recvDataSize);
/**
* 开始雷达校准流程。
*/    
system_resource::LidarAutoTweakRequestResult beginLidarAutoTweak();
返回值 说明
LidarAutoTweakRequestResultStarted 雷达校准开始
LidarAutoTweakRequestResultNotSupport 不支持该功能
LidarAutoTweakRequestResultDisabled 配置中禁用了该功能
/**
* 获取雷达校准状态。
*/
system_resource::LidarAutoTweakStatus getLidarAutoTweakStatus()
返回值 说明
LidarAutoTweakStatusIdle 空闲状态,雷达校准流程未触发
LidarAutoTweakStatusWaitingForContext 雷达校准流程已触发,正在等待可用的环境数据
LidarAutoTweakStatusTweaking 雷达校准正在执行
LidarAutoTweakStatusDone 雷达校准已完成
LidarAutoTweakStatusFailed 雷达校准失败
/**
* 接受雷达校准结果,保存到雷达中。
*/
bool acceptLidarTweakResult();
/**
* 重置雷达校准结果到初始值。
*/
void resetLidarTweakResult();
/**
* 取消雷达校准流程。
*/
void cancelLidarAutoTweak();
/**
* 获取slamware当前时间戳。
*/
std::uint64_t getHostTimestampInNs()  
/**
* 将当前系统时间戳转换到slamware系统基准时间戳
*/
std::uint64_t convertTimestampToHostInNs(std::uint64_t ns)