| xCore-SDK 0.7.0 xCore SDK C# API

Public 成员函数 | Protected 属性 | 所有成员列表
rokae::clr::ForceControl类 参考

力控指令 更多...

`#include <force_control_cli.hpp>`

## Public 成员函数
| ForceControl (rokae::ForceControl_T< 5 > *)
| ForceControl (rokae::ForceControl_T< 6 > *)
| ForceControl (rokae::ForceControl_T< 7 > *)
void | getEndTorque (FrameType ref_type, array< double >^% joint_torque_measured, array< double >^% external_torque_measured, array< double >^% cart_torque, array< double >^% cart_force, [Out] ErrorCode^% ec)
| 获取当前力矩信息 更多...
void | fcInit (FrameType type, [Out] ErrorCode^% ec)
| 力控初始化 更多...
void | fcStart ([Out] ErrorCode^% ec)
| 开始力控，fcInit()之后调用。 如需在力控模式下执行运动指令，fcStart()之后可执行。 注意，如果在fcStart()之前通过moveAppend()下发了运动指令但未开始运动，fcStart之后就会执行这些运动指令。 更多...
void | fcStop ([Out] ErrorCode^% ec)
| 停止力控 更多...
void | setControlType (int type, [Out] ErrorCode^% ec)
| 设置阻抗控制类型 更多...
void | setLoad (Load^ load, [Out] ErrorCode^% ec)
| 设置力控模块使用的负载信息，fcStart()之后可调用。 更多...
void | setJointStiffness (array< double >^ stiffness, [Out] ErrorCode^% ec)
| 设置关节阻抗刚度, fcInit()之后调用生效. 更多...
void | setCartesianStiffness (array< double >^ stiffness, [Out] ErrorCode^% ec)
| 设置笛卡尔阻抗刚度, fcInit()之后调用生效. 更多...
void | setCartesianNullspaceStiffness (double stiffness, [Out] ErrorCode^% ec)
| 设置笛卡尔零空间阻抗刚度。fcInit()之后调用生效 更多...
void | setJointDesiredTorque (array< double >^ torque, [Out] ErrorCode^% ec)
| 设置关节期望力矩。fcStart()之后可调用 更多...
void | setCartesianDesiredForce (array< double >^ value, [Out] ErrorCode^% ec)
| 设置笛卡尔期望力/力矩。fcStart()之后可调用 更多...
void | setSineOverlay (int line_dir, double amplify, double frequency, double phase, double bias, [Out] ErrorCode^% ec)
| 设置绕单轴旋转的正弦搜索运动。 设置阻抗控制类型为笛卡尔阻抗(即setControlType(1))之后, startOverlay()之前调用生效。 各机型的搜索运动幅值上限和搜索运动频率上限不同，请参考《xCore控制系统手册》 SetSineOverlay指令的说明。 更多...
void | setLissajousOverlay (int plane, double amplify_one, double frequency_one, double amplify_two, double frequency_two, double phase_diff, [Out] ErrorCode^% ec)
| 设置平面内的莉萨如搜索运动。 设置阻抗控制类型为笛卡尔阻抗(即setControlType(1))之后, startOverlay()之前调用生效。 更多...
void | startOverlay ([Out] ErrorCode^% ec)
| 开启搜索运动，fcStart()之后调用生效。 搜索运动为前序设置的 setSineOverlay()或 setLissajousOverlay()的叠加 更多...
void | stopOverlay ([Out] ErrorCode^% ec)
| 停止搜索运动 更多...
void | pauseOverlay ([Out] ErrorCode^% ec)
| 暂停搜索运动。startOverlay()之后调用生效 更多...
void | restartOverlay ([Out] ErrorCode^% ec)
| 重新开启暂停的搜索运动。pauseOverlay()之后调用生效。 更多...
void | setForceCondition (array< double >^ range, bool isInside, double timeout, [Out] ErrorCode^% ec)
| 设置与接触力有关的终止条件 更多...
void | setTorqueCondition (array< double >^ range, bool isInside, double timeout, [Out] ErrorCode^% ec)
| 设置与接触力矩有关的终止条件 更多...
void | setPoseBoxCondition (Frame^ supervising_frame, array< double >^ box, bool isInside, double timeout, [Out] ErrorCode^% ec)
| 设置与接触位置有关的终止条件 更多...
void | waitCondition ([Out] ErrorCode^% ec)
| 激活前序设置的终止条件并等待，直到满足这些条件或者超时 更多...
void | fcMonitor (bool enable, [Out] ErrorCode^% ec)
| 启动/关闭力控模块保护监控。 设置监控参数(setJointMaxVel, setJointMaxMomentum, setJointMaxEnergy, setCartesianMaxVel)后，不立即生效， 调用fcMonitor(true)后开始生效，并且一直保持，直到调用fcMotion(false)后结束。 结束后保护阈值恢复成默认值，即仍然会有保护效果，关闭监控后不再是用户设置的参数 更多...
void | setJointMaxVel (array< double >^ velocity, [Out] ErrorCode^% ec)
| 设置力控模式下的轴最大速度 更多...
void | setJointMaxMomentum (array< double >^ momentum, [Out] ErrorCode^% ec)
| 设置力控模式下轴最大动量。 计算方式：F* t，可以理解为冲量，F为力矩传感器读数，t为控制周期，如果超过30个周期都超过动量阈值则触发保护 更多...
void | setJointMaxEnergy (array< double >^ energy, [Out] ErrorCode^% ec)
| 设置力控模式下轴最大动能。 计算方式：F* v，可以理解为功率，F为力矩传感器读数，v为关节速度, 如果超过30个周期都超过动能阈值则触发保护 更多...
void | setCartesianMaxVel (array< double >^ velocity, [Out] ErrorCode^% ec)
| 设置力控模式下, 机械臂末端相对基坐标系的最大速度 更多...
void | setCartesianControlMaxWrench (array< double >^ max_wrench, [Out] ErrorCode^% ec)
| 阻抗力限幅指令 - 笛卡尔。fcStart()开始生效, fcStop后失效。 说明: 在部分力控装配场景，采用阻抗下运动，同时想限制末端出力，也起到一个末端力监控的作用。 更多...
void | setCartesianControlMaxVel (array< double >^ max_cart_vel, [Out] ErrorCode^% ec)
| 阻抗力限幅指令 - 笛卡尔。fcStart()开始生效, fcStop后失效。 说明: 以加期望力下压直到接触这个场景为例，一般是设置期望力的方式来实现。此接口可对该接触过程做限速处理。 更多...
void | setJointControlMaxTorque (array< double >^ max_torque, [Out] ErrorCode^% ec)
| 阻抗力限幅指令 - 关节。fcStart()开始生效, fcStop后失效。 说明: 在部分力控装配场景，采用阻抗下运动，同时想限制末端出力，也起到一个末端力监控的作用。 更多...
void | setJointControlMaxVel (array< double >^ max_joint_vel, [Out] ErrorCode^% ec)
| 阻抗速度限幅 - 关节。fcStart()开始生效, fcStop后失效。 说明: 以加期望力下压直到接触这个场景为例，一般是设置期望力的方式来实现。此接口可对该接触过程做限速处理。 更多...
void | setFcGain (array< double >^ gain, [Out] ErrorCode^% ec)
| 设置各轴力控带宽。fcStart()开始生效, fcStop后失效。 更多...
void | setFriction (array< double >^ fric, [Out] ErrorCode^% ec)
| 设置各轴摩擦力补偿系数。fcStart()开始生效, fcStop后失效。 更多...

## Protected 属性
rokae::ForceControl_T< 5 > * | fc_cr5
rokae::ForceControl_T< 6 > * | fc_xmate
rokae::ForceControl_T< 7 > * | fc_pro
const int | dof
rokae::BaseForceControl * | fc_base

## 详细描述

力控指令

在文件 force_control_cli.hpp 第 31 行定义.

## 成员函数说明

## ◆ fcInit()

void rokae::clr::ForceControl::fcInit | ( | FrameType | type,
|  | [Out] ErrorCode^% | ec
| ) |  |

力控初始化

参数

  type | 力控坐标系，支持world/wobj/tool/baseFrame/flange。工具工件坐标系使用setToolset()设置的坐标系
  ec | 错误码

## ◆ fcMonitor()

void rokae::clr::ForceControl::fcMonitor | ( | bool | enable,
|  | [Out] ErrorCode^% | ec
| ) |  |

启动/关闭力控模块保护监控。 设置监控参数(setJointMaxVel, setJointMaxMomentum, setJointMaxEnergy, setCartesianMaxVel)后，不立即生效， 调用fcMonitor(true)后开始生效，并且一直保持，直到调用fcMotion(false)后结束。 结束后保护阈值恢复成默认值，即仍然会有保护效果，关闭监控后不再是用户设置的参数

参数

  enable | true - 打开 | false - 关闭
  ec | 错误码

## ◆ fcStart()

void rokae::clr::ForceControl::fcStart | ( | [Out] ErrorCode^% | ec | ) |

开始力控，fcInit()之后调用。 如需在力控模式下执行运动指令，fcStart()之后可执行。 注意，如果在fcStart()之前通过moveAppend()下发了运动指令但未开始运动，fcStart之后就会执行这些运动指令。

参数

  ec | 错误码

## ◆ fcStop()

void rokae::clr::ForceControl::fcStop | ( | [Out] ErrorCode^% | ec | ) |

停止力控

参数

  ec | 错误码

## ◆ getEndTorque()

void rokae::clr::ForceControl::getEndTorque | ( | FrameType | ref_type,
|  | array< double >^% | joint_torque_measured,
|  | array< double >^% | external_torque_measured,
|  | array< double >^% | cart_torque,
|  | array< double >^% | cart_force,
|  | [Out] ErrorCode^% | ec
| ) |  |

获取当前力矩信息

参数

  ref_type | 力矩相对的参考系 FrameType::world末端相对世界坐标系的力矩信息 FrameType::flange末端相对于法兰盘的力矩信息 FrameType::tool末端相对于TCP点的力矩信息
  joint_torque_measured | 轴空间测量力信息,力传感器测量到的各轴所受力矩, 单位Nm
  external_torque_measured | 轴空间外部力信息，控制器根据机器人模型和测量力计算出的各轴所受力矩信息, 单位Nm
  cart_torque | 笛卡尔空间各个方向[X, Y, Z]受到的力矩, 单位Nm
  cart_force | 笛卡尔空间各个方向[X, Y, Z]受到的力, 单位N
  ec | 错误码

## ◆ pauseOverlay()

void rokae::clr::ForceControl::pauseOverlay | ( | [Out] ErrorCode^% | ec | ) |

暂停搜索运动。startOverlay()之后调用生效

参数

  ec | 错误码

## ◆ restartOverlay()

void rokae::clr::ForceControl::restartOverlay | ( | [Out] ErrorCode^% | ec | ) |

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

参数

  ec | 错误码

## ◆ setCartesianControlMaxVel()

void rokae::clr::ForceControl::setCartesianControlMaxVel | ( | array< double >^ | max_cart_vel,
|  | [Out] ErrorCode^% | ec
| ) |  |

阻抗力限幅指令 - 笛卡尔。fcStart()开始生效, fcStop后失效。 说明: 以加期望力下压直到接触这个场景为例，一般是设置期望力的方式来实现。此接口可对该接触过程做限速处理。

参数

  max_cart_vel | 范围 XYZ - [0, 3.0], 单位m/s, ABC - [0, 10.0], 单位rad/s, 默认设置最大值
  ec | 错误码

## ◆ setCartesianControlMaxWrench()

void rokae::clr::ForceControl::setCartesianControlMaxWrench | ( | array< double >^ | max_wrench,
|  | [Out] ErrorCode^% | ec
| ) |  |

阻抗力限幅指令 - 笛卡尔。fcStart()开始生效, fcStop后失效。 说明: 在部分力控装配场景，采用阻抗下运动，同时想限制末端出力，也起到一个末端力监控的作用。

参数

  max_wrench | 依次为：XYZ [N], ABC [Nm], 范围 [0, 1000], 默认设置最大值
  ec | 错误码

## ◆ setCartesianDesiredForce()

void rokae::clr::ForceControl::setCartesianDesiredForce | ( | array< double >^ | value,
|  | [Out] ErrorCode^% | ec
| ) |  |

设置笛卡尔期望力/力矩。fcStart()之后可调用

参数

  value | 依次为: X Y Z方向笛卡尔期望力, 范围[-60,60], 单位N; X Y Z方向笛卡尔期望力矩, 范围[-10,10], 单位Nm
  ec | 错误码

## ◆ setCartesianMaxVel()

void rokae::clr::ForceControl::setCartesianMaxVel | ( | array< double >^ | velocity,
|  | [Out] ErrorCode^% | ec
| ) |  |

设置力控模式下, 机械臂末端相对基坐标系的最大速度

参数

  velocity | 依次为：X Y Z [m/s], A B C [rad/s], 范围 >=0
  ec | 错误码

## ◆ setCartesianNullspaceStiffness()

void rokae::clr::ForceControl::setCartesianNullspaceStiffness | ( | double | stiffness,
|  | [Out] ErrorCode^% | ec
| ) |  |

设置笛卡尔零空间阻抗刚度。fcInit()之后调用生效

参数

  stiffness | 范围[0,4], 大于4会默认设置为4, 单位Nm/rad
  ec | 错误码

## ◆ setCartesianStiffness()

void rokae::clr::ForceControl::setCartesianStiffness | ( | array< double >^ | stiffness,
|  | [Out] ErrorCode^% | ec
| ) |  |

设置笛卡尔阻抗刚度, fcInit()之后调用生效.

各机型的最大刚度不同，请参考《xCore控制系统手册》 SetCartCtrlStiffVec指令的说明

参数

  stiffness | 依次为：X Y Z方向阻抗力刚度[N/m], X Y Z方向阻抗力矩刚度[Nm/rad]
  ec | 错误码

## ◆ setControlType()

void rokae::clr::ForceControl::setControlType | ( | int | type,
|  | [Out] ErrorCode^% | ec
| ) |  |

设置阻抗控制类型

参数

  type | 0 - 关节阻抗 | 1 - 笛卡尔阻抗
  ec | 错误码

## ◆ setFcGain()

void rokae::clr::ForceControl::setFcGain | ( | array< double >^ | gain,
|  | [Out] ErrorCode^% | ec
| ) |  |

设置各轴力控带宽。fcStart()开始生效, fcStop后失效。

参数

  gain | gain 各轴带宽, 范围 [0, 60], 各轴默认值20, 无单位
  ec | 错误码

## ◆ setForceCondition()

void rokae::clr::ForceControl::setForceCondition | ( | array< double >^ | range,
|  | bool | isInside,
|  | double | timeout,
|  | [Out] ErrorCode^% | ec
| ) |  |

设置与接触力有关的终止条件

参数

  range | 各方向上的力限制 { X_min, X_max, Y_min, Y_max, Z_min, Z_max }, 单位N。 设置下限时, 负值表示负方向上的最大值; 设置上限时, 负值表示负方向上的最小值。
  isInside | true - 超出限制条件时停止等待; false - 符合限制条件时停止等待
  timeout | 超时时间, 范围[1, 600], 单位秒
  ec | 错误码

## ◆ setFriction()

void rokae::clr::ForceControl::setFriction | ( | array< double >^ | fric,
|  | [Out] ErrorCode^% | ec
| ) |  |

设置各轴摩擦力补偿系数。fcStart()开始生效, fcStop后失效。

参数

  fric | 补偿系数, 范围 [0, 1], 各轴默认值0.9, 无单位
  ec | 错误码

