Skip to main content

Manipula SDK 数据类型

CompoundOperation 类

描述

表示复合工序的类,复合工序是一种可以包含多个子工序的容器工序。

公有方法

unsigned getId() const

获取该复合工序的Id。

const std::string& getName() const

获取该复合工序的名称。

bool hasChildOperation() const

判断该复合工序是否包含子工序。

std::vector<unsigned> getChildOperationIds() const

获取该复合工序包含的所有子工序的Id列表。

std::string getComment() const

获取该复合工序的注释信息。

void setComment(const std::string& comment)

设置该复合工序的注释信息。

示例


ConfData 类

描述

表示机器人配置数据的类,用于定义机器人的构型。

详见Manipula数据手册的ConfData部分。

成员变量

  • int cf1: 第1轴的象限编号。
  • int cf4: 第4轴的象限编号。
  • int cf6: 第6轴的象限编号。
  • int cfx: 扩展轴的象限编号。

每个旋转轴根据转角大小,使用0,1,2,3等数字表示其象限编号,每90°为一个象限。 编号0到3表示0°到360°,编号-1到-3表示0°到-270°,以此类推。

公有方法

ConfData(int cf1, int cf4, int cf6, int cfx)

构造函数,使用指定的象限值初始化配置数据。

bool operator==(const ConfData& rhs) const

比较两个ConfData是否完全相同。

bool isAdjacent(const ConfData& rhs) const

判断两个配置数据是否相邻。

std::string toString() const

将配置数据转换为可读的字符串表示。

示例


ExtJoint 类

描述

表示外轴关节数据的类,支持最多6个外部轴(eax_a 到 eax_f)。

数据类型参考Manipula数据手册的ExtJoint部分。

成员变量

  • double eax_a: 外部轴a的位置值,默认值为 9e9(表示无效)
  • double eax_b: 外部轴b的位置值,默认值为 9e9(表示无效)
  • double eax_c: 外部轴c的位置值,默认值为 9e9(表示无效)
  • double eax_d: 外部轴d的位置值,默认值为 9e9(表示无效)
  • double eax_e: 外部轴e的位置值,默认值为 9e9(表示无效)
  • double eax_f: 外部轴f的位置值,默认值为 9e9(表示无效)

公有方法

bool valid() const

返回true如果至少一个关节值有效。

bool isValid(unsigned index) const

检查指定索引的外部轴是否有效。

当索引超出范围(不在1-6之间)时会抛出异常。

double getJointValue(unsigned index) const

获取指定索引的外部轴关节值。

当索引超出范围(不在1-6之间)时会抛出异常。

std::string toString() const

用字符串表示所有关节数据。

示例


JointTarget 类

描述

描述机械臂内部轴和外部轴的位置。是执行MoveAbsJ指令时机械臂内部轴和外部轴需要移动到的位置。

数据类型参考Manipula数据手册的jointtarget部分。

公有方法

unsigned getId() const

获取该关节目标的Id。

std::string getName() const

获取该关节目标的名称。

RobJoint getRobJoint() const

获取该目标点的内部轴关节值,以ABB为标准。

ExtJoint getExtJoint() const

获取该目标点的外部轴关节值。

std::string toString() const

用字符表示该关节目标的所有数据

示例


MotionType 枚举类

描述

表示机器人运动类型的枚举类。

枚举值

  • MoveL: 线性运动(Linear Motion)
  • MoveJ: 关节运动(Joint Motion)
  • MoveC: 圆弧运动(Circular Motion)
  • MoveAbsj: 绝对关节运动(Absolute Joint Motion)

示例


MoveInstruction 类

描述

表示机器人运动指令的数据类,封装了运动类型、目标点、速度、工具坐标系、工件坐标系等信息。

公有方法

unsigned getId() const

获取该运动指令的Id。

std::string getName() const

获取该运动指令的名称。

MotionType getMotionType() const

获取该运动指令的运动类型,参考MotionType

RobTarget getRobTarget() const

获取该运动指令的机器人目标点。 如果指令不支持RobTarget类型的目标点,会抛出异常,比如MoveAbsJ

RobTarget getCircle() const

获取该运动指令圆弧中间的机器人目标点。 如果指令不是MoveC,会抛出异常。

JointTarget getJointTarget() const

获取该运动指令的关节目标点。 如果指令不支持JointTarget类型的目标点,会抛出异常。比如MoveLMoveJ都只支持RobTarget

Speeddata getSpeeddata() const

获取该运动指令的速度数据。

Zonedata getZonedata() const

获取该运动指令的转向区域。

Tooldata getTooldata() const

获取该运动指令的工具数据。

Wobjdata getWobjdata() const

获取该运动指令的工件数据。

std::optional<RobJoint> getRobJoint() const

获取一个用std::optional包装的运动指令的内部轴关节值,以ABB为标准。
如果指令的目标点为绝对关节值,直接返回该关节值。
如果指令的目标点为机器人目标点,会对该目标点进行解算,返回与目标点配置匹配的关节值; 找不到匹配的解时,则返回空的std::nullopt

std::string getComment() const

获取该运动指令的注释信息。

