rpos::features::SystemResource Class
System resource related feature, which provides raw LIDAR scan, power management, chasis status information and etc. access functions.
Header File
rpos/features/system_resource/feature.h
Applies to
- Slamware
- Mapper
Base Class
Derived from rpos::core::Feature
Constructors
/**
* Used only by SDK itself.
*/
SystemResource(boost::shared_ptr<detail::SystemResourceImpl>);
/**
* Default contructor.
*/
SystemResource();
Methods
/**
* Get remaining battery in percentage. (56 for 56%). (related to robot base)
*/
int getBatteryPercentage();
/**
* Get if the battery is charging. (related to robot base)
*/
bool getBatteryIsCharging();
/**
* Get if the power outlet is connected to the robot. (related to robot base)
*/
bool getDCIsConnected();
/**
* Get composed power status. (related to robot base)
*/
system_resource::PowerStatus getPowerStatus();
For details, please refer to rpos::features::system_resource::PowerStatus.
/**
* Wake up the robot from hibernation.
*/
void wakeUp();
/**
* hibernate the robot.
*/
void hibernate();
/**
* Get the temperature of the mother board, unit: 0.1℃. (related to robot base)
*/
int getBoardTemperature();
/**
* Get the software version of SLAMWARE system.
*/
std::string getSDPVersion();
/**
* Get raw scan data.
*/
rpos::features::system_resource::LaserScan getLaserScan();
For details, please refer to rpos::features::system_resource::LaserScan.
/**
* Restart the SLAMWARE system in specified mode.
*/
bool restartModule(system_resource::RestartMode mode = system_resource::RestartModeSoft);
Item | Value | Description |
---|---|---|
system_resource::RestartMode | RestartModeSoft | Soft restart. Restart services only. |
RestartModeHard | Hard restart. Reboot the whole system. | |
RestartModeBase | Restart base,Some versions of firmware need to restart base after upgrade. It's not required unless you are recommanded specially。 |
/**
* Adjust system parameter on the fly.
*/
bool setSystemParameter(const std::string& param, const std::string& value);
Name | Data type | Comments |
---|---|---|
param | const std::string& | The key to the system parameter, see following table for details |
value | const std::string& | The new value to this parameter |
System Parameters
Name | Comments | Available Values |
---|---|---|
base.max_moving_speed | Max linear speed for robot | float literal or one of three:"high","medium","low" |
motionplan.low_localization_quality_threshold | Thershold to stop robot movement under low localization quality | Integer between 0 to 100 |
base.power_off_wait_time | Time to wait when power off is requested | Integer, in seconds |
Example
bool bRet = platform.setSystemParameter(SYSPARAM_ROBOT_SPEED, SYSVAL_ROBOT_SPEED_HIGH);
/**
* Get current value of system parameter. Please refer to setSystemParameter for available values to param.
*/
std::string getSystemParameter(const std::string& param);
/**
* Upload binary config. (related to robot base)
*/
bool updateBinaryConfig(const Json::Value& jsnCfg);
/**
* Upload cube config。
* config file can be exported from Cube Config Tool in RoboStudio.
* Warning: Calling this function will restart slamware, please reconnect later.
*/
bool setCubeConfig(const std::string& cfgFilePath);
/**
* Shutdown SLAMWARE system.
*/
bool shutdownSlamcore(const rpos::core::SlamcoreShutdownParam& shutdownArg);
Name | Data type | Comments |
---|---|---|
shutdownArg | const rpos::core::SlamcoreShutdownParam& | Fields of this struct: restartTimeIntervalMinute for time interval to restart; shutdownTimeIntervalMinute for time interval to shutdown; please notice, restart time should be greater than shutdown time, or an OperationFailException will be thrown. |
/**
* Get device info. (related to robot base)
*/
system_resource::DeviceInfo getDeviceInfo();
For details please refer to rpos::features::system_resource::DeviceInfo.
/**
* Get robot health infomation.
*/
rpos::features::system_resource::BaseHealthInfo getRobotHealth();
For details please refer to rpos::features::system_resource::BaseHealthInfo.
/**
* Clear specific health error code.
*/
void clearRobotHealth(int errorCode);
/**
* Configure robot network mode.
*/
bool configurateNetwork(
rpos::features::system_resource::NetworkMode mode,
const std::map<std::string, std::string>& options
);
Parameters
Network Modes | ssid | password | channel | ip | dns | gateway | mask |
---|---|---|---|---|---|---|---|
NetworkModeAp |
Optional | Optional | Optional | Optional | Optional | Optional | Optional |
NetworkModeStation |
Required | Optional | -- | -- | -- | -- | -- |
NetworkModeWifiDisabled |
-- | -- | -- | -- | -- | -- | -- |
NetworkModeDHCPDisabled |
-- | -- | -- | -- | -- | -- | -- |
NetworkModeDHCPEnabled |
-- | -- | -- | -- | -- | -- | -- |
- Only listed modes are supported yet,
ssid
,password
,channel
, and other fields may be optional or required according to selected network mode (-- for N/A) NetworkModeWifiDisabled
will disable the WiFi function
Example
std::map<std::string, std::string> options;
options[“ssid”] = “Slamtec”;
options[“password”] = “slamtect”;
Bool bRet = platform.configureNetwork(rpos::features::system_resource::NetworkModeStation,options);
/**
* Get current wireless configuration.
*/
std::map<std::string, std::string> getNetworkStatus();
Notes: currently only
mode
,ssid
, andip
are returned
/**
* Start heart beat. After first start, the client app should invoke `refreshHeartBeat` method periodically to tell it's working properly.
* If SLAMWARE doesn't receive the token in preset timeout, it will judge client application's malfunctioning and abort current action.
*/
system_resource::HeartBeatToken startHeartBeat(int heartBeatTimeoutInSeconds);
Name | Data type | Comments |
---|---|---|
heartBeatTimeoutInSeconds | int | Heartbeat timeout in seconds |
/**
* Refresh heart beat. Only one or no token is active.
* If startHeartBeat is invoked twice, the first token will be invalidated, and only later timeout and token are valid.
*/
void refreshHeartBeat(system_resource::HeartBeatToken token);
Name | Date type | Comments |
---|---|---|
token | system_resource::HeartBeatToken | Token returned by startHeartBeat(int) |
/**
* Stop heart beat function.
*/
void stopHeartBeat(system_resource::HeartBeatToken token);
/**
* Start firmware upgrade with specific firmware file. (related to robot base)
*/
void startFirmwareUpgrade(const std::string& filename);
Name | Date type | Comments |
---|---|---|
filename | const std::string& | The path to the firmware file |
/**
* Start firmware upgrade with firmware binary. (related to robot base)
*/
void startFirmwareUpgrade(const std::vector<uint8_t>& firmwareContent);
Name | Date type | Comments |
---|---|---|
firmwareContent | const std::vector |
The binary content of the firmware file |
/**
* Send depth camera frame to the SLAMWARE system.
*/
void publishDepthCamFrame(
int sensorId,
const rpos::message::depth_camera::DepthCameraFrame& frame
);
Name | Date type | Comments |
---|---|---|
sensorId | int | Sensor ID, should be the same with configuration |
frame | const rpos::message::depth_camera::DepthCameraFrame& | Depth camera frame |
void publishDepthCamFrame(const rpos::features::location_provider::BitmapMap& obstacle);
Send depth camera frame to the SLAMWARE system
Name | Data type | Comments |
---|---|---|
obstacle | const rpos::features::location_provider::BitmapMap& |
Depth camera obstacle frame |
BitmapMap description: | ||
/**
* Get operation audit log from SLAMWARE system.
*/
std::vector<system_resource::OperationAuditLog> getOperationAuditLogs();
/**
* Send customized control bus command to the chasis and receives response. (related to robot base)
*/
int sendAndRecvUserDefinedCBUSMessage(
const void * payload,
const size_t payloadsize,
void * recvBuffer,
size_t & recvDataSize
);
/**
* Begin LIDAR auto tweaking process.
*/
system_resource::LidarAutoTweakRequestResult beginLidarAutoTweak();
Return values
Return value | Comment |
---|---|
LidarAutoTweakRequestResultStarted |
LIDAR auto tweaking started |
LidarAutoTweakRequestResultNotSupport |
The robot doesn't support this feature |
LidarAutoTweakRequestResultDisabled |
This feature is disabled in the configuration |
/**
* Fetch LIDAR auto tweaking status.
*/
system_resource::LidarAutoTweakStatus getLidarAutoTweakStatus();
Return values
Return value | Comments |
---|---|
LidarAutoTweakStatusIdle |
Idle, the tweaking process is not triggered |
LidarAutoTweakStatusWaitingForContext |
The tweaking process is triggered, but still collecting more data |
LidarAutoTweakStatusTweaking |
All required data is ready, tweaking LIDAR |
LidarAutoTweakStatusDone |
LIDAR is tweaked, wait for accept or reject |
LidarAutoTweakStatusFailed |
Cannot find out a proper parameter for this tweaking |
/**
* Accept LIDAR auto tweaking result, and save to LIDAR.
*/
bool acceptLidarTweakResult();
/**
* Reject LIDAR auto tweaking result, and revert to original settings.
*/
void resetLidarTweakResult();
/**
* Cancel current auto tweaking process.
*/
void cancelLidarAutoTweak();
/**
* get slamware current timestamp
*/
std::uint64_t getHostTimestampInNs()
/**
* convert current system timestamp to slamware
*/
std::uint64_t convertTimestampToHostInNs(std::uint64_t ns)