## ◆ setJointControlMaxTorque()

void rokae::clr::ForceControl::setJointControlMaxTorque | ( | array< double >^ | max_torque,
|  | [Out] ErrorCode^% | ec
| ) |  |

阻抗力限幅指令 - 关节。fcStart()开始生效, fcStop后失效。 说明: 在部分力控装配场景，采用阻抗下运动，同时想限制末端出力，也起到一个末端力监控的作用。

参数

  max_torque | 力限幅, 单位：Nm, 范围 [0, 1000], 默认设置最大值
  ec | 错误码

## ◆ setJointControlMaxVel()

void rokae::clr::ForceControl::setJointControlMaxVel | ( | array< double >^ | max_joint_vel,
|  | [Out] ErrorCode^% | ec
| ) |  |

阻抗速度限幅 - 关节。fcStart()开始生效, fcStop后失效。 说明: 以加期望力下压直到接触这个场景为例，一般是设置期望力的方式来实现。此接口可对该接触过程做限速处理。

参数

  max_joint_vel | 关节速度最大值, 单位: rad/s, 范围 [0, 10.0], 默认设置最大值
  ec | 错误码

## ◆ setJointDesiredTorque()

void rokae::clr::ForceControl::setJointDesiredTorque | ( | array< double >^ | torque,
|  | [Out] ErrorCode^% | ec
| ) |  |

设置关节期望力矩。fcStart()之后可调用

参数

  torque | 力矩值, 范围[-30,30], 单位Nm
  ec | 错误码

## ◆ setJointMaxEnergy()

void rokae::clr::ForceControl::setJointMaxEnergy | ( | array< double >^ | energy,
|  | [Out] ErrorCode^% | ec
| ) |  |

设置力控模式下轴最大动能。 计算方式：F* v，可以理解为功率，F为力矩传感器读数，v为关节速度, 如果超过30个周期都超过动能阈值则触发保护

参数

  energy | 动能 [N·rad/s]，范围 >=0
  ec | 错误码

## ◆ setJointMaxMomentum()

void rokae::clr::ForceControl::setJointMaxMomentum | ( | array< double >^ | momentum,
|  | [Out] ErrorCode^% | ec
| ) |  |

设置力控模式下轴最大动量。 计算方式：F* t，可以理解为冲量，F为力矩传感器读数，t为控制周期，如果超过30个周期都超过动量阈值则触发保护

参数

  momentum | 动量 [N·s]，范围 >=0
  ec | 错误码

## ◆ setJointMaxVel()

void rokae::clr::ForceControl::setJointMaxVel | ( | array< double >^ | velocity,
|  | [Out] ErrorCode^% | ec
| ) |  |

设置力控模式下的轴最大速度

参数

  velocity | 轴速度 [rad/s]，范围 >=0
  ec | 错误码

## ◆ setJointStiffness()

void rokae::clr::ForceControl::setJointStiffness | ( | array< double >^ | stiffness,
|  | [Out] ErrorCode^% | ec
| ) |  |

设置关节阻抗刚度, fcInit()之后调用生效.

各机型的最大刚度不同，请参考《xCore控制系统手册》 SetJntCtrlStiffVec指令的说明

参数

  stiffness | 各轴刚度
  ec | 错误码

## ◆ setLissajousOverlay()

void rokae::clr::ForceControl::setLissajousOverlay | ( | int | plane,
|  | double | amplify_one,
|  | double | frequency_one,
|  | double | amplify_two,
|  | double | frequency_two,
|  | double | phase_diff,
|  | [Out] ErrorCode^% | ec
| ) |  |

设置平面内的莉萨如搜索运动。 设置阻抗控制类型为笛卡尔阻抗(即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], 单位弧度
  ec | 错误码

## ◆ setLoad()

void rokae::clr::ForceControl::setLoad | ( | Load^ | load,
|  | [Out] ErrorCode^% | ec
| ) |  |

设置力控模块使用的负载信息，fcStart()之后可调用。

参数

  load | 负载
  ec | 错误码

