...
获取机器人行走时头朝向设置,可以参考rpos::robot::heading::HeadingMode
rpos::robot::option::MoveOption结构体
MoveOption结构体存储机器人运行时的设置。
头文件
rpos/features/motion_planner/move_option.h
结构体说明
appending
如果机器人正在执行其他的移动动作,该参数决定新的点是追加或是替换既有节点。
isMilestone
机器人是否通过路径搜索的方式前往目的地。
robotHeading
机器人行走时头朝向设置。参考rpos::robot::heading::RobotHeading
rpos::actions::MoveAction类
MoveAction类表示一个移动的动作,它包含了当前机器人规划的路径、检查点列表、移动的进程。
头文件
rpos/features/motion_planner/move_action.h
父类
继承自rpos::core::Action类
构造器
MoveAction(boost::shared_ptr<rpos::actions::detail::MoveActionImpl>)
该构造器仅限SDK内部使用。
MoveAction(const MoveAction&)
拷贝构造函数
运算符
MoveAction& operator=(const MoveAction&)
赋值运算符
方法
rpos::features::motion_planner::Path getRemainingPath()
获得已经规划好的,剩余的路径
rpos::features::motion_planner::Path getRemainingMilestones()
获得剩余的里程碑
rpos::features::ArtifactProvider类
器物功能特征,包括了虚拟墙功能。
头文件
rpos/features/artifact_provider.h
父类
继承自rpos::core::Feature类
构造器
ArtifactProvider(boost::shared_ptr<detail::ArtifactProviderImpl>)
该构造器仅限SDK内部使用。
ArtifactProvider(const ArtifactProvider&)
拷贝构造函数。
运算符
ArtifactProvider& operator=(const ArtifactProvider&)
赋值运算符。
方法
std::vector<rpos::core::Line> getWalls()
获取系统中所有的虚拟墙。
bool addWall(const rpos::core::Line&)
添加虚拟墙。
bool addWalls(const std::vector<rpos::core::Line>&)
添加虚拟墙。
bool clearWallById(const rpos::core::SegmentID&)
清除指定的虚拟墙。
bool clearWalls()
清除所有的虚拟墙。
rpos::features::LocationProvider类
定位功能特征,包括了自动建图和定位的功能(亦即SLAM功能)。
头文件
rpos/features/location_provider.h
父类
继承自rpos::core::Feature类
构造器
LocationProvider(boost::shared_ptr<detail::LocationProviderImpl>)
该构造器仅限SDK内部使用。
LocationProvider(const LocationProvider&)构造器
拷贝构造函数。
运算符
LocationProvider& operator=(const LocationProvider&)
赋值运算符。
方法
std::vector< rpos::features::location_provider::MapType> getAvailableMaps()
获得该定位功能特征提供的所有地图类型。
rpos::features::location_provider::Map getMap(rpos::features::location_provider::MapType,rpos::core::RectangleF, rpos::features::location_provider::MapKind)
获得该定位功能特征提供的指定地图类型指定区域的地图数据。
bool setMap(const rpos::features::location_provider::Map&,rpos::features::location_provider::MapType,rpos::features::location_provider::MapKind)
上载指定地图类型指定区域的地图数据到该定位功能特征,返回是否成功。
rpos::core::RectangleF getKnownArea(rpos::features::location_provider::MapType, rpos::features::location_provider::MapKind)
获得指定地图类型的地图中,已经完成建图的区域。
bool clearMap()
清除地图数据。
rpos::core::Location getLocation()
获得机器人在上述地图坐标系统中的坐标。
rpos::core::Pose getPose()
获得机器人在上述地图坐标系统中的姿态。
bool setPose(const rpos::core::Pose&)
上载当前机器人的姿态到上述地图坐标系统中,返回是否成功。
bool getMapLocalization()
获得机器人是否启用定位功能。
bool setMapLocalization(bool)
设置机器人是否启用定位功能。
bool getMapUpdate(rpos::features::location_provider::MapKind kind = rpos::features::location_provider::EXPLORERMAP);
获取机器人指定地图类型的更新功能,默认地图类型为探索地图。
enum MapKind {MapKind
EXPLORERMAP = 0,
探索地图
SWEEPERMAP = 10,
清扫地图
UWBMAP = 20
辅助定位地图
bool setMapUpdate(bool update, rpos::features::location_provider::MapKind kind = rpos::features::location_provider::EXPLORERMAP);
设置机器人指定类型的更新功能。
rpos::features::MotionPlanner类
路径规划功能特征,包括了动态路径规划功能和自动壁障功能。
头文件
rpos/features/motion_planner.h
父类
继承自rpos::core::Feature类
构造器
MotionPlanner(boost::shared_ptr<detail::MotionPlannerImpl>)
该构造器仅限SDK内部使用。
MotionPlanner(const MotionPlanner&)
拷贝构造函数。
运算符
MotionPlanner& operator=(const MotionPlanner&)
赋值运算符。
方法
rpos::actions::MoveAction moveTo(const std::vector<rpos::core::Location>&, bool, bool)
让机器人沿着路径移动(机器人会逐一走过路径中的节点,在节点之间尽量走圆滑的曲线,如果遇到障碍物,机器人会自动避开)。
参数
名称 | 类型 | 说明 |
---|---|---|
locations | const std::vector<rpos::core::Location>& | 期望机器人经过的点 |
appending | bool | 如果机器人正在执行其他的移动动作,该参数决定新的点是追加或是替换既有节点 |
isMilestone | bool | 当该参数为true时,机器人会将上述点视作关键点,通过路径搜索的方式前往目的地; 当参数为false时,会被视作普通点,不会启用路径搜索功能。 |
rpos::actions::MoveAction moveTo(const rpos::core::Location&, bool, bool)
让机器人移动到目标位置。
参数
名称 | 类型 | 说明 |
---|---|---|
location | const rpos::core::Location& | 期望机器人经过的点 |
appending | bool | 如果机器人正在执行其他的移动动作,该参数决定新的点是追加或是替换既有节点 |
isMilestone | bool | 当该参数设为true时,机器人会将上述点视作关键点,通过路径搜索的方式前往目的地; 当参数设为false时,会被视作普通点,不会启用路径搜索功能。 |
rpos::actions::MoveAction getCurrentAction()
获得机器人当前正在进行的移动动作。您可以使用Action::isEmpty()方法判断它是否存在。当机器人当前没有正在进行的动作时,它Action::isEmpty()将会返回true。
rpos::features::motion_planner::Path searchPath(const rpos::core::Location&)
使用机器人内置的寻路算法寻找前往指定目的地的路径。
rpos::features::SweepMotionPlanner类
清扫路径规划功能特征类。该类中的功能主要针对扫地机专属版本Slamware Core所提供的清扫和自动回充功能。
头文件
rpos/features/sweep_motion_planner.h
父类
继承自rpos::core::Feature类
构造器
SweepMotionPlanner(boost::shared_ptr<detail::SweepMotionPlannerImpl>)
该构造器仅限SDK内部使用。
SweepMotionPlanner(const SweepMotionPlanner&)
拷贝构造函数。
运算符
SweepMotionPlanner& operator=(const SweepMotionPlanner&)
赋值运算符。
方法
rpos::actions::SweepMoveAction startSweep()
让机器人进行清扫。(此接口仅适用于扫地机版本)
rpos::actions::SweepMoveAction sweepSpot(const rpos::core::Location& location)
让机器人定点打扫。(此接口仅适用于扫地机版本)
rpos::actions::MoveAction goHome()
让机器人回家充电。
rpos::features::system_resource::DeviceInfo类
获取设备信息。设备信息包括设备ID,制造商,型号,硬件版本,软件版本。
头文件
rpos/features/device_info.h
构造器
DeviceInfo()
构造函数。
DeviceInfo(const DeviceInfo&)
构造一个特定设备信息的函数。
运算符
DeviceInfo& operator=(const DeviceInfo&)
赋值运算符。
方法
std::string deviceID() const、std::string& deviceID();
deviceID属性。
int manufacturerID() const、int& manufacturerID();
manufacturerID属性。
std::string manufacturerName() const、std::string& manufacturerName();
manufacturerName属性。
int modelID() const、int& modelID();
modelID属性。
std::string modelName() const、std::string& modelName();
modelName属性。
std::string hardwareVersion() const、std::string& hardwareVersion();
硬件版本属性。
std::string softwareVersion() const、std::string& softwareVersion();
软件版本属性。
rpos::features::SystemResource类
系统资源功能特征类。该类提供了对原始激光扫描数据、电源管理系统等相关资源的访问API。
头文件
rpos/features/system_resource.h
父类
继承自rpos::core::Feature类
构造器
SystemResource(boost::shared_ptr<detail::SystemResourceImpl>)构造器
该构造器仅限SDK内部使用。
SystemResource(const SystemResource&)构造器
拷贝构造函数。
运算符
SystemResource& operator=(const SystemResource&)运算符
赋值运算符。
方法
int getBatteryPercentage()
获得电池电量,返回值的单位是百分比。比如电池剩余为56%,则该返回值为56。
bool getBatteryIsCharging()
电池是否处于充电状态。
bool getDCIsConnected()
外部电源是否连接。
int getBoardTemperature()
系统温度。
std::string getSDPVersion()
底盘的版本号。
rpos::features::system_resource::LaserScan getLaserScan()
获取原始激光扫描数据。
features::system_resource::HeartBeatToken startHeartBeat(int heartBeatTimeoutInSeconds);
启用心跳功能。启用后,客户应用程序将会有规律地向Slamware Core发送数据以表示连接正常。如在设定的时间内未收到返回数据token,系统将判定Slamware core和客户应用程序断开连接,从而取消正在执行的操作。该功能使客户应用程序崩溃后再重新启动时的状态及行为更具可控性。
参数
参数名称 | 类型 | 说明 |
---|---|---|
heartBeatTimeoutInSeconds | int | 心跳超时时间,单位为秒。即超过该设定时间后将判定为超时。 |
void refreshHeartBeat(features::system_resource::HeartBeatToken token);
刷新心跳。同一时刻仅一个token起作用。如果第二次调用startHeartBeat,之前的token以及timeout将失效,系统将采用新的token和timeout时间。
参数名称 | 类型 | 说明 |
---|---|---|
token | features::system_resource::HeartBeatToken | 信令,每次启用心跳功能后返回数据为与该次启动操作唯一对应的信令。 该信令同步传到refreshHeartBeat和stopHeartBeat,以防止后续操作时误调用。 |
void stopHeartBeat(features::system_resource::HeartBeatToken token);
停止心跳功能。
rpos::features::location_provider::Map类
地图基类,泛指定位功能获得的地图。
头文件
rpos/features/location_provider.h
构造器
Map(boost::shared_ptr<detail::MapImpl>)构造器
该构造器仅限SDK内部使用。
Map(const Map&)构造器
拷贝构造函数。
运算符
Map& operator=(const Map&)运算符
赋值运算符。
方法
rpos::core::RectangleF getMapArea()
获得这张地图所包含的区域。
rpos::core::Vector2f getMapPosition()
获得这张地图左上角的坐标。
rpos::core::Vector2i getMapDimension()
获得地图的尺寸(两个维度的像素个数)
rpos::core::Vector2f getMapResolution()
获得地图的分辨率(在各个维度上,每个像素代表多少米)
rpos::system::types::timestamp_t getMapTimestamp()
获得地图生成的时间。
void setMapData(float, float, int, int, float, const std::vector<_u8>&, rpos::system::types::_u64)
设置地图数据。
std::vector<_u8>& getMapData()
获得地图数据。
template<class MapT> MapT cast()
将地图转换成特定类型的子类对象。
rpos::features::location_provider::MapType枚举
MapType枚举表示地图的类型。
头文件
rpos/features/location_provider.h
枚举项
MapTypeBitmap8Bit
每像素8位的位图。
rpos::features::location_provider::BitmapMap类
位图地图。
头文件
rpos/features/location_provider.h
父类
继承自rpos::features::location_provider::Map类
构造器
BitmapMap(boost::shared_ptr<detail::BitmapMapImpl>)构造器
该构造器仅限SDK内部使用。
BitmapMap(const BitmapMap&)构造器
拷贝构造函数。
运算符
BitmapMap& operator=(const BitmapMap&)运算符
赋值运算符。
方法
继承自rpos::features::location_provider::Map类的方法
BitmapMapPixelFormat getMapFormat()
获得地图的像素格式。
rpos::features::location_provider::BitmapMapPixelFormat枚举
BitmapMapPixelFormat枚举表示位图地图的像素格式。
头文件
rpos/features/location_provider.h
枚举项
BitmapMapPixelFormat8Bit
位图中的每个像素占用1个字节。
rpos::features::motion_planner::Path类
Path对象是一系列Location对象的集合,代表一条路径。
头文件
rpos/features/motion_planner.h
构造器
Path(const std::vector<rpos::core::Location>&)构造器
创建一个由一系列点组成的路径。
Path(const Path&)构造器
拷贝构造函数。
运算符
Path& operator=(const Path&)运算符
赋值运算符。
方法
std::vector<rpos::core::Location>& getPoints()
获得路径中的所有点。
rpos::features::system_resource::LaserScan类
LaserScan对象是一系列LaserPoint对象的集合,代表一次激光扫描的数据。
头文件
rpos/features/system_resource.h
构造器
LaserScan(const std::vector<rpos::core::LaserPoint>&)构造器
创建一个由一系列激光扫描点组成的扫描数据。
LaserScan(const LaserScan&)构造器
拷贝构造函数。
运算符
LaserScan& operator=(const LaserScan&)运算符
赋值运算符。
方法
std::vector<rpos::core::LaserPoint>& getLaserPoints()
获取激光扫描数据。
rpos::robot_platforms::objects::CompositeMapReader类
头文件
compositeMapReader.h
rpos::robot_platforms::SlamwareCorePlatform类
SlamwareCorePlatform对象代表一个基于Slamware的机器人,用以获取设备的状态、控制设备的行为。
头文件
rpos/robot_platforms/slamware_core_platform.h
构造器
方法
boost::shared_ptr<CompositeMap> loadFile(const std::string& rcFilePath);
读取地图文件,参数为文件路径名。在成功读取地图后会返回一个CompositeMap对象的指针,否则抛出 CompositeMapException 类型的异常。
boost::shared_ptr<CompositeMap> loadFile(const std::wstring& rcFilePath);
读取地图文件,参数为宽字符文件路径名。在成功读取地图后会返回一个CompositeMap对象的指针,否则抛出 CompositeMapException 类型的异常。
boost::shared_ptr<CompositeMap> loadFile(std::string& rErrMsg, const std::string& rcFilePath);
读取地图文件,参数为文件路径名。在成功读取地图后会返回一个CompositeMap对象的指针,并且rErrMsg为空,否则会返回空指针,rErrMsg为错误的描述。
boost::shared_ptr<CompositeMap> loadFile(std::string& rErrMsg, const std::wstring& rcFilePath);
读取地图文件,参数为宽字符文件路径名。成功读取地图后会返回一个CompositeMap对象的指针,并且rErrMsg为空,否则会返回空指针,rErrMsg为错误的描述。
rpos::robot_platforms::objects::CompositeMap getCompositeMap()
获取当前地图的所有信息。
void saveFile(const std::string& rcFilePath, const CompositeMap& rcCmpstMap);
保存地图文件,参数为文件路径名。设置CompositeMap以及保存文件的路径名,成功保存文件后,函数正常退出,否则抛出 CompositeMapException 类型的异常。
void saveFile(const std::wstring& rcFilePath, const CompositeMap& rcCmpstMap);
保存地图文件,参数为宽字符文件路径名。设置CompositeMap以及保存文件的路径名,成功保存文件后,函数正常退出,否则抛出 CompositeMapException 类型的异常。
bool saveFile(std::string& rErrMsg, const std::string& rcFilePath, const CompositeMap& rcCmpstMap);
保存地图文件,参数为文件路径名。设置CompositeMap以及保存文件的路径名,成功保存文件后,函数返回true,否则返回false,rErrMsg为错误的描述。
bool saveFile(std::string& rErrMsg, const std::wstring& rcFilePath, const CompositeMap& rcCmpstMap);
保存地图文件,参数为宽字符文件路径名。设置CompositeMap以及保存文件的路径名,成功保存文件后,函数返回true,否则返回false,rErrMsg为错误的描述。
父类
继承自rpos::core::RobotPlatform类
构造器
SlamwareCorePlatform(boost::shared_ptr<detail::SlamwareCorePlatformImpl>)构造器
该构造器仅限SDK内部使用。
SlamwareCorePlatform(const SlamwareCorePlatform&)构造器
拷贝构造函数。
运算符
SlamwareCorePlatform& operator=(const SlamwareCorePlatform&)运算符
赋值运算符。
静态方法
SlamwareCorePlatform connect(const std::string&, int, int)
连接到指定的Slamware设备。
参数
名称 | 类型 | 说明 |
---|---|---|
host | const std::string& | Slamware Core的IP地址 |
port | int | Slamware Core的端口(通常为1445) |
timeout_in_ms | int | 连接超时时间,单位为毫秒 |
方法
void disconnect()
断开与CORE之间的连接。
std::vector<rpos::core::Line> getWalls()
获取系统中所有的虚拟墙。
bool addWall(const rpos::core::Line&)
添加虚拟墙。
bool addWalls(const std::vector<rpos::core::Line>&)
添加多个虚拟墙。
bool clearWallById(const rpos::core::SegmentID&)
清除指定的虚拟墙。
bool clearWalls()
清除所有的虚拟墙。
std::vector<rpos::features::location_provider::MapType> getAvailableMaps()
获得该Slamware CORE提供的所有地图类型。
rpos::features::location_provider::Map getMap(rpos::features::location_provider::MapType, rpos::core::RectangleF, rpos::features::location_provider::MapKind)
获得该Slamware CORE提供的指定地图类型指定区域的地图数据。
参数
名称 | 类型 | 说明 |
---|---|---|
type | rpos::features::location_provider::MapType | 地图的数据类型 |
area | core::RectangleF | 地图的区域 |
kind | rpos::features::location_provider::MapKind | 地图类型 |
示例
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
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); |
注: 扫地机版本mapkind可以使用SWEEPERMAP
bool setMap(const rpos::features::location_provider::Map&, rpos::features::location_provider::MapType, rpos::features::location_provider::MapKind, bool partially)
上载指定地图类型指定区域的地图数据到该Slamware CORE。
参数
名称 | 类型 | 说明 |
---|---|---|
map | rpos::features::location_provider::Map | 地图 |
type | rpos::features::location_provider::MapType | 地图数据类型 |
kind | rpos::features::location_provider::MapKind | 地图类型 |
partially | bool | 是否部分更新地图 |
示例
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
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); |
bool setMap( const core::Pose& pose, const rpos::features::location_provider::Map&, rpos::features::location_provider::MapType, rpos::features::location_provider::MapKind, bool partially)
上载指定地图类型指定区域的地图数据到该Slamware CORE。
参数
名称 | 类型 | 说明 |
---|---|---|
pose | core::Pose | 机器人的pose信息 |
map | rpos::features::location_provider::Map | 地图 |
type | rpos::features::location_provider::MapType | 地图数据类型 |
kind | rpos::features::location_provider::MapKind | 地图类型 |
partially | bool | 是否部分更新地图 |
示例
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
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.setMap(pose, map, mapType, mapKind); |
rpos::core::RectangleF getKnownArea(rpos::features::location_provider::MapType, rpos::features::location_provider::MapKind)
获得指定地图类型的地图中,已经完成建图的区域。
示例
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
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); |
bool clearMap()
清除地图数据。
bool clearMap(rpos::features::location_provider::MapKind kind)
清除指定地图类型的地图数据。
rpos::core::Location getLocation()
获得机器人在上述地图坐标系统中的坐标。
rpos::core::Pose getPose()
获得机器人在上述地图坐标系统中的姿态。
bool setPose(const core::Pose&)
获得机器人在上述地图坐标系统中的姿态。
bool getMapLocalization()
获取地图定位。
bool setMapLocalization(bool)
设定是否启用定位功能。
bool getMapUpdate()
获得是否启用地图更新功能。
bool setMapUpdate(bool)
设定是否启用地图更新功能。
int getLocalizationQuality()
获取雷达定位点的可信度(返回一个0到100的数值,数值越高 当前雷达点的定位越可信,建议取50以上的定位点)
rpos::actions::MoveAction moveTo(const std::vector< rpos::core::Location>&, bool, bool)
让机器人沿着路径移动(机器人会逐一走过路径中的节点,在节点之间尽量走圆滑的曲线,如果遇到障碍物,机器人会自动避开)。
参数详细参考 rpos::action::MoveAction MoveTo(const std::vector<rpos::core::Location>&, bool, bool)
rpos::actions::MoveAction moveTo(const rpos::core::Location&, bool, bool)
让机器人移动到目标位置。
参数详细参考 rpos::action::MoveAction MoveTo(const rpos::core::Location&, bool, bool)
rpos::actions::MoveAction moveTo(const std::vector< rpos::core::Location>&, rpos::robot::option::MoveOption&, float yaw)
让机器人沿着路径移动(机器人会逐一走过路径中的节点,并根据MoveAction参数的变量决定机器人行走的方式和移动过朝向)。
参数
名称 | 类型 | 说明 |
---|---|---|
locations | const std::vector<rpos::core::Location>& | 期望机器人经过的点 |
moveOption | rpos::robot::option::MoveOption | 如果机器人正在执行其他的移动动作,该参数决定新的点是追加或是替换既有节点 |
yaw | float | 表示设备的旋转角度,默认为。 |
moveOption详细可参考rpos::robot::option::MoveOption
示例
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
std::vector<rpos::core::Location> locations; rpos::core::Location location(1,1); locations.push rpos::robot::option::MoveAction moveOption; moveOption.appending = false; moveOption.isMilestone = true; rpos::core::Pose pose(Rotation(2)); rpos::robot::heading::RobotHeading robotHeading(rpos::robot::heading::HeadingMode::HeadingModeFixAngle, pose); moveOption.robotHeading = robotHeading; rpos::actions::MoveAction moveInfo = robotPlatform.moveTo(locations, moveOption); |
rpos::actions::MoveAction moveTo(const rpos::core::Location&, rpos::robot::option::MoveOption&, float yaw)
让机器人沿着路径移动(机器人会逐一走过路径中的节点,并根据MoveAction参数的变量决定机器人行走的方式和移动过朝向)。
详细参考 rpos::actions::MoveAction moveTo(const std::vector<rpos::core::Location>&,rpos::robot::option::MoveAction&)
rpos::actions::MoveAction moveBy(const rpos::core::Direction&)
控制机器人的运行方向
参数
名称 | 类型 | 说明 |
---|---|---|
direction | const rpos::core::Direction& | 机器人运行的方向 |
示例
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
rpos::core::ACTION_DIRECTION actionDirection = rpos::core::ACTION_DIRECTION::FORWARD; rpos::core::Direction direction(actionDirection); rpos::actions::MoveAction moveBy = platform.moveBy(direction); |
注:direction参数rpos::core::ACTION_DIRECTION取值说明如下
值 | 说明 |
---|---|
FORWARD | 向前 |
BACKWARD | 向后 |
TURNRIGHT | 向右 |
TURNLEFT | 向左 |
actions::MoveAction moveBy(const core::Direction& direction, const features::motion_planner::MoveOptions&);
根据指定的移动方式控制机器人向指定的方向移动。MoveOptions设置暂时不支持。
struct RPOS_CORE_API MoveOptions
{
MoveOptions();
MoveOptionFlag flag;
boost::optional<double> speed_ratio;
};
enum MoveOptionFlag
MoveOptionFlagNone = 0,
MoveOptionFlagAppending = 1,//增加点
MoveOptionFlagMilestone = 2,//路径搜索
MoveOptionFlagNoSmooth = 4,
MoveOptionFlagKeyPoints = 8,//沿着虚拟轨道移动。
MoveOptionFlagPrecise = 16,// 精确到目标点,10cm。
MoveOptionFlagWithYaw = 32
以指定的角度移动。
actions::MoveAction moveBy(const float theta, const features::motion_planner::MoveOptions&);
根据theta角和MoveOptions中的speed_ratio控制机器人移动,实现设备以规定角度和速度移动,持续200ms。
rpos::actions::MoveAction rotateTo(const rpos::core::Rotation&)
使机器人水平转动到特定的角度。
actions::MoveAction rotateTo(const core::Rotation& orientation, const features::motion_planner::MoveOptions& options);
根据指定的移动方式控制机器人旋转到特定的角度。MoveOptions设置暂时不支持。
rpos::actions::MoveAction rotate(const rpos::core::Rotation&)
使机器人水平转动一定的角度。
actions::MoveAction rotate(const core::Rotation& rotation, const features::motion_planner::MoveOptions& options);
根据指定的移动方式控制机器人旋转到一定的角度。MoveOptions设置暂时不支持。
rpos::actions::MoveAction getCurrentAction()
获得机器人当前正在进行的移动动作。
您可以使用rpos::core::Action::isEmpty()方法判断它是否存在。当机器人当前没有正在进行的动作时,它rpos::core::Action::isEmpty()将会返回true。
rpos::features::motion_planner::Path searchPath(const rpos::core::Location& location)
使用机器人内置的寻路算法寻找前往指定目的地的路径。
rpos::actions::SweepMoveAction startSweep()
命令机器人开始打扫。(此接口仅适用于扫地机版本)
rpos::actions::SweepMoveAction sweepSpot(const rpos::core::Location& location)
在机器人处于扫地状态下,可以命令机器人定点清扫。(此接口仅适用于扫地机版本)
rpos::actions::MoveAction goHome()
在机器人处于扫地状态下,可命令机器人返回充电位置。(此接口仅适用于扫地机版本)
int getBatteryPercentage()
获得机器人电池剩余电量(0表示完全没电,100表示电量全满)。
bool getBatteryIsCharging()
获得机器人是否正在充电。
bool getDCIsConnected()
获得直流电源是否插上。
int getBoardTemperature()
获得机器人核心温度。单位是0.1℃,比如该函数的返回结果为452,则表示机器人的核心温度为45.2℃。
std::string getSDPVersion()
获得机器人底盘的版本号。
std::string getSDKVersion()
获得SDK的版本号。
rpos::features::system_resource::LaserScan getLaserScan()
获得上一次激光扫描的原始数据。
bool restartModule(rpos::features::system_resource::RestartMode mode = rpos::features::system_resource::RestartModeSoft)
根据指定的重启模式(默认软复位)执行重启操作。
重启模式:
RestartModeSoft(软复位),重启SDK,速度较快。建议使用。
RestartModeHard(硬复位),速度较慢,需要几分钟时间。不建议经常使用。
bool setSystemParameter(const std::string& param, const std::string& value)
调整系统参数
参数
名称 | 类型 | 说明 |
---|---|---|
param | const std::string& | 调整的参数名 |
value | Const std::string & | 调整的参数值 |
注:目前只支持调整系统速度的设置
param只能取值为SYSPARAM_ROBOT_SPEED
value对应可取如下三种
1.SYSVAL_ROBOT_SPEED_HIGH (高)
2.SYSVAL_ROBOT_SPEED_MEDIUM (中)
3.SYSVAL_ROBOT_SPEED_LOW (低)
示例
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Bool bRet = platform.setSystemParameter(SYSPARAM_ROBOT_SPEED, SYSVAL_ROBOT_SPEED_HIGH); |
std::string getSystemParameter(const std::string& param)
获取系统参数
参数
名称 | 类型 | 说明 |
---|---|---|
param | const std::string& | 要获取的系统参数名 |
注:目前只支持调整系统速度的设置
param只能取值为SYSPARAM_ROBOT_SPEED
示例
std::string robotSpeed = platform.getSystemParameter(SYSPARAM_ROBOT_SPEED); |
rpos::features::system_resource::DeviceInfo getDeviceInfo()
获取设备信息。设备信息包括设备ID,制造商ID,制造商名称,型号ID,型号名称,硬件版本,软件版本。
具体返回值信息请参考:rpos::features::system_resource::DeviceInfo类
rpos::features::system_resource::BaseHealthInfo getRobotHealth()
获取机器人当前的状态信息
void clearRobotHealth(int errorCode)
清除机器人当前出错的状态信息
bool configureNetwork(rpos::features::system_resource::NetworkMode mode, const std::map<std::string, std::string>& options)
配置机器人的网络信息
参数
网络状况 | ssid | password | channel |
---|---|---|---|
NetworkModeAp | 可选 | 可选 | 可选 |
NetworkModeStation | 必选 | 可选 | -- |
NetworkModeWifiDisabled | -- | -- | -- |
注:目前暂只支持以上三中mode形式,ssid,password,channel三个选项的信息如上表(--表示不可用)
示例
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
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()
获取机器人当前的网络信息。
注:目前返回的结果只包含mode,ssid和ip三个选项的值
bool getSensors(std::vector<ImpactSensorInfo>& sensors)
用于获取机器人上已安装的所有碰撞传感器,返回值为ImpactSensorInfo列表。
ImpactSensorInfo数据结构如下:
No Format |
---|
struct ImpactSensorInfo { impact_sensor_id_t id; rpos::core::Pose pose; ImpactSensorType type; float refreshFreq; }; |
字段说明:
字段名称 | 单位 | 说明 |
---|---|---|
Id |
| Id字段为后续API中会用到的数值。 |
Pose |
| Pose字段表示传感器的安装姿态,即传感器相对于机器人中间的位置和方向。 |
Type |
| 如果机器人正在执行其他的移动动作,该参数表示传感器类型,为ImpactSensorTypeDigital 或ImpactSensorTypeAnalog中的一种。 前者表示普通的碰撞传感器,只有发生碰撞和不发生碰撞两种状态。 后者表示距离传感器,如超声波测距传感器,红外测距传感器等。 |
refreshFreq | Hz | 表示传感器刷新频率,Hz表示每秒刷新次数。 |
bool getSensorValues(std::map<impact_sensor_id_t, ImpactSensorValue>& values)
用于获取当前碰撞传感器状态,返回值为map,key字段为上述API中获得的id,value字段是ImpactSensorValue类型,数据结构如下:
No Format |
---|
struct ImpactSensorValue { impact_sensor_timestamp_t time; float value; }; |
字段说明:
字段名称 | 类型 | 单位 | 说明 |
---|---|---|---|
Time | Long | 微秒 | 表示获得该数据的时间。 |
Value | Float | 米 | 表示该碰撞传感器检测到的与障碍物之间的距离。 若传感器为数字传感器,则0~FLT_EPSILON表示发生了碰撞,FLT_MAX表示没有发生碰撞(建议用“<FLT_EPSILON”来判断); 若传感器为模拟传感器,则value表示传感器和障碍物之间的距离,FLT_MAX表示没有检测到障碍物。 (建议用“<1000”来判断,1000为场景中最长轴长度的两倍) |
bool getSensorValues(const std::vector<features::impact_sensor::impact_sensor_id_t>& sensorIds, std::vector<features::impact_sensor::ImpactSensorValue>& values)
获取指定传感器的数据。返回值为ImpactSensorValue数组。
bool getSensorValue(features::impact_sensor::impact_sensor_id_t sensorId, features::impact_sensor::ImpactSensorValue& value)
获取指定传感器的数据。返回值为ImpactSensorValue。
void setCompositeMap(const rpos::robot_platforms::objects::CompositeMap& , const core::Pose& )
设置当前的地图信息。
Composite map由两个MapLayer组成,GridMapLayer和LineMapLayer
MapLayer 名称 | 描述 |
---|---|
GridMapLayer | 表示网格地图,存放信息包括explorer map和sweep map |
LineMapLayer | 表示线地图,存放信息为虚拟墙 |
示例
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
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); |
metadata.setUsage()函数取值如下:
值 | 说明 |
---|---|
explore | 表示设置为探索地图 |
sweep | 表示设置为清扫地图 |
virtual_walls | 表示设置为虚拟墙 |
注:如果设置的有地图信息可以先设置区域信息,函数如下:
features::system_resource::HeartBeatToken startHeartBeat(int heartBeatTimeoutInSeconds);
启用心跳功能。启用后,客户应用程序将会有规律地向Slamware Core发送数据以表示连接正常。如在设定的时间内未收到返回数据token,系统将判定Slamware core和客户应用程序断开连接,从而取消正在执行的操作。该功能使客户应用程序崩溃后再重新启动时的状态及行为更具可控性。
参数
参数名称 | 类型 | 说明 |
---|---|---|
heartBeatTimeoutInSeconds | int | 心跳超时时间,单位为秒。即超过该设定时间后将判定为超时。 |
void refreshHeartBeat(features::system_resource::HeartBeatToken token);
刷新心跳。同一时刻仅一个token起作用。如果第二次调用startHeartBeat,之前的token以及timeout将失效,系统将采用新的token和timeout时间。
参数名称 | 类型 | 说明 |
---|---|---|
token | features::system_resource::HeartBeatToken | 信令,每次启用心跳功能后返回数据为与该次启动操作唯一对应的信令。 该信令同步传到refreshHeartBeat和stopHeartBeat,以防止后续操作时误调用。 |
void stopHeartBeat(features::system_resource::HeartBeatToken token);
停止心跳功能。
features::system_resource::PowerStatus getPowerStatus();
获取电源相关的信息。
成员:/**
* The dc cord is connected
*/
bool isDCConnected;
/**
直流电源连接
* The robot is on dock
*/
DockingStatus dockingStatus;
/**
Docking状态
* The robot is charging
*/
bool isCharging;
设备是否处于充电状态
/**
* Battery level (0 ~ 100)
*/
int batteryPercentage;/**
* Robot sleep mode
*/
电池电量(从0~100)
SleepMode sleepMode;
/**
* Sleep mode of device
*/
enum SleepMode {
/**
* The targeting core firmware doens't support this command
*/
SleepModeUnknown,
/**
* The device is awake, it will response to commands immediately
*/
SleepModeAwake,
设备休眠模式
enum SleepMode
设备的休眠模式
SleepModeUnknown,
目标Slamware固件不支持该命令
SleepModeAwake
设备处于已唤醒状态,可以立刻响应命令
/**
* The device is waking up, please wait for some time
*/
SleepModeWakingUp,/**
* The device is asleep, it might take some time to wake device up
*/
设备处于正在被唤醒中的状态,需要少许时间响应命令
SleepModeAsleep };
/**
* Docking status of the robot
*/
enum DockingStatus {
/**
* The docking status is unknown (doens't supported by the targeting Slamware firmware)
*/
DockingStatusUnknown,
/**
* The robot is on the dock
*/
DockingStatusOnDock,
设备处于已休眠状态,需要稍长时间响应命令
enum DockingStatus
枚举,机器人的Docking状态
DockingStatusUnknown
Docking状态未知(目标Slamware固件不支持)
DockingStatusOnDock,
设备在充电座上
DockingStatusNotOnDock
设备不在充电座上/**
* The robot is not on the dock
*/
DockingStatusNotOnDock
};
void wakeUp();
从休眠状态唤醒设备。
getSweepTimeMs(扫地机专用接口)
int getSweepTimeMs();
当前设备处于清扫状态时,获取从开始清扫时刻到此时刻的清扫时间。当前设备不处于清扫状态时,获取上一次清扫动作的清扫时间。
float getSweepArea();(扫地机专用接口)
...
UpdateFirmwareStep currentStep; // Range from 0 to {totalSteps - 1}.
unsigned int totalSteps; // The number of total steps.
std::string currentStepName; // The name of the current step.
unsigned int currentStepProgress; // Expressed as a percentage.
UpdateProgressStatus status; // Current status
enum UpdateFirmwareStep
{UpdateFirmwarePreparing UpdateFirmwarePreparing
固件更新准备,
UpdateFirmwarePrepareFinished,
固件更新准备完成
UpdateFirmwareDownloading
固件下载,
UpdateFirmwareDownloadFinished,
固件下载完成
UpdateFirmwareUpdating,
固件更新中
UpdateFirmwareUpdateFinished };
固件更新完成
enum UpdateProgressStatus
枚举,固件更新进程的状态 {
UpdateProgressSuccess,
固件更新成功
UpdateProgressError
固件更新报错,
UpdateProgressInit,
固件更新初始化
UpdateProgressUpgrade
}固件更新升级