1. 力矩控制概述

各位同学,欢迎来到《从零开始力矩控制入门》。我是你们这门课的老司机。今天咱们先不急着写代码、调参数,先把一个最根本的问题搞清楚——什么是力矩控制。

说实话,我刚开始接触机器人那会儿,满脑子都是位置控制。让电机转到某个角度,让机械臂走到某个点,这不就完了吗?后来被现实狠狠教育了几次,才明白事情没那么简单。

什么是力矩控制

力矩控制,说白了就是直接控制电机输出的力或扭矩。你给控制器一个目标力矩值,它就让电机输出对应的力,而不是死盯着位置或速度不放。

举个例子。你用手去推一扇门,如果门很重,你会不自觉地加大力气。这就是力矩控制的本能——根据外界阻力调整出力大小。而位置控制呢?它不管门有多重,非要推到指定位置,结果可能就是电机过载报警,或者把门框撞坏。

核心概念:力矩控制 = 力/扭矩作为被控量,位置和速度是跟随结果,不是目标。

我习惯用一个比喻来理解:位置控制像是一个固执的导航,非要你走某条路;力矩控制则像是一个灵活的司机,知道什么时候该踩油门,什么时候该松一松。

为什么需要力矩控制

你可能会问:位置控制用了这么多年,不是也挺好的吗?为什么要搞力矩控制?

嗯,这里有几个场景,你感受一下。

  • 人机协作:机器人要和人在同一个空间工作。如果它只知道死守位置,人一碰它,它反而会加大力气对抗,这多危险。力矩控制能让机器人“柔顺”起来,碰到人就退让。
  • 精密装配:把轴插进孔里,位置控制很难做到。稍微偏一点就卡死。力矩控制可以感知接触力,自动调整姿态,像人手一样“摸着”装进去。
  • 力控打磨/抛光:打磨一个曲面,位置控制会让砂轮压得太紧或太松。力矩控制能保持恒定的接触力,表面质量才稳定。
  • 拖动示教:你用手拽着机器人走一遍轨迹,它记住路径。这背后就是力矩控制——机器人感知到你施加的外力,然后顺着你的方向运动。

我在项目里遇到过最典型的案例,是一个六轴机器人抓取易碎品。用位置控制,夹爪要么夹不紧,要么把东西捏碎。换成力矩控制后,设定一个合适的夹持力,不管工件尺寸有微小偏差,都能稳稳抓住。这就是力矩控制不可替代的地方。

力矩控制与位置/速度控制的区别

这三种控制方式,本质上是对电机输出量的不同选择。我整理了一个对比表,你一看就明白。

控制方式 被控量 反馈量 典型应用 对外界扰动的反应
位置控制 位置/角度 编码器位置 点焊、搬运、码垛 刚性抵抗,误差大时可能失控
速度控制 速度/角速度 编码器速度 传送带跟踪、恒速运动 速度波动,但能恢复
力矩控制 力矩/力 电流/力矩传感器 力控装配、打磨、人机协作 顺应外力,保持出力恒定

说白了,位置控制关心“你在哪”,速度控制关心“你多快”,力矩控制关心“你用了多大力”。这三者不是互斥的,实际应用中经常组合使用。

一个小技巧:很多商用机器人驱动器都支持“位置-力矩”混合模式。比如在自由空间用位置控制,接触工件后自动切换成力矩控制。这种切换逻辑,我建议你在设计初期就规划好,不然后期改起来很痛苦。

三种控制方式的关系

它们之间不是孤立的。你想想看,电机输出的力矩,决定了加速度;加速度积分得到速度;速度积分得到位置。所以力矩是底层,位置和速度是上层。

我画了一张图,帮你理清这个层级关系。

力矩控制 vs 位置/速度控制 — 层级关系 位置控制(外环) 目标:到达指定位置 速度控制(中环) 目标:达到指定速度 力矩控制(内环) 目标:输出指定力矩 关键理解 • 力矩是底层基础 • 速度由力矩积分得到 • 位置由速度积分得到 • 外环输出作为内环 的参考输入 • 力矩控制响应最快 • 位置控制响应最慢 • 实际系统常嵌套使用 响应慢 ↓ 响应快

从这张图你能看到,位置控制在最外层,速度控制在中层,力矩控制在最内层。外环的输出(比如位置误差)会变成内环的参考输入。这就是经典的级联控制结构。

注意:千万不要以为力矩控制就是“不用管位置了”。实际系统中,力矩控制通常和位置/速度控制嵌套使用。我曾经见过一个新手,直接开力矩模式让机械臂自由运动,结果手臂甩出去撞到了旁边的设备。力矩控制需要配合限位、安全逻辑一起使用。

什么时候该用力矩控制?

我个人的经验是,判断标准很简单:如果任务中力和位置都重要,或者力比位置更重要,那就该用力矩控制。

举个例子:

  • 拧螺丝:位置控制能拧到指定角度,但可能拧不紧或拧滑丝。力矩控制能保证拧到指定扭矩,这才是关键。
  • 抓鸡蛋:位置控制要么抓不住,要么抓碎。力矩控制能保持恒定夹持力,刚刚好。
  • 曲面跟踪:位置控制需要精确的曲面模型,稍有偏差就出问题。力矩控制可以“摸着”曲面走,自适应能力强。

反过来,如果任务对位置精度要求极高,而且环境是固定的(比如点焊、点胶),那位置控制可能更简单、更稳定。没必要为了用而用。

避坑指南

最后分享几个我踩过的坑,你提前知道,能省不少时间。

  • 传感器噪声:力矩信号比位置信号噪声大得多。我刚开始做力控时,没做滤波,结果系统一直在抖。后来加了低通滤波才稳定下来。
  • 带宽限制:力矩控制的内环带宽比位置控制高,但受限于电流环和机械谐振。别指望力矩控制能像位置控制一样“指哪打哪”。
  • 重力补偿:机械臂本身就有自重。如果不做重力补偿,你设定的力矩有一部分被重力吃掉了。我习惯在初始化时做一次重力辨识,把自重补偿掉。
  • 安全限幅:力矩控制模式下,电机可能输出很大的力。一定要设置力矩上限,不然撞到硬限位时,后果很严重。