## ◆ setPoseBoxCondition()

void rokae::clr::ForceControl::setPoseBoxCondition | ( | Frame^ | supervising_frame,
|  | array< double >^ | box,
|  | bool | isInside,
|  | double | timeout,
|  | [Out] ErrorCode^% | ec
| ) |  |

设置与接触位置有关的终止条件

参数

  supervising_frame | 长方体所在的参考坐标系, 相对于外部工件坐标系。外部工件坐标系是通过setToolset()设置的, toolset.reference
  box | 定义一个长方体 { X_start, X_end, Y_start, Y_end, Z_start, Z_end }, 单位米
  isInside | true - 超出限制条件时停止等待; false - 符合限制条件时停止等待
  timeout | 超时时间, 范围[1, 600], 单位秒
  ec | 错误码

## ◆ setSineOverlay()

void rokae::clr::ForceControl::setSineOverlay | ( | int | line_dir,
|  | double | amplify,
|  | double | frequency,
|  | double | phase,
|  | double | bias,
|  | [Out] ErrorCode^% | ec
| ) |  |

设置绕单轴旋转的正弦搜索运动。 设置阻抗控制类型为笛卡尔阻抗(即setControlType(1))之后, startOverlay()之前调用生效。 各机型的搜索运动幅值上限和搜索运动频率上限不同，请参考《xCore控制系统手册》 SetSineOverlay指令的说明。

参数

  line_dir | 搜索运动参考轴: 0 - X | 1 - Y | 2 - Z
  amplify | 搜索运动幅值, 单位Nm
  frequency | 搜索运动频率, 单位Hz
  phase | 搜索运动相位, 范围[0, PI], 单位弧度
  bias | 搜索运动偏置, 范围[0, 10], 单位Nm
  ec | 错误码

## ◆ setTorqueCondition()

void rokae::clr::ForceControl::setTorqueCondition | ( | array< double >^ | range,
|  | bool | isInside,
|  | double | timeout,
|  | [Out] ErrorCode^% | ec
| ) |  |

设置与接触力矩有关的终止条件

参数

  range | 各方向上的力矩限制 { X_min, X_max, Y_min, Y_max, Z_min, Z_max }, 单位Nm。 设置下限时, 负值表示负方向上的最大值; 设置上限时, 负值表示负方向上的最小值。
  isInside | true - 超出限制条件时停止等待; false - 符合限制条件时停止等待
  timeout | 超时时间, 范围[1, 600], 单位秒
  ec | 错误码

## ◆ startOverlay()

void rokae::clr::ForceControl::startOverlay | ( | [Out] ErrorCode^% | ec | ) |

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

参数

  ec | 错误码

## ◆ stopOverlay()

void rokae::clr::ForceControl::stopOverlay | ( | [Out] ErrorCode^% | ec | ) |

停止搜索运动

参数

  ec | 错误码

## ◆ waitCondition()

void rokae::clr::ForceControl::waitCondition | ( | [Out] ErrorCode^% | ec | ) |

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

参数

  ec | 错误码

## 类成员变量说明

## ◆ dof

const int rokae::clr::ForceControl::dof
| protected

在文件 force_control_cli.hpp 第 37 行定义.

## ◆ fc_base

rokae::BaseForceControl* rokae::clr::ForceControl::fc_base
| protected

在文件 force_control_cli.hpp 第 38 行定义.

## ◆ fc_cr5

rokae::ForceControl_T<5>* rokae::clr::ForceControl::fc_cr5
| protected

在文件 force_control_cli.hpp 第 34 行定义.

## ◆ fc_pro

rokae::ForceControl_T<7>* rokae::clr::ForceControl::fc_pro
| protected

在文件 force_control_cli.hpp 第 36 行定义.

## ◆ fc_xmate

rokae::ForceControl_T<6>* rokae::clr::ForceControl::fc_xmate
| protected

在文件 force_control_cli.hpp 第 35 行定义.

该类的文档由以下文件生成:

- force_control_cli.hpp