
官方示例https://sdurobotics.gitlab.io/ur_rtde/examples/examples.html#forcemode-exampleAPI说明https://sdurobotics.gitlab.io/ur_rtde/api/api.html#_CPPv4N7ur_rtde20RTDEControlInterface9forceModeERKNSt6vectorIdEERKNSt6vectorIiEERKNSt6vectorIdEEiRKNSt6vectorIdEE目录1.API解释forceMode - 进入并配置力控模式forceModeStop - 退出力控模式forceModeSetDamping - 配置力控阻尼系数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.使用示例// 1. 配置力控参数进入力控前先设置阻尼和增益robot.forceModeSetDamping(0.1);// 设阻尼0.1打磨场景robot.forceModeSetGainScaling(0.8);// 设增益缩放0.8硬接触// 2. 定义力控参数std::vectordoubletask_frame{0.5,0.2,0.4,0,0,0};// 任务帧位置(0.5,0.2,0.4)姿态与基系一致std::vectorintselection_vector{0,0,1,0,0,0};// 仅Z轴柔顺力控std::vectordoublewrench{0,0,10,0,0,0};// Z轴施加10N向下的力inttype2;// 任务帧固定不变std::vectordoublelimits{0,0,0.03,0,0,0};// Z轴最大速度0.03m/s// 3. 进入力控模式boolsuccessrobot.forceMode(task_frame,selection_vector,wrench,type,limits);if(success){// 4. 力控执行如保持5秒sleep(5);// 5. 退出力控模式robot.forceModeStop();}