UR5e力控测试

官方示例https://sdurobotics.gitlab.io/ur_rtde/examples/examples.html#forcemode-example

API说明https://sdurobotics.gitlab.io/ur_rtde/api/api.html#_CPPv4N7ur_rtde20RTDEControlInterface9forceModeERKNSt6vectorIdEERKNSt6vectorIiEERKNSt6vectorIdEEiRKNSt6vectorIdEE

目录

  • 1.API解释
    • [forceMode - 进入并配置力控模式](#forceMode - 进入并配置力控模式)
    • [forceModeStop - 退出力控模式](#forceModeStop - 退出力控模式)
    • [forceModeSetDamping - 配置力控阻尼系数](#forceModeSetDamping - 配置力控阻尼系数)
    • [forceModeSetGainScaling - 配置力控增益缩放](#forceModeSetGainScaling - 配置力控增益缩放)
  • 2.使用示例

1.API解释

这四个 API 是工业机械臂力控模式(Force Mode) 的核心接口,主要用于让机械臂在指定坐标系下对环境施加可控的力 / 力矩,而非单纯的位置控制(如示教器的点到点运动)。这类接口广泛应用于装配、打磨、插拔、抓取等需要与环境物理交互的场景。

forceMode - 进入并配置力控模式

  • 函数功能:让机械臂进入力控模式,指定 "力控的参考坐标系、哪些轴允许柔顺运动、要施加的目标力 / 力矩、坐标系变换规则、运动限制",是力控模式的核心配置入口。返回bool表示配置是否成功(true= 成功,false= 参数非法 / 机械臂状态异常)。
  • 参数说明

  • 典型使用场景
    装配:让 Z 轴柔顺,施加 5N 的向下力,将轴套压入轴承;
    打磨:让 X/Y 轴刚性(保持打磨路径),Z 轴柔顺(施加恒定打磨力)。

forceModeStop - 退出力控模式

  • 核心功能
    终止力控模式,将机械臂恢复到默认的位置 / 速度控制模式(如正常的 MoveJ/MoveL 运动)。返回bool表示退出是否成功。
  • 关键说明
    必须显式调用:若未调用,机械臂会一直保持力控模式,即使完成力控任务也不会自动退出;
    紧急场景:机械臂碰撞、力控异常时,调用该接口可快速恢复位置控制,避免危险;
    退出后:机械臂会停止当前力控运动,保持当前 TCP 位置(或按程序继续执行后续位置指令)。

forceModeSetDamping - 配置力控阻尼系数

  • 核心功能

    设置力控模式下的阻尼系数,控制机械臂在柔顺轴上的 "运动缓冲特性"------ 阻尼越高,机械臂在无外力时减速越快,运动越 "稳重";阻尼越低,运动越 "顺滑"(但可能震荡)。返回bool表示配置是否成功。

  • 参数详解

  • 调参建议

    打磨 / 抛光:阻尼设为0.1~0.3(避免机械臂因接触面振动而震荡);

    软接触装配:阻尼设为0.01~0.05(保证运动柔顺,避免压坏工件)。

forceModeSetGainScaling - 配置力控增益缩放

  • 核心功能

    缩放力控模式的 "力控增益"------ 增益越高,机械臂对 "实际力与目标力的偏差" 响应越灵敏(调整位置的速度越快);增益过低则响应迟钝,过高易导致不稳定(如碰撞时抖动)。返回bool表示配置是否成功。

  • 参数详解

  • 调参建议

    硬表面推紧(如金属工件装配):缩放系数设为0.5~0.8(避免因响应过快导致碰撞);

    软材质接触(如泡沫 / 橡胶):缩放系数设为1.0~1.2(保证力控精度);

    禁止设为>1.5:大概率导致机械臂抖动、力控不稳定,甚至触发安全保护。

2.使用示例

cpp 复制代码
// 1. 配置力控参数(进入力控前先设置阻尼和增益)
robot.forceModeSetDamping(0.1);          // 设阻尼0.1(打磨场景)
robot.forceModeSetGainScaling(0.8);      // 设增益缩放0.8(硬接触)

// 2. 定义力控参数
std::vector<double> task_frame = {0.5, 0.2, 0.4, 0, 0, 0};  // 任务帧位置(0.5,0.2,0.4),姿态与基系一致
std::vector<int> selection_vector = {0,0,1,0,0,0};          // 仅Z轴柔顺(力控)
std::vector<double> wrench = {0,0,10,0,0,0};                // Z轴施加10N向下的力
int type = 2;                                               // 任务帧固定不变
std::vector<double> limits = {0,0,0.03,0,0,0};              // Z轴最大速度0.03m/s

// 3. 进入力控模式
bool success = robot.forceMode(task_frame, selection_vector, wrench, type, limits);
if (success) {
    // 4. 力控执行(如保持5秒)
    sleep(5);
    // 5. 退出力控模式
    robot.forceModeStop();
}
相关推荐
cnbestec2 个月前
2026 力触觉大会:触觉数据支撑机器人 AI 新发展
manus·gelsight·ur·flexoo·uskin·tesollo·contactile
飞舞哲3 个月前
Coppeliasim基于视觉识别与路径插值的UR机械臂彩色物块自动分拣系统
matlab·视觉检测·coppeliasim·ur·分拣
旖-旎3 个月前
链表(两两交换链表中的节点)(2)
数据结构·c++·学习·算法·链表·力控
DC...4 个月前
【力控】混合位置 / 力控制
算法·机器人·力控
cnbestec7 个月前
UR开放直接扭矩控制:为协作机器人高级控制算法研究打开新路径
ur机械臂·ur机器人·ur协作机器人·ur·优傲·直接扭矩控制
boss-dog7 个月前
UR robot ROS2 Driver 快速入门使用
机械臂·ros2·urdf·moveit2·ur