Excerpt |
---|
本页提供了基于Windows平台开发SLAMWARE SDK的API参考。 |
...
本页内容
Table of Contents | ||||||
---|---|---|---|---|---|---|
|
...
Note | ||||
---|---|---|---|---|
| ||||
基于Slamware 基于Windows操作系统对Slamware SDK进行应用开发,您的开发环境需满足如下条件:
|
SDK内容
目录结构
Slamware SDK包含了大量您开发过程中可能会用到的资源、代码、和项目文件,其目录结构组织如下:
目录 | 说明 |
---|---|
bin | 预编译的工具 |
dll | 动态链接库文件 |
docs | 参考文档 |
include | SDK相关的头文件 |
lib | 预编译的库文件 |
samples | 样例程序 |
workspaces | 项目文件 |
头文件结构
在include目录下,我们包含了Slamware SDK以及它所依赖的所有库的头文件:
目录 | 说明 |
---|---|
boost | Boost 1.53.0 |
Eigen | Eigen矩阵库 |
json | JsonCpp库的头文件 |
rpos | Slamware SDK相关的头文件 |
创建项目工程
新建工程
步骤1 打开Visual Studio 2010并新建项目
- 选择Visual C++项目,并选择Win32 Console Application(Win32控制台应用程序)项目类型
- 在Name(名称)中输入项目名称
- 点击OK(确定)
步骤2 设定应用程序选项
点击Next(下一步)
- Application Type(应用程序类型)选择Console Application(命令行应用程序)
- Additional options(附加选项)勾选Empty Project(空项目)
- 点击Finish完成项目创建
配置编译选项
步骤1 打开项目属性面板
在Solution Explorer(解决方案)中右键单击您刚刚创建的项目,并单击Properties(属性)菜单,打开属性面板:
步骤2 配置VC++目录
在左侧列表中,选择VC++ Directories(VC++目录)
- 选中右侧的Include Directories(包含目录),并点击下拉按钮
- 选择<Edit…>(<编辑…>)
- 将第一章节中提到的SDK中的include目录加入到列表中
- 选中右侧的Library Directories(库目录),并点击下拉按钮
- 选择<Edit…>(<编辑…>)
- 将第一种中提到的SDK中的lib目录加入到列表中
完成后,您的项目属性页应当与下图相似:
点击OK(确定)完成配置。
Hello World
步骤1 创建源文件
在Solution Explorer中您的项目下的Source Files目录上,右键单机,并在菜单中选择Add(添加)->New Item(新项目)
选择C++ File (.cpp),并将文件命名成main.cpp
步骤2 添加代码
在弹出的编辑器中输入如下代码:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
#include <rpos/robot_platforms/slamware_core_platform.h> #include <iostream> using namespace std; using namespace rpos::robot_platforms; int main(int argc, char* argv[]) { SlamwareCorePlatform platform = SlamwareCorePlatform::connect("192.168.11111.1", 1445); cout << "Base version: " << platform.getSDPVersion() << endl; return 0; } |
步骤3 编译运行
在Visual Studio的主菜单中,单击Debug(调试)->Start Debugging(开始调试)即可编译运行您的程序。
API参考
概览
对象 | 说明 |
---|---|
rpos::core::Location类 | 位置 |
rpos::core::Rotation类 | 旋转姿态 |
rpos::core::Pose类 | 姿态 |
rpos::core::Action类 | 动作 |
rpos::core::ActionStatus枚举 | 动作执行状态 |
rpos::core::Feature类 | 特征类 |
rpos::core::RectangleF类 | 矩形(float型) |
rpos::core::Vector2f类 | 二维向量(float型) |
rpos::core::Vector2i类 | 二维向量(int型) |
rpos::core::LaserPoint类 | 激光雷达扫描点 |
rpos::core::RobotPlatform类 | 机器人平台基类 |
rpos:: |
actions:: |
MoveAction类 | 移动动作 |
rpos:: |
feature:: |
motion_planner:: |
MoveOptionFlag枚举 |
机器人的移动方式 |
rpos:: |
feature:: |
motion_planner:: |
存储机器人运行时的设置。
MoveOptions类 | 机器人的移动特征 |
rpos::actions::MoveAction类
rpos::features::ArtifactProvider类 | 器物功能特征,包括了虚拟墙功能。 |
rpos::features::LocationProvider类 | 定位功能特征。 |
rpos::features::MotionPlanner类 | 路径规划功能特征。 |
rpos::features::SweepMotionPlanner类 | 清扫路径规划功能特征类。 |
rpos::features::SystemResource类 | 系统资源功能特征类。 |
rpos::features::location_provider::Map类 | 地图基类。 |
rpos::features::location_provider::MapType枚举 | MapType枚举表示地图的类型。 |
rpos::features::location_provider::BitmapMap类 | 位图地图。 |
rpos::features::location_provider::BitmapMapPixelFormat枚举 | BitmapMapPixelFormat枚举表示位图地图的像素格式。 |
rpos::features::motion_planner::Path类 | 代表一条路径。 |
rpos::features::system_resource::LaserScan类 | 代表一次激光扫描数据。 |
rpos::robot_platforms::SlamwareCorePlatform类 | Slamware CORE对象 |
rpos::core::Location类
Location类用于表示三维空间中的一个坐标,由x,y,z三个成员组成,遵循右手坐标系
头文件
rpos/core/pose.h
构造器
Location()
创建一个Location对象,并自动将x、y、z都设为0
Location(double x, double y, double z)
创建一个Location对象,将x、y、z设定为相应的值
Location(const Location&)
拷贝构造函数
运算符
Location& operator=(const Location&)
赋值运算符
方法
double x() const、double& x()
x属性
示例
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Location location; std::cout<<location.x()<<std::endl; // output 0 location.x() = 10; std::cout<<location.x()<<std::endl; // output 10 |
double y() const、double& y()
y属性,用法请参见x属性
double z() const、double& z()
z属性,用法请参见x属性
rpos::core::Rotation类
表示物体在三维坐标系中的旋转姿态。Rotation使用弧度作为角度单位
头文件
rpos/core/pose.h
构造器
Rotation()
创建一个Rotation对象,并将yaw,pitch,roll都设定为0
Rotation(double yaw, double pitch, double roll)
创建一个Rotation对象,并将yaw,pitch,roll都设定为相应值
Rotation(const Rotation&)
拷贝构造函数
运算符
Rotation& operator=(const Rotation&)
赋值运算符
方法
double yaw() const、double& yaw()
摇摆角(单位:弧度),遵循Tait-Bryan angles规则,请参见维基百科相关定义。用法请参见Location::x()的示例
double pitch() const、double& pitch()
俯仰角
double roll() const, double& roll()
翻滚角
rpos::core::Pose类
Pose包含了Location和Rotation数据,即对象在三维空间中的完整姿态
头文件
pos/core/pose.h
构造器
Pose()
构造一个x、y、z、yaw、pitch、roll都为0的Pose对象
Pose(const Location&, const Rotation&)
构造一个location和rotation为对应值的Pose对象
Pose(const Location&)
构造一个location为对应值,yaw、pitch、roll皆为0的Pose对象
Pose(const Rotation&)
构造一个rotation为对应值,x、y、z皆为0的Pose对象
Pose(const Pose&)
拷贝构造函数
运算符
Pose& operator=(const Pose&)
赋值运算符
方法
const Location& location() const、Location& location()
位置,详见Location类
const Rotation& rotation() const、Rotation& rotation()
旋转,详见Rotation类
double x() const、double& x()
x属性
示例
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
Location location;
std::cout<<location.x()<<std::endl; // output 0
location.x() = 10;
std::cout<<location.x()<<std::endl; // output 10 |
double y() const、double& y()
y属性,用法请参见x属性
double z() const、double& z()
z属性,用法请参见x属性
double yaw() const、double& yaw()
摇摆角(单位:弧度),遵循Tait-Bryan angles规则,请参见维基百科相关定义
用法请参见Location::x()的示例
double pitch() const、double& pitch()
俯仰角
double roll() const, double& roll()
翻滚角
rpos::core::Action类
rpos/core/action.h
构造器
Action(const Action&)
拷贝构造函数
运算符
Action& operator=(const Action&)
赋值运算符
方法
ActionStatus getStatus()
获得当前动作状态,返回值详见ActionStatus枚举
...
std::string Action::getReason()
取消当前动作
...
在Action::getStatus()返回状态为 ActionStatusError的情况下,可以调用getReason查询具体失败原因,该接口返回一个字符串。
等待动作完成或出错,返回值为动作结束时的动作状态,详见ActionStatus枚举
template<class ActionT> ActionT cast()
对于所有action返回:
“failed” 表示action失败
“aborted” 表示action被打断(主动调用cancel或者在action没结束的情况下启动新的action)
对于moveTo接口返回的action:
“unreachable”表示目标点不可达(搜索路径失败)
对于moveTo接口加上MoveOptionFlagKeyPoints这个flag,也就是虚拟轨道的moveto:
“blocked[lidar;wall;contact;depth_camera;sonar]” 表示在虚拟轨道导航的时候前方有障碍物导致失败,”[]”内的为具体原因,用”;”分隔,可以有一个或者多个,表示发现障碍物的传感器种类。
lidar:激光雷达;wall:虚拟墙;contact:碰撞传感器;depth_camera:深度摄像头;sonar:超声波
void cancel()
取消当前动作
ActionStatus waitUntilDone()
等待动作完成或出错,返回值为动作结束时的动作状态,详见ActionStatus枚举
template<class ActionT> ActionT cast()
将rpos::core::Action的对象转换成子类的对象
示例
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
rpos::core::Action someAction = robotPlatform.startSomeAction();
rpos::actions::MoveAction moveAction = someAction.cast<rpos::actions::MoveAction>; |
rpos::core::ActionStatus枚举
ActionStatus枚举列举了动作的状态
头文件
rpos/core/action.h
枚举项
ActionStatusWaitingForStart
动作正在等待开始
ActionStatusRunning
动作正在进行
ActionStatusFinished
动作已经完成
ActionStatusPaused
动作已经暂停
ActionStatusStopped
动作已经停止(取消)
ActionStatusError
动作执行过程中出现错误
rpos::core::Feature类
...
Feature类表示一个特征,即一个特定的功能集合。
头文件
rpos/core/feature.h
构造器
Feature(const Feature&)
拷贝构造函数
运算符
Feature& operator=(const Feature&)
赋值运算符
rpos::core::RectangleF类
RectangleF类表示一个矩形,其坐标参数的类型为float
头文件
rpos/core/geometory.h
构造器
RectangleF()构造器
...
创建一个x、y、width、height都为0的矩形。
RectangleF(Vector2f position, Vector2f size)
创建一个位置和大小为指定值的矩形
RectangleF(float x, float y, float width, float height)
创建一个位置和大小为指定值的矩形
RectangleF(const RectangleF&)
拷贝构造函数
运算符
RectangleF& operator=(const RectangleF&)
赋值运算符
方法
const Vector2f& position()、Vector2f& position()
矩形的位置(左上角)
const Vector2f& size()、Vector2f& size()
矩形的大小
float x() const、float& x()
矩形左上角的x坐标
float y() const、float& y()
矩形左上角的y坐标
float width() const、float& width()
矩形的宽度
float height() const、float& height()
矩形的高度
float left() const
矩形左侧的x坐标
float right() const
矩形右侧的x坐标(right=x+width)
float top() const
矩形顶部的y坐标
float bottom() const
矩形底部的y坐标(bottom=y+height)
bool contains(const Vector2i& point)
判断点是否在矩形的范围内
bool empty()
判断矩形是否是全空的(即width() < epsilon或height()<epsilon)
bool contains(const RectangleF& dest)
判断目标矩形是否完全在本矩形的区域内
void unionOf(const RectangleF& dest)
计算本矩形和目标矩形重合的部分,并将本矩形设定为该重合部分矩形
rpos::core::
...
Vector2f类
二维向量,元素数据类型为float型
头文件
rpos/core/geometry.h
构造器
Vector2f()
...
构造一个新的向量,其x、y的值是不确定的
Vector2f(float x, float y)
...
构造一个x、y为指定的值的向量
Vector2f(const Vector2f&)
拷贝构造函数
运算符
Vector2f& operator=(const Vector2f&)
赋值运算符
方法
float x()
...
const、float& x()
...
二维向量的x分量
float y()
...
const、float& y()
...
二维向量的y分量
rpos::core::
...
Vector2i类
二维向量,元素数据类型为int型
...
头文件
rpos/core/geometry.h
构造器
Vector2i()
构造一个新的向量,其x、y的值是不确定的构造一个新的向量,其x、y的值是不确定的
Vector2i(float x, float y)
构造一个x、y为指定的值的向量构造一个x、y为指定的值的向量
Vector2i(const Vector2i&)
拷贝构造函数
运算符
Vector2i& operator=(const Vector2i&)
赋值运算符
方法
int x() const、int& x()
二维向量的x分量二维向量的x分量
int y() const、int& y()
二维向量的y分量二维向量的y分量
rpos::core::
LaserPoint类LaserPoint类
激光雷达测距的单点数据,包括了距离、角度、是否有效等信息
头文件
rpos/core/laser_point.h
构造器
LaserPoint()
创建一个新的LaserPoint对象创建一个新的LaserPoint对象
LaserPoint(float distance, float angle, bool valid)
创建一个距离、角度、有效性为指定值的LaserPoint对象创建一个距离、角度、有效性为指定值的LaserPoint对象
LaserPoint(const LaserPoint&)
拷贝构造函数
运算符
LaserPoint& operator=(const LaserPoint&)
赋值运算符
方法
float distance()
const、floatconst、float& distance()
距离数据(单位:米)
float angle()
const、floatconst、float& angle()
本次测量的角度(单位:弧度)
bool valid()
const、boolconst、bool& valid()
本次测量是否有效
rpos::core::
RobotPlatform类机器人平台是一系列设备组合而成的整体,提供一系列的特征从而提供功能。RobotPlatform类是所有机器人平台的基类。
RobotPlatform类
机器人平台是一系列设备组合而成的整体,提供一系列的特征从而提供功能。RobotPlatform类是所有机器人平台的基类。
头文件
rpos/core/robot_platform.h
构造器
RobotPlatform(const RobotPlatform&)
拷贝构造函数
运算符
RobotPlatform& operator=(const RobotPlatform&)
赋值运算符
方法
std::vector<Feature> getFeatures()
获得该机器人平台提供的所有特征
template<class RobotPlatformT> RobotPlatformT cast()
将RobotPlatform对象转换成子类对象,示例请参考rpos::core::Action::cast<>
rpos::
robotactions::
heading::HeadingMode枚举HeadingMode枚举表示机器人移动时头朝向的方式。MoveAction类
MoveAction类表示一个移动的动作,它包含了当前机器人规划的路径、检查点列表、移动的进程。
头文件
rpos/features/motion_planner/move_
headingaction.h
枚举项
HeadingModeAuto
机器人按照自己的方式随意行走
HeadingModeFixAngle
机器人行走时头与前进方向成固定角度
HeadingModeCircleMotion
机器人行走时头始终朝向某个物体或者某点
HeadingModeDirection
机器人行走时头始终朝向某个固定的方向
rpos::robot::heading::RobotHeading类
RobotHeading类表示机器人在行走的时候的头朝向某个物体或者方向的设置。
头文件
rpos/features/motion_planner/move_heading.h
构造器
RobotHeading()构造器
构造函数
RobotHeading(HeadingMode headingMode, rpos::core::Pose pose)构造器
运算符
RobotHeading父类
继承自rpos::core::Action类
构造器
MoveAction(boost::shared_ptr<rpos::actions::detail::MoveActionImpl>)
该构造器仅限SDK内部使用。
MoveAction(const MoveAction&)
拷贝构造函数
运算符
MoveAction& operator=(const
RobotHeadingMoveAction&)
运算符赋值运算符。赋值运算符
方法
constrpos::
corefeatures::
Pose& RobotHeadingmotion_planner::
posePath getRemainingPath()
const获取机器人行走时头朝向的角度或者物体的位置
头朝向与位置或者角度的对应关系如下:
朝向
值
HeadingModeAuto
Pose值不可用
HeadingModeFixAngle或者HeadingModeDirection
Pose的Rotation参数可用
HeadingModeCircleMotion
Pose的Location参数可用
获得已经规划好的,剩余的路径
rpos::features::motion_planner::Path getRemainingMilestones()
获得剩余的里程碑
const HeadingMode& RobotHeading::headingMode() const
获取机器人行走时头朝向设置
可以参考rpos::robot::heading::HeadingMode
rpos::
robotfeatures::
optionmotion_planner::
MoveOption结构体MoveOptionFlag枚举
机器人行走方式MoveOption结构体存储机器人运行时的设置。
枚举项
头文件
rpos/features/motion_planner/move_option.h
结构体说明
appending
如果机器人正在执行其他的移动动作,该参数决定新的点是追加或是替换既有节点。
isMilestone
机器人是否通过路径搜索的方式前往目的地。
robotHeading
机器人行走时头朝向设置。参考rpos::robot::heading::RobotHeading
rpos::actions::MoveAction类
MoveAction类表示一个移动的动作,它包含了当前机器人规划的路径、检查点列表、移动的进程。MoveOptionFlagNone
机器人以系统默认的方式行走
MoveOptionFlagAppending
机器人依次移动到指定的点
MoveOptionFlagMilestone
路径搜索
MoveOptionFlagNoSmoot
机器人不走平滑曲线
MoveOptionFlagKeyPoints
机器人沿着虚拟轨道行走
MoveOptionFlagPrecise
机器人以误差在10cm的范围内移动到指定点的方式行走
MoveOptionFlagWithYaw
rpos::features::motion_planner::MoveOptions类
机器人行走方式及速率设定
MoveOptionFlag flag
机器人的行走方式
boost::optional<double> speed_ratio;
机器人以一定的速率行走(最大速度的百分比)
rpos::features::ArtifactProvider类
器物功能特征,包括了虚拟墙功能。
头文件
rpos/features/
motion_planner/move_actionartifact_provider.h
父类
继承自rpos::core::Action类Feature类
构造器
MoveActionArtifactProvider(boost::shared_
ptr<rposptr<detail::
actions::detail::MoveActionImpl>ArtifactProviderImpl>)
该构造器仅限SDK内部使用。该构造器仅限SDK内部使用。
MoveActionArtifactProvider(const
MoveActionArtifactProvider&)
拷贝构造函数拷贝构造函数。
运算符
MoveActionArtifactProvider& operator=(const
MoveActionArtifactProvider&)
赋值运算符赋值运算符。
方法
rposstd::
featuresvector<rpos::
motion_plannercore::
Path getRemainingPathLine> getWalls()
获得已经规划好的,剩余的路径获取系统中所有的虚拟墙。
bool addWall(const rpos::
:features::motion_planner::Path getRemainingMilestones()core::Line&)
添加虚拟墙。
bool addWalls(const std::vector<rpos::core::Line>&)
添加虚拟墙。
bool clearWallById(const rpos::core::SegmentID&)
清除指定的虚拟墙。
bool clearWalls()
清除所有的虚拟墙。
获得剩余的里程碑rpos::features::
ArtifactProvider类LocationProvider类
器物功能特征,包括了虚拟墙功能。定位功能特征,包括了自动建图和定位的功能(亦即SLAM功能)。
头文件
rpos/features/
artifactlocation_provider.h
父类
继承自rpos::core::Feature类
构造器
ArtifactProviderLocationProvider(boost::shared_ptr<detail::
ArtifactProviderImpl>LocationProviderImpl>)
该构造器仅限SDK内部使用。
ArtifactProviderLocationProvider(const
ArtifactProviderLocationProvider&)构造器
拷贝构造函数。
运算符
ArtifactProviderLocationProvider& operator=(const
ArtifactProviderLocationProvider&)
赋值运算符。
方法
std::
vector<rposvector< rpos::
corefeatures::
Line> getWallslocation_provider::MapType> getAvailableMaps()
bool addWall(const获得该定位功能特征提供的所有地图类型。
rpos::features::location_provider::Map getMap(rpos::
corefeatures::
Line&)bool addWalls(const std::vector<rposlocation_provider::MapType,rpos::core::
Line>&)RectangleF, rpos::features::location_provider::MapKind)
获得该定位功能特征提供的指定地图类型指定区域的地图数据。
bool setMap(const
bool clearWallById(const rpos::core::SegmentID&)
bool clearWalls()
rpos::features::
LocationProvider类定位功能特征,包括了自动建图和定位的功能(亦即SLAM功能)。
头文件
rpos/features/location_provider
.h父类
构造器
LocationProvider(boost::shared_ptr<detail::LocationProviderImpl>)
LocationProvider(const LocationProvider&)构造器
运算符
LocationProvider& operator=(const LocationProvider&)
方法
std::vector<::Map&,rpos::features::location_provider::MapType,rpos::features::location_provider::
MapType> getAvailableMaps(MapKind)
获得该定位功能特征提供的所有地图类型。上载指定地图类型指定区域的地图数据到该定位功能特征,返回是否成功。
rpos::
featurescore::
location_provider::Map getMapRectangleF getKnownArea(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)clearMap()
上载指定地图类型指定区域的地图数据到该定位功能特征,返回是否成功。
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
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()
获取原始激光扫描数据。
rpos::features::
locationsystem_
providerresource::
Map类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()
获得地图生成的时间。
地图基类,泛指定位功能获得的地图。
头文件
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::
SlamwareCorePlatform类objects::CompositeMapReader类
头文件
compositeMapReader.h
rpos::robot_platforms::SlamwareCorePlatform类
SlamwareCorePlatform对象代表一个基于Slamware的机器人,用以获取设备的状态、控制设备的行为。
头文件
rpos/robot_platforms/slamware_core_platform.h父类
构造器
方法
继承自rposboost::
coreshared_ptr<CompositeMap> loadFile(const std::
RobotPlatform类构造器
SlamwareCorePlatform(string& rcFilePath);
读取地图文件,参数为文件路径名。在成功读取地图后会返回一个CompositeMap对象的指针,否则抛出 CompositeMapException 类型的异常。
boost::shared_
ptr<detailptr<CompositeMap> loadFile(const std::
SlamwareCorePlatformImpl>)构造器wstring& rcFilePath);
读取地图文件,参数为宽字符文件路径名。在成功读取地图后会返回一个CompositeMap对象的指针,否则抛出 CompositeMapException 类型的异常。
boost::shared_ptr<CompositeMap> loadFile(
该构造器仅限SDK内部使用。
SlamwareCorePlatform(const SlamwareCorePlatform&)构造器
拷贝构造函数。
运算符
SlamwareCorePlatform& operator=(const SlamwareCorePlatform&)运算符
赋值运算符。
静态方法
SlamwareCorePlatform connect(conststd::string&
, int, int)连接到指定的Slamware设备。
参数
名称
类型
说明
rErrMsg, const std::string& rcFilePath);
读取地图文件,参数为文件路径名。在成功读取地图后会返回一个CompositeMap对象的指针,并且rErrMsg为空,否则会返回空指针,rErrMsg为错误的描述。
boost::shared_ptr<CompositeMap> loadFile(
host
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& 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
&, rposgetMap(rpos::features::location_provider::MapType
, rpos, rpos::core::RectangleF, rpos::features::location_provider::MapKind
, bool partially)
上载指定地图类型指定区域的地图数据到该Slamware CORE。获得该Slamware CORE提供的指定地图类型指定区域的地图数据。
参数
名称 | 类型 | 说明 |
---|
type | rpos::features::location_provider:: |
MapType |
地图的数据类型 |
area |
core:: |
RectangleF | 地图的区域 | |
kind | rpos::features::location_provider::MapKind | 地图类型 |
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); |
注: 扫地机版本mapkind可以使用SWEEPERMAP
bool setMap(const
core::Pose& pose, constrpos::features::location_provider::Map&,
rposrpos::features::location_provider::MapType,
rposrpos::features::location_provider::MapKind, bool partially)
上载指定地图类型指定区域的地图数据到该Slamware 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); |
bool setMap( const core::
RectangleF getKnownArea(Pose& pose, const rpos::features::location_provider::Map&, rpos::features::location_provider::MapType, rpos::features::location_provider::MapKind, bool partially)
获得指定地图类型的地图中,已经完成建图的区域。上载指定地图类型指定区域的地图数据到该Slamware CORE。
示例参数
code名称 |
---|
类型 |
---|
说明 |
---|
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:location_provider:MapKind::EXPLORERMAP; rpos::feature:core:location_provider:RectangleMapType knownAreamapType = robotPlatform.getKnownArea(mapType, mapKind); |
bool clearMap()
清除地图数据。
bool clearMap(rpos:: |
feature::location_provider:MapType:: |
清除指定地图类型的地图数据。
MapTypeBitmap8Bit; rpos:: |
feature:: |
获得机器人在上述地图坐标系统中的坐标。
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<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::
actionscore::
MoveAction moveToRectangleF getKnownArea(
constrpos::
corefeatures::location_provider::
Location&, bool, bool)让机器人移动到目标位置。
参数详细参考MapType, rpos::
actionfeatures::
MoveAction MoveTo(const rpos::core::Location&, bool, bool)rpos::actions::MoveAction moveTo(const std::vector< rpos::core::Location>&, rpos::robot::option::MoveOption &)
让机器人沿着路径移动(机器人会逐一走过路径中的节点,并根据MoveAction参数的变量决定机器人行走的方式和移动过朝向)。
参数
名称
类型
说明
locations
const std::vector
<rpos::core::Location>&
期望机器人经过的点
moveOption
rpos::robot::option::MoveOption
如果机器人正在执行其他的移动动作,该参数决定新的点是追加或是替换既有节点
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)
清除指定地图类型的地图数据。
moveOption详细可参考rpos::robot::option::MoveOption
示例
language | cpp |
---|---|
firstline | 0 |
linenumbers | true |
rpos::core::Location
locationgetLocation(
1,1); locations.push rpos::robot::option::MoveAction moveOption; moveOption.appending = false; moveOption.isMilestone = true;)
获得机器人在上述地图坐标系统中的坐标。
rpos::core::Pose
posegetPose(
Rotation(2)); rpos::robot::heading::RobotHeading robotHeading(rpos::robot::heading::HeadingMode::HeadingModeFixAngle, pose); moveOption.robotHeading = robotHeading; rpos::actions::MoveAction moveInfo = robotPlatform.moveTo(locations, moveOption);)
获得机器人在上述地图坐标系统中的姿态。
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::
robotMoveAction MoveTo(const rpos::
optioncore::
MoveOptionLocation&, bool, bool)
让机器人沿着路径移动(机器人会逐一走过路径中的节点,并根据MoveAction参数的变量决定机器人行走的方式和移动过朝向)。
详细参考rpos::actions::MoveAction moveTo(const std::
vector<rposvector< rpos::core::Location>&,
rpos::robot::option::MoveAction&)MoveOptions&, float yaw)
让机器人沿着路径移动(机器人会逐一走过路径中的节点,并根据MoveAction参数的变量决定机器人行走的方式和移动过朝向)。
参数
名称 | 类型 | 说明 |
---|---|---|
locations | const std::vector<rpos::core::Location>& | 期望机器人经过的点 |
moveOption | rpos::robot::option::MoveOption | 如果机器人正在执行其他的移动动作,该参数决定新的点是追加或是替换既有节点 |
yaw | float | 表示设备的旋转角度,默认为。 |
moveOption详细可参考MoveOptions
rpos::actions::MoveAction moveTo(const rpos::core::Location&, MoveOptions&, float yaw)
让机器人沿着路径移动(机器人会逐一走过路径中的节点,并根据MoveAction参数的变量决定机器人行走的方式和移动过朝向)。
rpos::
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
rotateTomoveBy(const
rposcore::Direction& direction, const features::
coremotion_planner::
RotationMoveOptions&);
使机器人水平转动到特定的角度。
rpos::根据指定的移动方式控制机器人向指定的方向移动。MoveOptions设置暂时不支持。
moveOption详细可参考MoveOptions
actions::
MoveAction rotate(const rpos::core::Rotation&)MoveAction moveBy(const float theta, const features::motion_planner::MoveOptions&);
根据theta角和MoveOptions中的speed_ratio控制机器人移动,实现设备以规定角度和速度移动,持续200ms。
使机器人水平转动一定的角度。rpos::actions::MoveAction
getCurrentAction()获得机器人当前正在进行的移动动作。
您可以使用rposrotateTo(const rpos::core::
ActionRotation&)
使机器人水平转动到特定的角度。
actions::
isEmpty()方法判断它是否存在。当机器人当前没有正在进行的动作时,它rpos::core::Action::isEmpty()将会返回true。MoveAction rotateTo(const core::Rotation& orientation, const features::motion_planner::MoveOptions& options);
根据指定的移动方式控制机器人旋转到特定的角度。MoveOptions设置暂时不支持。
rpos::
featuresactions::
motion_planner::Path searchPathMoveAction rotate(const rpos::core::
LocationRotation&
location)
使用机器人内置的寻路算法寻找前往指定目的地的路径。使机器人水平转动一定的角度。
rpos::actions::
SweepMoveAction startSweep()MoveAction rotate(const core::Rotation& rotation, const features::motion_planner::MoveOptions& options);
根据指定的移动方式控制机器人旋转到一定的角度。MoveOptions设置暂时不支持。
命令机器人开始打扫。(此接口仅适用于扫地机版本)
rpos::actions::SweepMoveAction sweepSpot(const rpos::core::Location& location)
在机器人处于扫地状态下,可以命令机器人定点清扫。(此接口仅适用于扫地机版本)rpos::actions::MoveAction
goHomegetCurrentAction()
在机器人处于扫地状态下,可命令机器人返回充电位置。(此接口仅适用于扫地机版本)
int getBatteryPercentage()
获得机器人电池剩余电量(0表示完全没电,100表示电量全满)。
bool getBatteryIsCharging()
获得机器人当前正在进行的移动动作。
您可以使用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类
Void startCalibration(rpos::features::system_resource::
CalibrationType type)机器人开始进行磁罗盘校正
Void stoptCalibration()
机器人停止进行磁罗盘校正
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 | ip | dns | gateway | mask |
---|---|---|---|---|---|---|---|
NetworkModeAp | 可选 | 可选 | 可选 | 可选 | 可选 | 可选 | 可选 |
NetworkModeStation | 必选 | 可选 | -- | -- | -- | -- | -- |
NetworkModeWifiDisabled | -- | -- | -- | -- | -- | -- | -- |
注:目前暂只支持以上三中mode形式,ssid,password,channel三个选项的信息如上表(注:1. 目前暂只支持以上三中mode形式,ssid,password,channel三个选项的信息如上表(--表示不可用)
2. NetworkModeWifiDisabled将禁用无线设置
示例
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); |
rpos::robot_platforms::objects::CompositeMap getCompositeMap()
获取当前地图的所有信息。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();
获取电源相关的信息。
成员:
bool isDCConnected;
直流电源连接
DockingStatus dockingStatus;
Docking状态
bool isCharging;
设备是否处于充电状态
int batteryPercentage;
电池电量(从0~100)
SleepMode sleepMode;
设备休眠模式
enum SleepMode
设备的休眠模式
SleepModeUnknown,
目标Slamware固件不支持该命令
SleepModeAwake
设备处于已唤醒状态,可以立刻响应命令
The device is waking up, please wait for some time
SleepModeWakingUp
设备处于正在被唤醒中的状态,需要少许时间响应命令
SleepModeAsleep
设备处于已休眠状态,需要稍长时间响应命令
enum DockingStatus
枚举,机器人的Docking状态
DockingStatusUnknown
Docking状态未知(目标Slamware固件不支持)
DockingStatusOnDock,
设备在充电座上
DockingStatusNotOnDock
设备不在充电座上
void wakeUp();
从休眠状态唤醒设备。
getSweepTimeMs(扫地机专用接口)
int getSweepTimeMs();
当前设备处于清扫状态时,获取从开始清扫时刻到此时刻的清扫时间。当前设备不处于清扫状态时,获取上一次清扫动作的清扫时间。
float getSweepArea();(扫地机专用接口)
当前设备处于清扫状态时,获取当前清扫动作的清扫面积。当前设备不处于清扫状态时,获取上一次清扫动作的清扫面积。
core::Pose getHomePose();
获取充电座位置。如果找不到充电座则返回(0,0)。
features::location_provider::PointPDF getAuxLocation();
根据当前辅助定位设备的信息获取当前机器人的大致位置信息。
当机器人被抱起时,可以先调用getAuxLocation()获取机器人当前大致位置信息,然后调用recoverLocalization传入包含有大致位置信息的区域,使机器人尝试重定位。
示例
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
auto locationPdf = platform. getAuxLocation();
Location location = locationPdf.location;
float distant = locationPdf.circular_error_probability;
RectangleF area((location.x() - distant), (location.y() - distant), 2*distant, 2*distant);
auto act = platform. recoverLocalization(area);
act.waitUntilDone(); |
actions::MoveAction recoverLocalization(const core::RectangleF& area);
当机器人被抱起时可调用此接口进行重定位。
如果area区域为空时,机器人将在当前20*20的区域进行从定位,否则机器人将在指定区域进行重新定位。
features::motion_planner::Path getRobotTrack(int count);(扫地机专用接口)
获取扫地机的清扫轨迹。参数表示使用者已获得的轨迹点的数量,为0时返回完整轨迹。
std::vector<core::Line> getLines(features::artifact_provider::ArtifactUsage usage);
获取所有虚拟墙或虚拟轨道的信息。根据如下参数来确定获取的是虚拟墙或虚拟轨道的信息。
参数名称 | 说明 |
---|---|
ArtifactUsageVirtualWall | 虚拟墙,用于限制设备的活动范围。 |
ArtifactUsageVirtualTrack | 虚拟轨道,用于为设备提供预设的路线,设备将尽可能按照虚拟轨道移动。 |
bool addLine(features::artifact_provider::ArtifactUsage usage, const core::Line& line);
添加虚拟墙或虚拟轨道。
添加多个虚拟墙或虚拟轨道。bool addLines(features::artifact_provider::ArtifactUsage usage, const std::vector<core::Line>& lines);
bool removeLineById(features::artifact_provider::ArtifactUsage usage, rpos::core::SegmentID id);
移除指定的虚拟墙或虚拟轨道。
bool clearLines(features::artifact_provider::ArtifactUsage usage);
移除所有虚拟墙或虚拟轨道。
detail::objects::UpdateInfo getUpdateInfo();
获取版本更新信息。
参数名称 | 数据类型 | 说明 |
---|---|---|
currentVersion | string | 当前版本信息 |
newVersion | string | 最新版本信息 |
newVersionReleaseDate | string | 最新版本信息发布时间 |
newVersionChangeLog | string | 最新版本的发布说明 |
bool startFirmwareUpdate();
开始更新固件。
detail::objects::UpdateProgress getFirmwareUpdateProgress();
获取固件更新进程。
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
固件更新准备
UpdateFirmwarePrepareFinished
固件更新准备完成
UpdateFirmwareDownloading
固件下载
UpdateFirmwareDownloadFinished
固件下载完成
UpdateFirmwareUpdating
固件更新中
UpdateFirmwareUpdateFinished
固件更新完成
enum UpdateProgressStatus
枚举,固件更新进程的状态
UpdateProgressSuccess
固件更新成功
UpdateProgressError
固件更新报错
UpdateProgressInit,
固件更新初始化
UpdateProgressUpgrade
固件更新升级