Skip to main content

SDK 数据类型

Color 类​

描述​

表示 RGB 颜色的结构体,用于点云的逐点颜色覆盖。

颜色的三个分量取值范围为 [0, 1],超出范围的分量会被钳制到该区间。颜色仅用于会话内的显示,不会写入工作站文件,重新打开工作站后丢失。

成员变量​

  • float r: 红色分量,默认值为 1.0。
  • float g: 绿色分量,默认值为 1.0。
  • float b: 蓝色分量,默认值为 1.0。

示例​

// 红色
mpl::Color red{1.0f, 0.0f, 0.0f};

// 为点云中的部分点设置该颜色
mpl::SetCloudPointColors(pointCloudId, {0, 1, 2}, red);

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 类​

描述​

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

详见数据手册的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)。

数据类型参考数据手册的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​

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

示例​

无


FeatureOperation 类​

描述​

表示制造特征工序的类。制造特征工序对应于一条制造特征曲线(如打孔、铣槽、切割轮廓等), 由工艺功能自动生成,通常作为工艺工序的子工序。

通过该类可以获取特征轮廓的类型、中心位姿、起始点、绕向以及各形状的尺寸参数, 轮廓的位姿参数以工件坐标系为参考。

公有方法​

unsigned getId() const​

获取该制造特征工序的Id。

const std::string& getName() const​

获取该制造特征工序的名称。

Type getType() const​

获取特征轮廓的类型,用于判断下面的尺寸参数接口中哪些可用。

  • Type::None: 不包含特征轮廓
  • Type::Circle: 圆形
  • Type::Rectangle: 矩形(可以带圆角)
  • Type::RegularPolygon: 正多边形(三角形、五边形、六边形等)
  • Type::Slot: 槽形

Pose getCenter() const​

获取轮廓的中心位姿(CenterPose),以工件坐标系为参考。 中心坐标系的Z轴为轮廓所在平面的法线方向,X轴为轮廓主轴方向。

当工序不包含特征轮廓时返回单位位姿。

Pos getStart() const​

获取轮廓的起始点,以工件坐标系为参考。

当工序不包含特征轮廓时返回零点。

bool isCCW() const​

获取轮廓的绕向,返回true表示沿逆时针方向。

当工序不包含特征轮廓时返回true。

轮廓尺寸参数​

尺寸参数接口仅对匹配的轮廓类型有意义,类型不匹配时会抛出std::runtime_error。

轮廓类型可用的尺寸参数
Type::CirclegetDiameter()、getRadius()
Type::RectanglegetLongEdge()、getShortEdge()、getCornerRadius()
Type::RegularPolygongetSideLength()、getSideNum()
Type::SlotgetDiameter()、getRadius()、getLineLength()

double getDiameter() const​

获取圆形或槽形的直径,单位为mm。

double getRadius() const​

获取圆形或槽形的半径,等于直径的一半,单位为mm。

double getLongEdge() const​

获取矩形的长边长度,单位为mm。

double getShortEdge() const​

获取矩形的短边长度,单位为mm。

double getCornerRadius() const​

获取矩形的圆角半径,单位为mm。直角矩形返回0。

double getSideLength() const​

获取正多边形的边长,单位为mm。

double getSideNum() const​

获取正多边形的边数,以double返回。

double getLineLength() const​

获取槽形直线段的长度,单位为mm。

示例​

// 遍历一个任务中所有的制造特征工序,输出其轮廓参数
unsigned taskId = mpl::GetTaskList().front().id;
for (const mpl::FeatureOperation& featureOp : mpl::GetFeatureOperations(taskId)) {
std::cout << featureOp.getName() << std::endl;
std::cout << "center: " << featureOp.getCenter().toString() << std::endl;

switch (featureOp.getType()) {
case mpl::FeatureOperation::Type::Circle:
std::cout << "diameter: " << featureOp.getDiameter() << std::endl;
break;
case mpl::FeatureOperation::Type::Rectangle:
std::cout << "size: " << featureOp.getLongEdge() << " x " << featureOp.getShortEdge()
<< ", corner radius: " << featureOp.getCornerRadius() << std::endl;
break;
case mpl::FeatureOperation::Type::RegularPolygon:
std::cout << "side num: " << featureOp.getSideNum()
<< ", side length: " << featureOp.getSideLength() << std::endl;
break;
case mpl::FeatureOperation::Type::Slot:
std::cout << "diameter: " << featureOp.getDiameter()
<< ", line length: " << featureOp.getLineLength() << std::endl;
break;
default:
break;
}
}

JointTarget 类​

描述​

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

数据类型参考数据类型手册的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类型的目标点,会抛出异常。比如MoveL和MoveJ都只支持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 描述机械臂各关节的位置,该类用于存储和操作六个关节的角度值。

详见数据类型手册的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 类​

描述​

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

详见数据类型手册的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 用于描述机械臂和外轴均开始移动时的速度数据。

详见 ProcessCraft 数据手册的 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)的位姿和工具负载情况。

详见 ProcessCraft 数据手册的 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 类​

描述​

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

具体的数据含义详见 ProcessCraft 数据手册的 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​

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

Pose getUframe() const​

获取用户坐标系,仅当ufprog为true时数据有效。 如果robhold为false, 则用户坐标系的定义相对于机器人的任务坐标系, 否则用户坐标系的定义相对于机器人的手腕坐标系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 类​

描述​

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

详见 ProcessCraft 数据手册的 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。

示例​

无