程序包 com.rokae.sdk.engine.imps

# 接口 IForceControlImp

所有已知实现类:
  `BaseForceControl`, `ForceControlModel`

public interface IForceControlImp

- ## 方法概要

  修饰符和类型
  方法
  说明
  `RobotResult`
  `fcInit(FrameType frame_type)`
  描述： 力控初始化
  `RobotResult`
  `fcMonitor(boolean enable)`
  描述： 启动/关闭力控模块保护监控。
  `RobotResult`
  `fcStart()`
  描述： 开始力控，fcInit()之后调用。
  `RobotResult`
  `fcStop()`
  描述： 停止力控
  `RobotResult`
  `pauseOverlay()`
  描述： 暂停搜索运动。
  `RobotResult`
  `restartOverlay()`
  描述： 重新开启暂停的搜索运动。
  `RobotResult`
  `setCartesianMaxVel(double[] velocity)`
  描述： 设置力控模式下, 机械臂末端相对基坐标系的最大速度
  `RobotResult`
  `setControlType(int type)`
  描述： 设置阻抗控制类型
  `RobotResult`
  `setForceCondition(double[] range, boolean isInside, double timeout)`
  描述： 设置与接触力有关的终止条件
  `RobotResult`
  `setJointMaxEnergy(double[] energy)`
  描述： 设置力控模式下轴最大动能。
  `RobotResult`
  `setJointMaxMomentum(double[] momentum)`
  描述： 设置力控模式下轴最大动量。
  `RobotResult`
  `setJointMaxVel(double[] velocity)`
  描述： 设置力控模式下的轴最大速度
  `RobotResult`
  `setLissajousOverlay(int plane, double amplify_one, double frequency_one, double amplify_two, double frequency_two, double phase_diff)`
  描述： 设置平面内的莉萨如搜索运动 设置阻抗控制类型为笛卡尔阻抗(即setControlType(1))之后, startOverlay()之前调用生效。
  `RobotResult`
  `setLoad(Load load)`
  描述： 设置力控模块使用的负载信息，fcStart()之后可调用。
  `RobotResult`
  `setPoseBoxCondition(Frame supervising_frame, double[] box, boolean isInside, double timeout)`
  描述： 设置与接触位置有关的终止条件
  `RobotResult`
  `setSineOverlay(int line_dir, double amplify, double frequency, double phase, double bias)`
  描述： 设置绕单轴旋转的正弦搜索运动。
  `RobotResult`
  `setTorqueCondition(double[] range, boolean isInside, double timeout)`
  描述： 设置与接触力矩有关的终止条件
  `RobotResult`
  `startOverlay()`
  描述： 开启搜索运动。
  `RobotResult`
  `stopOverlay()`
  描述： 停止搜索运动
  `RobotResult`
  `waitCondition()`
  激活前序设置的终止条件并等待，直到满足这些条件或者超时

