本章深入探讨机器人灵巧操作的核心技术,从单手的精细操作到双臂协调控制。我们将分析如何通过手内操作实现物体的精确控制,探讨灵巧手的运动学建模与接触力优化,介绍操作图在复杂任务规划中的应用,详细对比双臂系统的控制策略,深入研究柔顺装配的力控制技术,以及机器人工具使用的认知架构。这些技术构成了下一代智能机器人执行复杂操作任务的基础。
手内操作(In-hand Manipulation)是指在不失去抓取的情况下,通过手指运动改变物体在手中的位姿。这种能力对于精细操作任务至关重要。
操作分类:
运动学约束:
设物体位姿为 $\mathbf{x}_o \in SE(3)$,第 $i$ 个接触点的位置为 $\mathbf{p}_i$,接触法向为 $\mathbf{n}_i$,则滚动约束为:
\[\mathbf{v}_{o,i} + \boldsymbol{\omega}_o \times \mathbf{r}_i = \mathbf{J}_i(\mathbf{q}) \dot{\mathbf{q}}\]其中 $\mathbf{r}_i = \mathbf{p}_i - \mathbf{x}_o$ 是接触点相对物体质心的位置。
手内操作涉及离散的接触模式切换,需要混合系统建模:
状态空间 = {滚动, 滑动, 分离, 冲击}
模式转换条件:
| 滚动→滑动:切向力超过摩擦锥 $ | \mathbf{f}_t | > \mu | \mathbf{f}_n | $ |
重抓取(Regrasping)通过一系列抓取配置的切换来实现大范围的物体重定向。
图搜索方法:
转换可行性判断:
可行转换需满足:
1. 力闭合维持
2. 无碰撞路径存在
3. 关节限位满足
虚拟物体框架:
将物体动力学与手指动力学耦合:
\[\begin{bmatrix} \mathbf{M}_o & 0 \\ 0 & \mathbf{M}_h \end{bmatrix} \begin{bmatrix} \ddot{\mathbf{x}}_o \\ \ddot{\mathbf{q}} \end{bmatrix} + \begin{bmatrix} \mathbf{c}_o \\ \mathbf{c}_h \end{bmatrix} = \begin{bmatrix} \mathbf{G}^T \\ -\mathbf{J}^T \end{bmatrix} \mathbf{f}_c + \begin{bmatrix} 0 \\ \boldsymbol{\tau} \end{bmatrix}\]其中 $\mathbf{G}$ 是抓取矩阵,$\mathbf{f}_c$ 是接触力。
现代灵巧手通常采用拟人化设计,如Shadow Hand(20 DOF)、Allegro Hand(16 DOF)。
指链运动学:
每个手指可视为串联机械臂,采用DH参数或PoE表示。对于第 $i$ 个手指:
\[\mathbf{T}_i = \prod_{j=1}^{n_i} \exp(\hat{\boldsymbol{\xi}}_{ij} \theta_{ij}) \mathbf{T}_{i,0}\]工作空间分析:
灵巧工作空间 $W_d$ 定义为所有手指都能到达的空间:
\[W_d = \bigcap_{i=1}^{n_f} W_i\]可达工作空间 $W_r$ 为至少一个手指能到达的空间:
\[W_r = \bigcup_{i=1}^{n_f} W_i\]点接触模型分类:
接触约束方程:
对于软手指模型,单个接触的扳手空间:
\[\mathbf{W}_i = \begin{bmatrix} \mathbf{I}_3 & 0 \\ [\mathbf{r}_i]_\times & \mathbf{n}_i \end{bmatrix}\]其中 $[\mathbf{r}i]\times$ 是反对称矩阵。
力闭合条件:
抓取矩阵 $\mathbf{G} = [\mathbf{W}_1, \mathbf{W}_2, …, \mathbf{W}_k]$ 满足:
\[\text{rank}(\mathbf{G}) = 6 \quad \text{且} \quad \exists \mathbf{f}_c > 0: \mathbf{G}\mathbf{f}_c = 0\]形闭合判定:
使用凸包测试:原点在接触扳手凸包内部。
\[\mathbf{0} \in \text{ConvexHull}(\{\pm\mathbf{w}_1, \pm\mathbf{w}_2, ..., \pm\mathbf{w}_k\})\]最小内力优化:
\[\begin{align} \min_{\mathbf{f}_c} \quad & ||\mathbf{f}_c||^2 \\ \text{s.t.} \quad & \mathbf{G}\mathbf{f}_c = \mathbf{w}_{ext} \\ & \mathbf{f}_{n,i} \geq f_{min} \\ & ||\mathbf{f}_{t,i}|| \leq \mu_i \mathbf{f}_{n,i} \end{align}\]可转化为二次锥规划(SOCP)求解。
操作图(Manipulation Graph)是一种离散化的任务空间表示,用于复杂操作序列规划。
图结构定义:
\[\mathcal{M} = (\mathcal{S}, \mathcal{A}, \mathcal{T}, \mathcal{C})\]操作原语库:
基础原语 = {
Pick(obj, grasp_pose)
Place(obj, target_pose)
Push(obj, direction, distance)
Rotate(obj, axis, angle)
Insert(obj1, obj2, tolerance)
}
任务分解示例:
装配任务 → [拾取零件A, 对准孔位, 插入, 拾取零件B, 装配B到A]
PDDL表示:
(:action pick
:parameters (?obj - object ?grasp - grasp_pose)
:precondition (and
(clear ?obj)
(hand-empty)
(stable-grasp ?obj ?grasp))
:effect (and
(holding ?obj)
(not (hand-empty))
(not (at-pose ?obj))))
几何可行性验证:
每个符号动作需要底层几何验证:
执行监控与异常处理:
监控指标 = {
位姿偏差: ||x_actual - x_planned||
力偏差: ||f_actual - f_expected||
时间超限: t > t_max
}
触发重规划条件:
运动学耦合:
双臂系统总自由度 = 左臂DOF + 右臂DOF + 基座DOF
对于共同操作物体:
\[\begin{bmatrix} \mathbf{v}_L \\ \mathbf{v}_R \end{bmatrix} = \begin{bmatrix} \mathbf{J}_L & 0 \\ 0 & \mathbf{J}_R \end{bmatrix} \begin{bmatrix} \dot{\mathbf{q}}_L \\ \dot{\mathbf{q}}_R \end{bmatrix}\]约束条件:$\mathbf{v}L = \mathbf{v}_R + \boldsymbol{\omega} \times \mathbf{r}{LR}$
位置主从控制:
从臂目标 = 变换(主臂位姿, 相对关系)
力反馈双向控制:
\[\begin{align} \boldsymbol{\tau}_{master} &= \mathbf{J}_m^T(\mathbf{K}_p \Delta\mathbf{x} + \mathbf{K}_f \mathbf{f}_{slave}) \\ \boldsymbol{\tau}_{slave} &= \mathbf{J}_s^T(\mathbf{K}_p \Delta\mathbf{x} - \mathbf{K}_f \mathbf{f}_{master}) \end{align}\]虚拟物体控制:
将双臂看作操作同一虚拟物体:
\[\begin{bmatrix} \mathbf{f}_L \\ \mathbf{f}_R \end{bmatrix} = \begin{bmatrix} \mathbf{G}_L^T \\ \mathbf{G}_R^T \end{bmatrix}^+ \mathbf{w}_{desired} + \mathbf{N} \boldsymbol{\lambda}\]其中 $\mathbf{N}$ 是零空间投影,$\boldsymbol{\lambda}$ 是内力。
负载分配优化:
\[\begin{align} \min \quad & \alpha ||\mathbf{f}_L||^2 + (1-\alpha)||\mathbf{f}_R||^2 \\ \text{s.t.} \quad & \mathbf{f}_L + \mathbf{f}_R = \mathbf{f}_{total} \\ & \boldsymbol{\tau}_L \times \mathbf{f}_L + \boldsymbol{\tau}_R \times \mathbf{f}_R = \mathbf{M}_{total} \end{align}\]时间同步:
同步策略 = {
硬同步: 等待最慢臂
软同步: 时间窗口内协调
异步: 独立执行+关键点同步
}
碰撞避免:
使用胶囊体(Capsule)近似,距离计算:
\[d_{ij} = ||\mathbf{p}_i - \mathbf{p}_j|| - (r_i + r_j)\]排斥速度:
\[\mathbf{v}_{rep} = k_{rep} \cdot \max(0, d_{safe} - d_{ij}) \cdot \frac{\mathbf{p}_j - \mathbf{p}_i}{||\mathbf{p}_j - \mathbf{p}_i||}\]典型装配误差源:
接触状态分类:
插孔状态 = {
无接触
单点接触
线接触
双点接触
楔入(Wedging)
卡阻(Jamming)
成功插入
}
远程柔顺中心(RCC):
设计柔顺中心位于插入轴线上,使接触力自动产生对准力矩:
\[\mathbf{M} = \mathbf{K}_\theta (\boldsymbol{\theta}_d - \boldsymbol{\theta}) = \mathbf{r} \times \mathbf{f}_c\]弹性矩阵设计:
\[\mathbf{K} = \begin{bmatrix} k_x & 0 & 0 & 0 & 0 & 0 \\ 0 & k_y & 0 & 0 & 0 & 0 \\ 0 & 0 & k_z & 0 & 0 & 0 \\ 0 & 0 & 0 & k_{\theta x} & 0 & 0 \\ 0 & 0 & 0 & 0 & k_{\theta y} & 0 \\ 0 & 0 & 0 & 0 & 0 & k_{\theta z} \end{bmatrix}\]混合力/位控制:
选择矩阵 $\mathbf{S}$ 定义控制模式:
\[\boldsymbol{\tau} = \mathbf{J}^T[\mathbf{S}\mathbf{f}_d + (\mathbf{I}-\mathbf{S})\mathbf{K}_p(\mathbf{x}_d - \mathbf{x})]\]插孔任务的典型选择矩阵:
\[\mathbf{S} = \text{diag}(0, 0, 1, 1, 1, 0)\](z方向力控制,xy方向位置控制)
螺旋搜索:
\[\begin{align} x(t) &= r(t)\cos(\omega t) \\ y(t) &= r(t)\sin(\omega t) \\ r(t) &= r_0 + v_r t \end{align}\]力引导搜索:
根据接触力方向调整搜索方向:
\[\mathbf{v}_{search} = k_s \cdot \text{normalize}(\mathbf{f}_{lateral})\]概率搜索(以不确定性椭球):
\[p(\mathbf{x}) = \frac{1}{(2\pi)^{3/2}|\boldsymbol{\Sigma}|^{1/2}} \exp(-\frac{1}{2}(\mathbf{x}-\boldsymbol{\mu})^T\boldsymbol{\Sigma}^{-1}(\mathbf{x}-\boldsymbol{\mu}))\]功能分类:
工具类别 = {
杠杆类: 撬棍、钳子
切割类: 刀、剪刀
旋转类: 扳手、螺丝刀
打击类: 锤子
容器类: 勺子、杯子
}
几何-功能映射:
工具功能由几何特征决定:
任务空间分解:
\[\mathbf{x}_{tool} = \mathbf{x}_{hand} \oplus \mathbf{T}_{hand}^{tool}\]工具约束传播:
\[\mathbf{J}_{task} = \mathbf{J}_{tool} \cdot \mathbf{Ad}_{T} \cdot \mathbf{J}_{hand}\]其中 $\mathbf{Ad}_{T}$ 是伴随变换。
功能相似度度量:
\[sim(t_1, t_2) = w_g \cdot sim_{geom} + w_k \cdot sim_{kine} + w_d \cdot sim_{dyn}\]零样本工具使用:
基于功能分解的迁移学习:
强化学习框架:
状态空间:$s = [\mathbf{x}{obj}, \mathbf{x}{tool}, \mathbf{f}{contact}]$ 动作空间:$a = [\mathbf{v}{tool}, \mathbf{f}{applied}]$ 奖励函数:$r = r{task} + r_{efficiency} - r_{damage}$
示范学习方法:
从人类演示中学习工具使用:
OpenAI在2019年展示了仅使用视觉和本体感知的机器人手解魔方,这是灵巧操作的里程碑。
硬件配置:
分层控制架构:
高层: 魔方求解器(Kociemba算法)
↓
中层: 操作原语规划器
↓
低层: 强化学习控制器
强化学习设置:
域随机化(Domain Randomization):
随机化参数 = {
'魔方大小': [5.5cm, 6.5cm],
'质量': [80g, 120g],
'摩擦系数': [0.5, 1.5],
'执行器延迟': [0ms, 40ms],
'传感器噪声': N(0, σ²)
}
自动课程学习(ADR): 根据性能自动调整随机化范围: \(\Delta_{range} = \alpha \cdot \text{sign}(performance - threshold)\)
状态估计器: 使用CNN从3个视角估计魔方状态,准确率>95%
故障恢复: 检测掉落并自动拾取重试
本章系统介绍了灵巧操作与双臂协调的核心技术:
手内操作提供了不依赖外部支撑改变物体位姿的能力,通过接触模式切换和重抓取规划实现复杂操作。
灵巧手建模需要考虑多指协调、接触力学和抓取稳定性,软手指模型能更准确描述实际接触。
操作图将连续操作空间离散化,通过符号规划与几何推理结合实现任务级规划。
双臂协调有主从和协同两种模式,需要处理运动学耦合、负载分配和碰撞避免。
柔顺装配通过被动RCC或主动力控制处理装配误差,搜索策略对成功率至关重要。
工具使用需要功能理解与运动迁移,是机器人智能的重要体现。
关键公式回顾:
14.1 考虑一个三指灵巧手抓取球形物体。每个手指与球接触,形成硬手指接触(摩擦点接触)。请问: a) 该抓取的约束维度是多少? b) 如果要实现力闭合,接触点应如何分布? c) 计算该配置的抓取矩阵维度。
Hint: 考虑每个接触能传递的力的维度,以及物体的自由度。
14.2 在插孔装配任务中,孔直径10mm,轴直径9.9mm。如果位置误差服从正态分布 $\mathcal{N}(0, 0.5^2)$ mm,计算不使用搜索策略时一次插入的成功概率。
Hint: 计算位置误差落在可接受范围内的概率。
14.3 双臂机器人协同搬运一个2kg的箱子。如果要求两臂均匀分担负载,每臂末端需要提供多大的垂直力?如果箱子质心偏离中心10cm,力矩如何分配?
Hint: 应用静力平衡方程。
14.4 设计一个手内操作控制器,实现圆柱体在三指手中绕其轴线旋转90度。考虑: a) 如何协调三个手指的运动? b) 如何保持抓取稳定性? c) 如何处理滑动摩擦?
Hint: 考虑滚动约束和摩擦锥约束的结合。
14.5 针对双臂协同装配任务,设计一个控制架构,其中一臂持有基座零件(位置控制),另一臂执行插入(力控制)。如何处理两臂的耦合约束?
Hint: 考虑主从控制与阻抗控制的结合。
14.6 机器人需要使用锤子将钉子敲入木板。分析: a) 锤子的最优抓握位置 b) 敲击轨迹规划 c) 冲击力控制策略
Hint: 考虑动量守恒和能量传递效率。
14.7 (开放性思考题) 未来的灵巧操作系统应该如何结合视觉、触觉和力觉信息?讨论多模态融合在提高操作成功率方面的潜力。
Hint: 思考每种模态的优势和局限性。
14.8 设计一个操作图来完成”组装宜家家具”任务。考虑需要哪些操作原语,如何处理错误恢复,以及如何优化装配序列。
Hint: 考虑装配顺序的约束和并行化可能。