一、主要参数介绍
力控主要阻抗控制参数:
•M(质量):影响机器人对环境产生的冲击运动,M大会导致轨迹误差较大,系统响应慢。
•D(阻尼):相当于摩擦,D越大会减小响应力超调,响应慢,能量消耗大。
•K(刚度):刚度参数决定了机器人在受力时的刚性程度,作用相当于弹簧,数值越大,弹力越大。
•目标力( goal_force ):力控设备达到力平衡状态下所受到的力。
M = {30.0, 30.0, 30.0, 10.0, 10.0, 10.0}
D = {1000.0, 1000.0, 1000.0, 100.0, 100.0, 100.0}
K = {1000, 1000.0, 0, 100.0, 100.0, 100.0}
二、脚本实例
| 实例 | 参数 | 描述 |
|---|---|---|
| 实例1 | K=0,goal_force=0 | 演示 拖动 效果,拖动后保持,不会回原位 |
| 实例2 | K>0,goal_force=0 | 演示 弹簧 效果,拖动松开后回到原位 |
| 实例3 | K=0,D=100,goal_force=-5 | 在 实例1 条件下,只单独添加目标力,机械臂会受目标力影响,一直朝着能满足目标力平衡的方向移动,施加外力与目标力达到平衡后停止运动 |
| 实例4 | K=500,D=100,goal_force=-5 | 在 实例2 条件下,只单独添加目标力,机械臂受目标力影响移动一段距离,但是弹簧状态会给机械臂反弹的力,当弹簧的力与目标力达成平衡后静止,随后保持 弹簧 状态 |
| 实例5 | Move(Y400-->Y500),K=100,D=100,goal_force=0 | 在 实例2 条件下,修改运动方向,机械臂全程处于 弹簧 状态,在朝着Move方向移动时,施加Z方向外力后,机械臂会在弹簧力作用下,回到原来Z的位置,Move结束后,仍处于 弹簧 状态。 |
| 实例6 | Move(Y400-->Y500),K=100,D=100,goal_force=-1 | 在 实例6 条件下,机械臂全程处于 弹簧 状态,在朝着Move方向移动时,受目标力影响,Z方向会朝着使目标力平衡的方向移动一段距离,当弹簧的力与目标力平衡后,Z方向停止运动,机械臂处于 弹簧 状态。Move结束后,机械臂Z在目标位置之下。 |
| 实例7 | 第一段 Z方向运动达到稳定状态,设置参考轨迹,参考轨迹终点在接触桌面上方大约1mm处,利用 实例6 力引导效果,达到平衡状态。 第二段 以第一段平衡状态点作为基准点,沿着Y方向移动100mm绘制直线,力控会在力引导情况下一直保持1N的力完成直线绘制 |
|
| 实例8 | 第一段 Z方向运动达到稳定状态,设置参考轨迹,参考轨迹终点在接触桌面上方大约1mm处,利用 实例6 力引导效果,达到平衡状态。 第二段 以第一段平衡状态点作为基准点,通过设置相同高度的另外两点,绘制圆,绘制过程中,力引导会根据实际力反馈下进行调整,完成圆形绘制。 |
- 当 K 为0时,不设置目标力,机械臂会处于一个 拖动 效果
当 K 大于0时,不设置目标力,会出现 弹簧 效果,K 越大,弹簧越硬。
当 K 为0,且设置了 D 和 目标力 的情况下,会出现 力引导 的情况,即不受外力作用下,机械臂持续 运动,速度与力成正比,与阻尼成反比,直到受到反方向的力与 目标力 达成 平衡。
当 K 不为0,且设置了 D 和 目标力 的情况下,机械臂会下落一段距离,后停止并保持 弹簧 状态。对抗下落所需的力等于设置的 目标力。
如果存在 Move ,在 Move 完成之后继续完成上述四点动作。
注:
所有脚本力控开启方向为Z,设置的 K 和 D 值均在 Z 方向上
初始位姿pose_z = 400、pose_y=400
Move速度为v = 10
1. 实例1、拖动(drag)
实例说明 :当 K 为0时,不设置目标力,机械臂会处于一个 拖动 效果,即给末端施加外力,机械臂会朝着力的方向移动,不会回到原位。
参数设置 如下:
M = {30.0, 30.0, 30.0, 10.0, 10.0, 10.0}
D = {1000.0, 1000.0, 100.0, 100.0, 100.0, 100.0}
K = {1000, 1000.0, 0, 100.0, 100.0, 100.0}
goal_force = 0
情况描述:
演示力控 拖动 效果,拖动后保持,不会回位
D 越小,拖动越轻

