跳到主要内容

15.2 基础变量和结构体

RL 指令支持的所有变量类型,其中不可再次分割的 int、double、bool、string 类型属于基础变量(也称为基本变量),它们是所有变量类型的基础。把它们按照一定的规则组合在一起的变量类型,被称为结构体。

15.2.1 结构体的构成

结构体的组合规则通常是对具有实际物理意义的数据进行抽象。
示例:

  • 结构体 pos 是将三个 double 组合成了一个三维空间的位置(xyz)。

  • 结构体 orient 是将四个 double 组合成了一个描述旋转角度的四元数。

  • 结构体 pose 是将位置(pos)和旋转角度(orient)组合成了一个描述机器人位置的姿态参数。

15.2.2 结构体的使用方法

结构体除了作为指令的参数,还可根据使用场景,进行更精细的操作。通过特定的 RL 指令,能够直接修改结构体的数据。
示例1:
Robtarget 结构体由空间位置(pos)、姿态(orient)、配置数据(confdata)、外部轴(double 数组)构成。通过名字可以直接在 RL 函数中直接访问结构体的成员。它们的名字分别是trans(pos), rot(orient), conf(confdata), extax(double),通过名字可以直接在RL函数中直接访问结构体的成员。

robtarget rob1 = ...  // 变量列表或者用户自定义了一个笛卡尔变量
rob1.trans.x += 20    // 将点位的 x 数据加20
 // trans(pos)的结构体定义中,它由xyz三个变量组成
 // 所以最后访问rob的x坐标是 rob1.trans.x
print(rob1.trans)     // 只打印位置数据

示例2:
wobj工件坐标系,可以进行下面操作:

 // 以默认工件wobj0为例
wobj0.robhold          // 是否手持工件,bool
wobj0.ufprog           // 工件坐标系的用户坐标系是否移动,bool 不常用
wobj0.ufmec            // 工件坐标系的用户坐标系关联的机械单元,string 常用于电镀线、传送到跟踪
wobj0.oframe           // 工件坐标系的位姿,Pose
wobj0.oframe.x         // 工件坐标系的位姿 Pose 的 x 坐标
wobj0.oframe.y         // 工件坐标系的位姿 Pose 的 y 坐标
wobj0.oframe.z         // 工件坐标系的位姿 Pose 的 z 坐标
wobj0.q1               // 工件坐标系的位姿 Pose 的四元数
wobj0.uframe_id        // 工件相关的用户坐标系 id

其他复杂结构体也可参照该方法进行结构体访问。