Manipula数据类型手册
confdata
说明
描述机器人的构型。机械臂求逆时存在多解,即机械臂末端达到相同的位姿,机械臂具有不同的构型,为了表示各轴可能的构型之一,通过使用四个int变量来指定机械臂的构型。
对于六轴机械臂,使用轴1,4,6的象限编号和一个机械臂配置量来表示机械臂的构型。每个旋转轴根据转角大小,使用0,1,2,3等数字表示其象限编号,每90°为一个象限。编号0表示0°到90°,编号1表示90°到180°,编号2表示180°到270°,编号3表示270°到360°,编号-1表示0°到-90°,编号-2表示-90°到-180°,编号-3表示-180°到-270°,以此类推。
数据项
cf1
- 类型:int
- 说明:用于表示轴1的象限编号。
cf4
- 类型:int
- 说明:用于表示轴4的象限编号。
cf6
- 类型:int
- 说明:用于表示轴6的象限编号。
cfx
- 类型:int
- 说明:用于从编号0到7的八种可能的机械臂配置中选择一种。
| cfx | 腕中心相对于1轴的位置 | 腕中心相对于3轴的位置 | 5轴的角度 |
|---|---|---|---|
| 0 | 在前面 | 在前面 | 正 |
| 1 | 在前面 | 在前面 | 负 |
| 2 | 在前面 | 在后面 | 正 |
| 3 | 在前面 | 在后面 | 负 |
| 4 | 在后面 | 在前面 | 正 |
| 5 | 在后面 | 在前面 | 负 |
| 6 | 在后面 | 在后面 | 正 |
| 7 | 在后面 | 在后面 | 负 |
腕中心相对于1轴的位置



腕中心相对于3轴的位置



5轴的角度