void setComment(const std::string& comment)

设置该运动指令的注释信息。

示例


Orient 类

描述

使用双精度浮点数(double)的四元数表示三维空间中的旋转方向

成员变量

  • double w: 四元数实部(旋转角度的余弦分量)
  • double x: 四元数i分量(旋转轴x分量)
  • double y: 四元数j分量(旋转轴y分量)
  • double z: 四元数k分量(旋转轴z分量)

公有方法

Orient()

默认构造函数,创建单位四元数 (1.0, 0.0, 0.0, 0.0) 表示无旋转

Orient(double w, double x, double y, double z)

带参数构造函数

  • w: 四元数实部
  • x: 四元数i分量
  • y: 四元数j分量
  • z: 四元数k分量

示例

mpl::Orient defaultOrient; // 无旋转状态
mpl::Orient customOrient(0.707, 0.0, 0.707, 0.0); // 绕Y轴旋转90度

PathOperation 类

描述

表示路径工序的类,该类用于访问一系列的MoveInstruction, 通常代表机器人执行的一个完整路径或动作序列。

公有方法

unsigned getId() const

获取该路径工序的Id。

const std::string& getName() const

获取该路径工序的名称。

bool isEmpty() const

判断该路径工序是否为空(即是否包含运动指令)。

std::vector<MoveInstruction> getMoveInstructions() const

获取该路径工序所包含的运动指令列表。

std::string getComment() const

获取该路径工序的注释信息。

void setComment(const std::string& comment)

设置该路径工序的注释信息。

void replace(const std::vector<AnnotatedPose>& annotatedPoses)

使用新的位姿序列替换路径工序中的所有指令。

新生成的运动指令将继承原路径中第一条 MoveL 或 MoveJ 类型指令的运动参数(如速度、转向区域、工具和工件数据等)和类型。

异常

  • std::logic_error: 当原始路径中不存在 MoveL 或 MoveJ 类型的指令时抛出

示例

// 获取一个任务的所有指令
unsigned taskId = mpl::GetTaskList().front().id;
for (const PathOperation& pathOp : mpl::GetPathOperations(taskId)) {
for (const MoveInstruction& instruction : pathOp.getMoveInstructions()) {
RobTarget robTarget = instruction.getRobTarget();
std::cout << "RobTarget: " << robTarget.toString() << std::endl;
}
}

Pos 类

描述

表示使用双精度浮点数(double)描述的三维空间坐标

成员变量

  • double x: X轴坐标
  • double y: Y轴坐标
  • double z: Z轴坐标

公有方法

Pos()

创建一个初始位置 (0,0,0)

Pos(double x, double y, double z);

创建一个位置(x, y, z)

  • x: X轴坐标值
  • y: Y轴坐标值
  • z: Z轴坐标值

示例

mpl::Pos origin;               // 创建原点位置 (0,0,0)
mpl::Pos point(1.5, 2.0, 3.5); // 创建指定坐标位置

Pose 类

描述

组合位置和方向的空间位姿

成员变量

  • Pos trans: 位置分量
  • Orient rot: 方向分量

公有方法

Pose()

默认构造函数,创建位于原点且无旋转的默认位姿

Pose(const Pos& pos, const Orient& orient)

根据给定位置和旋转创建位姿

  • pos: 位置对象
  • orient: 方向对象

示例

mpl::Pose defaultPose;  // 默认位姿

mpl::Pos position(1.0, 2.0, 3.0);
mpl::Orient orientation(0.923, 0.0, 0.382, 0.0);
mpl::Pose customPose(position, orientation); // 组合位姿

AnnotatedPose 类

描述

带注释的位姿类,组合了空间位姿,外轴和文本注释信息

成员变量

  • Pose pose: 位姿对象
  • ExtJoint extJoint: 外轴值
  • std::string comment: 注释文本

公有方法

AnnoatatedPose为简单数据类,可直接操作其成员。


RobJoint 类

描述

RobJoint 描述机械臂各关节的位置,该类用于存储和操作六个关节的角度值。

详见Manipula数据手册的RobJoint部分。

公有成员变量

  • double rax_1
  • double rax_2
  • double rax_3
  • double rax_4
  • double rax_5
  • double rax_6

表示机器人第 1~6 轴的关节角度,单位为弧度。默认值1e9表示无效值。

公有方法

bool valid() const

检查所有关节角度是否都有效。

double getJointValue(unsigned index) const

获取指定索引(1~6)对应的关节角度值,超出索引范围时会抛出异常。

bool isCritical(unsigned index) const

判断指定索引的关节角度是否处于临界状态,超出索引范围时会抛出异常。

std::string toString() const

返回各关节角度的字符串表示,单位为弧度。

std::string toDegString() const

返回各关节角度的字符串表示,单位为角度(度)。

示例


RobTarget 类

描述

表示机械臂的目标点信息,包括目标点的位姿,配置数据和外部轴信息。

详见Manipula数据手册的RobTarget部分。

公有方法

unsigned getId() const

获取目标点的Id。

std::string getName() const

获取目标点的名称。

Pose getPose() const

获取目标点相对工件坐标系的空间位姿。

