| type | concept | |||||
|---|---|---|---|---|---|---|
| tags |
|
|||||
| status | complete | |||||
| summary | TSID 用任务空间逆动力学统一处理多任务和接触约束,是全身控制的重要方法页。 | |||||
| updated | 2026-10-06 | |||||
| sources |
|
TSID(Task Space Inverse Dynamics,任务空间逆动力学) 是一种典型的人形机器人全身控制方法,用来在满足动力学与接触约束的前提下,把任务空间目标转成可执行的关节加速度、力矩和接触力。
如果说 MPC / Centroidal Dynamics 在回答“机器人整体接下来该怎么动”,那 TSID 回答的就是:
这些目标具体怎么变成每个关节该出的力、该走的加速度,并且别把接触和平衡搞炸。
| 缩写 | 英文全称 | 简要说明 |
|---|---|---|
| TSID | Task-Space Inverse Dynamics | 任务空间逆动力学求解关节力矩的 WBC 实现 |
| MPC | Model Predictive Control | 滚动时域内优化控制序列的预测控制 |
| WBC | Whole-Body Control | 协调全身关节满足多任务/约束的控制基础设施 |
| IK | Inverse Kinematics | 满足末端/姿态约束求解关节角的运动学逆解 |
| CoM | Center of Mass | 质心,平衡与 locomotion 规划的核心状态量 |
| QP | Quadratic Programming | 将 WBC/控制问题写成二次规划的标准求解形式 |
| HQP | Hierarchical Quadratic Programming | 按优先级分层堆叠任务与约束的二次规划 |
| Locomotion | Robot Locomotion | 足式/人形等无轮移动能力的总称 |
| OCP | Optimal Control Problem | MPC 每步求解的有限时域最优控制问题 |
人形机器人控制最难的一步,不是写出一个漂亮的高层目标,而是把目标真正落到身体上。
比如你想同时做到:
- 躯干保持稳定
- 足端跟踪摆腿轨迹
- 手臂做动作
- 保持接触约束成立
- 关节力矩别超限
这些目标之间天然会冲突。
TSID 重要就在于:
- 它是 WBC(Whole-Body Control) 的代表性实现路线之一
- 它把任务空间目标、动力学约束、接触约束统一到一个优化框架里
- 它非常适合人形、双足、机械臂这类高自由度系统
- 它是“从规划参考到可执行全身控制”的关键落地点
一句话,TSID 是把“我想让机器人这样动”变成“机器人真的能这样发力”的桥。
TSID 要解决的问题本质上是:
给定若干任务目标和物理约束,求一个满足动力学的一致控制解。
输出通常包括:
- 关节加速度 ( \ddot{q} )
- 关节力矩 ( \tau )
- 接触力 ( f )
注意这和单纯 inverse kinematics 不一样。
- IK 只关心几何层怎么摆到目标位置
- TSID 关心动力学上能不能做到,以及力怎么出
常见任务包括:
- 躯干姿态跟踪
- 足端位置 / 姿态跟踪
- 手端轨迹跟踪
- CoM 跟踪
- 动量调节
- 关节姿态正则项
这些任务通常写成加速度层或力层目标,比如:
然后通过雅可比映射到广义坐标空间:
也就是说,任务空间目标最后都会落到对 ( \ddot{q} ) 的约束或代价上。
机器人动力学方程通常写成:
其中:
- ( M(q) ):质量矩阵
- ( h(q, \dot{q}) ):重力、科里奥利、离心项
- ( \tau ):关节力矩
- ( J_c ):接触雅可比
- ( f ):接触力
- ( S ):驱动选择矩阵
TSID 的核心不是“猜一个动作”,而是要求这个动作必须符合真实动力学。
如果脚在地上,就不能乱滑、乱飞。
典型接触约束包括:
- 接触点加速度为零
- 法向力非负
- 摩擦锥约束
- 接触力矩限制
比如静接触约束:
这保证接触点不会违反接触假设。
TSID 常见做法是写成一个带约束的 QP(Quadratic Programming)或分层 QP。
把多个任务写成加权最小二乘:
同时满足:
- 动力学等式约束
- 接触约束
- 力矩 / 加速度 / 接触力边界
这里 ( z ) 一般是联合决策变量,例如:
更经典的人形控制写法是优先级结构:
- 最高优先级:动力学与接触约束
- 次优先级:平衡 / 躯干 / 足端关键任务
- 再次优先级:手臂动作、姿态优化、正则项
这样能处理“任务冲突”的问题。
一句话就是:
先保命,再走路,再优雅。
TSID 不是和 WBC 并列的东西,它基本可以看作 WBC 的代表性实现方法之一。
关系大概是:
- WBC:更大的范畴,指全身协调控制思想
- TSID:WBC 中非常经典的一条动力学一致优化路线
所以在人形控制里你常会看到:
- WBC 框架
- TSID 求解器
- HQP controller
它们很多时候是在一个技术栈上说不同层级的东西。
这俩很容易混,但其实分工不同。
它关心:
- 质心怎么动
- 整体动量怎么演化
- 接触力大概怎么分布
它关心:
- 具体关节怎么加速
- 每个驱动器怎么出力
- 接触约束如何被精确满足
很常见的分层结构是:
Centroidal Planner / MPC
↓
给出 CoM / momentum / footstep / contact force reference
↓
TSID / WBC
↓
输出 joint acceleration / torque / contact force
这就是为什么你把 Centroidal Dynamics 写完后,下一页就该补 TSID,不然控制链条会断在中间。
- IK:只管几何位置是否能摆到
- TSID:管动力学、接触、力矩、任务冲突
- 传统 inverse dynamics 更像“给定加速度,求力矩”
- TSID 是“在多个任务和约束下,同时求一致的加速度、力矩、接触力”
所以 TSID 不是单条公式,而是一套任务化、约束化、优化化的 inverse dynamics 框架。
最常见:
- 躯干稳住
- 支撑脚保持接触
- 摆动脚跟踪轨迹
- CoM 跟踪参考
- 关节姿态做冗余优化
当机器人一边站着一边伸手操作时,TSID 很适合同时处理:
- 手端任务
- 身体姿态稳定
- 地面接触一致性
凡是有接触、有闭链、有多任务优先级的问题,TSID 都很强。
- 动力学一致,不是只看几何
- 能自然处理多任务与优先级
- 能显式加入接触和摩擦约束
- 很适合人形 / 足式 / 高自由度系统
- 能和 MPC、centroidal planner 自然分层结合
动力学模型、接触模型、状态估计如果不准,TSID 效果会明显掉。
高频控制下解 QP/HQP 是有计算压力的,尤其任务多、约束多时。
任务权重、优先级、阻尼、正则项都需要经验,不是写完就飞。
脚抬起、落地那一下最容易出幺蛾子,TSID 也得配合状态机、接触估计和过渡策略。
下面这段代码把 TSID 的最小味道抽出来:
- 先在任务空间定义一个期望加速度
- 再通过雅可比把任务落到广义加速度变量上
- 最后解一个最小二乘问题得到关节加速度命令
import numpy as np
J = np.array([[1.0, 0.5], [0.0, 1.0]])
Jdot_qdot = np.array([0.0, 0.0])
acc_task_des = np.array([0.2, -0.1])
qdd_star, *_ = np.linalg.lstsq(J, acc_task_des - Jdot_qdot, rcond=None)
print("joint acceleration command:", qdd_star)真实 TSID 会再加上:
- 动力学等式约束
M(q) qdd + h = S^T tau + J_c^T f - 接触约束
J_c qdd + Jdot_c qdot = 0 - 力矩边界、摩擦锥、任务优先级
- 原理:TSID 不是几何 IK,而是带动力学和接触约束的任务空间逆动力学
- 最小代码:你至少要能把
xdd*、J qdd + Jdot qdot这层关系写成一个小例子 - 局限性:一旦模型、接触状态、任务权重不准,TSID 就会从“优雅协调”迅速退化成“数学上能解、机器人上难用”
- Del Prete et al., Prioritized motion-force control of constrained fully-actuated robots: "Task Space Inverse Dynamics" — TSID 核心论文
- Saab et al., Dynamic whole-body motion generation under rigid contacts and other unilateral constraints — 约束下全身动作生成
- sources/papers/whole_body_control.md — TSID/HQP 相关论文 ingest 摘要
- TSID library — 开源实现
- TSID 仓库归档 — 步骤 2.5:已开源(BSD-2-Clause)
分层 QP(HQP)是 TSID 的核心求解机制——用优先级层次结构处理多任务冲突,保证高优先级任务精确满足。
TSID 是 WBC 最经典的实现路线之一,可以理解为”动力学一致的全身任务控制”。数学定义见 Task Space Inverse Dynamics (TSID) 形式化。
Centroidal Dynamics 常用来做上层平衡 / 动量 / 接触规划,TSID 负责把这些参考真正落成关节层控制。
在双足 locomotion 里,TSID 经常负责执行摆腿、稳躯干、保接触、跟踪 CoM 参考。
MPC 负责规划未来参考,TSID 负责在每个控制周期把这些参考变成动力学可行的低层动作。
见:Model Predictive Control (MPC)
如果你想沿着 TSID 继续往下挖,建议从这里进入:
- Del Prete et al., Prioritized motion-force control of constrained fully-actuated robots: “Task Space Inverse Dynamics”
- Saab et al., Dynamic whole-body motion generation under rigid contacts and other unilateral constraints
- TSID library: https://github.com/stack-of-tasks/tsid
TSID 是把任务空间目标、动力学约束、接触约束和力矩分配统一起来的全身控制方法,它是人形机器人控制从“想这么动”到“真能这么动”的关键落地点。