一、主要参数介绍

力控主要阻抗控制参数:

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相关文件

drag.pro

drag.lua

init.lua

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相关文件

spring.pro

spring.lua

init.lua

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相关文件

guide.pro

guide.lua

init.lua

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相关文件

spring2.pro

spring2.lua

init.lua

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相关文件

soft_y_line.pro

soft_y_line.lua

init.lua

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相关文件

force_soft_y_line.pro

force_soft_y_line.lua

init.lua

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相关文件

line.pro

line.lua

init.lua

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相关文件

circle.pro

circle.lua

init.lua

Aubo Robotics all right reserved,powered by Gitbook文件修订时间: 2025-02-18 13:11:07

results matching ""

    No results matching ""