rpos::core::Action类

头文件

rpos/core/action.h

适用于

  • Slamware

构造器

/**
* 拷贝构造函数。
*/
Action(const Action&);

运算符

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

方法

/**
* 获得当前动作状态,返回值详见ActionStatus枚举。
*/
ActionStatus getStatus();   
/**
* 未实现。
*/
double getProgress();
/**
* 取消当前动作。
*/
void cancel();   
/**
* 等待动作完成或出错,返回值为动作结束时的动作状态,详见ActionStatus枚举。
*/
ActionStatus waitUntilDone();   
/**
* 判断Action是否为空。
*/
bool isEmpty();  
/**
* 获取Action ID。
*/
rpos::core::ActionID getActionId();   
/**
* 在Action::getStatus()返回状态为 ActionStatusError的情况下,可以调用getReason查询具体失败原因,该接口返回一个字符串。
* 对于所有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:超声波。
*/
std::string Action::getReason();  
/**
* 将rpos::core::Action的对象转换成子类的对象。
*/
template<class ActionT> ActionT cast();   

示例

rpos::core::Action someAction = robotPlatform.startSomeAction();
rpos::actions::MoveAction moveAction = someAction.cast<rpos::actions::MoveAction>;