力控使用手册
一、主要参数介绍
力控主要阻抗控制参数:
- M(质量):影响机器人对环境产生的冲击运动,M 较大会导致轨迹误差较大,系统响应慢。
- D(阻尼):相当于摩擦,D 增大会减小响应力超调,导致响应变慢,能量消耗增大大。
- K(刚度):刚度参数决定了机器人在受力时的刚性程度,作用相当于弹簧,数值越大,弹力越大。
参数示例:
M = {30.0, 30.0, 30.0, 10.0, 10.0, 10.0} D = {1000, 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:拖动(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越小,拖动越轻。

实例 1 相关文件:
实例 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越大,弹簧越硬

实例 2 相关文件:
实例 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 的力,机械臂会向上运动

实例 3 相关文件:
实例 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 左右。

实例 4 相关文件:
实例 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(),机械臂停止运动。
图表显示:


实例 5 相关文件:
实例 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 的压力。
图片显示:


实例 6 相关文件
实例 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
实例 7 相关文件:
实例 8:绘制圆(circle)
实例说明:为直观展现力控效果,该实例分两段进行绘制直线。
- 第一段,Z 方向竖直下落到桌面,到达平衡状态。整个过程从“路点 2 > 路点 0 > target_pose > 力平衡点”。“路点2 > 路点 0 ”过程机械臂快速拉近距离,路点“0 > target_pose ”此路径为参考轨迹,为降低机械臂速度导致的冲击,target_pose 设置为桌面接触上 1mm 的位置,到达 target_pose 位置后,受目标力驱动继续下降,直到接触桌面达到力平衡状态,力平衡点无需单独设置。结束条件包括 运动超时、运动到位、运动到达稳态、力控超出最大力达到保护性停止。
- 第二段,以力平衡点为基准点,在基准点 Z 不变的情况下,设置另外两个参考点,这三个点构成一条圆的轨迹。将设置好的圆的参考轨迹给力控,根据力控反馈的力的值修正圆的轨迹,时刻保持在 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
实例 8 相关文件: