![]() |
AUBO SDK
0.26.0
|
力控接口抽象类 更多...
#include <force_control.h>
Public 成员函数 | |
ForceControl () | |
virtual | ~ForceControl () |
int | fcEnable () |
使能力控。 fcEnable 被用于使能力控。 在力控被使能的同时, fcEnable 用于定义力控的坐标系,并调整力和力矩的阻尼。 如果在 fcEnable 中未指定坐标系, 则会创建一个默认的力控制坐标系,其方向与工作对象坐标系相同。 所有力控制监管功能都被 fcEnable 激活。 | |
int | fcDisable () |
失能力控。 fcDisable 被用于失能力控。 在成功失能力控之后,机器人将回到位置控制模式。 | |
bool | isFcEnabled () |
判断力控是否被使能 | |
int | setTargetForce (const std::vector< double > &feature, const std::vector< bool > &compliance, const std::vector< double > &wrench, const std::vector< double > &limits, TaskFrameType type=TaskFrameType::FRAME_FORCE) |
设置力控参考(目标)值 | |
int | setDynamicModel1 (const std::vector< double > &env_stiff, const std::vector< double > &damp_scale, const std::vector< double > &stiff_scale) |
设置力控动力学模型 | |
DynamicsModel | fcCalDynamicModel (const std::vector< double > &env_stiff, const std::vector< double > &damp_scale, const std::vector< double > &stiff_scale) |
计算力控动力学模型 | |
int | setDynamicModelSearch (const std::vector< double > &damp_scale, const std::vector< double > &stiff_scale) |
设置力控搜孔场景下的动力学模型 | |
int | setDynamicModelInsert (const std::vector< double > &damp_scale, const std::vector< double > &stiff_scale) |
设置力控插/拔孔场景下的动力学模型 | |
int | setDynamicModelContact (const std::vector< double > &env_stiff, const std::vector< double > &damp_scale, const std::vector< double > &stiff_scale) |
设置力控接触场景下的动力学模型 | |
int | setDynamicModel (const std::vector< double > &m, const std::vector< double > &d, const std::vector< double > &k) |
设置力控动力学模型 | |
int | fcSetSensorThresholds (const std::vector< double > &thresholds) |
设置力控阈值 | |
int | fcSetSensorLimits (const std::vector< double > &limits) |
设置力控最大受力限制 | |
std::vector< double > | getFcSensorThresholds () |
获取力控阈值 | |
std::vector< double > | getFcSensorLimits () |
获取最大力限制 | |
DynamicsModel | getDynamicModel () |
获取力控动力学模型 | |
int | setCondForce (const std::vector< double > &min, const std::vector< double > &max, bool outside, double timeout) |
设置力控终止条件:力,当测量的力在设置的范围之内,力控算法将保持运行,直到设置的条件不满足,力控将退出 | |
int | setCondOrient (const std::vector< double > &frame, double max_angle, double max_rot, bool outside, double timeout) |
设置力控终止条件:姿态,当测量的姿态在设置的范围之内,力控算法将保持运行,直到设置的条件不满足,力控将退出. | |
int | setCondPlane (const std::vector< double > &plane, double timeout) |
指定力控有效平面,x-y平面,z方向有效 | |
int | setCondCylinder (const std::vector< double > &axis, double radius, bool outside, double timeout) |
指定力控有效圆柱体,提供中心轴和圆柱半径,可以指定圆柱内部还是外部 | |
int | setCondSphere (const std::vector< double > ¢er, double radius, bool outside, double timeout) |
指定力控有效球体,提供球心和半径,可以指定球体内部还是外部 | |
int | setCondTcpSpeed (const std::vector< double > &min, const std::vector< double > &max, bool outside, double timeout) |
设置TCP速度的终止条件。该条件可通过调用FCCondWaitWhile指令激活, 在指定条件为真时,程序将等待并保持执行。这样可以使参考力、力矩和运动继续, 直到速度超出指定范围。 | |
int | setCondDistance (double distance, double timeout) |
力控终止条件-距离 | |
int | setCondAdvanced (const std::string &type, const std::vector< double > &args, double timeout) |
高级力控终止条件 | |
int | setCondActive () |
激活力控终止条件 | |
bool | isCondFullfiled () |
力控终止条件是否已经满足 | |
int | setSupvForce (const std::vector< double > &min, const std::vector< double > &max) |
setSupvForce 用于在力控中设置力监督。监督在通过 FCAct 指令激活力控时被激活。 | |
int | setSupvOrient (const std::vector< double > &frame, double max_angle, double max_rot, bool outside) |
setSupvOrient 用于设置工具姿态的监督条件。 当通过 FCAct 指令激活力控时,监督条件被激活。 | |
int | setSupvPosBox (const std::vector< double > &frame, const Box &box) |
setSupvPosBox 用于在力控中设置位置监督。监督在通过 FCAct 指令激活力控时被激活。 位置监督通过为TCP定义空间体积来设置。一旦激活,如果TCP超出该体积,监督将停止执行。 | |
int | setSupvPosCylinder (const std::vector< double > &frame, const Cylinder &cylinder) |
int | setSupvPosSphere (const std::vector< double > &frame, const Sphere &sphere) |
int | setSupvReoriSpeed (const std::vector< double > &speed_limit, bool outside, double timeout) |
setSupvReoriSpeed 用于在力控中设置重新定向速度监督。监督在通过 FCAct 指令激活力控时被激活。 | |
int | setSupvTcpSpeed (const std::vector< double > &speed_limit, bool outside, double timeout) |
setSupvTcpSpeed 用于在力控中设置TCP速度监督。监督在通过 FCAct 指令激活力控时被激活。 TCP速度监督通过定义工作对象坐标系各方向上的最小和最大速度限制来设置。 一旦激活,如果检测到过高的TCP速度值,监督将停止执行。 | |
int | setLpFilter (const std::vector< double > &cutoff_freq) |
设置低通滤波器 | |
int | resetLpFilter () |
重置低通滤波器 | |
int | speedChangeEnable (double ref_force) |
speedChangeEnable 用于激活 FC SpeedChange 功能,并设置期望的参考力和恢复行为。 当 FC SpeedChange 功能被激活时,机器人速度会根据测量信号与参考值的接近程度自动降低或提高。 | |
int | speedChangeDisable () |
停用 FC SpeedChange 功能。 | |
int | speedChangeTune (int speed_levels, double speed_ratio_min) |
speedChangeTune 用于将 FC SpeedChange 系统参数设置为新值。 | |
int | setDamping (const std::vector< double > &damping, double ramp_time) |
setDamping 用于在力控坐标系中调整阻尼。可调参数包括扭矩x方向到扭矩z方向的阻尼(见第255页)以及力x方向到力z方向的阻尼(见第254页)。 | |
int | resetDamping () |
重置阻尼参数 | |
int | softFloatEnable () |
启用软浮动功能。 | |
int | softFloatDisable () |
停用软浮动功能。 | |
bool | isSoftFloatEnabled () |
返回是否开启了软浮动 | |
int | setSoftFloatParams (bool joint_space, const std::vector< bool > &select, const std::vector< double > &stiff_percent, const std::vector< double > &stiff_damp_ratio, const std::vector< double > &force_threshold, const std::vector< double > &force_limit) |
设置软浮动参数 | |
int | toolContact (const std::vector< bool > &direction) |
检测工具和外部物体的接触 | |
std::vector< double > | getActualJointPositionsHistory (int steps) |
Protected 属性 | |
void * | d_ { nullptr } |
力控接口抽象类
在文件 force_control.h 第 91 行定义.
arcs::common_interface::ForceControl::ForceControl | ( | ) |
|
virtual |
DynamicsModel arcs::common_interface::ForceControl::fcCalDynamicModel | ( | const std::vector< double > & | env_stiff, |
const std::vector< double > & | damp_scale, | ||
const std::vector< double > & | stiff_scale | ||
) |
计算力控动力学模型
env_stiff | 环境刚度,表示为接触轴方向上的工件刚度,取值范围[0, 1],默认为0 |
damp_scale | 表征阻尼水平的参数,取值范围[0, 1],默认为0.5 |
stiff_scale | 表征软硬程度的参数,取值范围[0, 1],默认为0.5 |
int arcs::common_interface::ForceControl::fcDisable | ( | ) |
失能力控。 fcDisable 被用于失能力控。 在成功失能力控之后,机器人将回到位置控制模式。
int arcs::common_interface::ForceControl::fcEnable | ( | ) |
使能力控。 fcEnable 被用于使能力控。 在力控被使能的同时, fcEnable 用于定义力控的坐标系,并调整力和力矩的阻尼。 如果在 fcEnable 中未指定坐标系, 则会创建一个默认的力控制坐标系,其方向与工作对象坐标系相同。 所有力控制监管功能都被 fcEnable 激活。
int arcs::common_interface::ForceControl::fcSetSensorLimits | ( | const std::vector< double > & | limits | ) |
设置力控最大受力限制
limits | 力限制 |
int arcs::common_interface::ForceControl::fcSetSensorThresholds | ( | const std::vector< double > & | thresholds | ) |
设置力控阈值
thresholds | 力控阈值 |
std::vector< double > arcs::common_interface::ForceControl::getActualJointPositionsHistory | ( | int | steps | ) |
获取历史关节角度
根据给定的周期步数,从关节状态历史中回退指定数量的周期,获取当时的关节角度数据。
steps | 需要回退的周期数(单位:控制周期数),值越大表示获取越早的历史数据 |
DynamicsModel arcs::common_interface::ForceControl::getDynamicModel | ( | ) |
获取力控动力学模型
std::vector< double > arcs::common_interface::ForceControl::getFcSensorLimits | ( | ) |
获取最大力限制
std::vector< double > arcs::common_interface::ForceControl::getFcSensorThresholds | ( | ) |
获取力控阈值
bool arcs::common_interface::ForceControl::isCondFullfiled | ( | ) |
力控终止条件是否已经满足
bool arcs::common_interface::ForceControl::isFcEnabled | ( | ) |
判断力控是否被使能
bool arcs::common_interface::ForceControl::isSoftFloatEnabled | ( | ) |
返回是否开启了软浮动
int arcs::common_interface::ForceControl::resetDamping | ( | ) |
重置阻尼参数
int arcs::common_interface::ForceControl::resetLpFilter | ( | ) |
重置低通滤波器
int arcs::common_interface::ForceControl::setCondActive | ( | ) |
激活力控终止条件
int arcs::common_interface::ForceControl::setCondAdvanced | ( | const std::string & | type, |
const std::vector< double > & | args, | ||
double | timeout | ||
) |
高级力控终止条件
type | 类型 |
args | 参数 |
timeout | 超时时间 |
int arcs::common_interface::ForceControl::setCondCylinder | ( | const std::vector< double > & | axis, |
double | radius, | ||
bool | outside, | ||
double | timeout | ||
) |
指定力控有效圆柱体,提供中心轴和圆柱半径,可以指定圆柱内部还是外部
axis | |
radius | |
outside | |
timeout |
int arcs::common_interface::ForceControl::setCondDistance | ( | double | distance, |
double | timeout | ||
) |
力控终止条件-距离
distance | 距离 |
timeout | 超时时间 |
int arcs::common_interface::ForceControl::setCondForce | ( | const std::vector< double > & | min, |
const std::vector< double > & | max, | ||
bool | outside, | ||
double | timeout | ||
) |
设置力控终止条件:力,当测量的力在设置的范围之内,力控算法将保持运行,直到设置的条件不满足,力控将退出
The condition is lateractivated by calling the instruction FCCondWaitWhile, which will wait and hold the program execution while the specified condition is true. This allows the reference force, torque and movement to continue until the force is outside the specified limits.
A force condition is set up by defining minimum and maximum limits for the force in the directions of the force control coordinate system. Once activated with FCCondWaitWhile, the program execution will continue to wait while the measured force is within its specified limits.
It is possible to specify that the condition is fulfilled when the force is outside the specified limits instead. This is done by using the switch argument Outside. The condition on force is specified in the force control coordinate system. This coordinate system is setup by the user in the instruction FCAct.
min | 各方向最小的力/力矩 |
max | 各方向最大的力/力矩 |
outside | false 在设置条件的范围之内有效 true 在设置条件的范围之外有效 |
timeout | 时间限制,单位s(秒),从开始力控到达该时间时,不管是否满足力控终止条件,都会终止力控 |
int arcs::common_interface::ForceControl::setCondOrient | ( | const std::vector< double > & | frame, |
double | max_angle, | ||
double | max_rot, | ||
bool | outside, | ||
double | timeout | ||
) |
设置力控终止条件:姿态,当测量的姿态在设置的范围之内,力控算法将保持运行,直到设置的条件不满足,力控将退出.
setCondOrient is used to set up an end condition for the tool orientation. The condition is lateractivated by calling the instruction FCCondWaitWhile, which will wait and hold the program execution while the specified condition is true. This allows the reference force, torque and movement to continue until the orientation is outside the specified limits.
An orientation condition is set up by defining a maximum angle and a maximum rotation from a reference orientation. The reference orientation is either defined by the current z direction of the tool, or by specifying an orientation in relation to the z direction of the work object.
Once activated, the tool orientation must be within the limits (or outside, if the argument Outside is used).
frame | |
max_angle | |
max_rot | |
outside | |
timeout |
int arcs::common_interface::ForceControl::setCondPlane | ( | const std::vector< double > & | plane, |
double | timeout | ||
) |
指定力控有效平面,x-y平面,z方向有效
plane={A,B,C,D} | 平面表示方法 Ax +By +Cz + D = 0 其中,n = (A, B, C)是平面的法向量, D 是将平面平移到坐标原点所需距离(所以D=0时,平面过原点) |
timeout |
int arcs::common_interface::ForceControl::setCondSphere | ( | const std::vector< double > & | center, |
double | radius, | ||
bool | outside, | ||
double | timeout | ||
) |
指定力控有效球体,提供球心和半径,可以指定球体内部还是外部
center | |
radius | |
outside | |
timeout |
int arcs::common_interface::ForceControl::setCondTcpSpeed | ( | const std::vector< double > & | min, |
const std::vector< double > & | max, | ||
bool | outside, | ||
double | timeout | ||
) |
设置TCP速度的终止条件。该条件可通过调用FCCondWaitWhile指令激活, 在指定条件为真时,程序将等待并保持执行。这样可以使参考力、力矩和运动继续, 直到速度超出指定范围。
通过定义TCP在工作对象所有方向上的最小和最大速度限制来设置TCP速度条件。 一旦通过FCCondWaitWhile激活,程序将在测量速度处于指定范围内时继续等待。
也可以指定当速度超出指定范围时条件成立,通过使用outside参数实现。 TCP速度条件在工作对象坐标系中指定。
min | 最小速度 |
max | 最大速度 |
outside | 是否在范围外有效 |
timeout | 超时时间 |
int arcs::common_interface::ForceControl::setDamping | ( | const std::vector< double > & | damping, |
double | ramp_time | ||
) |
setDamping 用于在力控坐标系中调整阻尼。可调参数包括扭矩x方向到扭矩z方向的阻尼(见第255页)以及力x方向到力z方向的阻尼(见第254页)。
阻尼可以通过配置文件或FCAct指令设置。不同之处在于本指令可在力控激活时使用。FCSetDampingTune调整的是FCAct指令设置的实际值,而不是配置文件中的值。
damping | 阻尼参数 |
ramp_time | 斜坡时间 |
int arcs::common_interface::ForceControl::setDynamicModel | ( | const std::vector< double > & | m, |
const std::vector< double > & | d, | ||
const std::vector< double > & | k | ||
) |
设置力控动力学模型
m | 质量参数 |
d | 阻尼参数 |
k | 刚度参数 |
参数单位说明:
int arcs::common_interface::ForceControl::setDynamicModel1 | ( | const std::vector< double > & | env_stiff, |
const std::vector< double > & | damp_scale, | ||
const std::vector< double > & | stiff_scale | ||
) |
设置力控动力学模型
env_stiff | 环境刚度,表示为接触轴方向上的工件刚度,取值范围[0, 1],默认为0 |
damp_scale | 表征阻尼水平的参数,取值范围[0, 1],默认为0.5 |
stiff_scale | 表征软硬程度的参数,取值范围[0, 1],默认为0.5 |
int arcs::common_interface::ForceControl::setDynamicModelContact | ( | const std::vector< double > & | env_stiff, |
const std::vector< double > & | damp_scale, | ||
const std::vector< double > & | stiff_scale | ||
) |
设置力控接触场景下的动力学模型
env_stiff | 表征环境刚度的参数,取值范围[0, 1],默认为0 |
damp_scale | 表征阻尼水平的参数,取值范围[0, 1],默认为0.5 |
stiff_scale | 表征软硬程度的参数,取值范围[0, 1],默认为0.5 |
int arcs::common_interface::ForceControl::setDynamicModelInsert | ( | const std::vector< double > & | damp_scale, |
const std::vector< double > & | stiff_scale | ||
) |
设置力控插/拔孔场景下的动力学模型
damp_scale | 表征阻尼水平的参数,取值范围[0, 1],默认为0.5 |
stiff_scale | 表征软硬程度的参数,取值范围[0, 1],默认为0.5 |
int arcs::common_interface::ForceControl::setDynamicModelSearch | ( | const std::vector< double > & | damp_scale, |
const std::vector< double > & | stiff_scale | ||
) |
设置力控搜孔场景下的动力学模型
damp_scale | 表征阻尼水平的参数,取值范围[0, 1],默认为0.5 |
stiff_scale | 表征软硬程度的参数,取值范围[0, 1],默认为0.5 |
int arcs::common_interface::ForceControl::setLpFilter | ( | const std::vector< double > & | cutoff_freq | ) |
设置低通滤波器
— force frame filter: 过滤测量到的力/力矩 +++ force loop filter: 力控输出参考速度的滤波器
cutoff_freq | 截止频率 |
int arcs::common_interface::ForceControl::setSoftFloatParams | ( | bool | joint_space, |
const std::vector< bool > & | select, | ||
const std::vector< double > & | stiff_percent, | ||
const std::vector< double > & | stiff_damp_ratio, | ||
const std::vector< double > & | force_threshold, | ||
const std::vector< double > & | force_limit | ||
) |
设置软浮动参数
joint_softfloat | 是否在关节空间启用软浮动 |
select | 选择哪些自由度启用软浮动 |
stiff_percent | 刚度百分比 |
stiff_damp_ratio | 刚度阻尼比 |
force_threshold | 力阈值 |
force_limit | 力限制 |
int arcs::common_interface::ForceControl::setSupvForce | ( | const std::vector< double > & | min, |
const std::vector< double > & | max | ||
) |
setSupvForce 用于在力控中设置力监督。监督在通过 FCAct 指令激活力控时被激活。
力监督通过在力控坐标系的各个方向上定义最小和最大力限制来设置。 一旦激活,如果力超出允许的范围,监督将停止执行。力监督在力控坐标系中指定。 该坐标系由用户通过 FCAct 指令设置。
min | 最小力限制 |
max | 最大力限制 |
int arcs::common_interface::ForceControl::setSupvOrient | ( | const std::vector< double > & | frame, |
double | max_angle, | ||
double | max_rot, | ||
bool | outside | ||
) |
setSupvOrient 用于设置工具姿态的监督条件。 当通过 FCAct 指令激活力控时,监督条件被激活。
姿态监督通过定义相对于参考姿态的最大角度和最大旋转来设置。 参考姿态可以由工具当前的z方向定义,也可以通过指定相对于工作对象z方向的姿态来定义。
一旦激活,工具姿态必须在限制范围内,否则监督将停止执行。
frame | |
max_angle | |
max_rot | |
outside |
int arcs::common_interface::ForceControl::setSupvPosBox | ( | const std::vector< double > & | frame, |
const Box & | box | ||
) |
setSupvPosBox 用于在力控中设置位置监督。监督在通过 FCAct 指令激活力控时被激活。 位置监督通过为TCP定义空间体积来设置。一旦激活,如果TCP超出该体积,监督将停止执行。
frame | |
box |
int arcs::common_interface::ForceControl::setSupvPosCylinder | ( | const std::vector< double > & | frame, |
const Cylinder & | cylinder | ||
) |
frame | |
cylinder |
int arcs::common_interface::ForceControl::setSupvPosSphere | ( | const std::vector< double > & | frame, |
const Sphere & | sphere | ||
) |
frame | |
sphere |
int arcs::common_interface::ForceControl::setSupvReoriSpeed | ( | const std::vector< double > & | speed_limit, |
bool | outside, | ||
double | timeout | ||
) |
setSupvReoriSpeed 用于在力控中设置重新定向速度监督。监督在通过 FCAct 指令激活力控时被激活。
重新定向速度监督通过定义工作对象坐标系轴周围重新定向速度的最小和最大限制来设置。 一旦激活,如果重新定向速度的值过高,监督将停止执行。
有两种速度监督:FCSupvReoriSpeed 和 FCSupvTCPSpeed,后者在第199页的 FCSupvTCPSpeed 部分有描述。 可能需要两种监督,因为:
speed_limit | 速度限制 |
outside | 是否在范围外有效 |
timeout | 超时时间 |
int arcs::common_interface::ForceControl::setSupvTcpSpeed | ( | const std::vector< double > & | speed_limit, |
bool | outside, | ||
double | timeout | ||
) |
setSupvTcpSpeed 用于在力控中设置TCP速度监督。监督在通过 FCAct 指令激活力控时被激活。 TCP速度监督通过定义工作对象坐标系各方向上的最小和最大速度限制来设置。 一旦激活,如果检测到过高的TCP速度值,监督将停止执行。
有两种速度监督:FCSupvTCPSpeed 和 FCSupvReoriSpeed,后者在第197页的 FCSupvReoriSpeed 部分有描述。
可能需要两种监督,因为:
speed_limit | 速度限制 |
outside | 是否在范围外有效 |
timeout | 超时时间 |
int arcs::common_interface::ForceControl::setTargetForce | ( | const std::vector< double > & | feature, |
const std::vector< bool > & | compliance, | ||
const std::vector< double > & | wrench, | ||
const std::vector< double > & | limits, | ||
TaskFrameType | type = TaskFrameType::FRAME_FORCE |
||
) |
设置力控参考(目标)值
feature | 参考几何特征,用于生成力控参考坐标系 |
compliance | 柔性轴(方向)选择 |
wrench | 目标力/力矩 |
limits | 速度限制 |
type | 力控参考坐标系类型 |
使用说明:
int arcs::common_interface::ForceControl::softFloatDisable | ( | ) |
停用软浮动功能。
int arcs::common_interface::ForceControl::softFloatEnable | ( | ) |
启用软浮动功能。
int arcs::common_interface::ForceControl::speedChangeDisable | ( | ) |
停用 FC SpeedChange 功能。
int arcs::common_interface::ForceControl::speedChangeEnable | ( | double | ref_force | ) |
speedChangeEnable 用于激活 FC SpeedChange 功能,并设置期望的参考力和恢复行为。 当 FC SpeedChange 功能被激活时,机器人速度会根据测量信号与参考值的接近程度自动降低或提高。
ref_force | 参考力 |
int arcs::common_interface::ForceControl::speedChangeTune | ( | int | speed_levels, |
double | speed_ratio_min | ||
) |
speedChangeTune 用于将 FC SpeedChange 系统参数设置为新值。
speed_levels | 速度级别 |
speed_ratio_min | 最小速度比例 |
int arcs::common_interface::ForceControl::toolContact | ( | const std::vector< bool > & | direction | ) |
检测工具和外部物体的接触
direction | 预期的接触方向,如果所有的元素为0,表示检测所有方向的接触 |
|
protected |
在文件 force_control.h 第 2379 行定义.