extjoint
说明
描述外部轴,机械臂除了能控制六个内部轴外,最多还能控制六个外部轴。在控制程序内,这六个外部轴称为逻辑轴,可以使用a,b,c,d,e,f表示,每个逻辑轴都可以和一个外部轴连接。
对每个连接至外部轴的逻辑轴,如果是旋转轴,其位置使用相对于标定位置的角度表示,如果是线性轴,其位置使用相对于标定位置的距离表示。如果逻辑轴没有连接到外部轴,则该轴的位置默认设置为9E9,表示该轴未激活。也可以将某个连接至外部轴的逻辑轴设置为9E9。如果轴未激活,则不会进行任何运动,也不会检测该轴。
数据项
eax_a
- 类型:num
- 说明:用于表示逻辑轴“a”的位置,单位为mm或°。
eax_b
- 类型:num
- 说明:用于表示逻辑轴“b”的位置,单位为mm或°。
eax_c
- 类型:num
- 说明:用于表示逻辑轴“c”的位置,单位为mm或°。
eax_d
- 类型:num
- 说明:用于表示逻辑轴“d”的位置,单位为mm或°。
eax_e
- 类型:num
- 说明:用于表示逻辑轴“e”的位置,单位为mm或°。
eax_f
- 类型:num
- 说明:用于表示逻辑轴“f”的位置,单位为mm或°。
loaddata
说明
描述负载数据。包括质量,质心位置,力矩和惯性矩等信息。负载数据也是工具数据的一部分。负载数据用于机械臂动力学建模,以便以最佳方式控制机器人运动。
数据项
mass
- 类型:num
- 说明:用于表示质量信息,单位为kg
cog
- 类型:pos
- 说明:用于表示质心在工具坐标系下的坐标。
aom
- 类型:orient
- 说明:用于表示力矩在工具坐标系下的方向。
ix
- 类型:num
- 说明:用于表示关于x轴的惯性矩。单位为。
iy
- 类型:num
- 说明:用于表示关于y轴的惯性矩。单位为。
iz
- 类型:num
- 说明:用于表示关于z轴的惯性矩。单位为。
orient
说明
用于描述方向和旋转。该四元数包含实部w和虚部x,y,z。
数据项
w
- 类型:num
- 说明:用于表示四元数的实部。
x
- 类型:num
- 说明:用于表示四元素虚部第一项。
y
- 类型:num
- 说明:用于表示四元素虚部第二项。
z
- 类型:num
- 说明:用于表示四元素虚部第三项。
pos
说明
描述位置坐标(x, y, z)。
数据项
x
- 类型:num
- 说明:表示位置的x坐标。
y
- 类型:num
- 说明:表示位置的y坐标。
z
- 类型:num
- 说明:表示位置的z坐标。
pose
说明
表示坐标系位姿,用于描述一个坐标系相对于另一个坐标系的位移和旋转。
数据项
trans
- 类型:pos
- 说明:用于表示坐标系的位置。
rot
- 类型:orient
- 说明:用于表示坐标系的方向。
robjoint
说明
描述机械臂各关节的位置。
各关节的位置定义为各关节从标定位置旋转的角度。旋转方向符合右手定则。
数据项
rax_1
- 类型:num
- 说明:用于表示轴1相对于标定位置旋转的角度。
rax_2
- 类型:num
- 说明:用于表示轴2相对于标定位置旋转的角度。
rax_3
- 类型:num
- 说明:用于表示轴3相对于标定位置旋转的角度。
rax_4
- 类型:num
- 说明:用于表示轴4相对于标定位置旋转的角度。
rax_5
- 类型:num
- 说明:用于表示轴5相对于标定位置旋转的角度。
rax_6
- 类型:num
- 说明:用于表示轴6相对于标定位置旋转的角度。
jointtarget
说明
描述机械臂内部轴和外部轴的位置。是执行MoveAbsJ指令时机械臂内部轴和外部轴需要移动到的位置。
数据项
robax
- 类型:robjoint
- 说明:用于表示机机械臂内部轴的位置,该位置为相对于标定位置的旋转角度。
extax
- 类型:extjoint
- 说明:用于表示外部轴的位置。对于旋转轴,该位置为相对于标定位置的旋转角度。对于线性轴,该位置为相对于标定位置的距离。
robtarget
说明
描述表示机械臂和外部轴的目标位姿。包括目标点的位置、方向和机械臂到达目标点的构型。
数据项
trans
- 类型:pos
- 说明:用于表示TCP相对于工件坐标系的x, y, z坐标值,单位为mm。如果没有定义工件坐标系,则该位置是相对于机器人任务坐标系的。
rot
- 类型:orient
- 说明:用于表示Tool相对于工件坐标系的方向,使用四元数表示法。如果没有定义工件坐标系,则该方向是相对于机器人任务坐标系的。
robconf
- 类型:confdata
- 说明:用于表示机械臂的构型。详见数据confdata。
extax
- 类型:extjoint
- 说明:用于表示外部轴的位置。对于旋转轴,该位置为相对于标定位置旋转的角度。对于线性轴,该位置为相对于标定位置的距离。详见数据extjoint。
speeddata
说明
用于描述机械臂和外轴均开始移动时的速率。
速度数据包含TCP的移动速度、重定向的速度和外轴速度。不同速度类型之间会相互影响,以便所有运动同时停止。速度还会受到机械臂性能和运动路径的影响。
数据项
v_tcp
- 类型:num
- 说明:用于表示TCP的速度,单位为mm/s 。
v_ori
- 类型:num
- 说明:用于表示TCP转向的速度,单位为degrees/s 。
v_leax
- 类型:num
- 说明:用于表示外部线性轴的速度,单位为mm/s 。
v_reax
- 类型:num
- 说明:用于表示外部旋转轴的速度,单位为degrees/s 。
| Name | v_tcp(mm/s) | v_ori(°/s) | v_leax(mm/s) | v_reax(°/s) |
|---|---|---|---|---|
| v5 | 5 | 500 | 5000 | 1000 |
| v10 | 10 | 500 | 5000 | 1000 |
| v20 | 20 | 500 | 5000 | 1000 |
| v30 | 30 | 500 | 5000 | 1000 |
| v40 | 40 | 500 | 5000 | 1000 |
| v50 | 50 | 500 | 5000 | 1000 |
| v60 | 60 | 500 | 5000 | 1000 |
| v80 | 80 | 500 | 5000 | 1000 |
| v100 | 100 | 500 | 5000 | 1000 |
| v150 | 150 | 500 | 5000 | 1000 |
| v200 | 200 | 500 | 5000 | 1000 |
| v300 | 300 | 500 | 5000 | 1000 |
| v400 | 400 | 500 | 5000 | 1000 |
| v500 | 500 | 500 | 5000 | 1000 |
| v600 | 600 | 500 | 5000 | 1000 |
| v800 | 800 | 500 | 5000 | 1000 |
| v1000 | 1000 | 500 | 5000 | 1000 |
| v1500 | 1500 | 500 | 5000 | 1000 |
| v2000 | 2000 | 500 | 5000 | 1000 |
| v3000 | 3000 | 500 | 5000 | 1000 |
| v4000 | 4000 | 500 | 5000 | 1000 |
| v5000 | 5000 | 500 | 5000 | 1000 |
| v6000 | 6000 | 500 | 5000 | 1000 |
| v7000 | 7000 | 500 | 5000 | 1000 |
tooldata
说明
描述工具信息,包括工具中心点(TCP)的位姿和工具负载情况。
如果使用了固定工具,则工具数据首先定义该工具的位姿,然后描述机械臂移动夹具的负载。
工具中心点(TCP)表示工具上的点,该点在机械臂运动时能够满足编程路径和速度。
数据项
robhold
- 类型:bool
- 说明:描述工具是否由机器人持有。
- true: 工具由机器人持有,TCP坐标相对于机器人腕关节坐标系计算。
- false: 工具固定,TCP坐标相对于任务坐标系计算。
tframe
- 类型:pose
- 说明:用于表示工具坐标系和TCP点相对于机械臂腕关节坐标系(tool0)的位置和位姿。
如果定义的是固定工具,即robhold为false, 则tframe的定义相对于机器人任务坐标系。
tload
- 类型:loaddata
- 说明:用于表示负载信息。包括质量,质心位置,力矩和惯性矩等信息。详见数据loaddata。
wobjdata
说明
WorkObject data, 描述工件数据,用于计算工件坐标系。工件坐标系由3个坐标系复合而成:
- wobjdata所属的机器人任务坐标系
- 用户坐标系uframe,有2种可能:一种是由本数据所定义,另一种是由其他机械单元所定义。并且,本数据所定义的uframe的参照坐标系有2种,依赖于robhold.
- 物体坐标系oframe
工件坐标系的计算过程如下:
if ufprog == true:
if robhold == false:
使用uframe字段相对于任务坐标系计算用户坐标系
else:
使用uframe字段相对于机器人手腕计算用户坐标系
else:
根据ufmec获取用户坐标系
使用oframe相对于用户坐标系计算工件坐标系
数据项
robhold
- 类型:bool
- 说明:用于定义工件是否由机器人持有。robhold为false时,uframe相对于任务坐标系定义。robhold为true时, uframe相对于机器人手腕坐标系定义。
当配合使用的tooldata的robhold为false的时候,需要将wobjdata的robhold字段设置为true.
如果ufprog字段为false, 则robhold字段被忽略。
ufprog
- 类型:bool
- 说明:用于定义工件安装形式。
若为true, 表示工件是固定的,或者由本机器人持有,用户坐标系由uframe数据项定义。
若为false, 表示工件安装在移动装置上,工件的用户坐标系的数据来自于数据项ufmec所指定的机械单元。ufmec指定的机械装置需要由本机器人的控制器控制,作为外轴,或者是本控制器控制的另一个机械臂。uframe字段会被忽略。
ufmec
- 类型:string
- 说明:定义工装移动所使用的机械单元名称。仅当ufprog为false时本数据项有效。
uframe
- 类型:pose
- 说明:定义用户坐标系。仅当ufprog为true时,本数据项有效。
如果robhold为false, 则用户坐标系的定义相对于机器人的任务坐标系。如果robhold为true, 则用户坐标系的定义相对于机器人的手腕坐标系,即tool0.
oframe
- 类型:pose
- 说明:定义物体坐标系。物体坐标系相对于用户坐标系定义。
例子
tooldata和wobjdata需要配合来定义。有以下3种常见的配合情况。
工具装在机械臂上,工件固定
这是最常见的情况。数据的各个组件如下定义。
- tooldata.robhold: true
- tooldata.tframe: 相对于tool0定义
- wobjdata.robhold: false
- wobjdata.ufprog: true
- wobjdata.ufmec: 无须定义
- wobjdata.uframe: 相对于task frame定义
- wobjdata.oframe: 相对于uframe定义的
运动公式:uframe * oframe * robtarget = robot base frame * tool0 * tframe
工具固定,工件在运行程序的机械臂上
数据的各个组件如下定义。
- tooldata.robhold: false
- tooldata.tframe: 相对于task frame定义
- wobjdata.robhold: true
- wobjdata.ufprog: true
- wobjdata.ufmec: 无须定义
- wobjdata.uframe: 相对于tool0定义
- wobjdata.oframe: 相对于uframe定义
运动公式:robot base frame * tool0 * oframe * robtarget = tframe
工具装在机械臂上,工件由外轴控制运动
数据的各个组件如下定义。
- tooldata.robhold: true
- tooldata.tframe: 相对于wrist定义
- wobjdata.robhold: false
- wobjdata.ufprog: false
- wobjdata.ufmec: 持有工件的外轴机械装置
- wobjdata.uframe: 无须定义
- wobjdata.oframe: 相对于用户坐标系定义
运动公式:ufmec's frame * oframe * robtarget = robot base frame * tool0 * tframe
zonedata
说明
描述机械臂在一个编程位置的转向区域。编程位置有两种类型,分别是停止点(stop point)和飞跃点(fly-by point),如果是stop point,则表示机械臂和外部轴必须到达该位置,并且在到达该位置前不会执行下一条指令。如果是fly-by point,则机械臂不会到达该位置,而是在靠近该位置时开始转向,并且在机械臂到达转向区域前程序开始执行下一条指令。转向区域越大,转向越平滑,但转向区域半径不能超过编程位置与前后位置最近距离的1/3,如果超过该范围,机械臂会自动调整该区域大小。
转向区域根据TCP位置到编程位置的距离定义为两个区域,第一个为重新定向区域,称作extended zone,该区域半径为pzone_ori ,第二个为TCP路径区域,称作TCP zone,该区域半径为pzone_tcp。TCP zone大小要小于extended zone,意即TCP不能先于工具方向进入角路径,如果pzone_ori小于pzone_tcp,则会修改pzone_ori,使其与pzone_tcp相等。在TCP到达extended zone区域时开始重新定向但此时TCP继续向编程位置靠近,当TCP到达TCP zone时TCP转入角路径。
extended zone和TCP zone的大小会受到工具方向到编程位置方向的角度的影响,定义该角度值为zone_ori比如从p1到p2, 如果pzone_ori与p1和p2距离的比值大于zone_ori与p1和p2转角的比值,则会减小pzone_ori的值使比值相等。TCP进入角路径的位置也会受到zone_ori的影响,如果pzone_tcp与p1和p2距离的比值大于zone_ori与p1和p2转角的比值,则会减小pzone_tcp的值使比值相等。该现象称为区域缩小。意即,extended zone和TCP zone要保证工具方向转至指定的范围内才进入角路径开始转向。
下面是区域缩小的例子,路径从P1经过P2到P3,P1和P2的距离len为200mm,P1和P2的角度agl为50°,pzone_tcp = 60mm, pzone_ori = 90mm,zone_ori = 10°,
- pzone_tcp/len = 30%
- pzone_ori/len = 45%
- zone_ori/agl = 20%
则会调整pzone_tcp 和pzone_ori 的值,使比值都为20%。
数据项
finep
- 类型:bool
- 说明:用于表示编程位置是停止点(fine point)还是飞跃点(fly-by point)
true表示是fine point,程序在机械臂到达停止点之前不会继续执行。
false表示是fly-by point,程序在机械臂到达zone之前会继续执行100ms。
如果让机械臂到达某个位置执行夹取或其他动作,一般将该位置设置为fine point。
pzone_tcp
- 类型:num
- 说明:用于表示TCP zone半径,单位为mm。
pzone_ori
- 类型:num
- 说明:用于表示extern zone的半径,单位为mm。该值应小于编程位置与前后位置最近距离的1/3,大于pzone_tcp, 若该值过小则将其自动设置为与pzone_tcp 相等。
pzone_eax
- 类型:num
- 说明:带外部轴的extern zone半径,单位为mm。该值应小于编程位置与前后位置最近距离的1/3,大于pzone_tcp, 若该值过小则将其自动设置为与pzone_tcp相等。
zone_ori
- 类型:num
- 说明:用于表示重定向区域的大小,单位为degrees。如果机械臂夹持着工件,则该值表示工件旋转的角度。
zone_leax
- 类型:num
- 说明:带线性外轴的重定向区域大小,单位为mm。
zone_reax
- 类型:num
- 说明:带旋转外轴的重定向区域大小,单位为degrees 。
| Name | pzone_tcp(mm) | pzone_ori(mm) | pzone_eax(mm) | zone_ori(°) | zone_leax(mm) | zone_reax(°) |
|---|---|---|---|---|---|---|
| fine | 0 | 0 | 0 | 0 | 0 | 0 |
| z0 | 0.3 | 0.3 | 0.3 | 0.03 | 0.3 | 0.03 |
| z1 | 1 | 1 | 1 | 0.1 | 1 | 0.1 |
| z5 | 5 | 8 | 8 | 0.8 | 8 | 0.8 |
| z10 | 10 | 15 | 15 | 1.5 | 15 | 1.5 |
| z15 | 15 | 23 | 23 | 2.3 | 23 | 2.3 |
| z20 | 20 | 30 | 30 | 3.0 | 30 | 3.0 |
| z30 | 30 | 45 | 45 | 4.5 | 45 | 4.5 |
| z40 | 40 | 60 | 60 | 6.0 | 60 | 6.0 |
| z50 | 50 | 75 | 75 | 7.5 | 75 | 7.5 |
| z60 | 60 | 90 | 90 | 9.0 | 90 | 9.0 |
| z80 | 80 | 120 | 120 | 12 | 120 | 12 |
| z100 | 100 | 150 | 150 | 15 | 150 | 15 |
| z150 | 150 | 225 | 225 | 23 | 225 | 23 |
| z200 | 200 | 300 | 300 | 30 | 300 | 30 |