rpos::robot_platforms::SlamwareCorePlatform类

SlamwareCorePlatform对象代表一个基于Slamware的机器人,用以获取设备的状态、控制设备的行为。

头文件

rpos/robot_platforms/slamware_core_platform.h

适用于

  • Slamware
  • Mapper (部分)

父类

继承自rpos::core::RobotPlatform

构造器

/**
* 该构造器仅限SDK内部使用。
*/
SlamwareCorePlatform(boost::shared_ptr<detail::SlamwareCorePlatformImpl> impl);
/**
* 拷贝构造函数。
*/
SlamwareCorePlatform(const SlamwareCorePlatform&);

运算符

/**
* 赋值运算符。
*/
SlamwareCorePlatform& operator=(const SlamwareCorePlatform&);

静态方法

/**
* 连接到指定的Slamware设备。
*/
static SlamwareCorePlatform connect(const std::string& host, int port, int timeoutInMs = 10000)
​    throw(ConnectionTimeOutException, ConnectionFailException);
名称 类型 说明
host const std::string& Slamware Core的IP地址
port int Slamware Core的端口(通常为1445)
timeoutInMs int 连接超时时间,单位为毫秒
返回 SlamwareCorePlatform 连接成功后返回对象

方法

总体方法

/**
* 断开与Core之间的连接。
*/
void disconnect();

Artifacts相关方法 不适用于Mapper

/**
* 获取某一类型的所有矩形区域。
*/
std::vector <features::artifact_provider::RectangleArea> getRectangleAreas(features::artifact_provider::ArtifactUsage usage);
名称 类型 说明
usage features::artifact_provider::ArtifactUsage 指定要获取的矩形区域类型
返回 std::vector <features::artifact_provider::RectangleArea> 获取矩形区域
/**
* 添加矩形区域。
*/
bool addRectangleArea(features::artifact_provider::ArtifactUsage usage, const features::artifact_provider::RectangleArea& area);
名称 类型 说明
usage features::artifact_provider::ArtifactUsage 待添加的矩形区域类型
area const features::artifact_provider::RectangleArea& 待添加的矩形区域
返回 bool 添加成功返回true,反之返回false
/**
* 添加矩形区域。
*/
bool addRectangleAreas(features::artifact_provider::ArtifactUsage usage, const std::vector<features::artifact_provider::RectangleArea>& areas);
名称 类型 说明
usage features::artifact_provider::ArtifactUsage 待添加的矩形区域类型
area const features::artifact_provider::RectangleArea& 待添加的矩形区域
返回 bool 添加成功返回true,反之返回false
/**
* 移除矩形区域。
*/
bool removeRectangleAreaByIds(features::artifact_provider::ArtifactUsage usage, const std::vector<core::SegmentID>& ids);
名称 类型 说明
usage features::artifact_provider::ArtifactUsage 待移除的矩形区域类型
ids const std::vector<core::SegmentID>& 待移除的矩形区域ID
返回 bool 移除返回true,反之返回false
/**
* 清空某一类型的矩形区域。
*/
bool clearRectangleAreas(features::artifact_provider::ArtifactUsage usage); 
名称 类型 说明
usage features::artifact_provider::ArtifactUsage 待清空的矩形区域类型
返回 bool 清空成功返回true,反之返回false
/**
* 获取系统中的所有指定类型的线段。
*/ 
std::vector<core::Line> getLines(features::artifact_provider::ArtifactUsage usage);
名称 类型 说明
usage features::artifact_provider::ArtifactUsage 指定要获取的线段类型
返回 std::vector<core::Line> 获取线段
/**
* 添加线段。
*/ 
bool addLine(features::artifact_provider::ArtifactUsage usage, const core::Line& line);
名称 类型 说明
usage features::artifact_provider::ArtifactUsage 待添加的线段类型
line const core::Line& 待添加的线段
返回 bool 添加成功返回true,反之返回false
/**
* 添加多条线段。
*/
bool addLines(features::artifact_provider::ArtifactUsage usage, const std::vector<core::Line>& lines);
名称 类型 说明
usage features::artifact_provider::ArtifactUsage 待添加的线段类型
lines const std::vector<core::Line>& 待添加的线段
返回 bool 添加成功返回true,反之返回false
/**
* 移除线段。
*/
bool removeLineById(features::artifact_provider::ArtifactUsage usage, rpos::core::SegmentID id);
名称 类型 说明
usage features::artifact_provider::ArtifactUsage 待移除的线段类型
id rpos::core::SegmentID 待移除线段ID
返回 bool 移除成功返回true,反之返回false
/**
* 移除所有线段。
*/
bool clearLines(features::artifact_provider::ArtifactUsage usage);
名称 类型 说明
usage features::artifact_provider::ArtifactUsage 待移除的线段类型
返回 bool 移除成功返回true,反之返回false
/**
* 移动线段。
*/
bool moveLine(features::artifact_provider::ArtifactUsage usage, const core::Line& line);
名称 类型 说明
usage features::artifact_provider::ArtifactUsage 待移动的线段类型
line const core::Line& 待移动的线段
返回 bool 移动成功返回true,反之返回false
/**
* 移动多条线段。
*/
bool moveLines(features::artifact_provider::ArtifactUsage usage, const std::vector<core::Line>& lines);
名称 类型 说明
usage features::artifact_provider::ArtifactUsage 待移动的线段类型
lines const std::vector<core::Line>& 待移动的线段
返回 bool 移动成功返回true,反之返回false
/**
* 获取系统中所有的虚拟墙。
*/
std::vector<core::Line> getWalls();
名称 类型 说明
返回 std::vector<core::Line> 获取虚拟墙
/**
* 添加虚拟墙。
*/
bool addWall(const core::Line& wall);
名称 类型 说明
wall const core::Line& 待添加的虚拟墙
返回 bool 添加成功返回true,反之返回false
/**
* 添加多条虚拟墙。
*/
bool addWalls(const std::vector<core::Line>& walls);
名称 类型 说明
walls const std::vector<core::Line>& 待添加的虚拟墙
返回 bool 添加成功返回true,反之返回false
/**
* 移除虚拟墙。
*/
bool clearWallById(const core::SegmentID& id);
名称 类型 说明
id const core::SegmentID 待移除虚拟墙ID
返回 bool 移除成功返回true,反之返回false
/**
* 移除所有虚拟墙。
*/
bool clearWalls();
名称 类型 说明
返回 bool 移除成功返回true,反之返回false
/**
* 获取系统中的地图差异区域。
*/
std::vector<core::RectangleF> getMapDiscrepancyMonitorAreas();
名称 类型 说明
返回 std::vector<core::RectangleF> 地图差异区域
/**
* 添加地图差异区域。
*/
bool addMapDiscrepancyMonitorArea(const core::RectangleF& area);
名称 类型 说明
area const core::RectangleF& 待添加差异地图区域
返回 bool 添加成功返回true,反之返回false
/**
* 添加地图差异区域。
*/
bool addMapDiscrepancyMonitorAreas(const std::vector<core::RectangleF>& areas);
名称 类型 说明
area const std::vector<core::RectangleF>& 待添加差异地图区域
返回 bool 添加成功返回true,反之返回false
/**
* 移除地图差异区域。
*/
bool removeMapDiscrepancyMonitorAreas(const std::vector<core::RectangleF>& areas);
名称 类型 说明
area const std::vector<core::RectangleF>& 待移除差异地图区域
返回 bool 移除成功返回true,反之返回false
/**
* 清空地图差异区域。
*/
bool clearMapDiscrepancyMonitorAreas();
名称 类型 说明
返回 bool 清空成功返回true,反之返回false