- ## 方法详细资料

  - ### fcInit

    RobotResult fcInit(FrameType frame_type)
    描述： 力控初始化
    参数:
      `frame_type` - 力控坐标系。工具工件坐标系使用setToolset()设置的坐标系
    返回:
      RobotResult 结果

  - ### fcStart

    RobotResult fcStart()
    描述： 开始力控，fcInit()之后调用。 如需在力控模式下执行运动指令，fcStart()之后可执行。
    返回:
      RobotResult 结果

  - ### fcStop

    RobotResult fcStop()
    描述： 停止力控
    返回:
      RobotResult 结果

  - ### setControlType

    RobotResult setControlType(int type)
    描述： 设置阻抗控制类型
    参数:
      `type` - 0-关节阻抗 | 1-笛卡尔阻抗;
    返回:
      RobotResult 结果;

  - ### setLoad

    RobotResult setLoad(Load load)
    描述： 设置力控模块使用的负载信息，fcStart()之后可调用。
    参数:
      `load` - 负载
    返回:
      RobotResult 结果;

  - ### setSineOverlay

    RobotResult setSineOverlay(int line_dir, double amplify, double frequency, double phase, double bias)
    描述： 设置绕单轴旋转的正弦搜索运动。 设置阻抗控制类型为笛卡尔阻抗(即setControlType(1))之后, startOverlay()之前调用生效。 各机型的搜索运动幅值上限和搜索运动频率上限不同，请参考《xCore控制系统手册》 SetSineOverlay指令的说明。
    参数:
      `line_dir` - 搜索运动参考轴: 0 - X | 1 - Y | 2 - Z
      `amplify` - 搜索运动幅值, 单位Nm
      `frequency` - 搜索运动频率, 单位Hz
      `phase` - 搜索运动相位, 范围[0, PI], 单位弧度
      `bias` - 搜索运动偏置, 范围[0, 10], 单位Nm

  - ### setLissajousOverlay

    RobotResult setLissajousOverlay(int plane, double amplify_one, double frequency_one, double amplify_two, double frequency_two, double phase_diff)
    描述： 设置平面内的莉萨如搜索运动 设置阻抗控制类型为笛卡尔阻抗(即setControlType(1))之后, startOverlay()之前调用生效。
    参数:
      `plane` - 搜索运动参考平面: 0 - XY | 1 - XZ | 2 - YZ
      `amplify_one` - 搜索运动一方向幅值, 范围[0, 20], 单位Nm
      `frequency_one` - 搜索运动一方向频率, 范围[0, 5], 单位Hz
      `amplify_two` - 搜索运动二方向幅值, 范围[0, 20]单位Nm
      `frequency_two` - 搜索运动二方向频率, 范围[0, 5], 单位Hz
      `phase_diff` - 搜索运动两个方向相位偏差, 范围[0, PI], 单位弧度

  - ### startOverlay

    RobotResult startOverlay()
    描述： 开启搜索运动。fcStart()之后调用生效 搜索运动为前序设置的 setSineOverlay()或 setLissajousOverlay()的叠加

  - ### stopOverlay

    RobotResult stopOverlay()
    描述： 停止搜索运动

  - ### pauseOverlay

    RobotResult pauseOverlay()
    描述： 暂停搜索运动。startOverlay()之后调用生效

  - ### restartOverlay

    RobotResult restartOverlay()
    描述： 重新开启暂停的搜索运动。pauseOverlay()之后调用生效。

  - ### setForceCondition

    RobotResult setForceCondition(double[] range, boolean isInside, double timeout)
    描述： 设置与接触力有关的终止条件
    参数:
      `range` - 各方向上的力限制 { X_min, X_max, Y_min, Y_max, Z_min, Z_max }, 单位N。 设置下限时, 负值表示负方向上的最大值; 设置上限时, 负值表示负方向上的最小值。
      `isInside` - true - 超出限制条件时停止等待; false - 符合限制条件时停止等待
      `timeout` - 超时时间, 范围[1, 600], 单位秒

  - ### setTorqueCondition

    RobotResult setTorqueCondition(double[] range, boolean isInside, double timeout)
    描述： 设置与接触力矩有关的终止条件
    参数:
      `range` - 各方向上的力矩限制 { X_min, X_max, Y_min, Y_max, Z_min, Z_max }, 单位Nm。设置下限时, 负值表示负方向上的最大值; 设置上限时, 负值表示负方向上的最小值。
      `isInside` - true - 超出限制条件时停止等待; false - 符合限制条件时停止等待
      `timeout` - 超时时间, 范围[1, 600], 单位秒

  - ### setPoseBoxCondition

    RobotResult setPoseBoxCondition(Frame supervising_frame, double[] box, boolean isInside, double timeout)
    描述： 设置与接触位置有关的终止条件
    参数:
      `supervising_frame` - 长方体所在的参考坐标系, 相对于外部工件坐标系。外部工件坐标系是通过setToolset()设置的, toolset.ref
      `box` - 定义一个长方体 { X_start, X_end, Y_start, Y_end, Z_start, Z_end }, 单位米
      `isInside` - true - 超出限制条件时停止等待; false - 符合限制条件时停止等待
      `timeout` - 超时时间, 范围[1, 600], 单位秒

  - ### waitCondition

    RobotResult waitCondition()
    激活前序设置的终止条件并等待，直到满足这些条件或者超时

  - ### fcMonitor

    RobotResult fcMonitor(boolean enable)
    描述： 启动/关闭力控模块保护监控。 设置监控参数后，不立即生效，调用fcMonitor(true)后开始生效，并且一直保持，直到调用fcMotion(false)后结束。 结束后保护阈值恢复成默认值，即仍然会有保护效果，关闭监控后不再是用户设置的参数。
    参数:
      `enable` - true - 打开 | false - 关闭
    另请参阅:
      - `setJointMaxVel() setJointMaxMomentum() setJointMaxEnergy()`

  - ### setCartesianMaxVel

    RobotResult setCartesianMaxVel(double[] velocity)
    描述： 设置力控模式下, 机械臂末端相对基坐标系的最大速度
    参数:
      `velocity` - 依次为：X Y Z [m/s], A B C [rad/s], 范围 >=0

  - ### setJointMaxVel

    RobotResult setJointMaxVel(double[] velocity)
    描述： 设置力控模式下的轴最大速度
    参数:
      `velocity` - 轴速度 [rad/s]，范围 >=0

  - ### setJointMaxMomentum

    RobotResult setJointMaxMomentum(double[] momentum)
    描述： 设置力控模式下轴最大动量。 计算方式：F*t，可以理解为冲量，F为力矩传感器读数，t为控制周期，如果超过30个周期都超过动量阈值则触发保护
    参数:
      `momentum` - 轴动量 [N·s]，范围 >=0

  - ### setJointMaxEnergy

    RobotResult setJointMaxEnergy(double[] energy)
    描述： 设置力控模式下轴最大动能。 计算方式：F*v，可以理解为功率，F为力矩传感器读数，v为关节速度, 如果超过30个周期都超过动能阈值则触发保护
    参数:
      `energy` - 动能 [N·rad/s]，范围 >=0