ConfData getConfData() const

获取目标点的配置数据

ExtJoint getExtJoint() const

获取目标点的外部轴信息。

bool hasExtJoint() const

判断目标点是否包含有效的外部轴。

std::string toString() const

用字符串表示目标点信息。

示例


Speeddata 类

描述

Speeddata 用于描述机械臂和外轴均开始移动时的速度数据。

详见 Manipula 数据手册的 Speeddata 部分。

公有方法

unsigned getId() const

获取速度数据的Id。

std::string getName() const

获取速度数据的名称。

double getVTcp() const

获取TCP的速度,单位为mm/s。

double getVOri() const

获取TCP转向的速度,单位为degrees/s。

double getVLeax() const

获取外部线性轴的速度,单位为mm/s。

double getVReax() const

获取外部旋转轴的速度,单位为degrees/s。

std::string toString() const

返回速度数据的字符串表示。

示例


Tooldata 类

描述

Tooldata 用于描述工具信息,包括工具中心点(TCP)的位姿和工具负载情况。

详见 Manipula 数据手册的 Tooldata 部分。

公有方法

unsigned getId() const

获取工具数据的Id。

std::string getName() const

获取工具数据的名称。

bool isRobhold() const

描述工具是否由机器人持有。

Pose getTFrame() const

获取TFrame,即工具坐标系和TCP点相对于机械臂腕关节坐标系(tool0)的位置和位姿。 如果未被机器人持有, 则TFrame的定义相对于机器人任务坐标系。

Pose getWorldPose() const

获取TCP在世界坐标系下的位姿。

std::string toString() const

返回工具数据的字符串表示。

示例


Wobjdata 类

描述

描述工件数据,用于计算工件坐标系。

具体的数据含义详见 Manipula 数据手册的 Wobjdata 部分。

公有方法

unsigned getId() const

获取工作对象的Id。

std::string getName() const

获取工作对象的名称。

bool isRobhold() const

用于判断工件是否由机器人持有,返回false时,uframe相对于任务坐标系定义, 否则uframe相对于机器人手腕坐标系定义。

bool isUfprog() const

获取工件的安装形式。 返回true表示工件是固定的或者由本机器人持有,用户坐标系由uframe数据项定义。 返回false表示工件安装在移动装置上,工件的用户坐标系的数据来自于数据项ufmec所指定的机械单元,此时uframe会被忽略。

std::string getUfmec() const

获取工装移动所使用的机械单元名称。仅当ufprogfalse时有效。

Pose getUframe() const

获取用户坐标系,仅当ufprogtrue时数据有效。 如果robholdfalse, 则用户坐标系的定义相对于机器人的任务坐标系, 否则用户坐标系的定义相对于机器人的手腕坐标系tool0

Pose getOframe() const

返回物体坐标系。物体坐标系相对于用户坐标系定义。

Pose getActualWorldPose() const

获取工件坐标系在世界坐标系里的位姿。如果工件数据由外轴移动,使用外轴当前值计算工件坐标系。

Pose getActualWorldPose(const ExtJoint& ej) const

获取工件坐标系在世界坐标系里的位姿。如果工件数据由外轴移动,使用参数ej作为外轴值计算工件坐标系。

Pose getActualTaskPose() const

获取工件坐标系在机器人任务坐标系里的位姿。如果工件数据由外轴移动,使用外轴当前值计算工件坐标系。

Pose getActualTaskPose(const ExtJoint& ej) const

获取工件坐标系在机器人任务坐标系里的位姿。如果工件数据由外轴移动,使用参数ej作为外轴值计算工件坐标系。

std::string toString() const

返回工作对象的字符串表示。

示例

// 获取所有的机器人任务
auto taskList = mpl::GetTaskList();

for (auto task : taskList) {
std::cout << task.id << " " << task.name << "\n";
}
// 获取第一个机器人任务里的所有的工件数据
std::vector<mpl::IdName> wobjlist = mpl::GetWobjdataList(taskList.front().id);

// 打印工件数据的当前世界位姿
for (mpl::IdName wobj : wobjlist) {
auto wobjdata = mpl::GetWobjdata(wobj.id);
std::cout << wobjdata.getActualWorldPose().toString() << "\n";
}

Zonedata 类

描述

描述机械臂在一个编程位置的转向区域。

详见 Manipula 数据手册的 Zonedata 部分。

公有方法

unsigned getId() const

获取转向数据的Id。

std::string getName() const

获取转向数据的名称。

bool getFinep() const

判断路径点是否为停止点。其中停止点表示机械臂和外部轴必须到达该位置, 飞跃点表示机械臂不会到达该位置,而是在靠近该位置时开始转向。

double getPzoneTcp() const

获取TCP的转向半径,单位为mm。

double getPzoneOri() const

获取extern zone的半径,单位为mm。

double getPzoneEax() const

获取带外部轴的extern zone的半径,单位为mm。

double getZoneOri() const

用于表示重定向区域的大小,单位为degrees。

double getZoneLeax() const

带线性外轴的重定向区域大小,单位为mm。

double getZoneReax() const

带旋转外轴的重定向区域大小,单位为degrees。

示例