定位相关方法

/**
* 获取系统提供的所有地图类型。
*/
std::vector<features::location_provider::MapType> getAvailableMaps();
名称 类型 说明
返回 std::vector<features::location_provider::MapType> 支持的地图类型
/**
* 获取地图数据。
*/
features::location_provider::Map getMap(features::location_provider::MapType type, core::RectangleF area, features::location_provider::MapKind kind);
名称 类型 说明
type features::location_provider::MapType 待获取的地图数据类型
area core::RectangleF 待获取的地图区域
kind features::location_provider::MapKind 待获取的地图类型
返回 features::location_provider::Map 地图

代码示例:

rpos::feature::location_provider::MapType mapType = rpos::feature::location_provider::MapType::MapTypeBitmap8Bit;
rpos::feature::location_provider::Mapkind mapKind = rpos::feature::location_provider::MapKind::EXPLORERMAP;
rpos::core::Rectangle knownArea = robotPlatform.getKnownArea(mapType, mapKind);
rpos::feature::location_provider:Map map = robotPlatform.getMap(mapType, knownArea, mapKind);
/**
* 上传地图数据到Slamware CORE。
*/
bool setMap(const features::location_provider::Map& map, features::location_provider::MapType type, features::location_provider::MapKind kind, bool partially = false);
名称 类型 说明
map const features::location_provider::Map& 地图
type features::location_provider::MapType 待上传的地图数据类型
kind features::location_provider::MapKind 待上传的地图类型
partially bool 是否上传局部地图
返回 bool 上传成功返回true,反之返回false

