力功能程序的示例
下文介绍组合使用了几个力觉功能的一个简单操作的示例。
注意
此示例中所述的参数都是参阅值。
请注意,此示例使用相对稳定的参数,但操作可能不成功,或者动作在某些操作条件下可能会振动,并且可能需要调整参数。
此外,为了便于解释,此示例使用缓慢但稳定的参数。要加快操作速度,需要调整参数。
压装操作
下面介绍了一个程序示例,它将以目标力在恒定方向执行压装操作。
| 符号 | 说明 |
|---|---|
| a | 工具坐标 |
| b | 力觉坐标 |
该示例操作是将工件移动到接触位置上方10 [mm]的位置,并使用力控制功能以20 N的力朝工作台压装夹具末端抓取的工件。
同时,这里使用力觉触发器功能监视在操作过程中是否施加了过大的力(100 [N]或以上)。如果检测到过大的力,将导致发生错误。
若使用力觉动作限制功能,在动作中发生了意外动作(移动距离大于等于20[mm]),则机器人会判断因为工作台不存在,而发生异常并停止动作。
另外,在操作完成后,该示例使用力觉监视器功能测量力觉传感器值,并测量在操作过程中施加的最大力。
工具坐标系在夹具末端设定,夹具的正向是Tlz轴方向。
样例程序
Function PressSample_Main
Real rVar(8)
Integer iVar
Motor On
Go P0 '转到操作开始位置
PressSample_PropertySetting ' 设置属性
FSet FS1.Reset '重置力觉传感器
Trap 1, FT1 Call PressSample_EHandle ' 开始监视过大的力
FSet FM1.PeakForceClear, True, True, True, False, False, False, True, False
'开始计算峰值
Till FMR1 '设置当超出预期移动范围时的动作停止条件
FCKeep FC1 Till, 10 '力控制功能执行10秒
Print "Motion End"
FGet FM1.Forces, rVar() '获取力觉传感器值
Print "Force Fz:", rVar(FG_FZ), ", Fmag:", rVar(FG_FMAG)
FGet FM1.PeakForces, rVar() '获取峰值
Print "PeakForce Fz:", rVar(FG_FZ), ", Fmag:", rVar(FG_FMAG)
FGet FMR1.Triggered, iVar '获取动作限制的结果
If iVar = True Then '被限制时显示Overrun错误
Print "Overrun Error"
EndIf
Fend
Function PressSample_PropertySetting
FSet FCS1.Position, 0, 0, 30 '力觉坐标系的原点是Z30 mm位置
FSet FCS1.Orientation, FG_TOOL ' 方向与工具坐标系对齐
FSet FC1.CoordinateSystem, FCS1 '指定已定义的力觉坐标1
FSet FC1.Enabled, False, False, True, False, False, False
' 仅为Fz方向启用力控制功能。
FSet FC1.Fz_TargetForce, -20 ' 按压20 N
FSet FC1.Fz_Spring, 0 '虚拟弹性系数为0
FSet FC1.Fz_Damper, 10 '虚拟弹性系数为10
FSet FC1.Fz_Mass, 10 '虚拟弹性系数为10
FSet FT1.ForceSensor, 1 '指定力觉传感器1
FSet FT1.CoordinateSystem, FCS1 '指定已定义的力觉坐标1
FSet FT1.TriggerMode, FG_FORCE ' 监视力
FSet FT1.Fmag_Axes, FG_XYZ
FSet FT1.Enabled, False, False, False, False, False, False, True, False
' 仅启用Fmag
FSet FT1.Fmag_Polarity, FG_OUT ' 当超出阈值范围时触发器检测
FSet FT1.Fmag_Levels, 0, 100 ' Fmag的范围是0到100
FSet FM1.ForceSensor, 1 '指定力觉传感器1
FSet FM1.CoordinateSystem, FCS1 '指定已定义的力觉坐标1
FSet FMR1.TriggerMode, FG_REL_TOOL '指定工具相对模式
FSet FMR1.PosEnabled, False, False, True, False, False
'仅在Z方向有效
FSet FMR1.PosZ_Levels, -20, 20 'Z值范围为-20mm~20mm
FSet FMR1.PosZ_Polarity, FG_OUT ‘当超出阈值范围时限制有效
FSet FMR1.ForceSensor, 1 '指定力觉传感器1
FSet FMR1.CoordinateSystem, FCS1 '指定已定义的力觉坐标1
Fend
Function PressSample_EHandle
Real rVar(8)
FGet FM1.PeakForces, rVar() '获取峰值
Print "Error Handle"
Print "PeakForce Fz:", rVar(FG_FZ), ", Fmag:", rVar(FG_FMAG)
AbortMotion All '中止机器人动作,并将其置于错误状态
Fend
说明
- 执行PressSample_Main函数可将机器人移动到操作开始位置。
- 调用PressSample_PropertySetting并执行属性的设置。
但是,也可以提前在GUI的力觉编辑器中配置属性的设定。在此情况下,您不需要调用PressSample_PropertySetting。 - 设置力觉坐标对象。对于力觉坐标系,在示例中指定Z30 [mm]位置,以便在工具坐标系中指定工件边缘位置。方向与工具坐标系的方向相同。
- 设置力觉控制对象。将FCS1指定为要在其中执行力控制功能的坐标系。为目标力指定负值,因为压装操作在FZ的正向执行。设定虚拟弹性系数、虚拟阻尼系数和虚拟惯性系数。此示例在虚拟弹性系数中设定了“0”,因此机器人不具有虚拟“弹性”,并且会继续移动直到达到目标力为止。此外,这里为虚拟阻尼系数和虚拟惯性系数使用了稳定参数。要加快操作速度,请逐渐减小这些值以调整它们。但是,减小这些值会增加力过冲情况。
- 设置力觉触发器对象。指定要使用的力觉传感器编号,以及要在其中执行力觉触发器功能的坐标系。在TriggerMode属性中指定一个力,以监视过大的力。指定X、Y和Z,因为要监视的复合力使用所有轴(Fx到Fz)进行计算。为Fmag范围指定0到100 [N]以将过大的力设为100 [N],并进行配置以监视值是否超出该范围。
- 设置力监视器对象。指定要用于测量的力觉传感器编号和坐标系。
- 设置力觉动作限制对象。机器人会根据(a)和(b)的设定,沿工具坐标系的+Z方向移动。在本示例中,当移动距离超过20mm时,则将指定未检测到贴合对象的动作。在TriggerMode中指定工具相对模式,以检测工具坐标系中的移动距离。Enabled中仅使PosZ有效,以检测Z方向。Z方向的范围指定为-20~20[mm],设定监控是否超出此范围。
- 在使用力觉功能之前重置力觉传感器。
- 在Trap中指定力觉触发器对象,并执行力觉触发器功能。这样,将监视过大的力。
- 在Till条件中指定力觉动作限制对象。
- 计算在操作过程中施加的力的峰值。
- 执行力觉控制功能10秒。执行中若判断已达成Till条件中指定的力觉动作限制条件时,则中止动作。
- 获取并显示力觉传感器的当前值和峰值。在此示例中,仅显示值。这些值可用于认定操作是通过还是失败,还可用于使处理分叉。
- 获取力觉动作限制的结果。在本示例中,如果满足条件,则仅将错误显示为溢出可以执行恢复处理。
- 如果在操作过程中检测到过大的力,程序将中止,并且执行PressSample_EHandle函数的中断。该处理将获取并显示在操作过程中施加的力的峰值,同时机器人动作将中止,并进入错误状态。在此示例中,机器人已进入错误状态,但也可以在发生错误时执行重试等处理。
← 运动限制功能的SPEL+编程 教程 →