[info] 实例1相关文件
2. 实例2、弹簧(spring)
实例说明 :当 K 不为0时,不设置目标力,会出现 弹簧 效果,K 越大,弹簧越硬,即越远离当前位置,所需的力就越大,撤去外力后,机械臂会回到原位。
参数设置 如下:
M = {30.0, 30.0, 30.0, 10.0, 10.0, 10.0}
D = {1000.0, 1000.0, 100.0, 100.0, 100.0, 100.0}
K = {1000, 1000.0, 100, 100.0, 100.0, 100.0}
goal_force = 0
情况描述:
演示力控 弹簧 效果,拖动松开后回回位
K 越大,弹簧越硬

[info] 实例2相关文件
3. 实例3、设置目标力的拖动(guide)
实例说明 :在 实例1 演示的 拖动 中增加目标力-5N,机械臂会受目标力影响,一直朝着能使目标力平衡的方向移动,直到受到相等的外力使机械臂达到平衡状态,机械臂停止运动。该实例中,目标力为-5N,机械臂向下运动,直到给工具向上5N的外力使之达到平衡状态。
参数设置 如下:
M = {30.0, 30.0, 30.0, 10.0, 10.0, 10.0}
D = {1000.0, 1000.0, 100.0, 100.0, 100.0, 100.0}
K = {1000, 1000.0, 0, 100.0, 100.0, 100.0}
goal_force = -5
情况描述:
- 不施加外力,机械臂一直向下运动
- 施加 5N 的力可使机械臂维持不动,如果施加大于5N的力,机械臂会向上运动

[info] 实例3相关文件
4. 实例4、设置目标力的弹簧(spring2)
实例说明 :在 实例2 演示的 弹簧 中增加目标力-5N,机械臂会受目标力影响,朝着能使目标力平衡的方向移动,不同于 实例3 中受相等的外力达到平稳状态,弹簧 状态下末端移动距离会产生反方向的力,与设置的目标力达到平衡后,机械臂处于一个新的 弹簧 状态。
参数设置 如下:
M = {30.0, 30.0, 30.0, 10.0, 10.0, 10.0}
D = {1000.0, 1000.0, 100.0, 100.0, 100.0, 100.0}
K = {1000, 1000.0, 500, 100.0, 100.0, 100.0}
goal_force = -5
情况描述:
不施加力,机械臂运动到 390 左右停下,然后处在 弹簧 状态
施加外力,使 pose_z 维持到 400,所需的力 为 5N 左右

[info] 实例4相关文件
5. 实例5、设置Y+参考轨迹的弹簧(soft_y_line)
实例说明 :在 实例2 演示的 弹簧 中添加 参考轨迹 ,沿着Y+方向移动100mm。机械臂全程处于 弹簧 状态,在朝着Y+方向移动时,施加Z方向外力后,机械臂会在弹簧力作用下,回到原来Z的位置,Move结束后,仍处于 弹簧 状态。
参数设置 如下:
M = {30.0, 30.0, 30.0, 10.0, 10.0, 10.0}
D = {1000.0, 1000.0, 100, 100.0, 100.0, 100.0}
K = {1000, 1000.0, 100, 100.0, 100.0, 100.0}
goal_force = 0
情况描述:
- 不施加外力:机械臂从 y400 运动至 y500,且从 z400 -> z386,然后处于弹簧状态
- 设置了最大力条件,力超过最大限制,满足 isCondFullfiled(),机械臂停止运动
图表 显示