代码示例:

rpos::feature::location_provider::MapType mapType = rpos::feature::location_provider::MapType::MapTypeBitmap8Bit;
rpos::feature::location_provider::Mapkind mapKind = rpos::feature::location_provider::MapKind::EXPLORERMAP;
rpos::core::Rectangle knownArea = robotPlatform.getKnownArea(mapType, mapKind);
rpos::feature::location_provider:Map map = robotPlatform.getMap(mapType, knownArea, mapKind);
bool bRet = robotPlatform.setMap(map, mapType, mapKind);
/**
* 上传地图数据及机器人位姿到Slamware CORE。
*/
bool setMapAndPose(const core::Pose& pose, const features::location_provider::Map& map, features::location_provider::MapType type, features::location_provider::MapKind kind, bool partially = false);
名称 类型 说明
pose const core::Pose& 机器人位姿
map const features::location_provider::Map& 地图
type features::location_provider::MapType 待上传的地图数据类型
kind features::location_provider::MapKind 待上传的地图类型
partially bool 是否上传局部地图
返回 bool 上传成功返回true,反之返回false

代码示例:

rpos::core::Pose pose;
rpos::feature::location_provider::MapType mapType = rpos::feature::location_provider::MapType::MapTypeBitmap8Bit;
rpos::feature::location_provider::Mapkind mapKind = rpos::feature::location_provider::MapKind::EXPLORERMAP;
rpos::core::Rectangle knownArea = robotPlatform.getKnownArea(mapType, mapKind);
rpos::feature::location_provider:Map map = robotPlatform.getMap(mapType, knownArea, mapKind);
bool bRet = robotPlatform.setMapAndPose(pose, map, mapType, mapKind);
/**
* 获取已完成的建图区域。
*/
core::RectangleF getKnownArea(features::location_provider::MapType type, features::location_provider::MapKind kind);
名称 类型 说明
type features::location_provider::MapType 待获取的地图数据类型
kind features::location_provider::MapKind 待获取的地图类型
返回 core::RectangleF 已完成的建图区域

代码示例:

rpos::feature::location_provider::MapType mapType = rpos::feature::location_provider::MapType::MapTypeBitmap8Bit;
rpos::feature::location_provider::Mapkind mapKind = rpos::feature::location_provider::MapKind::EXPLORERMAP;
rpos::core::RectangleF knownArea = robotPlatform.getKnownArea(mapType, mapKind);
/**
* 清除地图数据。
*/
bool clearMap();
名称 类型 说明
返回 bool 清除成功返回true,反之返回false
/**
* 清除指定类型的地图数据。
*/
bool clearMap(features::location_provider::MapKind kind);
名称 类型 说明
kind features::location_provider::MapKind 待清除的地图类型
返回 bool 清除成功返回true,反之返回false
/**
* 获取机器人在地图上的坐标。
*/
core::Location getLocation();
名称 类型 说明
返回 core::Location 机器人地图坐标
/**
* 获取机器人在地图上的位姿。
*/
core::Pose getPose();
名称 类型 说明
返回 core::Pose 机器人在地图上的位姿
/**
* 上传机器人在地图上的位姿。
*/
bool setPose(const core::Pose& pose);
名称 类型 说明
pose const core::Pose& 待上传的机器人位姿
返回值 bool 上传成功返回true,反之返回false
/**
* 获取地图定位开关状态。
*/
bool getMapLocalization();
名称 类型 说明
返回 bool 地图定位打开返回true,反之返回false
/**
* 设置地图定位开关状态。
*/
bool setMapLocalization(bool localization);
名称 类型 说明
localization bool 待设置的定位开关状态
返回 bool 设置成功返回true,反之返回false
/**
* 获取建图开关状态。
*/
bool getMapUpdate(rpos::features::location_provider::MapKind kind = rpos::features::location_provider::EXPLORERMAP);
名称 类型 说明
kind rpos::features::location_provider::MapKind 地图类型
返回 bool 建图打开返回true,反之返回false
/**
* 设置建图开关状态。
*/
bool setMapUpdate(bool update, rpos::features::location_provider::MapKind kind = rpos::features::location_provider::EXPLORERMAP);
名称 类型 说明
update bool 待设置的建图开关状态
kind rpos::features::location_provider::MapKind 待设置的地图类型
返回 bool 设置成功返回true,反之返回false
/**
* 获取定位质量。
*/
int getLocalizationQuality();
名称 类型 说明
返回 int 定位质量值
/**
* 获取辅助传感器的定位信息。
*/
features::location_provider::PointPDF getAuxLocation();
名称 类型 说明
返回 features::location_provider::PointPDF 定位信息
/**
* 获取充电桩位姿。
*/
bool getHomePose(core::Pose& pose);
名称 类型 说明
pose core::Pose& 获取的充电桩位姿(引用)
返回 bool 获取成功返回true,反之返回false
/**
* 上传充电桩位姿。
*/
bool setHomePose(core::Pose pose);
名称 类型 说明
pose core::Pose 待设置的充电桩位姿
返回 bool 设置成功返回true,反之返回false
/** 
* 获取辅助传感器定位状态。
*/
features::location_provider::AuxLocalizationStatus getAuxLocalizationStatus(features::location_provider::AuxLocalizationSource source);
名称 类型 说明
source features::location_provider::AuxLocalizationSource 指定辅助定位信息的来源
返回 features::location_provider::AuxLocalizationStatus 辅助定位状态信息,包括功能支持状态、建图打开状态、最后一次定位的报告时间等
/**
* 获取机器人姿态信息。
*/
bool getImuInRobotCoordinate(rpos::core::Imu& imu);
名称 类型 说明
imu core::Imu 机器人姿态信息
返回 bool 成功返回true,反之返回false