[info] 实例5相关文件
6. 实例6、设置Y+参考轨迹与目标力的弹簧(force_y_line)
实例说明 :在 实例5 演示的 弹簧 中添加 目标力 。机械臂全程处于 弹簧 状态,在朝着Move方向移动时,机械臂受目标力影响,Z方向会朝着使目标力平衡的方向移动,当弹簧的力与目标力平衡后,Z方向停止运动。Move结束后,机械臂Z在目标力之下。
参数设置 如下:
M = {30.0, 30.0, 30.0, 10.0, 10.0, 10.0}
D = {1000.0, 1000.0, 100, 100.0, 100.0, 100.0}
K = {1000, 1000.0, 100, 100.0, 100.0, 100.0}
goal_force = -1
情况描述:
- 不施加外力:机械臂从 y400 运动至 y500,且从 z400 -> z386,然后处于 弹簧 状态
- 如果z400位于桌面上,开启力控,机械臂从 y400 -> y500,并且给桌面持续施加约 1N 的压力
图表 显示


[info] 实例6相关文件
7. 实例7、绘制直线(line)
实例说明 :为直观展现力控效果,该实例分两段进行绘制直线。
第一段,Z方向竖直下落到桌面,到达平衡状态。整个过程从路点2->路点0->target_pose->力平衡点。路点2->路点0过程机械臂快速拉近距离,路点0->target_pose此路径为参考轨迹,为降低机械臂速度导致的冲击,target_pose设置为桌面接触上1mm的位置,到达target_pose位置后,受目标力驱动继续下降,直到接触桌面达到力平衡状态,力平衡点无需单独设置。结束条件包括 运动超时、运动到位、运动到达稳态、力控超出最大力达到保护性停止。
第二段,以力平衡点为基准点,在基准点往Y+移动100mm绘制直线,力控状态作用于整个绘制过程,时刻保持在1N左右直到直线绘制完成。结束条件包括 运动超时、运动到位、力控超出最大力达到保护性停止。
第一段 参数设置 如下:
M = {30.0, 30.0, 10.0, 10.0, 10.0, 10.0}
D = {1000.0, 1000.0, 600, 100.0, 100.0, 100.0}
K = {1000, 1000.0, 0, 100.0, 100.0, 100.0}
goal_force = 1


第二段 参数设置 如下:
M = {30.0, 30.0, 10.0, 10.0, 10.0, 10.0}
D = {1000.0, 1000.0, 600, 100.0, 100.0, 100.0}
K = {1000, 1000.0, 0, 100.0, 100.0, 100.0}
goal_force = 1

[info] 实例6相关文件
8. 实例8、绘制圆(circle)
第一段,Z方向竖直下落到桌面,到达平衡状态。整个过程从路点2->路点0->target_pose->力平衡点。路点2->路点0过程机械臂快速拉近距离,路点0->target_pose此路径为参考轨迹,为降低机械臂速度导致的冲击,target_pose设置为桌面接触上1mm的位置,到达target_pose位置后,受目标力驱动继续下降,直到接触桌面达到力平衡状态,力平衡点无需单独设置。结束条件包括 运动超时、运动到位、运动到达稳态、力控超出最大力达到保护性停止,同 实例7。
第二段,以力平衡点为基准点,在基准点Z不变的情况下,设置另外两个参考点,这三个点构成一条圆的轨迹。将设置好的圆的参考轨迹给力控,根据力控反馈的力的值修正圆的轨迹,时刻保持在1N左右直到圆形绘制完成。结束条件包括 运动超时、运动到位、力控超出最大力达到保护性停止,同 实例7。
第一段 参数设置 如下:
M = {30.0, 30.0, 10.0, 10.0, 10.0, 10.0}
D = {1000.0, 1000.0, 600, 100.0, 100.0, 100.0}
K = {1000, 1000.0, 0, 100.0, 100.0, 100.0}
goal_force = 1

第二段 参数设置 如下:
M = {30.0, 30.0, 10.0, 10.0, 10.0, 10.0}
D = {1000.0, 1000.0, 600, 100.0, 100.0, 100.0}
K = {1000, 1000.0, 0, 100.0, 100.0, 100.0}
goal_force = 1

[info] 实例6相关文件