运动规划相关方法 不适用于Mapper

/**
* 控制机器人沿着路径移动。
*/
actions::MoveAction moveTo(const std::vector<core::Location>& locations, bool appending, bool isMilestone);
名称 类型 说明
locations const std::vector<core::Location>& 待移动的坐标位置
appending bool 是否添加至末尾;若为true机器人将locations添加至现有路径之后,反之将清除现有路径
isMilestone bool 是否为里程碑点(已弃用)
返回 actions::MoveAction 运动行为
/**
* 控制机器人移动到目标位置。
*/
actions::MoveAction moveTo(const core::Location& location, bool appending, bool isMilestone);
名称 类型 说明
location const core::Location& 待移动的坐标位置
appending bool 是否添加至末尾;若为true机器人将location添加至现有路径之后,反之将清除现有路径
isMilestone bool 是否为里程碑点(已弃用)
返回 actions::MoveAction 运动行为
/**
* 控制机器人沿着路径移动。
*/
actions::MoveAction moveTo(const std::vector<rpos::core::Location>& locations, const features::motion_planner::MoveOptions& options, float yaw = 0);
名称 类型 说明
locations const std::vector<rpos::core::Location>& 待移动的坐标位置
options features::motion_planner::MoveOptions& 运动选项
yaw float 设备的旋转角度
返回 actions::MoveAction 运动行为
/**
* 控制机器人移动到目标位置。
*/
actions::MoveAction moveTo(const core::Location& location, const features::motion_planner::MoveOptions& options, float yaw = 0);
名称 类型 说明
location const core::Location& 待移动的坐标位置
options features::motion_planner::MoveOptions& 运动选项
yaw float 设备的旋转角度
返回 `actions::MoveAction 运动行为
/**
* 手动控制机器人运动。
*/ 
actions::MoveAction moveBy(const core::Direction& direction);
名称 类型 说明
direction const core::Direction& 机器人运动方向
返回 actions::MoveAction 运动行为

代码示例:

rpos::core::ACTION_DIRECTION actionDirection = rpos::core::ACTION_DIRECTION::FORWARD;
rpos::core::Direction direction(actionDirection);
rpos::actions::MoveAction moveBy = platform.moveBy(direction);
/** 
* 手动控制机器人运动。
*/
actions::MoveAction moveBy(const core::Direction& direction, const features::motion_planner::MoveOptions& options);
名称 类型 说明
direction const core::Direction& 机器人运动方向
options features::motion_planner::MoveOptions& 暂不支持
返回 actions::MoveAction 运动行为
/** 
* 轨迹球方式控制机器人移动。
*/
actions::MoveAction moveBy(float theta, const features::motion_planner::MoveOptions& options);
名称 类型 说明
theta float 轨迹球角度
options features::motion_planner::MoveOptions& 暂不支持
返回 actions::MoveAction 运动行为
/**
* 控制机器人转动至指定的朝向。
*/
actions::MoveAction rotateTo(const core::Rotation& orientation);
名称 类型 说明
orientation const core::Rotation& 要求机器人转动到的朝向
返回 actions::MoveAction 运动行为
/**
* 控制机器人转动至指定的朝向。
*/
actions::MoveAction rotateTo(const core::Rotation& orientation, const features::motion_planner::MoveOptions& options);
名称 类型 说明
orientation const core::Rotation& 要求机器人转动到的朝向
options features::motions_planner::MoveOptions& 暂不支持
返回 actions::MoveAction 运动行为
/**
* 控制机器人转动指定角度。
*/
actions::MoveAction rotate(const core::Rotation& rotation);
名称 类型 说明
orientation const core::Rotation& 转动角度
返回 actions::MoveAction 运动行为
/** 
* 控制机器人转动指定角度。
*/

actions::MoveAction rotate(const core::Rotation& rotation, const features::motion_planner::MoveOptions& options);
名称 类型 说明
orientation const core::Rotation& 转动角度
options features::motions_planner::MoveOptions& 暂不支持
返回 actions::MoveAction 运动行为
/**
* 重定位。
*/
actions::MoveAction recoverLocalization(const core::RectangleF& area, const features::motion_planner::RecoverLocalizationOptions& options=features::motion_planner::RecoverLocalizationOptions());
名称 类型 说明
area const core::Rectangle& 置信区域
options features::motion_planner::RecoverLocalizationOptions& 重定位选项,包含重定位时的行为表现、时长限制等
返回 actions::MoveAction 运动行为
/**
* 利用充电桩进行重定位。
*/
actions::MoveAction recoverLocalizationByDock();
/**
* 创建一个速度控制action,用于下发速度给底盘机器人。
*/
rpos::actions::VelocityControlMoveAction velocityControl();
/**
* 获取机器人当前的运动行为。
*/
actions::MoveAction getCurrentAction();
名称 类型 说明
返回 actions::MoveAction 当前运动行为
/**
* 获取寻路算法搜出的前往目标点的路径。
*/
features::motion_planner::Path searchPath(const core::Location& location);
名称 类型 说明
location const core::Location& 目标点
返回 features::motion_planner::Path 路径
/**
* 获取机器人移动路径(暂不支持)。
*/
features::motion_planner::Path getRobotTrack(int count);
/**
* 开始清扫(暂不支持)。
*/
actions::SweepMoveAction startSweep();
/**
* 定点清扫(暂不支持)。
*/
actions::SweepMoveAction sweepSpot(const core::Location& location);
/**
* 回充电桩。
*/
actions::MoveAction goHome(rpos::features::motion_planner::GoHomeFlag flag = rpos::features::motion_planner::Dock);
名称 类型 说明
GoHomeFlag Dock 回桩,且回到充电桩上面
NoDock 回桩,但是不回到充电桩上面
返回 actions::MoveAction 运动行为
/** 
* 获取清扫面积(暂不支持)。
*/ 
float getSweepArea();
/**
* 开始区域清扫(暂不支持)。
*/
actions::SweepMoveAction startRegionSweep(const std::vector<size_t>& ids, const std::vector<size_t>& numbers);
/**
* 插入区域(暂不支持)。
*/
void insertRegion(const features::Region& region);
/**
* 插入区域(暂不支持)。
*/
void insertRegions(const std::vector\features::Region>& regions);
/**
* 移除区域(暂不支持)。
*/
void removeRegion(size_t id);
/**
* 移除区域(暂不支持)。
*/
void removeRegions(const std::vector<size_t>& ids);
/** 
* 更新区域(暂不支持)。
*/
void updateRegion(const rpos::features::Region& region);
/**
* 更新区域(暂不支持)
*/
void updateRegions(const std::vector<rpos::features::Region>& regions);
/**
* 获取区域(暂不支持)。
*/
std::vector<features::Region> getRegions();
/**
* 获取正在清扫的区域(暂不支持)。
*/
std::vector<rpos::features::Region> getSweepingRegions();
/** 
* 开始沿路径清扫(暂不支持)。
*/
rpos::actions::SweepMoveAction startFollowPathSweep(const rpos::features::motion_planner::Path& path);
/** 
* 开始沿路径清扫(暂不支持)。
*/
rpos::actions::SweepMoveAction startFollowPathSweep(const std::vector<std::vector<rpos::core::Location>>& paths);
/**
* 获取已画的清扫路径(暂不支持)。
*/
rpos::features::motion_planner::Path getPaintedSweepPath();
/**
* 获取已画的清扫路径(暂不支持)。
*/
std::vector<rpos::features::motion_planner::Path> getPaintedSweepPaths();

系统资源相关方法

/** 
* 获取电量百分比。
*/
int getBatteryPercentage();
名称 类型 描述
返回 int 电量百分比
/**
* 获取充电状态。
*/
bool getBatteryIsCharging();
名称 类型 描述
返回 bool 充电中返回true,反之返回false
/**
* 获取直流电源连接状态。
*/
bool getDCIsConnected();
名称 类型 描述
返回 bool 直流电源连接返回true,反之返回false
/**
* 获取电源状态。
*/
features::system_resource::PowerStatus getPowerStatus();
名称 类型 描述
返回 features::system_resource::PowerStatus 电源状态,包括直流电源连接状态、上桩状态、充电状态、电量、模式等信息
/** 
* 请求唤醒。
*/
void wakeUp();
/**
* 请求休眠。
*/
void hibernate();
/**
* 获取机器人核心温度。
*/
int getBoardTemperature();
名称 类型 描述
返回 int 温度值,单位0.1℃(如45.2℃将返回452)
/**
* 获取SDP版本号。
*/
std::string getSDPVersion();
名称 类型 描述
返回 std::string SDP版本
/**
* 获取SDK版本号。
*/
std::string getSDKVersion();
名称 类型 描述
返回 std::string SDK版本
/**
* 获取激光数据。
*/
features::system_resource::LaserScan getLaserScan();
名称 类型 描述
返回 features::system_resource::LaserScan 激光数据
/**
* 请求重启。
*/
bool restartModule(features::system_resource::RestartMode mode = features::system_resource::RestartModeSoft);
名称 类型 描述
mode features::system_resource::RestartMode 指定重启模式
返回 bool 请求成功返回true,反之返回false
/**
* 设置系统参数。
*/
bool setSystemParameter(const std::string& param, const std::string& value);
名称 类型 描述
param const std::string& 待设置的参数项
value const std::string& 待设置的参数值
返回 bool 设置成功返回true,反之返回false

代码示例:

Bool bRet = platform.setSystemParameter(SYSPARAM_ROBOT_SPEED, SYSVAL_ROBOT_SPEED_HIGH);
/**
* 获取系统参数。
*/
std::string getSystemParameter(const std::string& param);
名称 类型 描述
param const std::string& 待获取的参数项
返回 std::string 参数值

代码示例:

std::string robotSpeed = platform.getSystemParameter(SYSPARAM_ROBOT_SPEED);
/**
* 上传Binary配置。
*/
bool updateBinaryConfig(const Json::Value& jsnCfg);
名称 类型 描述
jsnCfg const Json::Value& 待上传的配置
返回 bool 上传成功返回true,反之返回false
/**
* 设置新的Cube配置。
* 配置文件可从RoboStudio的Cube配置工具中导出。
* 注意:调用该函数会重启slamware软件,请稍后重新连接
*/
bool setCubeConfig(const std::string& cfgFilePath);
名称 类型 描述
cfgFilePath const std::string& 待上传的配置文件路径
返回 bool 上传成功返回true,反之返回false
/**
* 请求关机。
*/
bool shutdownSlamcore(const rpos::core::SlamcoreShutdownParam& shutdownArg);
名称 类型 描述
shutdownArg const rpos::core::SlamcoreShutdownParam& 关闭参数,下次启动的间隔时间,以及关机时间
返回 bool 请求成功返回true,反之返回false
/**
* 获取设备信息。
*/
features::system_resource::DeviceInfo getDeviceInfo();
名称 类型 描述
返回 features::system_resource::DeviceInfo 设备信息,包括设备ID、制造商ID、制造商名称、型号ID、型号名称、软硬件版本等信息
/**
* 获取机器人底盘健康状态信息。
*/
features::system_resource::BaseHealthInfo getRobotHealth();
名称 类型 描述
返回 features::system_resource::BaseHealthInfo 底盘健康状态信息
/**
* 清除机器人底盘健康状态信息。
*/
void clearRobotHealth(int errorCode);
名称 类型 描述
errorCode int 待删除健康状态信息的错误码
/**
* 配置机器人的网络。
*/
bool configurateNetwork(features::system_resource::NetworkMode mode, const std::map<std::string, std::string>& options);
名称 类型 描述
mode features::system_resource::NetworkMode 网络模式
options const std::map<std::string, std::string>& 配置选项
返回值 bool 配置完成返回true,反之返回false

参数

网络模式 ssid password channel ip dns gateway mask
NetworkModeAp 可选 可选 可选 可选 可选 可选 可选
NetworkModeStation 必选 可选 -- -- -- -- --
NetworkModeWithDisabled -- -- -- -- -- -- --

代码示例:

std::map<std::string, std::string> options;
options[“ssid”] = “Slamtec”;
options[“password”] = “slamtect”;
Bool bRet = platform.configureNetwork(rpos::features::system_resource::NetworkMode::NetworkModeStation,options);
/**
* 获取机器人当前无线网络的配置信息。
*/
std::map<std::string, std::string> getNetworkStatus();
名称 类型 描述
返回 std::map<std::string, std::string> 网络配置信息,包含mode,ssid和ip三个选项
/**
* 启动心跳。
*/
features::system_resource::HeartBeatToken startHeartBeat(int heartBeatTimeoutInSeconds);
名称 类型 描述
heartBeatTimeoutInSeconds int 心跳超时时间
返回 features::system_resource::HeartBeatToken 心跳token
/**
* 刷新心跳。
*/
void refreshHeartBeat(features::system_resource::HeartBeatToken token);
名称 类型 描述
token features::system_resource::HeartBeatToken 指定心跳token
/**
* 停止心跳。
*/
void stopHeartBeat(features::system_resource::HeartBeatToken token);
名称 类型 描述
token features::system_resource::HeartBeatToken 指定心跳token
/**
* 语音响应(暂不支持)。
*/
void voiceRespond();
/**
* 启动系统固件升级。
*/
void startFirmwareUpgrade(const std::string& filename);
名称 类型 描述
filename const std::string& 文件名
/**
* 发布深度摄像头数据。
*/
void publishDepthCamFrame(int sensorId, const rpos::message::depth_camera::DepthCameraFrame& frame);
名称 类型 描述
sensorId int 深度摄像头的传感器ID
frame const rpos::message::depth_camera::DepthCameraFrame& 深度摄像头数据
/**
* 获取运行审计日志。
*/
std::vector<features::system_resource::OperationAuditLog> getOperationAuditLogs();
名称 类型 描述
返回 std::vector<features::system_resource::OperationAuditLog> 日志列表
/**
* 发送并接收自定义消息。
*/
int sendAndRecvUserDefinedCBUSMessage(const void * payload, const size_t payloadsize, void * recvBuffer, size_t & recvDataSize);
名称 类型 描述
payload const void* 消息载体指针
payloadsize const size_t 消息载体字节数
recvBuffer void* 接收消息载体的buffer指针
recvDataSize size_t& 接收消息的字节数(引用)
返回 int 接收消息的结果

雷达调整相关方法 不适用于Mapper

/**
* 启动雷达自动调整。
*/
rpos::features::system_resource::LidarAutoTweakRequestResult beginLidarAutoTweak();
名称 类型 描述
返回 rpos::features::system_resource::LidarAutoTweakRequestResult 请求结果
/**
* 获取雷达自动调整状态。
*/
rpos::features::system_resource::LidarAutoTweakStatus getLidarAutoTweakStatus();
名称 类型 描述
返回 rpos::features::system_resource::LidarAutoTweakStatus 雷达自动调整状态
/**
* 接受雷达调整结果。
*/
bool acceptLidarTweakResult();
名称 类型 描述
返回 bool 保存调整结果成功返回true,反之返回false
/**
* 不接受雷达调整结果,保留原始值。
*/
void resetLidarTweakResult();
/**
* 取消雷达自动调整。
*/
void cancelLidarAutoTweak();

传感器相关方法

/**
* 获取传感器列表。
*/
bool getSensors(std::vector<features::impact_sensor::ImpactSensorInfo>& sensors);
名称 类型 描述
sensors std::vector<features::impact_sensor::ImpactSensorInfo&> 传感器信息(引用),单个传感器信息包含ID、类型、位姿和刷新频率
返回 bool 获取成功返回true,反之返回false
/**
* 获取所有传感器值。
*/
bool getSensorValues(std::map<features::impact_sensor::impact_sensor_id_t, features::impact_sensor::ImpactSensorValue>& values);
名称 类型 描述
values std::map<features::impact_sensor::impact_sensor_id_t, features::impact_sensor::ImpactSensorValue>& 传感器值(引用)
返回 bool 获取成功返回true,反之返回false

注:features::impact_sensor::ImpactSensorValue数据结构如下:

struct ImpactSensorValue {
    impact_sensor_timestamp_t time;
    float value;
};
/**
* 获取指定多个传感器的数据。
*/
bool getSensorValues(const std::vector<features::impact_sensor::impact_sensor_id_t>& sensorIds, std::vector<features::impact_sensor::ImpactSensorValue>& values);
名称 类型 描述
sensorIds const std::vector<features::impact_sensor::impact_sensor_id_t>& 待获取的传感器ID
values std::vector<features::impact_sensor::ImpactSensorValue>& 传感器值(引用),与指定的sensorIds相对应
返回 bool 获取成功返回true,反之返回false
/**
* 获取指定传感器的数据。
*/
bool getSensorValue(features::impact_sensor::impact_sensor_id_t sensorId, features::impact_sensor::ImpactSensorValue& value);
名称 类型 描述
sensorId features::impact_sensor::impact_sensor_id_t 待获取的传感器ID
values features::impact_sensor::ImpactSensorValue& 传感器值(引用)
返回 bool 获取成功返回true,反之返回false

固件服务相关方法

/**
* 获取固件更新信息。
*/
detail::objects::UpdateInfo getUpdateInfo();
名称 类型 描述
返回 detail::objects::UpdateInfo 更新信息
/**
* 启动固件更新。
*/
bool startFirmwareUpdate();
名称 类型 描述
返回 bool 请求成功返回true,否则返回false
/**
* 获取固件更新进度。
*/
detail::objects::UpdateProgress getFirmwareUpdateProgress();
名称 类型 描述
返回 detail::objects::UpdateProgress 更新进度,包括当前步骤、总步骤数、当前步骤名称、进度百分比、当前状态等信息
/**
* 获得被禁用的传感器。
*/
std::vector<rpos::core::DisabledSensorMaskData> getDisabledSensorsMaskData();
名称 类型 描述
返回 std::vector<rpos::core::DisabledSensorMaskData> 禁用的传感器
/**
* 禁用指定传感器。
*/
bool setSensorMask(const std::vector<rpos::core::SensorMaskCtrlData>& sensorCtrlDat); 
名称 类型 描述
sensorCtrlDat const std::vector<rpos::core::SensorMaskCtrlData>& 待禁用的传感器
返回 bool 设置成功。

Composite地图相关方法

/**
* 获取Composite地图数据。
*/
robot_platforms::objects::CompositeMap getCompositeMap();
名称 类型 描述
返回 robot_platforms::objects::CompositeMap 获取Composite地图数据,包含多个图层
/**
* 上传Composite地图数据。
*/
void setCompositeMap(const robot_platforms::objects::CompositeMap& map, const core::Pose& pose);
名称 类型 描述
map const robot_platforms::objects::CompositeMap& 待上传的Composite地图
pose const core::Pose& 机器人位姿

代码示例:

auto pose = platform.getPose();

rpos::robot_platforms::objects::Metadata metadata;
std::vector< boost::shared_ptr<rpos::robot_platforms::objects::MapLayer> > maps;

auto map_layer_v_walls = boost::make_shared<rpos::robot_platforms::objects::LineMapLayer>();
maps.push_back(map_layer_v_walls);
map_layer_v_walls->setUsage("virtual_walls");
map_layer_v_walls->setType(rpos::robot_platforms::objects::LineMapLayer::Type);
rpos::robot_platforms::objects::Line line(Point(0, 0), Point(10, 10));
line.name = "1";
map_layer_v_walls->lines()[line.name] = line;

rpos::robot_platforms::objects::CompositeMap compositeMap(metadata, maps);
platform. setCompositeMap (compositeMap, pose);

统计相关方法 不适用于Mapper

/**
* 获取清扫时间(暂不支持)。
*/
int getSweepTimeMs();
/**
* 获取总里程统计。
*/
double getOdometry();
名称 类型 描述
返回 double 里程计值
/**
* 获取系统运行时间。
*/
double getSystemRunningTime();
名称 类型 描述
返回 double 系统运行时间
/**
* 该接口返回从1970年1月1日到当前时区的当前时间经过的秒数。
*/ 
int getLocalTimeSinceEpoch();

系统事件相关方法

/**
*  获取一个读系统事件的接口,用于读取slamware内部触发的事件  
* 【注意】不要频繁调用该函数,而应当保存其返回的SystemEventProvider对象*  
*/
boost::shared_ptr<robot_platforms::objects::SystemEventProvider> createSystemEventProvider(int timeoutInSeconds = 30);

Example

auto eventProvider = platform.createSystemEventProvider();
while(true)
{
    std::vector<rpos::core::DiagnosisInfoInternalSystemEvent> events;
    if(eventProvider->readEvents(events))
    {
        //handle the system event        
        for (auto it = events.begin(); it != events.end(); ++it)
        {
            printf("event:%d",(*it).internalSystemEvent);
        }
    }
    //read every 500 milliseconds 
    boost::this_thread::sleep_for(boost::chrono::milliseconds(500)); 
}