机器人算法

编号

领域

模型/算法方向

类别

模型/算法配方

算法/模型/函数/引擎方法名称

算法/模型/函数/引擎方法的逐步思考推理过程及每一个步骤的数学方程式

精度/密度/误差/强度

底层规律/理论定理

算法/模型应用场景

变量/常量/张量/标量/向量参数列表及说明

状态机

数学特征

语言特征

时序和交互流程的所有细节/分步骤时序情况及数学方程式

顺序/乱序/差序列/倒序/并行序列/分布式序列/随机序列/其他

复杂度

机器人的各类芯片执行的各类指令和指令代码情况和各类硬件芯片执行调度情况

关联知识

Robot-0001

整机

定位与建图

状态估计

传感器数据(激光雷达、里程计、IMU)的贝叶斯滤波框架

扩展卡尔曼滤波-SLAM (EKF-SLAM)

1. 初始化:​ 设定机器人初始位姿状态向量 x0​=[x,y,θ]T和协方差矩阵 P0​。地图特征初始化为空集。
2. 预测(运动更新):​ 根据控制输入 ut​和运动模型预测下一时刻状态。 x^t​=f(x^t−1​,ut​), P^t​=Ft​Pt−1​FtT​+Qt​。其中 Ft​是 f关于状态的雅可比矩阵, Qt​是过程噪声协方差。
3. 更新(观测更新):​ 当观测到已知地标 mj​时,计算预测观测 z^t​=h(x^t​,mj​)。计算新息 vt​=zt​−z^t​和新息协方差 St​=Ht​P^t​HtT​+Rt​。计算卡尔曼增益 Kt​=P^t​HtT​St−1​。最后更新状态和协方差: xt​=x^t​+Kt​vt​, Pt​=(I−Kt​Ht​)P^t​。
4. 地图扩充:​ 若观测到新地标,将其状态和协方差扩充到 xt​和 Pt​中。

定位误差(RMSE):厘米级至分米级;建图一致性误差。

贝叶斯定理, 卡尔曼滤波理论, 非线性系统线性化理论。

室内服务机器人定位, 自动驾驶车辆在结构化环境中的定位与地图创建。

xt​:系统状态向量(机器人位姿+所有地标坐标); ut​:控制输入向量(速度, 角速度); zt​:观测向量(距离, 角度); Pt​:状态协方差矩阵; Qt​,Rt​:噪声协方差; Ft​,Ht​:雅可比矩阵。

状态:​ {初始化, 运动预测, 数据关联, 观测更新, 新特征初始化}。
转移:​ 初始化 -> 运动预测 -> (若有观测)数据关联 -> (若关联成功)观测更新 -> 运动预测… 若数据关联失败但置信度高, 则进入新特征初始化。

概率与统计特征, 不确定性, 微分(雅可比矩阵), 线性代数(矩阵运算), 优化(最小化新息协方差)。

形式化语言(状态空间表示), 概率表述((p(x_t

z{1:t}, u{1:t}) ))。

时序流程:​ 1. 获取控制指令 ut​。 2. 执行预测步骤(方程式见上)。 3. 获取传感器观测 zt​。 4. 将观测与地图特征进行数据关联。 5. 对关联成功的特征执行更新步骤。 6. 对未关联的观测, 若满足条件则初始化为新特征。 循环执行1-6。

顺序/周期序列(控制频率)与事件驱动序列(观测到达)混合。

时间复杂度: O(n2)(n为地图特征数量), 因需更新全协方差矩阵。

CPU:​ 执行矩阵运算(乘法、求逆)、状态预测/更新函数。指令:浮点运算指令(FADD, FMUL), 矩阵运算库调用(如BLAS)。
调度:​ 周期性任务(预测), 由传感器中断触发的任务(更新)。数据在CPU缓存与主存间交换。

Robot-0002

整机

运动规划

路径搜索

在构型空间(C-Space)中搜索从起点到终点的无碰撞路径。

A* 搜索算法

1. 初始化:​ 将起点节点加入开放列表(OPEN), 其代价 f(start)=g(start)+h(start)=0+h(start)。
2. 主循环:​ 当OPEN列表非空时: a) 从OPEN列表中取出 f(n)最小的节点 n。 b) 若 n是目标点, 则回溯路径并结束。 c) 将节点 n移至关闭列表(CLOSED)。 d) 扩展节点 n, 生成其所有相邻节点 n’。 e) 对每个 n’: i. 若 n’在CLOSED中或不可行(碰撞), 则跳过。 ii. 计算 gtemp​=g(n)+cost(n,n′)。 iii. 若 n’不在OPEN中或 gtemp​<g(n’), 则设置 g(n′)=gtemp​, f(n′)=g(n′)+h(n′), 并设置 n’的父节点为 n。 若 n’不在OPEN中, 则将其加入OPEN。

路径最优性(在启发函数可采纳时保证全局最优); 成功率。

图搜索理论, 最优性原则。

移动机器人全局路径规划, 机械臂在离散化构型空间中的路径规划。

g(n):从起点到节点 n的实际代价; h(n):从节点 n到目标的估计代价(启发函数); f(n):总估计代价; OPEN/CLOSED列表:优先队列和集合。

状态:​ {初始化, 选择节点, 目标检测, 节点扩展, 代价评估, 路径回溯}。
转移:​ 初始化 -> 选择节点 -> 目标检测(是则回溯, 否则)-> 节点扩展 -> 对每个邻居进行代价评估与列表更新 -> 选择节点…

图论, 搜索, 优化(寻找最小代价路径), 组合特征(离散空间)。

过程性语言描述, 基于“节点”、“代价”、“列表”的操作。

1. 将起点加入OPEN。 2. 循环直到OPEN为空或找到目标: a. 排序OPEN列表, 取f最小节点n。 b. 检查n==goal? c. 扩展n的邻居。 d. 对每个邻居计算g_temp, f。 e. 更新OPEN/CLOSED。 3. 若找到目标, 从目标节点反向追溯父节点至起点。

顺序序列(主循环), 内部邻居评估可并行化。

时间复杂度: O(bd)(b为分支因子, d为深度)。空间复杂度: O(bd)(存储所有生成的节点)。

CPU:​ 执行堆操作(插入、提取最小元素), 邻居生成计算, 碰撞检测函数调用。指令:比较与跳转, 内存访问, 函数调用。缓存性能对优先队列操作关键。

图论, 数据结构(优先队列, 哈希表), 几何碰撞检测。

Robot-0003

整机

运动控制

轨迹跟踪控制

基于误差动力学的反馈线性化控制律设计

计算转矩控制/反馈线性化

1. 建模:​ 获得机器人动力学方程: M(q)q¨​+C(q,q˙​)q˙​+G(q)=τ。其中 q为关节角, M为惯性矩阵, C为科里奥利和离心力矩阵, G为重力项, τ为关节力矩。
2. 定义跟踪误差:​ e=qd​−q, e˙=q˙​d​−q˙​。
3. 设计期望加速度:​ 引入PD控制律来定义期望的闭环误差动力学: q¨​des​=q¨​d​+Kv​e˙+Kp​e。
4. 计算控制力矩:​ 将 q¨​des​代入动力学方程, 计算所需的关节力矩: τ=M(q)q¨​des​+C(q,q˙​)q˙​+G(q)。

跟踪误差(稳态误差, RMSE), 控制力矩平滑性。

牛顿-欧拉方程, 李雅普诺夫稳定性理论, 反馈线性化。

工业机械臂高精度轨迹跟踪, 仿人机器人关节控制。

q,q˙​,q¨​:关节位置、速度、加速度(向量); qd​,q˙​d​,q¨​d​:期望轨迹(向量); e,e˙:跟踪误差(向量); Kp​,Kv​:比例、微分增益矩阵; M,C,G:动力学模型矩阵/向量; τ:控制输出力矩(向量)。

状态:​ {获取状态, 计算误差, 计算期望加速度, 计算前馈力矩, 计算反馈力矩, 求和输出}。
转移:​ 周期性执行:获取当前 q,q˙​及期望 qd​,q˙​d​,q¨​d​-> 计算 e,e˙-> 计算 q¨​des​-> 计算 τff​=Mq¨​des​+Cq˙​+G-> τ=τff​(前馈) + Kp​e+Kv​e˙(反馈可部分融入前馈)。

微分方程, 动力学, 线性代数(矩阵运算), 稳定性, 误差分析。

动力学方程表述, 控制律表述。

控制循环(1kHz典型):​ 1. 读取关节编码器得到 q,q˙​(由专用芯片处理)。 2. 从轨迹生成器获取当前时刻的 qd​,q˙​d​,q¨​d​。 3. 计算误差 e,e˙。 4. 计算 q¨​des​=q¨​d​+Kv​e˙+Kp​e。 5. 基于当前 q,q˙​和 q¨​des​, 计算 τ=M(q)q¨​des​+C(q,q˙​)q˙​+G(q)。 6. 将 τ发送至电机驱动器(电流环)。

严格的周期性顺序序列。

单步计算复杂度取决于动力学模型 M,C,G的计算复杂度, 通常为 O(n2)到 O(n3)(n为关节数)。实时性要求高。

CPU/专用控制芯片:​ 执行浮点密集矩阵运算。指令:FMUL, FADD, 矩阵-向量乘, 三角函数(用于动力学计算)。
调度:​ 高优先级实时任务, 由硬件定时器严格周期触发。与电机编码器接口(SPI, SSI)、DAC输出接口有高带宽低延迟要求。

多体系统动力学, 经典控制理论, 机器人学。

Robot-0004

视觉

三维视觉

点云处理

迭代地对两组点云进行最近点匹配和刚体变换估计

迭代最近点算法

1. 输入:​ 源点云 P={pi​}, 目标点云 Q={qi​}, 初始变换估计 T0(常为单位阵)。
2. 迭代(k从0到最大迭代次数或收敛):​ a. 数据关联:​ 对 P中每个点 pi​, 在 Q中找其最近点 qi​: (q_i = \arg\min_{q \in Q}

T^k p_i - q

^2 )。 b. 去除离群点对(如使用距离阈值)。 c. 求解变换:​ 计算最优刚体变换(旋转 R, 平移 t), 最小化误差: ((R^{k+1}, t^{k+1}) = \arg\min_{R, t} \sum_i

R (T^k p_i) + t - q_i

^2 )。 此步骤有闭合解(SVD等方法)。 d. 应用变换:​ 更新 Tk+1=[Rk+1tk+1;01]∗Tk。 e. 检查收敛:​ 若变换参数变化小于阈值 ϵ或误差减少量很小, 则停止。

配准误差(点对平均距离), 旋转/平移误差(与真值比较)。

最小二乘优化, 奇异值分解, 刚体运动学。

机器人扫描匹配定位, 三维物体识别与位姿估计, 多视角点云拼接。

P,Q:点云数据集(Nx3矩阵); Tk:第k次迭代的变换矩阵(4x4); R,t:旋转矩阵(3x3)和平移向量(3x1); ϵ:收敛阈值。

Robot-0005

整机

任务与运动规划

分层规划

在符号任务层和连续运动层之间进行迭代和转换。

逻辑几何规划(一种TAMP方法)

1. 任务规划:​ 在符号层, 使用PDDL等语言定义动作、前提、效果。 使用规划器(如FF, FastDownward)搜索一个动作序列(计划) π=(a1​,a2​,...,an​), 使得从初始状态能到达目标状态。
2. 运动规划接口:​ 每个符号动作 ai​对应一个运动生成器(技能)。 例如, Pick(obj)对应包含移动、抓取等连续轨迹的运动基元。
3. 可行性检查与细化:​ 对于任务计划 π, 在连续空间中检查每个动作的可行性(无碰撞、动力学可达)。 若某个动作 ai​不可行, 则返回任务规划器添加约束(如“机器人必须在位姿x执行抓取”)并重新规划。
4. 执行:​ 一旦找到完全可行的任务-运动计划, 将其发送给底层控制器执行。

任务完成率, 规划时间, 计划长度(最优性)。

自动推理, 逻辑演算, 运动学约束满足, 搜索。

家庭服务机器人完成“泡咖啡”等多步骤任务, 工业机器人装配。

符号状态:谓词逻辑集合(如 On(A, Table)); 动作模式:带参数和条件/效果的符号操作; 连续状态:机器人/物体位姿, 关节角; 运动约束:碰撞、抓取稳定性等。

高层状态机:​ {任务规划, 动作展开, 运动可行性检查, 约束回传, 执行}。
转移:​ 任务规划 -> 动作展开为运动基元 -> 运动可行性检查(若全部可行->执行; 若某个动作失败->提取失败原因作为符号约束回传) -> 任务规划(带新约束)。

逻辑(命题, 一阶逻辑), 搜索(在离散空间和连续空间), 几何约束求解, 分层抽象。

符号化高层描述(PDDL), 连续空间参数化描述。

1. 输入符号化目标(如 Holding(Cup))。 2. 任务规划器在符号空间搜索动作序列。 3. 对序列中每个动作, 调用对应的运动生成器。 4. 运动生成器在连续空间(C-space)规划路径或轨迹, 并检查碰撞、抓取可达性等。 5. 若所有动作运动规划成功, 生成最终可执行计划。 6. 若某动作失败, 将失败时具体的连续约束(如“抓取时障碍物O阻挡”)转化为符号约束(如 (not (reachable robot ?pose)))添加到任务规划域, 回到步骤2。

顺序/迭代序列。任务规划顺序, 运动规划可并行检查多个动作。

组合爆炸(任务层), 运动规划复杂度(连续空间)。 总体是指数级或更差。

CPU (任务规划):​ 执行符号推理、搜索算法, 操作图数据结构。指令:逻辑条件判断, 图搜索操作。
CPU/GPU (运动规划):​ 执行几何计算、碰撞检测、采样。指令:浮点运算, 射线投射等。
调度:​ 异步协作, 任务规划器与运动规划器通过消息传递交互。

人工智能规划, 自动推理, 运动规划, 知识表示。

Robot-0006

控制

柔顺控制

力/位混合控制

在任务空间定义允许运动和力控制的自由度方向。

基于选择矩阵的力/位混合控制

1. 任务空间定义:​ 定义任务坐标系, 及其子空间。 例如, 在曲面打磨任务中, 沿曲面法向控制力, 沿切向控制位置。
2. 选择矩阵:​ 构建对角线元素为0或1的选择矩阵 S和 Sf​=I−S。 S对应位置控制方向, Sf​对应力控制方向。
3. 混合控制律:​ 计算任务空间的目标加速度: x¨cmd​=S[x¨d​+Kvp​(x˙d​−x˙)+Kpp​(xd​−x)]+Sf​[x¨d​+M−1(Kvf​(Fd​−F)+Kpf​∫(Fd​−F)dt)]。 其中 x,x˙为实际位姿/速度, F为实际力, 下标d为期望值。 M为任务空间惯性矩阵。
4. 转换到关节空间:​ 通过雅可比矩阵伪逆等将 x¨cmd​转换为关节加速度指令, 进而通过逆动力学计算关节力矩 τ。

力跟踪误差(N), 位置跟踪误差(m), 接触稳定性。

机器人动力学, 阻抗控制/导纳控制原理, 正交投影。

机器人装配(轴孔插入), 曲面打磨/抛光, 与人物理交互。

x,x˙,x¨:任务空间位姿、速度、加速度; F:任务空间末端力/力矩; S,Sf​:选择矩阵; Kpp​,Kvp​,Kpf​,Kvf​:控制增益; M:任务空间惯性矩阵; J:雅可比矩阵。

状态:​ {读取状态(位姿, 力), 计算位姿误差, 计算力误差, 根据选择矩阵混合控制量, 解算关节力矩}。
转移:​ 周期性执行:读取传感器数据 -> 分别计算位置环和力环的输出 -> 用S和S_f进行线性组合 -> 通过动力学模型解算控制力矩 -> 输出。

线性代数(矩阵运算, 投影), 微分(雅可比), 积分(力控积分项), 动力学, 解耦控制。

基于空间分解的控制律描述。

控制循环(~1kHz):​ 1. 读取关节编码器得到 q,q˙​, 经正运动学计算 x,x˙。 2. 读取六维力传感器得到 F。 3. 计算位置控制部分: apos​=x¨d​+Kvp​(x˙d​−x˙)+Kpp​(xd​−x)。 4. 计算力控制部分: aforce​=x¨d​+M−1(Kvf​(Fd​−F)+Kpf​∫(Fd​−F)dt)。 5. 混合: x¨cmd​=S⋅apos​+Sf​⋅aforce​。 6. 计算 q˙​cmd​=J+x¨cmd​+(I−J+J)q˙​0​(或通过逆动力学直接计算 τ)。 7. 输出 τ。

严格的周期性顺序序列。

取决于任务空间维度, 涉及矩阵求逆(M−1, J+), 复杂度通常为 O(n3)。

CPU/专用控制芯片:​ 执行正/逆运动学、雅可比计算、矩阵运算、积分运算。指令:浮点矩阵运算, 数值积分。
传感器接口:​ 高速读取力传感器(以太网或数字接口)。调度为高优先级实时任务。

操作空间控制, 传感器融合, 经典/现代控制理论。

Robot-0007

决策

行为决策

马尔可夫决策过程

在部分可观测环境中, 基于历史观测和动作序列来估计状态, 并选择最大化累计奖励的动作。

QMDP(POMDP的简化近似)

1. 问题形式化:​ 将机器人决策问题建模为POMDP, 包含状态 s∈S, 动作 a∈A, 观测 o∈O, 转移函数 (T(s, a, s') = P(s'

s,a) ), 观测函数 (Z(s, a, o) = P(o

s',a) ), 奖励函数 R(s,a)。
2. 信念状态:​ 由于状态不完全可观, 维护一个信念状态 b(s), 即状态的概率分布。 更新: b′(s′)=ηZ(s′,a,o)∑s∈S​T(s,a,s′)b(s), 其中 η是归一化因子。
3. QMDP近似:​ 忽略未来的部分可观性, 假设下一步后状态完全可知。 计算每个信念状态下的Q值: Q(b,a)=∑s​b(s)QMDP​(s,a)。 其中 QMDP​(s,a)是底层完全可观测MDP的Q值, 可通过值迭代求解: QMDP​(s,a)=R(s,a)+γ∑s′​T(s,a,s′)maxa′​QMDP​(s′,a′)。
4. 决策:​ 选择动作 a∗=argmaxa​Q(b,a)。

期望累计奖励, 任务成功率。

贝尔曼最优性方程, 概率推理(贝叶斯更新), 马尔可夫性。

在不确定环境下的机器人导航决策(如办公室寻人), 交互任务决策。

S,A,O:离散的状态、动作、观测空间; b:信念状态向量(维度

S

); QMDP​:完全可观测MDP的Q值表(

S

x

A

); γ:折扣因子; T,Z,R:模型函数/表格。

Robot-0008

控制

自适应控制

参数估计与控制

实时估计系统未知或时变参数, 并调整控制器参数以保证性能。

模型参考自适应控制

1. 参考模型:​ 定义一个稳定的、性能理想的参考系统 x˙m​=Am​xm​+Bm​r, 其中 r是参考输入, xm​是参考状态。
2. 可调系统:​ 被控对象为 x˙p​=Ap​(θ)xp​+Bp​(θ)u, 参数 θ未知。 控制器为 u=Kx​xp​+Kr​r。 闭环系统为 x˙p​=(Ap​+Bp​Kx​)xp​+Bp​Kr​r。
3. 目标:​ 设计自适应律调整 Kx​,Kr​, 使得可调系统与参考模型匹配, 即 limt→∞​(xp​−xm​)=0。
4. 误差动力学:​ 定义跟踪误差 e=xp​−xm​。 其导数为 e˙=Am​e+(Ap​+Bp​Kx​−Am​)xp​+(Bp​Kr​−Bm​)r。
5. 自适应律:​ 利用Lyapunov稳定性理论, 选择Lyapunov函数 V=eTPe+trace(K~xT​Γx−1​K~x​)+trace(K~rT​Γr−1​K~r​), 其中 K~=K−K∗是参数误差。 设计自适应律使得 V˙≤0, 例如: K˙xT​=−Γx​xp​eTPB, K˙rT​=−Γr​reTPB(对特定规范型)。

跟踪误差收敛性, 参数估计误差有界性。

李雅普诺夫稳定性理论, 系统辨识, 模型匹配。

负载变化的机械臂控制, 航空/航天器在不确定环境下的控制。

xm​,xp​:参考模型和被控对象状态向量; Am​,Bm​,Ap​,Bp​:系统矩阵; Kx​,Kr​:可调控制器增益矩阵; e:跟踪误差向量; P,Γx​,Γr​:正定对称矩阵(自适应增益); r:参考输入。

状态:​ {计算跟踪误差, 根据自适应律更新控制器参数, 计算控制量, 输出控制量}。
转移:​ 周期性执行:获取当前 xp​,xm​,r-> 计算误差 e-> 根据 e,xp​,r和自适应律积分更新 Kx​,Kr​-> 计算控制量 u=Kx​xp​+Kr​r-> 输出u -> 等待下一周期。

微分方程(误差动力学), 积分(参数自适应更新), 线性代数, 稳定性分析(Lyapunov函数)。

控制理论与微分方程描述。

控制循环:​ 1. 读取当前被控对象状态 xp​。 2. 计算参考模型输出 xm​(可通过数值积分或解析解)。 3. 计算跟踪误差 e=xp​−xm​。 4. 积分更新控制器参数: Kx​(t)=Kx​(t−Δt)+K˙x​Δt, 其中 K˙x​由自适应律给出(如 K˙xT​=−Γx​xp​eTPB形式)。 同理更新 Kr​。 5. 计算控制输入: u=Kx​xp​+Kr​r。 6. 输出 u。 等待下一个控制周期。

严格的周期性顺序序列。

在线计算复杂度取决于状态维度和参数数量, 涉及矩阵乘法和积分, 通常为 O(n3)。

CPU/FPGA:​ 执行矩阵运算, 数值积分, Lyapunov方程相关计算。指令:密集浮点运算。对实时性要求高, 但频率可能低于底层伺服环。

非线性系统理论, 自适应控制理论, 稳定性分析。

Robot-0009

视觉

二维视觉

目标检测

基于区域的卷积神经网络进行目标定位与分类

Faster R-CNN

1. 特征提取:​ 输入图像通过骨干网络(如ResNet)提取特征图。
2. 区域提议网络:​ 在特征图上滑动一个小的网络(n x n窗口), 为每个位置同时预测k个候选区域(anchors)的“物体性”分数和边界框偏移量。 生成约2k个分数, 4k个坐标(每个anchor对应一个分数和4个坐标偏移)。 应用非极大值抑制(NMS)筛选出约300个高质量的提议区域。
3. 区域对齐:​ 对每个提议区域, 通过RoI对齐层从特征图中提取固定大小的特征(如7x7)。
4. 分类与回归:​ 将固定大小的特征输入全连接层, 输出: a) 该区域属于各个类别的概率分布。 b) 对属于正类的目标, 输出更精确的边界框偏移量(相对于提议区域)。

平均精度(mAP), 检测速度(FPS)。

卷积神经网络, 区域提议, 边框回归, 多任务损失。

机器人场景理解, 目标抓取识别, 自动驾驶中的车辆/行人检测。

输入图像 I(H x W x 3); 特征图 F; anchors:预设的宽高比和尺度的基准框; 提议区域:修正后的anchors; RoI特征:固定大小的特征向量; 类别概率 p=(p0​,p1​,...,pC​); 边界框偏移 t=(tx​,ty​,tw​,th​)。

状态:​ {前向传播, 区域提议, RoI对齐, 分类与回归, 后处理(NMS)}。
转移:​ 输入图像 -> 特征提取 -> RPN生成提议 -> RoI对齐 -> 分类与回归网络 -> 输出检测框和类别 -> NMS过滤。

计算与算法特征(前向传播, 卷积, 全连接), 优化(边框回归损失, 分类交叉熵损失), 统计(Softmax概率)。

深度学习模型架构描述, 基于张量操作。

1. 图像预处理(缩放, 归一化)。 2. 通过CNN骨干网络前向传播, 得到特征图F。 3. RPN在F上滑动:对每个位置, 计算k个anchors的“物体/背景”二分类得分和坐标偏移。 4. 根据得分和偏移生成修正后的提议区域。 5. 对提议区域应用NMS, 保留Top-N个。 6. 对每个保留的提议, 在特征图F上通过RoIAlign提取固定大小特征。 7. 将特征通过全连接层, 得到类别概率和精细化的边界框偏移。 8. 根据类别概率和细化偏移生成最终检测框。 9. 对各类别检测结果进行NMS, 输出。

顺序序列(前向传播), 部分步骤可并行(RPN的anchors处理, RoI特征提取)。

时间复杂度: 骨干网络前向传播主导, 如ResNet-50约为 O(HWC)。 RPN和RoI部分复杂度与提议数量有关。

GPU (训练和推理):​ 并行执行卷积、矩阵乘法、RoIAlign等操作。指令:CUDA核函数, 张量核心运算。
专用AI芯片 (推理):​ 加载模型权重, 执行量化或低精度推理。指令:专用矩阵乘加指令, 激活函数硬件单元。
调度:​ 数据从内存加载到芯片缓存, 通过计算核心流水线处理。

计算机视觉, 深度学习, 卷积神经网络, 目标检测。

Robot-0010

决策

多智能体协同

分布式优化

多个机器人通过局部通信, 协同优化一个全局目标函数。

分布式次梯度算法

1. 问题形式化:​ 有N个智能体。 全局目标: minx​f(x)=∑i=1N​fi​(x), 其中 fi​(x)是第i个智能体的局部代价函数, 且只与局部信息相关。 约束:所有智能体最终达成一致, 即 x1​=x2​=...=xN​。
2. 分布式更新:​ 每个智能体i维护自己的局部变量 xi​。 更新规则: xi​(k+1)=∑j∈Ni​​wij​xj​(k)−αk​gi​(k)。 其中 Ni​是智能体i的邻居集合(包括自己), wij​是混合权重(满足双随机矩阵条件), αk​是递减步长, gi​(k)是 fi​(x)在 xi​(k)处的次梯度。
3. 一致性与优化:​ 第一步 ∑j​wij​xj​(k)实现邻居间的“平均共识”, 使所有 xi​趋同。 第二步 −αk​gi​(k)沿局部代价函数的下降方向移动, 以优化全局目标。

一致性误差( (\max_{i,j}

x_i - x_j

)), 目标函数值与最优值的差距。

凸优化, 次梯度方法, 图论(一致性协议), 分布式计算。

多机器人包围控制, 协同搜索, 分布式负载分配, 传感器网络估计。

xi​:智能体i的局部决策变量(向量); fi​:局部代价函数; gi​: fi​的次梯度; W=[wij​]:混合权重矩阵(双随机); Ni​:邻居集合; αk​:步长序列(如 1/k​); 通信图 G=(V,E)。

状态:​ {收集邻居信息, 计算共识项, 计算局部次梯度, 更新本地变量, 广播本地变量}。
转移:​ 同步迭代:每个智能体在时刻k广播自己的 xi​(k)-> 接收邻居的 xj​(k)-> 计算共识项 ∑j​wij​xj​(k)-> 计算次梯度 gi​(k)-> 更新 xi​(k+1)-> 进入下一轮。

图论(网络拓扑), 优化(次梯度下降), 线性代数(矩阵权重混合), 收敛性(序列极限)。

分布式迭代更新规则描述。

同步迭代(假设时钟同步):​ 1. 初始化: 每个智能体i随机初始化 xi​(0)。 2. 对于迭代次数k=0,1,2,...: a. 每个智能体i将其当前状态 xi​(k)发送给其所有邻居 j∈Ni​。 b. 每个智能体i从所有邻居 j∈Ni​接收 xj​(k)。 c. 计算加权平均: xˉi​(k)=∑j∈Ni​​wij​xj​(k)。 d. 计算局部次梯度: gi​(k)∈∂fi​(xi​(k))。 e. 更新局部状态: xi​(k+1)=xˉi​(k)−αk​gi​(k)。 3. 直到满足停止条件(如 (

Robot-0011

结构/器械

步态生成

足式运动规划

基于简化的动力学模型在线生成脚部落足点和身体轨迹。

模型预测控制-步行

1. 模型简化:​ 使用线性倒立摆模型或零力矩点动力学。 例如, LIP模型: x¨CoM​=ω2(xCoM​−xFoot​), 其中 xCoM​是质心水平位置, xFoot​是支撑脚位置, ω=g/h​, h为恒定质心高度。
2. 预测模型离散化:​ 将连续动力学离散为 xk+1​=Axk​+Buk​, 其中状态 x=[pCoM​,vCoM​]T, 控制输入 u=xFoot​(下一个落足点)。
3. 构建优化问题:​ 在每个控制周期, 求解未来N步(预测时域)内的最优落足点序列, 最小化代价函数, 如跟踪期望速度、最小化控制量、满足约束(步长范围, 可通行区域)。
代价函数: J=∑k=1N​(xk​−xkref​)TQ(xk​−xkref​)+ukT​Ruk​。
4. 滚动执行:​ 求解优化问题, 只应用第一步的控制量(落足点), 下一个周期重新求解。

速度跟踪误差, 步态稳定性(ZMP/CoP误差), 能量消耗。

模型预测控制, 线性倒立摆动力学, 凸优化(二次规划)。

双足/四足机器人动态行走, 跑步。

xCoM​,vCoM​,x¨CoM​:质心位置、速度、加速度(2D或3D); xFoot​:落足点位置; ω:LIP自然频率; 离散系统矩阵 A,B; 权重矩阵 Q,R; 预测时域N; 约束条件(步长上下界, 安全区域多边形)。

状态:​ {状态估计, 构建优化问题, 求解QP, 应用控制量, 摆动腿轨迹生成}。
转移:​ 周期性执行:获取当前质心状态 -> 根据期望速度生成参考轨迹 xref-> 构建未来N步的QP问题(含动力学约束和步长约束) -> 求解QP得到落足点序列 -> 将第一个落足点发送给摆动腿轨迹生成器 -> 等待下一控制周期。

动力学(微分方程), 优化(二次规划), 离散化, 预测, 滚动时域。

优化问题形式化描述, 基于动力学约束。

控制循环(~100-500Hz):​ 1. 状态估计:通过IMU和运动学得到当前CoM状态 x0​。 2. 参考生成:根据高层指令(如期望速度 vdes​)生成未来N步的参考状态序列 xkref​。 3. 构建QP: 目标函数: J=∑k=1N​(xk​−xkref​)TQ(xk​−xkref​)+ukT​Ruk​。 满足动力学约束: xk+1​=Axk​+Buk​,k=0,...,N−1。 和步长约束: umin​≤uk​≤umax​, 以及可通行区域约束(线性不等式)。 4. 求解QP: 使用在线QP求解器(如OSQP, qpOASES)求解最优控制序列 u0∗​,u1∗​,...,uN−1∗​。 5. 应用: 将 u0∗​(即下一个落足点)用于规划摆动腿的足端轨迹(如三次样条)。 6. 在下一个控制周期, 用新的测量状态重新从步骤1开始。

严格的周期性顺序序列。

取决于预测时域N和状态/输入维度。 求解QP的复杂度通常为 O(N3)或利用稀疏性为 O(N)。 实时性要求高。

CPU (实时控制):​ 执行状态估计、参考生成、构建QP矩阵(利用稀疏结构)、调用QP求解库。指令:浮点运算, 线性代数库调用。
QP求解库:​ 可能使用内点法或有效集法, 涉及矩阵分解。对CPU算力要求高。

模型预测控制, 最优控制, 足式机器人动力学, 凸优化。

Robot-0012

听觉

语音交互

语音识别

将输入的音频信号转换为对应的文本序列。

端到端语音识别(基于Transformer)

1. 特征提取:​ 对原始音频信号(波形)进行预处理, 提取对数梅尔频谱图特征。 步骤: 预加重、分帧、加窗、短时傅里叶变换、梅尔滤波器组、取对数。 得到特征序列 X=(x1​,...,xT​)。
2. 编码器:​ 将特征序列 X输入编码器(多层Transformer或Conformer)。 编码器通过自注意力机制和卷积(Conformer)捕捉音频特征的长期依赖和局部模式, 输出高级声学表征序列 H=(h1​,...,hT​)。
3. 解码器:​ 解码器以自回归方式生成文本序列 Y=(y1​,...,yL​)。 在每一步 i, 解码器接收之前生成的字符 y<i​和编码器输出 H, 通过交叉注意力机制聚焦于 H的相关部分, 预测下一个字符的概率分布 (P(y_i

y_{<i}, H) )。
4. 输出:​ 最终通过集束搜索等方法, 找出概率最高的文本序列 (Y^* = \arg\max_Y P(Y

X) )。

词错误率(WER), 实时率(RTF)。

序列到序列学习, 注意力机制, 声学模型, 语言模型。

服务机器人语音指令识别, 人机对话系统。

输入音频波形 s(t); 对数梅尔频谱特征 X(TxF维, F为特征数); 编码器输出 H(TxD维, D为模型维度); 解码器隐藏状态; 字符/子词词汇表 V; 输出文本序列 Y。

状态:​ {特征提取, 编码器前向传播, 解码初始化, 自回归解码, 序列结束判断}。
转移:​ 输入音频 -> 特征提取 -> 编码器计算 -> 解码器起始于<bos>标记 -> 循环:基于当前解码器状态和编码器输出预测下一个字符 -> 将预测字符作为下一步输入 -> 直到预测出<eos>标记或达到最大长度。

序列建模, 注意力(自注意力, 交叉注意力), 概率(Softmax), 优化(交叉熵损失), 傅里叶变换(特征提取)。

序列到序列的变换, 基于概率的生成。

1. 前处理:​ 音频归一化, 分帧(25ms帧长, 10ms帧移), 加汉明窗, 计算FFT得到幅度谱, 通过梅尔滤波器组, 取log, 得到帧级别的梅尔频谱特征。 2. 编码:​ 对特征序列添加位置编码, 输入多层Transformer/Conformer编码器。 每层包含多头自注意力、前馈网络、层归一化、残差连接。 输出声学特征序列H。 3. 解码:​ a. 初始化: 解码器输入为起始符<bos>, 利用H计算初始隐藏状态。 b. 循环: i. 解码器基于当前输入(已生成序列)和H(通过交叉注意力)计算下一个字符的概率分布 (P(y_i

y_{<i}, H) )。 ii. 通过集束搜索, 保留Top-k个候选序列。 iii. 将预测的字符(集束搜索中选的)作为下一步的输入。 c. 终止: 当所有候选序列都生成了结束符<eos>或达到最大长度时, 选择得分最高的候选序列作为最终输出文本。

顺序序列(编码是并行的, 解码是自回归顺序的)。

Robot-0013

思考/推理

常识推理

知识图谱查询与推理

基于结构化知识库, 对自然语言查询进行语义解析和逻辑推理。

基于知识图谱的语义解析

1. 知识图谱:​ 以三元组形式存储事实: (头实体, 关系, 尾实体)。 例如 (Boston, locatedIn, USA)。
2. 语义解析:​ 将自然语言问题(如“波士顿位于哪个国家?”)解析成一种逻辑形式或查询图。 这通常涉及:命名实体识别(识别“波士顿”)、关系抽取(识别“位于”对应关系locatedIn)、以及组合成结构化查询。
3. 查询执行:​ 将逻辑形式转换为知识图谱查询语言(如SPARQL)或直接在图数据库上执行。 例如, 生成查询: SELECT ?country WHERE { Boston locatedIn ?country }
4. 答案检索与生成:​ 执行查询, 从知识图谱中检索答案实体(如“USA”), 并格式化为自然语言回答。

问答准确率, 查询解析准确率。

知识表示(图结构), 语义解析, 一阶逻辑推理, 信息检索。

机器人知识问答, 基于常识的任务规划辅助。

自然语言问题 Q; 知识图谱 KG={(h,r,t)}; 逻辑形式 L; 查询 Query; 答案实体/列表 A。

状态:​ {自然语言理解, 语义解析, 查询生成, 图查询执行, 答案生成}。
转移:​ 输入问题 -> 实体识别与链接(将问题中提及链接到KG实体) -> 关系映射(将问题短语映射到KG关系) -> 组合成逻辑形式/查询图 -> 转换为KG查询语句 -> 执行查询 -> 返回答案实体 -> 生成自然语言回答。

逻辑(谓词逻辑, 查询), 图论(图遍历, 子图匹配), 组合(从部分构建查询)。

自然语言到形式化语言(逻辑形式/查询语言)的转换。

1. 问题分析:​ 对问题“波士顿位于哪个国家?”进行分词、词性标注、依存句法分析。 2. 实体识别与链接:​ 识别“波士顿”为实体, 并在KG中链接到实体Boston。 3. 关系抽取:​ 识别“位于”对应关系locatedIn。 4. 查询构建:​ 构建逻辑形式: answer(C):-locatedIn(Boston, C)。 或直接构建查询图: 节点:Boston(已绑定), ?country(目标)。 边:locatedInBoston指向 ?country。 5. 查询执行:​ 将查询图转换为SPARQL: SELECT ?country WHERE { Boston locatedIn ?country }。 在图数据库(如Neo4j)中执行, 返回绑定?country=USA。 6. 答案生成:​ 将答案实体USA嵌入模板, 生成回答:“波士顿位于美国。”

顺序序列(管道式)。

语义解析复杂度取决于模型(神经网络或规则)。 查询执行复杂度取决于查询图大小和图数据库索引, 最坏情况为子图同构(NP难), 但简单查询可快速响应。

CPU:​ 执行自然语言处理模型(如BERT用于实体链接和关系分类)的前向推理。指令:神经网络推理指令。
图数据库服务器:​ 执行图查询, 涉及索引查找和图遍历。指令:数据库查询操作, 内存访问。 两部分可能在不同硬件上。

自然语言处理, 知识图谱, 语义网, 数据库。

Robot-0014

器件/芯片

低功耗唤醒

语音活动检测

在芯片上持续监听, 检测是否有语音出现, 以唤醒主处理器。

基于能量和过零率的双门限端点检测

1. 分帧:​ 对连续音频流以固定帧长(如20ms)和帧移(如10ms)进行分帧。
2. 特征计算:​ 计算每一帧的两个特征: a) 短时能量: En​=∑m=0L−1​[xn​(m)⋅w(m)]2, 其中 xn​(m)是第n帧的第m个采样点, w(m)是窗函数。 b) 短时平均过零率: (Z_n = \frac{1}{2} \sum_{m=0}^{L-1}

sgn[x_n(m)] - sgn[x_n(m-1)]

), 其中sgn是符号函数。
3. 双门限比较:​ 设置高门限 Thigh​和低门缓 Tlow​(对于能量和过零率分别设置)。 语音段判定: 当连续多帧的能量和过零率都超过高门限时, 判定为语音开始。 在语音开始后, 当连续多帧的能量和过零率都低于低门限时, 判定为语音结束。
4. 后处理:​ 合并间隔过近的语音段, 消除过短的噪声段。

检测率, 虚警率, 响应延迟。

数字信号处理, 语音信号特性(浊音能量高, 清音过零率高)。

智能音箱/机器人的“语音唤醒”前端, 低功耗监听模式。

音频采样序列 x(n); 帧长 L; 帧移 R; 窗函数 w(m); 能量门限 Thigh,E​,Tlow,E​; 过零率门限 Thigh,Z​,Tlow,Z​; 能量序列 En​; 过零率序列 Zn​。

状态:​ {静默, 可能开始, 语音中, 可能结束}。
转移:​ 初始状态为静默 -> 当检测到能量和过零率均超过高门限时, 进入“可能开始” -> 若连续N帧满足, 则判定语音开始, 进入“语音中” -> 在“语音中”状态, 若检测到能量和过零率均低于低门限, 进入“可能结束” -> 若连续M帧满足, 则判定语音结束, 回到“静默”。

信号处理(能量, 过零率), 阈值比较, 状态机, 序列分析。

基于信号特征和阈值的规则描述。

1. 初始化:​ 设置参数: 帧长(如256点@16kHz), 帧移(128点), 能量高低门限(通过背景噪声估计自适应或固定), 过零率高低门限。 2. 循环处理每一帧:​ a. 获取一帧音频数据 xn​。 b. 加窗(如汉明窗)。 c. 计算短时能量 En​。 d. 计算短时平均过零率 Zn​。 e. 根据当前状态和特征值进行状态转移判断(见状态机描述)。 3. 当从“语音中”状态转移到“静默”状态时, 触发“语音段结束”事件, 输出该段语音的起止点索引, 并可能唤醒主处理器进行进一步ASR处理。

顺序流处理序列。

每帧计算复杂度: 能量计算 O(L), 过零率计算 O(L)。 总体线性复杂度 O(N), N为采样点数。 极低功耗。

Robot-0015

控制

运动规划

实时避障

在动态环境中, 根据当前传感器信息实时计算安全的控制指令。

动态窗口法

1. 速度空间采样:​ 在机器人的可行速度空间 (v,ω)(线速度和角速度)中, 依据机器人的动力学约束(最大速度、加速度)进行离散采样, 生成一系列速度对 (vi​,ωi​)。
2. 轨迹模拟:​ 对每个采样的速度对 (vi​,ωi​), 假设机器人以此速度匀速运动一段短时间(模拟时间 Δt), 模拟出未来一段时间的轨迹(通常为圆弧)。
3. 轨迹评价:​ 对每条模拟轨迹, 根据多个准则计算得分: a) 对准目标:​ heading(v,ω): 轨迹末端方向与目标点方向的偏差。 b) 距离障碍物:​ dist(v,ω): 轨迹上离最近障碍物的距离。 若碰撞, 得分置为负无穷。 c) 速度:​ velocity(v,ω): 偏好更快速度。 总得分: G(v,ω)=α⋅heading+β⋅dist+γ⋅velocity。
4. 选择最优速度:​ 选择得分最高的速度对 (v∗,ω∗)作为当前周期的控制指令。

无碰撞, 平滑性, 目标到达成功率。

速度空间搜索, 基于采样的运动规划, 局部最优控制。

移动机器人在动态或未知环境中的实时避障导航。

v,ω: 线速度和角速度; vmax​,vmin​,ωmax​,ωmin​: 最大最小速度; v˙max​,ω˙max​: 最大加速度/减速度; 动态窗口: 考虑当前速度和加速度约束下, 下一时刻可达的速度范围; 模拟时间 Δt; 评价函数权重 α,β,γ; 障碍物位置信息(从传感器获得)。

状态:​ {获取状态与目标, 速度空间采样, 轨迹模拟, 轨迹评分, 选择最优速度}。
转移:​ 周期性执行:获取机器人位姿、目标点、局部障碍物信息 -> 根据动力学约束计算当前动态窗口 -> 在动态窗口内采样速度对 -> 对每个速度对模拟轨迹 -> 对每条轨迹评分(障碍物距离、朝向、速度) -> 选择最高分速度对 -> 发送给底层速度控制器 -> 等待下一周期。

采样, 优化(在多目标评价函数下搜索), 几何(轨迹模拟), 运动学。

基于搜索和评价的启发式方法描述。

控制循环(~10Hz):​ 1. 输入: 当前机器人位姿 (x,y,θ), 局部目标点 (xg​,yg​), 局部障碍物地图(如从激光雷达得到)。 2. 计算动态窗口: a. 速度范围: (V_s = {(v, \omega)

v \in [v{min}, v{max}], \omega \in [\omega{min}, \omega{max}] })。 b. 考虑加速度约束: (V_d = {(v, \omega)

v \in [v_c - \dot{v}{max} \Delta t, v_c + \dot{v}{max} \Delta t], \omega \in [\omega_c - \dot{\omega}{max} \Delta t, \omega_c + \dot{\omega}{max} \Delta t] })。 c. 可行速度空间: Vr​=Vs​∩Vd​。 3. 在 Vr​内均匀采样得到速度对集合 {(vi​,ωi​)}。 4. 对每个 (vi​,ωi​), 模拟轨迹: 假设在 Δt内以 (vi​,ωi​)匀速运动。 轨迹为圆弧, 位置: x(t)=xc​+ωi​vi​​(sin(θc​+ωi​t)−sinθc​), y(t)=yc​−ωi​vi​​(cos(θc​+ωi​t)−cosθc​)(当 ω=0)。 5. 对每条轨迹评分: a. 障碍物距离得分: 计算轨迹上每个点与最近障碍物的距离, 取最小值 dmin​。 若 dmin​小于安全距离, 得分 = -∞。 否则, 得分与 dmin​成正比。 b. 朝向得分: 计算轨迹末端方向与目标点方向的夹角差 Δθ, 得分与 cos(Δθ)成正比。 c. 速度得分: 与 vi​成正比。 6. 总得分加权和。 7. 选择最高得分的 (v∗,ω∗)输出。

顺序序列(采样循环), 轨迹模拟和评分可并行化。

时间复杂度: O(N⋅M), N为速度采样数(约几百), M为每条轨迹模拟的步数(约几十)。 实时可行。

Robot-0016

视觉

三维视觉

深度估计

从单目或双目图像中恢复场景的深度信息。

双目立体匹配

1. 图像校正:​ 对左右目图像进行立体校正, 使得对应点位于同一水平线上(极线对齐)。
2. 代价计算:​ 对左图像素点 (x,y), 在右图对应的极线上搜索匹配点。 为每个候选视差 d(水平偏移)计算匹配代价 C(x,y,d)。 常用代价函数: 绝对差之和(SAD): (C{SAD} = \sum{(i,j)\in W}

I_L(x+i, y+j) - I_R(x+i-d, y+j)

); 或归一化互相关(NCC)。
3. 代价聚合:​ 对代价立方体 C(x,y,d)在局部窗口内进行聚合(如求和), 得到平滑的代价 Cˉ(x,y,d)。
4. 视差计算:​ 对每个像素, 选择使聚合代价最小的视差: d∗(x,y)=argmind​Cˉ(x,y,d)。
5. 后处理:​ 包括左右一致性检查(剔除误匹配)、亚像素细化、空洞填充等。
6. 深度计算:​ 根据视差和相机基线、焦距计算深度: Z=df⋅B​, 其中 f为焦距(像素单位), B为基线长度, d为视差。

深度误差(RMSE), 视差图坏点率。

对极几何, 三角测量, 图像匹配。

机器人避障, 三维重建, 视觉SLAM。

左图 IL​, 右图 IR​; 校正后的图像对; 视差搜索范围 [dmin​,dmax​]; 代价立方体 C; 聚合窗口 W; 焦距 f; 基线 B; 输出深度图 Z。

状态:​ {图像获取与校正, 代价计算, 代价聚合, 胜者全取, 后处理, 深度转换}。
转移:​ 获取双目图像 -> 立体校正 -> 对每个像素和每个候选视差计算匹配代价 -> 对代价进行空间聚合 -> 为每个像素选择最小代价对应的视差 -> 一致性检查等后处理 -> 将视差图转换为深度图。

几何(对极几何, 三角测量), 图像处理(卷积, 聚合), 优化(代价最小化), 离散搜索。

基于几何约束和图像相似性度量的过程描述。

1. 输入与校正:​ 输入时间同步的双目图像。 通过已知的双目相机标定参数(相机内参、外参)进行立体校正, 使得左右图像的极线水平对齐。 2. **构建代价立方体:

编号

领域

模型/算法方向

类别

模型/算法配方

算法/模型/函数/引擎方法名称

算法/模型/函数/引擎方法的逐步思考推理过程及每一个步骤的数学方程式

精度/密度/误差/强度

底层规律/理论定理

算法/模型应用场景

变量/常量/张量/标量/向量参数列表及说明

状态机

数学特征

语言特征

时序和交互流程的所有细节/分步骤时序情况及数学方程式

顺序/乱序/差序列/倒序/并行序列/分布式序列/随机序列/其他

复杂度

机器人的各类芯片执行的各类指令和指令代码情况和各类硬件芯片执行调度情况

关联知识

Robot-0016

视觉

三维视觉

深度估计

从单目或双目图像中恢复场景的深度信息。

双目立体匹配

1. 图像校正:​ 对左右目图像进行立体校正, 使得对应点位于同一水平线上(极线对齐)。
2. 代价计算:​ 对左图像素点 (x,y), 在右图对应的极线上搜索匹配点。 为每个候选视差 d(水平偏移)计算匹配代价 C(x,y,d)。 常用代价函数: 绝对差之和(SAD): (C{SAD} = \sum{(i,j)\in W}

I_L(x+i, y+j) - I_R(x+i-d, y+j)

); 或归一化互相关(NCC)。
3. 代价聚合:​ 对代价立方体 C(x,y,d)在局部窗口内进行聚合(如求和), 得到平滑的代价 Cˉ(x,y,d)。
4. 视差计算:​ 对每个像素, 选择使聚合代价最小的视差: d∗(x,y)=argmind​Cˉ(x,y,d)。
5. 后处理:​ 包括左右一致性检查(剔除误匹配)、亚像素细化、空洞填充等。
6. 深度计算:​ 根据视差和相机基线、焦距计算深度: Z=df⋅B​, 其中 f为焦距(像素单位), B为基线长度, d为视差。

深度误差(RMSE), 视差图坏点率。

对极几何, 三角测量, 图像匹配。

机器人避障, 三维重建, 视觉SLAM。

左图 IL​, 右图 IR​; 校正后的图像对; 视差搜索范围 [dmin​,dmax​]; 代价立方体 C; 聚合窗口 W; 焦距 f; 基线 B; 输出深度图 Z。

状态:​ {图像获取与校正, 代价计算, 代价聚合, 胜者全取, 后处理, 深度转换}。
转移:​ 获取双目图像 -> 立体校正 -> 对每个像素和每个候选视差计算匹配代价 -> 对代价进行空间聚合 -> 为每个像素选择最小代价对应的视差 -> 一致性检查等后处理 -> 将视差图转换为深度图。

几何(对极几何, 三角测量), 图像处理(卷积, 聚合), 优化(代价最小化), 离散搜索。

基于几何约束和图像相似性度量的过程描述。

1. 输入与校正:​ 输入时间同步的双目图像。 通过已知的双目相机标定参数(相机内参、外参)进行立体校正, 使得左右图像的极线水平对齐。 2. 构建代价立方体:​ 对左图每个像素 (x,y), 对每个候选视差 d∈[dmin​,dmax​], 在右图 (x−d,y)处计算匹配代价 C(x,y,d)(如SAD)。 3. 代价聚合:​ 对代价立方体进行引导滤波或跨尺度代价聚合, 得到平滑的 Cˉ(x,y,d)。 4. 胜者全取:​ 对每个 (x,y), 计算 d∗(x,y)=argmind​Cˉ(x,y,d), 得到初始整像素视差图。 5. 后处理:​ a. 左右一致性检查: 计算右图视差图 dR​, 若 (

d^(x,y) - d_R(x-d^, y)

> \delta ), 则标记为无效点。 b. 亚像素细化: 在 d∗附近进行二次曲线拟合, 得到亚像素精度视差 dsub​。 c. 空洞填充。 6. 深度计算:​ 对每个有效视差 d, 计算深度 Z=fB/d。

Robot-0017

控制

运动控制

关节空间控制

对每个关节独立设计控制器, 忽略关节间的动力学耦合。

独立关节PID控制

1. 误差计算:​ 对第i个关节, 计算位置误差 ei​(t)=qd,i​(t)−qi​(t)。
2. 控制律:​ 计算控制输出(通常为关节力矩或电流指令): τi​(t)=Kp,i​ei​(t)+Ki,i​∫0t​ei​(τ)dτ+Kd,i​dtdei​(t)​。 其中 Kp​,Ki​,Kd​分别为比例、积分、微分增益。
3. 输出限幅:​ 对控制输出 τi​进行限幅, 以符合电机和驱动器物理限制。
4. 抗积分饱和:​ 当输出饱和时, 停止或减少积分项的累积, 以防止积分饱和导致超调。

稳态误差, 超调量, 调节时间, 抗干扰性。

经典控制理论(频域分析), PID控制原理, 单输入单输出系统。

对动力学耦合不强的机器人(如SCARA, 低负载下的机械臂), 舵机控制。

qd​,q: 期望关节位置和实际关节位置(标量或向量, 但独立控制); e: 跟踪误差; Kp​,Ki​,Kd​: PID增益(标量或对角矩阵); τ: 输出控制量(力矩或电流); 积分项 I=∫edt; 微分项 D=e˙。

状态:​ {读取反馈, 计算误差, 计算P项, 计算I项(积分), 计算D项(微分), 求和输出, 更新积分器}。
转移:​ 周期性执行:读取当前关节位置 q-> 计算误差 e=qd​−q-> 计算比例项 P=Kp​e-> 更新积分器 I=I+Ki​eΔt-> 计算微分项 D=Kd​(e−eprev​)/Δt-> 计算输出 τ=P+I+D-> 限幅 -> 输出 -> 保存当前误差 eprev​=e。

微分方程, 积分, 误差反馈, 稳定性(通过增益调谐保证)。

基于误差反馈的控制律描述。

控制循环(~1kHz):​ 1. 读取关节编码器值 q。 2. 从轨迹生成器获取当前时刻期望位置 qd​。 3. 计算误差 e=qd​−q。 4. 计算比例项输出: P=Kp​⋅e。 5. 更新积分项: I=I+Ki​⋅e⋅Ts​, 其中 Ts​为控制周期。 6. 计算微分项: D=Kd​⋅(e−eprev​)/Ts​。 7. 计算总控制输出: τ=P+I+D。 8. 对 τ进行限幅(如 τmax​)。 9. 若输出饱和, 可执行抗积分饱和逻辑(如 clamping)。 10. 将 τ转换为电流指令发送给电机驱动器。 11. 更新 eprev​=e, 等待下一控制周期。

严格的周期性顺序序列, 各关节控制循环独立, 可并行执行。

单关节单步计算复杂度 O(1)。 N个关节总复杂度 O(N)。 非常高效。

专用伺服驱动器/MCU:​ 每个关节的PID控制通常在独立的伺服驱动器或MCU中完成。指令: 读取编码器(SPI/SSI), 浮点乘加(计算PID), 输出PWM或模拟量。 调度: 高优先级定时器中断触发控制循环。 主CPU可能只发送位置指令。

经典控制理论, 电机伺服控制, 嵌入式系统。

Robot-0018

决策

模仿学习

行为克隆

从专家演示数据中学习状态到动作的映射策略。

行为克隆(监督学习)

1. 数据收集:​ 记录专家演示数据集 D={(τi​)}, 每条轨迹 τi​=(s1​,a1​,s2​,a2​,...,sT​), 包含状态 st​和专家动作 at​。
2. 模型训练:​ 将问题形式化为监督学习。 使用神经网络(如MLP)参数化策略 (\pi_\theta(a

s) )。 训练目标是最小化负对数似然损失: (L(\theta) = -\mathbb{E}{(s,a) \sim D} [\log \pi\theta(a

s)] )。 对于确定性策略, 可使用均方误差: (L(\theta) = \mathbb{E}_{(s,a) \sim D} [

a - \pi_\theta(s)

^2] )。
3. 策略部署:​ 训练完成后, 将学得的策略 πθ​部署到机器人上。 在状态 st​时, 机器人执行动作 at​=πθ​(st​)。

策略与专家策略的相似度(动作MSE), 任务成功率。

监督学习, 经验风险最小化, 模式识别。

从人类遥操作学习机器人技能(如抓取, 装配), 自动驾驶行为学习。

专家演示数据集 D; 状态 s(如传感器读数, 图像); 专家动作 a; 策略神经网络参数 θ; 损失函数 L; 优化器(如Adam)。

状态:​ {数据收集, 模型训练, 策略执行}。
转移:​ 离线阶段:收集专家数据 -> 训练神经网络策略直到收敛 -> 在线阶段:读取当前状态s -> 神经网络前向传播得到动作a -> 执行a -> 循环。

统计(经验分布), 优化(梯度下降最小化损失), 函数逼近(神经网络)。

Robot-0019

结构/器械

抓取规划

姿态生成

基于物体和目标抓取类型, 生成候选的机械手抓取位姿。

基于采样的抓取姿态生成

1. 物体表示:​ 获取目标物体的三维模型(点云或网格)。
2. 抓取参数化:​ 定义抓取为机械手在物体坐标系下的位姿 Thandobject​(包括位置和朝向)。 对于二指夹持, 还需定义夹持点对和接近方向。
3. 姿态采样:​ 在物体表面或周围空间采样大量候选抓取位姿。 例如, 在物体表面采样点, 并以该点法线方向作为候选接近方向之一, 再绕法线旋转采样多个滚转角。
4. 姿态过滤与排序:​ 根据几何和物理启发式规则快速过滤无效抓取(如与物体碰撞、夹点不可达)。 对剩余抓取, 使用抓取质量度量(如抗扰能力、力闭合指标)进行评分排序。
5. 输出:​ 输出Top-K个高质量抓取候选, 供后续的运动规划和执行模块使用。

抓取成功率, 力闭合/形闭合指标, 规划时间。

刚体运动学, 接触力学, 几何推理, 采样理论。

机械臂随机抓取(bin picking), 服务机器人抓取家居物品。

物体点云/网格模型; 抓取位姿 T=(R,t); 夹持器开合宽度; 抓取质量分数 Q; 采样数量 N; 力闭合检验阈值。

状态:​ {获取物体模型, 采样候选位姿, 快速碰撞检查, 抓取质量评估, 排序与选择}。
转移:​ 输入物体模型 -> 在物体表面或周围采样N个抓取位姿 -> 对每个候选, 检查夹持器与物体的碰撞 -> 对无碰撞候选计算抓取质量分数Q -> 根据Q排序 -> 输出最佳抓取候选。

几何(表面采样, 法线计算, 旋转变换), 概率(随机采样), 排序, 优化(寻找高质量抓取)。

基于几何约束和质量度量的生成-测试流程描述。

1. 预处理:​ 输入物体点云, 计算每个点的法线。 2. 采样抓取点:​ 在点云中随机(或均匀)采样一个点 p作为预抓取点。 3. 采样接近方向:​ 以点 p的法线 n作为一个主要的接近方向候选。 为避免单一方向, 在法线周围的一个圆锥内随机扰动, 得到新的接近方向 a。 4. 采样滚转角:​ 绕接近方向 a随机旋转一个角度 ϕ, 从而完全确定夹持器的坐标系(通常Z轴与 a对齐)。 5. 设置预抓取距离:​ 将夹持器坐标系从点 p沿 −a方向平移一个预抓取距离 dpregrasp​, 得到最终的抓取位姿 T。 6. 碰撞检测:​ 将夹持器模型放置到位姿 T, 并闭合到预定宽度, 检测夹持器与物体自身及环境的碰撞。 若碰撞, 丢弃此候选。 7. 质量评估:​ 对无碰撞的候选, 计算其力闭合度量(例如, 通过计算抓取矩阵 G并检查其是否行满秩, 或计算最小抵抗扰动力的大小)。 得到分数 Q。 8. 循环:​ 重复步骤2-7, 直到生成足够数量的候选(如1000个)或超时。 9. 排序输出:​ 将所有候选按质量分数 Q降序排列, 输出前K个。

顺序/并行序列。 采样循环是顺序的, 但每个候选的碰撞检测和质量评估可完全并行。

时间复杂度: 采样N个候选, 每个候选评估复杂度取决于碰撞检测(与模型复杂度相关)和质量度量计算。 总体为 O(N⋅M), M为单次评估成本。 可并行化降低延迟。

CPU/GPU:​ 采样和流程控制在CPU。 碰撞检测(使用包围盒层次树)和质量评估计算密集, 适合在GPU上并行化处理成千上万个候选抓取。 CPU指令: 随机数生成, 几何变换。 GPU指令: 并行线程, 每个线程处理一个候选抓取的检测和评估。

计算几何, 接触力学, 随机采样, 机器人抓取理论。

Robot-0020

决策/运筹

任务调度

资源分配

在有限资源和时间约束下, 为一系列任务分配机器人/资源并排序。

混合整数线性规划

1. 问题建模:​ 定义任务集合 J={1,...,n}, 机器人/资源集合 R={1,...,m}。 定义决策变量: 二元分配变量 xij​∈{0,1}表示任务j是否分配给机器人i; 连续时间变量 sj​,cj​表示任务j的开始和完成时间。
2. 目标函数:​ 最小化总完工时间(makespan): minCmax​, 其中 Cmax​≥cj​,∀j。 或最小化总任务完成时间等。
3. 约束条件:​ a. 分配约束:​ 每个任务必须分配给一个机器人: ∑i∈R​xij​=1,∀j。 b. 资源容量约束:​ 每个机器人在同一时间最多执行一个任务(离散资源)。 c. 时序约束:​ 任务可能有先后序关系(precedence): ck​≤sj​如果任务k必须在任务j之前完成。 d. 处理时间约束:​ cj​=sj​+pij​(如果 xij​=1), 其中 pij​是机器人i处理任务j的时间。 此约束需线性化(大M法)。
4. 求解:​ 使用MILP求解器(如Gurobi, CPLEX)求解。

最优性间隙, 求解时间, 调度长度(Makespan)。

运筹学, (混合)整数规划, 调度理论。

多机器人协同作业调度(如仓储订单履行, 多AGV路径规划), 生产排程。

任务集合 J, 机器人集合 R; 处理时间 pij​; 决策变量: xij​(二元), sj​,cj​,Cmax​(连续); 大常数 M; 优先序集合 P。

状态:​ {问题建模, 构建MILP模型, 调用求解器, 解析结果, 分发调度方案}。
转移:​ 接收任务和资源信息 -> 根据规则构建目标函数和约束集合 -> 调用MILP求解器 -> 求解器进行分支定界等搜索 -> 获得最优解(分配 xij​和时间 sj​) -> 将调度方案(哪个机器人何时做什么)分发给各机器人。

优化(整数规划), 组合(分配和排序), 逻辑约束(通过二元变量和大M法线性化)。

形式化的优化问题描述(目标函数, 决策变量, 约束条件)。

1. 输入:​ 任务列表(每个任务属性, 如位置、类型、耗时估计), 机器人列表, 可能存在的任务优先关系图。 2. 模型构建:​ a. 定义决策变量(如上)。 b. 设置目标函数, 如 minCmax​。 c. 添加约束: 分配约束、资源不冲突约束(对同一机器人的任意两个任务j,k, 有 sk​≥cj​或 sj​≥ck​, 通过大M法线性化)、优先约束、处理时间约束。 3. 求解:​ 将构建的MILP模型(目标函数和约束方程组)输入求解器。 求解器执行预处理、线性规划松弛、分支(对整数变量)、割平面、启发式搜索等步骤, 寻找最优解。 4. 输出解析:​ 从求解器输出中读取 xij​,sj​,cj​的值。 5. 调度分发:​ 为每个机器人i生成其任务序列: 根据 xij​=1确定分配给它的任务, 并根据 sj​排序, 形成“在时间 sj​执行任务j”的指令序列, 发送给相应机器人。

离线顺序求解(模型构建->求解->分发)。 求解过程内部是复杂的搜索序列(分支定界)。

最坏情况下是指数级复杂度(NP难)。 实际求解时间取决于问题规模(任务和机器人数量)和约束紧致度, 可能从毫秒到小时不等。

CPU (主控机):​ 执行模型构建(生成系数矩阵), 调用MILP求解器库。 求解器内部进行大量浮点线性规划求解和整数分支操作。指令: 浮点运算, 内存访问, 条件分支。 通常非实时, 在任务开始前或动态重规划时运行。

运筹学, 整数规划, 调度算法, 组合优化。

编号

领域

模型/算法方向

类别

模型/算法配方

算法/模型/函数/引擎方法名称

算法/模型/函数/引擎方法的逐步思考推理过程及每一个步骤的数学方程式

精度/密度/误差/强度

底层规律/理论定理

算法/模型应用场景

变量/常量/张量/标量/向量参数列表及说明

状态机

数学特征

语言特征

时序和交互流程的所有细节/分步骤时序情况及数学方程式

顺序/乱序/差序列/倒序/并行序列/分布式序列/随机序列/其他

复杂度

机器人的各类芯片执行的各类指令和指令代码情况和各类硬件芯片执行调度情况

关联知识

Robot-0021

视觉

特征提取

局部特征描述

检测并描述图像中具有尺度、旋转不变性的关键点。

尺度不变特征变换

1. 尺度空间极值检测:​ 构建图像的高斯金字塔和差分高斯金字塔。 高斯模糊: L(x,y,σ)=G(x,y,σ)∗I(x,y), 其中 G是高斯核。 差分高斯: D(x,y,σ)=L(x,y,kσ)−L(x,y,σ)。 在 D(x,y,σ)的三维空间(x, y, σ)中, 将每个点与其同尺度的8邻域和上下相邻尺度的9x2个点比较, 寻找局部极值点作为候选关键点。
2. 关键点定位:​ 对候选关键点, 通过拟合三维二次函数进行精确定位并去除低对比度和边缘响应点。 利用 D的泰勒展开: D(x)=D+∂x∂DT​x+21​xT∂x2∂2D​x, 求导得精确偏移量 x^=−∂x2∂2D−1​∂x∂D​。 若 (

D(\hat{\mathbf{x}})

)小于阈值则剔除。 利用Hessian矩阵主曲率比值剔除边缘点。
3. 方向分配:​ 在关键点所在高斯图像邻域内, 计算梯度幅值 m(x,y)=(L(x+1,y)−L(x−1,y))2+(L(x,y+1)−L(x,y−1))2​和方向 θ(x,y)=\atan2((L(x,y+1)−L(x,y−1)),(L(x+1,y)−L(x−1,y)))。 生成梯度方向直方图(36个柱), 将主峰(大于峰值的80%)方向作为该关键点方向, 实现旋转不变性。
4. 关键点描述子生成:​ 将关键点邻域旋转至主方向。 划分4x4子区域, 在每个子区域内计算8个方向的梯度方向直方图, 构成4x4x8=128维的特征向量。 归一化此向量, 增强光照不变性。

特征点重复率, 匹配正确率。

尺度空间理论, 高斯差分逼近拉普拉斯算子, 图像局部梯度统计。

视觉SLAM中的回环检测, 物体识别与图像匹配。

输入图像 I(x,y); 高斯尺度空间 L(x,y,σ); 差分高斯空间 D(x,y,σ); 关键点位置 (x,y,σ,θ); 128维描述子向量 f; 对比度阈值; 边缘阈值。

状态:​ {构建尺度空间, 检测极值点, 精炼关键点, 分配方向, 生成描述子}。
转移:​ 输入图像 -> 构建高斯金字塔和DOG金字塔 -> 在DOG空间检测局部极值 -> 对每个候选点进行精确定位和过滤 -> 为每个关键点分配主方向 -> 计算关键点邻域的旋转不变描述子 -> 输出关键点列表和描述子矩阵。

尺度空间(连续尺度分析), 极值检测, 梯度统计(直方图), 线性代数(Hessian矩阵分析), 归一化。

基于多尺度分析和梯度统计的局部特征描述。

1. 尺度空间构建:​ 对原始图像进行不同σ的高斯模糊, 并下采样构建金字塔(Octave)。 计算相邻高斯图像的差得到DOG金字塔。 2. 极值检测:​ 遍历每个Octave中的每个DOG图像(中间层), 将每个像素与其26邻域(同层8个+上层9个+下层9个)比较, 记录极值点位置和尺度。 3. 关键点精炼:​ 对每个候选点, 迭代计算偏移量 x^直至收敛或超出范围。 计算 D(x^), 若小于对比度阈值则丢弃。 计算Hessian矩阵 H=[Dxx​Dxy​;Dxy​Dyy​], 若其迹和行列式的比值 Det(H)Tr(H)2​>r(r+1)2​(r通常为10), 则作为边缘点丢弃。 4. 方向分配:​ 在关键点所在尺度的高斯图像 L上, 取一定半径的圆形区域, 计算区域内所有像素的梯度幅值和方向。 用高斯加权函数生成36柱的方向直方图, 平滑后取峰值为主方向, 辅方向为大于主峰80%的峰。 5. 描述子生成:​ 以关键点为中心, 将坐标轴旋转为主方向。 取16x16的邻域, 划分为4x4的子区域。 对每个子区域(4x4像素), 计算其内像素的梯度方向(相对于关键点主方向旋转后的方向), 加到8个方向的直方图中, 并用高斯窗函数加权。 将16个区域的8维直方图连接成128维向量, 并进行归一化、阈值截断(对抗光照变化)、再归一化, 得到最终描述子。

顺序/并行序列。 尺度空间构建和极值检测步骤有很强的数据局部性, 可并行处理不同尺度和区域。 描述子计算可对每个关键点并行。

时间复杂度: 构建尺度空间和DOG为 O(N⋅S)(N为像素数, S为尺度数)。 极值检测为 O(N⋅S)。 描述子生成为 O(K⋅16⋅16)(K为关键点数)。 整体计算密集。

Robot-0022

控制

柔顺控制

阻抗控制

将机器人末端等效为一个质量-弹簧-阻尼系统, 通过调节其动力学参数来实现对外力的柔顺响应。

阻抗控制(基于位置的阻抗控制)

1. 目标阻抗模型:​ 定义机器人末端在任务空间的目标阻抗行为: Md​(x¨−x¨d​)+Bd​(x˙−x˙d​)+Kd​(x−xd​)=Fext​。 其中 xd​,x˙d​,x¨d​是期望位姿/速度/加速度, x,x˙,x¨是实际值, Fext​是测量的外部力。 Md​,Bd​,Kd​是期望的惯性、阻尼和刚度矩阵。
2. 控制律生成:​ 由目标阻抗方程解算得到参考加速度: x¨r​=x¨d​+Md−1​[Fext​−Bd​(x˙−x˙d​)−Kd​(x−xd​)]。
3. 内环位置控制:​ 将 x¨r​积分(或通过二次规划)得到参考轨迹 xr​,x˙r​, 输入到一个高增益的位置控制器(如计算转矩控制)进行跟踪。 即内环控制器使机器人尽可能准确地跟踪 xr​, 从而在外力 Fext​作用下表现出期望的阻抗特性。

阻抗模型跟踪误差(实际力与模型预测力的偏差), 位置跟踪带宽。

二阶线性系统动力学, 导纳控制(位置型阻抗控制本质是导纳控制), 力与位置混合控制。

机器人与人协作(拖动示教, 协作搬运), 精密装配, 轮廓跟踪。

期望位姿 xd​,x˙d​,x¨d​; 实际位姿 x,x˙; 外部力 Fext​; 目标阻抗参数 Md​,Bd​,Kd​; 参考轨迹 xr​,x˙r​,x¨r​; 内环控制器的控制输出 τ。

状态:​ {读取状态与外力, 计算阻抗模型输出(参考加速度), 生成参考轨迹, 内环位置控制跟踪}。
转移:​ 周期性执行:读取当前末端位姿 x,x˙和外力 Fext​-> 根据阻抗模型计算参考加速度 x¨r​-> 对 x¨r​进行积分得到 x˙r​,xr​-> 内环位置控制器(如PD+前馈)计算关节力矩 τ以跟踪 xr​,x˙r​-> 输出 τ。

微分方程(二阶系统), 线性代数(矩阵求逆, 如果不是对角阵), 积分, 动力学。

基于目标动力学模型(阻抗)的控制框架描述。

控制循环(~1kHz):​ 1. 读取关节编码器, 经正运动学计算得到末端实际位姿 x和速度 x˙。 2. 读取六维力传感器, 经过坐标变换得到在任务空间末端受到的外部力 Fext​。 3. 根据当前误差和期望阻抗模型计算参考加速度: x¨r​=x¨d​+Md−1​[Fext​−Bd​(x˙−x˙d​)−Kd​(x−xd​)]。 4. 生成参考轨迹: 通常通过数值积分生成参考速度和位置。 例如: \dot{x}_r = \dot{x}_r_{prev} + \ddot{x}_r \cdot T_s , x_r = x_r_{prev} + \dot{x}_r \cdot T_s 。 更精确的做法是求解一个轨迹优化问题。 5. 内环控制: 将 xr​,x˙r​,x¨r​作为计算转矩控制(Robot-0003)的输入, 计算关节力矩 τ。 6. 输出 τ给驱动器。 7. 更新上一时刻的参考状态: x_r_{prev} = x_r, \dot{x}_r_{prev} = \dot{x}_r 。

严格的周期性顺序序列。

单步计算复杂度取决于任务空间维度和内环控制器的复杂度。 阻抗模型计算为 O(n3)(若 Md​非对角需求逆)。 内环计算转矩控制也为 O(n3)。 总体计算量较大。

CPU/专用控制芯片:​ 执行正运动学、力传感器坐标变换、矩阵运算(求逆, 乘加)、数值积分、内环控制律计算。 指令: 浮点矩阵运算, 积分运算。 需要实时处理力反馈和位置反馈。

操作空间控制, 力控制, 机器人动力学。

Robot-0023

决策

规划与搜索

蒙特卡洛树搜索

通过随机模拟来评估动作价值, 并逐步将搜索集中在更有希望的动作上。

蒙特卡洛树搜索(用于确定性环境)

1. 选择:​ 从根节点(当前状态)开始, 递归地应用子节点选择策略(如UCT)下降到叶节点。 UCT分数: UCT=Ni​Qi​​+cNi​lnNp​​​, 其中 Qi​是节点i的累计价值, Ni​是访问次数, Np​是父节点访问次数, c是探索常数。 选择最大化UCT分数的子节点, 直到遇到一个未完全展开的节点(即还有未尝试过的动作)。
2. 扩展:​ 如果当前叶节点不是终止状态, 则从未尝试的动作集合中选择一个动作A, 创建一个新的子节点, 状态为执行A后的结果。
3. 模拟:​ 从新扩展的节点开始, 使用默认策略(如随机策略)进行模拟(Rollout), 直到到达游戏终止状态或一定深度, 获得一个模拟结果(奖励R)。
4. 回溯:​ 将模拟结果R沿着选择阶段经过的路径反向传播, 更新路径上所有节点的访问次数 N和价值 Q。 对于最大化玩家, Q=Q+R。

胜率/期望奖励, 搜索效率(每步时间内的模拟次数)。

多臂赌博机(UCT公式), 蒙特卡洛方法, 树搜索。

机器人游戏决策(如围棋), 复杂规划问题(如拼图, 部分观测下的决策)。

状态 s; 动作 a; 节点包含: N(s)访问次数, Q(s,a)动作价值, P(s,a)先验概率(如有); 模拟奖励 R; 探索常数 c; 默认策略(随机、简单启发式)。

状态:​ {选择, 扩展, 模拟, 回溯}。
转移:​ 在给定的计算预算内循环: 从根节点开始, 通过选择策略下行至叶节点 -> 若叶节点非终止且可扩展, 则扩展一个新子节点 -> 从新节点(或叶节点)开始执行模拟, 得到奖励R -> 沿着选择路径回溯, 更新所有经过节点的N和Q。 预算用尽后, 从根节点选择访问次数最多的动作执行。

概率(蒙特卡洛模拟), 统计(UCB公式平衡探索与利用), 树结构搜索, 回溯更新。

基于树遍历和随机模拟的迭代搜索过程描述。

单个迭代:​ 1. 选择:​ 设当前节点 v为根节点。 While v不是叶节点(即所有动作都已展开): a. 根据UCT公式选择子节点: a∗=argmaxa​(N(v,a)Q(v,a)​+cN(v,a)lnN(v)​​)。 b. 将 v更新为与动作 a∗对应的子节点。 2. 扩展:​ 如果 v对应的状态 s非终止, 且其未尝试的动作集 Aun​非空, 则: a. 从 Aun​中选择一个动作 a′(随机或按先验概率)。 b. 执行 a′得到新状态 s′。 c. 创建新节点 v′对应 s′, 并添加为 v的子节点。 d. 将 v′设为当前节点。 3. 模拟:​ 从当前节点 v′(或 v, 如果未扩展)的状态开始, 使用默认策略(如均匀随机选择动作)进行模拟, 直到达到终止条件(如游戏结束, 达到最大深度D)。 记录模拟获得的奖励 R。 4. 回溯:​ 从当前节点开始, 沿着选择路径回溯到根节点。 对于路径上的每个节点 v和选择的动作 a, 更新: N(v)=N(v)+1, N(v,a)=N(v,a)+1, Q(v,a)=Q(v,a)+R。

迭代序列。 每次迭代是顺序的选择-扩展-模拟-回溯。 大量迭代之间相互独立, 可并行化(如根并行, 叶并行)。

时间复杂度: 每次迭代的复杂度取决于选择路径长度(树深度D)和模拟长度(L)。 总复杂度为 O(I⋅(D+L)), I为迭代次数。 空间复杂度为存储的节点数量。

CPU/GPU:​ 选择与回溯步骤涉及树遍历和更新, 在CPU上高效。 模拟步骤计算简单但次数巨大, 适合在CPU多核或GPU上大规模并行。 指令: 浮点运算(计算UCT), 随机数生成, 哈希表查找(存储节点), 内存访问。

强化学习, 博弈论, 启发式搜索, 蒙特卡洛方法。

Robot-0024

通信

多机器人协同

时钟同步

使分布式系统中的各机器人节点保持时间一致。

精确时间协议(简化版/基于偏移测量与补偿)

1. 同步消息交换:​ 主节点(Master)在时间 t1​发送同步消息(Sync)。 从节点(Slave)在本地时间 T2​收到该消息。 主节点随后在时间 t3​发送跟随消息(Follow_Up), 其中包含 t1​的精确时间戳。 从节点在时间 T4​发送延迟请求消息(Delay_Req)。 主节点在时间 t5​收到该消息, 并在时间 t6​发送延迟响应消息(Delay_Resp), 其中包含 t5​的时间戳。
2. 偏移与延迟计算:​ 假设主从时钟偏移为 θ, 单向传播延迟为 d。 则有: T2​=t1​+θ+d, t5​=T4​−θ+d。 由此可估算偏移和延迟: θ^=2(T2​−t1​)−(t5​−T4​)​, d^=2(T2​−t1​)+(t5​−T4​)​。
3. 时钟校正:​ 从节点根据估算的偏移 θ^调整其本地时钟。 可以通过软件调整(在时间计算中加上偏移)或通过硬件调整(调节时钟振荡器频率)。

同步精度(微秒级到纳秒级), 长期稳定性。

网络测量, 时钟模型( Cslave​(t)=a⋅Cmaster​(t)+b), 最小二乘估计。

多机器人协同运动(如编队), 分布式传感器数据融合, 需要严格时间戳的工业自动化。

主节点时间戳 t1​,t3​,t5​,t6​; 从节点本地时间戳 T2​,T4​; 时钟偏移 θ; 网络延迟 d; 校正量 θ^; 时钟频率漂移 a。

状态:​ {同步消息交换, 时间戳记录, 偏移与延迟计算, 时钟调整}。
转移:​ 周期性或事件驱动: 主节点发送Sync -> 从节点记录T2 -> 主节点发送包含t1的Follow_Up -> 从节点记录t1, T2 -> 从节点发送Delay_Req -> 主节点记录t5并回复包含t5的Delay_Resp -> 从节点收到Delay_Resp, 记录t5 -> 计算 θ^,d^-> 调整本地时钟 -> 等待下一同步周期。

代数运算(解方程求偏移和延迟), 时间序列, 测量与估计, 补偿。

基于消息交换和时间戳的协议描述。

一轮同步过程:​ 1. 主节点准备发送Sync消息。 在消息实际离开网络接口的精确时刻(硬件时间戳点), 记录时间 t1​。 2. 从节点在本地时钟 T2​时刻收到Sync消息(在MAC层打时间戳)。 3. 主节点随后发送Follow_Up消息, 其中包含 t1​值。 4. 从节点在本地时间 T4​发送Delay_Req消息。 5. 主节点在 t5​时刻收到Delay_Req消息, 并随后发送Delay_Resp消息, 其中包含 t5​值。 6. 从节点收到Delay_Resp, 提取 t5​。 7. 计算: 偏移 θ^=2(T2​−t1​)−(t5​−T4​)​, 延迟 d^=2(T2​−t1​)+(t5​−T4​)​。 8. 校正从节点时钟: 新的本地时间 = 旧的本地时间 - θ^。 更高级的实现会使用多个测量值来估计和补偿时钟频率漂移 a。

顺序/事件驱动序列。 Sync/Follow_Up和Delay_Req/Resp交换是顺序的, 但可以周期性地重复进行。

单轮计算复杂度 O(1)。 需要高精度时间戳支持(硬件支持最佳)。

网络接口芯片(NIC):​ 关键是需要支持硬件时间戳, 在报文发送/接收的物理层精确打戳。 CPU/专用时钟芯片: 读取硬件时间戳, 执行偏移计算, 调整软件时间或通过PLL控制硬件时钟。 指令: 读取硬件寄存器(时间戳), 浮点减法和除法(计算偏移)。 调度: 由网络报文到达和定时器事件驱动。

网络协议, 时钟同步理论, 分布式系统。

Robot-0025

材料/结构

状态估计

应变感知

通过测量材料应变来估计外部力或结构变形。

基于应变片和惠斯通电桥的力/力矩感知

1. 应变传感:​ 将应变片粘贴在弹性体(如机器人手指、连杆)表面。 当弹性体受力变形时, 应变片随之伸缩, 其电阻值发生改变: ΔR=R0​⋅GF​⋅ϵ, 其中 R0​是初始电阻, GF​是应变片灵敏系数, ϵ是应变。
2. 电桥电路:​ 将应变片接入惠斯通电桥(通常为全桥或半桥)以将微小的电阻变化转换为电压变化。 对于全桥, 输出电压: Vout​=Vin​⋅4GF​⋅ϵ​(近似, 假设四片应变片参数一致且两两受力方向相反)。
3. 信号调理与采样:​ 对 Vout​进行放大、滤波, 然后由ADC采样得到数字信号 U。
4. 解耦与标定:​ 由于多个方向的力/力矩会引起弹性体上不同位置产生复杂的应变场, 需要通过标定建立ADC读数向量 U到六维力/力矩向量 F的映射: F=C⋅U, 其中 C是一个6xn的标定矩阵, 通过施加已知力并记录 U后用最小二乘法求得。

力感知分辨率(N), 精度(%FS), 串扰(%)。

胡克定律(小变形下应力应变线性), 压阻效应, 电路理论(惠斯通电桥), 线性回归。

机器人六维力/力矩传感器, 夹持器握力传感器, 关节扭矩传感器。

应变 ϵ; 应变片电阻变化 ΔR; 灵敏系数 GF​; 电桥输入电压 Vin​; 输出电压 Vout​; ADC读数向量 U; 力/力矩向量 F=[Fx​,Fy​,Fz​,Mx​,My​,Mz​]T; 标定矩阵 C。

状态:​ {应变发生, 电阻变化, 电桥失衡输出电压, 信号调理, ADC采样, 标定矩阵乘法}。
转移:​ 外部力作用于弹性体 -> 产生应变 -> 应变片电阻变化 -> 惠斯通电桥失衡产生 Vout​-> 放大滤波 -> ADC采样得到数字量 Ui​-> 将多个通道的 Ui​组合成向量 U-> 与标定矩阵 C相乘得到力向量 F-> 输出。

线性关系(应变-电阻, 电桥输出-应变, 标定矩阵), 代数(矩阵乘法), 最小二乘拟合(标定过程)。

基于物理效应(压阻)和线性变换的传感链描述。

1. 物理过程:​ 外力/力矩作用在传感器弹性体上, 引起局部应变。 2. 电学转换:​ 应变片电阻变化导致惠斯通电桥失衡, 产生差分电压 Vout​。 通常采用全桥提高灵敏度和温度补偿。 3. 信号调理:​ Vout​经仪表放大器放大, 然后通过低通滤波器去除高频噪声。 4. 数字化:​ 调理后的模拟电压被高速ADC采样, 得到数字值 Ui​(i对应第i个电桥通道, 通常需要多个通道测量多维力)。 5. 数字处理:​ 对 Ui​进行数字滤波(如移动平均)。 6. 力解算:​ 将多个通道的读数组成列向量 U=[U1​,U2​,...,Un​]T。 通过预先标定好的线性(或非线性)映射模型计算力/力矩。 对于线性模型: F6x1​=C6xn​⋅Unx1​。 7. 输出:​ 输出六维力/力矩向量 F。

顺序流处理序列。 物理过程是并行的, 但信号调理、采样、解算在电子系统中是顺序流水线。

解算步骤复杂度为矩阵乘法 O(6⋅n), 非常低。 主要瓶颈和精度取决于模拟电路和ADC性能。

模拟前端(AFE)芯片/ADC:​ 包含仪表放大器、滤波器、ADC。 执行模拟信号放大、滤波和数字化。 指令(内部): 采样保持, 逐次逼近或Sigma-Delta转换。
MCU:​ 读取ADC数字值, 执行数字滤波, 进行矩阵乘法 F=CU。 指令: 读取ADC寄存器, 乘加指令, 内存访问。 通常运行在专用传感器板的MCU上, 通过总线(如CAN, EtherCAT)向上层发送数据。

传感器技术, 材料力学, 模拟电路, 信号处理。

Robot-0026

芯片/集成电路

数字逻辑

运动控制脉冲生成

根据位置指令, 生成控制步进电机或伺服电机的脉冲序列。

数字差分分析器(用于步进电机脉冲插补)

1. 轨迹参数化:​ 给定目标位置 Ptarget​和最大速度 Vmax​、加速度 A。 规划梯形速度曲线(或S曲线): 加速段、匀速段、减速段。
2. DDA累加器原理:​ 使用一个累加器(寄存器)来积分速度。 在每个固定的时钟周期 Tc​(插补周期), 将速度值 V(以“脉冲当量/周期”为单位)加到累加器中。 累加器有一个固定的位宽, 其溢出(最高位进位)就产生一个输出脉冲(PULSE)。 溢出后, 累加器保留余数, 实现了脉冲的细分。
3. 速度曲线更新:​ 在加速段, 每个插补周期根据加速度增加速度值: V(k+1)=V(k)+A⋅Tc​。 在减速段则减少。 匀速段速度不变。
4. 方向控制:​ 根据目标位置与当前位置的符号差, 生成方向信号(DIR)。
5. 位置反馈:​ 对输出的脉冲进行计数, 得到实际位置, 并与目标位置比较, 在接近目标时开始减速, 到达时停止。

脉冲频率精度, 位置精度(无丢步前提下), 速度平滑性。

数字积分, 运动学(梯形速度规划), 脉冲频率调制。

3D打印机、CNC、扫描仪等设备的步进电机控制, 低成本伺服电机位置控制。

目标位置 Ptarget​(脉冲数); 当前位置 Pcurrent​; 当前速度 V(每插补周期累加值); 加速度 A; 插补时钟周期 Tc​; DDA累加器 ACC(通常为N位寄存器, 如32位); 脉冲输出 PULSE; 方向输出 DIR。

状态:​ {空闲, 加速, 匀速, 减速, 停止}。
转移:​ 接收到新目标位置 -> 计算运动方向DIR -> 进入加速状态, 每个 Tc​周期增加V并累加ACC -> 当速度达到 Vmax​或进入减速区, 进入匀速状态 -> 当剩余脉冲数小于减速所需脉冲数, 进入减速状态, 每个周期减少V -> 当 Pcurrent​=Ptarget​, 进入停止状态, 速度V清零。

离散积分(累加器), 运动规划(梯形速度曲线), 有限状态机。

基于累加器溢出的脉冲生成机制描述。

在每个插补时钟周期 Tc​(如 10us)内执行:​ 1. 位置管理:​ 计算剩余距离 ΔP=Ptarget​−Pcurrent​。 2. 速度规划:​ 根据当前状态(加速/匀速/减速)和剩余距离, 更新当前速度V。 例如, 在加速段: V=V+A⋅Tc​, 但不超过 Vmax​。 在减速段: 计算理论减速速度曲线, 确保在剩余距离内减速到0。 3. DDA累加:​ ACC=ACC+V。 4. 脉冲生成:​ 检查ACC的最高位(或一个特定高位)是否溢出。 如果溢出: a. 产生一个PULSE脉冲(输出一个高电平或边沿)。 b. 根据DIR信号方向, 更新当前位置: Pcurrent​=Pcurrent​±1。 c. ACC清除溢出位(或减去一个固定值, 如2^N)。 5. 状态转移判断:​ 根据新的 Pcurrent​和 ΔP判断是否应切换到减速或停止状态。 循环执行直到到达目标。

严格的周期性顺序序列。 每个 Tc​周期执行一次。

单周期计算复杂度 O(1)。 非常高效, 可用低成本MCU或FPGA实现。

MCU定时器/FPGA:​ MCU中通常由一个高优先级定时器中断服务例程实现。指令: 读取/写入累加器寄存器, 加法, 比较, 位操作(检查溢出), GPIO置位/清零(产生脉冲)。 在FPGA中, 可以用一个状态机和累加器硬件实现, 运行在很高的时钟频率下。

电机控制, 数字电路, 运动规划, 嵌入式系统。

Robot-0027

思考/推理

概率推理

状态滤波

在非线性、非高斯系统中进行递归贝叶斯状态估计。

无迹卡尔曼滤波

1. 选择Sigma点:​ 对于n维状态向量 xk−1​和协方差 Pk−1​, 计算2n+1个Sigma点 Xi​及其权重 Wi​: X0​=x^k−1​, Xi​=x^k−1​+((n+λ)Pk−1​​)i​,i=1,...,n, Xi​=x^k−1​−((n+λ)Pk−1​​)i−n​,i=n+1,...,2n。 权重: W0(m)​=λ/(n+λ),W0(c)​=W0(m)​+(1−α2+β),Wi(m)​=Wi(c)​=1/(2(n+λ)),i=1,...,2n。 参数 λ=α2(n+κ)−n。
2. 预测步:​ a. 传播Sigma点: (\mathcal{X}_{i,k

k-1}^* = f(\mathcal{X}{i, k-1}, u{k-1}) )。 b. 计算预测状态和协方差: (\hat{\mathbf{x}}_{k

k-1} = \sum{i=0}^{2n} W_i^{(m)} \mathcal{X}{i,k

k-1}^* ), (P_{k

k-1} = \sum{i=0}^{2n} W_i^{(c)} (\mathcal{X}{i,k

k-1}^* - \hat{\mathbf{x}}_{k

k-1})(\mathcal{X}_{i,k

k-1}^* - \hat{\mathbf{x}}_{k

k-1})^T + Q )。
3. 更新步:​ a. 传播Sigma点至观测空间: (\mathcal{Z}_{i,k

k-1} = h(\mathcal{X}_{i,k

k-1}) )。 b. 计算预测观测、协方差和互协方差: (\hat{\mathbf{z}}_{k

k-1} = \sum{i=0}^{2n} W_i^{(m)} \mathcal{Z}{i,k

k-1} ), (P{z} = \sum{i=0}^{2n} W_i^{(c)} (\mathcal{Z}_{i,k

Robot-0028

决策/运筹

路径规划

连续曲线优化

在已有点序列的基础上, 优化出一条平滑、动态可行的路径。

最小抖动轨迹生成(Minimum Snap)

1. 问题形式化:​ 给定N个路径点 p0​,p1​,...,pN​及其期望到达时间 t0​,t1​,...,tN​。 轨迹被分为N段, 第i段轨迹是时间 t∈[ti−1​,ti​]上的多项式 pi​(t)=∑j=0n​ci,j​tj, 通常取n=5(最小Jerk)或n=7(最小Snap)。
2. 优化目标:​ 最小化轨迹的“抖动”(Snap, 即加加速度的导数, 四阶导数的平方积分): J=∑i=1N​∫ti−1​ti​​​dt4d4pi​(t)​​2dt。 对于每个维度(x, y, z)独立, 总代价为和。
3. 约束条件:​ a. 连续性约束:​ 在连接点处, 位置、速度、加速度、加加速度(甚至Snap)连续。 b. 边界约束:​ 起点和终点的位置、速度、加速度等指定。 c. 中间点约束:​ 中间路径点位置指定。
4. 求解:​ 该问题可形式化为一个二次规划问题。 由于目标函数是系数的二次型, 约束是系数的线性方程, 可得到闭合解。 通过将多项式表示为在端点处的“导数”向量形式, 并使用映射矩阵转化为系数, 可以高效求解。

轨迹平滑度(Snap积分值), 动态可行性(速度/加速度是否超出限制)。

变分法, 二次规划, 多项式样条。

无人机/多旋翼飞行器的轨迹规划, 机械臂平滑运动规划。

路径点位置 pi​(三维); 时间点 ti​; 多项式阶数 n(如7); 多项式系数矩阵 C(N x (n+1) x 3); 导数连续性阶数 k(如4, 即位置、速度、加速度、加加速度连续); 约束矩阵 Aeq​,Aieq​; 约束向量 beq​,bieq​。

状态:​ {输入路径点与时间, 构建QP问题, 求解QP, 提取系数, 轨迹评估}。
转移:​ 给定路径点和时间分配 -> 构建最小Snap的QP问题(目标函数矩阵H, 约束矩阵A_eq) -> 求解线性方程 AeqT​H−1Aeq​μ=beq​得到拉格朗日乘子 -> 恢复最优多项式系数 -> 输出各段多项式函数。

优化(二次规划), 多项式代数, 线性等式约束, 变分(最小化泛函)。

基于多项式函数空间和优化目标的数学规划问题描述。

1. 输入:​ 路径点序列 p0​,...,pN​和对应的时刻 t0​,...,tN​。 2. 参数化:​ 选择多项式阶数n=7(最小化Snap)。 轨迹有N段, 每段是一个7次多项式, 有8个系数。 3. 构建优化问题:​ 目标函数: J=∑i=1N​∫ti−1​ti​​(pi(4)​(t))2dt=∑i=1N​ciT​Qi​ci​, 其中 Qi​是Hessian矩阵, 元素由积分 ∫ta+bdt决定。 约束: a. 起点/终点约束: 对 p1​(t0​)和 pN​(tN​)的导数(位置、速度、加速度等)设定值。 b. 连续性约束: pi(d)​(ti​)=pi+1(d)​(ti​), 对于d=0,1,2,3。 c. 中间点位置约束: pi​(ti​)=pi​。 所有这些约束都是关于系数 ci​的线性等式约束。 4. 求解:​ 将目标函数和约束写成标准QP形式: min21​cTHc, s.t. Aeq​c=beq​。 由于其特殊结构, 可通过求解KKT系统得到解析解。 常用方法: 利用“映射矩阵”将系数映射到端点各阶导数, 在该导数空间求解, 再映射回系数空间。 5. 输出:​ 得到每一段轨迹的多项式系数向量 ci​。 在任何时刻t, 可通过求值得到位置、速度、加速度。

离线顺序求解。 构建问题和求解是顺序的。 求解本身涉及线性系统求解。

时间复杂度: 构建矩阵为 O(N⋅n2)。 求解线性系统(利用带状稀疏结构)复杂度为 O(N)。 高效。

CPU:​ 执行矩阵构建(填充 Qi​矩阵元素), 稀疏线性系统求解(如使用LU分解, 但针对此特殊结构有更高效的求解器)。指令: 浮点运算, 稀疏矩阵求解库调用。 通常在规划线程中运行, 非实时控制环。

最优控制, 样条曲线, 凸优化。

Robot-0029

视觉

三维重建

表面重建

从无序的三维点云中重建出网格模型。

泊松表面重建

1. 构建指示函数:​ 定义在三维空间中的一个标量函数 χ(p), 其在物体内部值为1, 外部为0。 物体的表面是该函数的跳跃处(等值面 χ=0.5)。
2. 从点云估计梯度场:​ 对每个输入点(带法向 ni​), 将其视为对内部指示函数梯度场 ∇χ的样本。 具体地, 将每个点及其法向卷积一个平滑滤波器(如高斯核), 得到连续的向量场 V(p)=∑i​ni​⋅θ(p−pi​), 其中 θ是平滑函数。
3. 求解泊松方程:​ 指示函数 χ的梯度应尽可能接近估计出的向量场 V: ∇χ=V。 对其两边取散度, 得到泊松方程: Δχ=∇⋅V, 其中 Δ是拉普拉斯算子。
4. 离散化与求解:​ 将空间划分为规则的体素网格(八叉树结构自适应)。 在网格节点上离散化泊松方程, 得到一个大型的稀疏线性系统: Lx=v, 其中 L是离散拉普拉斯算子矩阵, x是节点上的指示函数值向量, v是离散散度向量。
5. 提取等值面:​ 求解线性系统得到 x后, 使用移动立方体算法在网格上提取等值面(如 χ=0.5), 生成三角网格。

重建表面与真实表面的Hausdorff距离, 网格水密性, 对噪声的鲁棒性。

向量场理论(梯度, 散度), 泊松方程, 等值面提取。

从激光扫描点云重建物体模型, 环境三维建模。

输入点云 P={pi​}及其法向 {ni​}; 指示函数 χ; 向量场 V; 八叉树深度 D; 拉普拉斯矩阵 L; 未知数向量 x; 右侧向量 v; 等值面阈值 τ。

状态:​ {构建空间划分(八叉树), 计算向量场, 构建线性系统, 求解线性系统, 提取等值面}。
转移:​ 输入点云(需有法向)-> 构建自适应八叉树 -> 在每个八叉树节点上计算向量场 V的贡献 -> 组装离散泊松方程(L, v) -> 使用共轭梯度法等求解 Lx=v-> 在八叉树每个单元格内运行移动立方体算法提取三角面片 -> 输出网格。

向量微积分(梯度, 散度), 偏微分方程(泊松方程), 离散化(有限元/有限体积思想), 线性代数(稀疏系统求解), 等值面提取。

基于泊松方程和等值面的隐式表面重建方法描述。

1. 输入与预处理:​ 输入点云, 并估计每个点的法向(一致向外)。 2. 八叉树构建:​ 根据点云密度自适应构建一个深度为D的八叉树。 3. 设置函数空间:​ 在八叉树节点上定义基函数(通常是与节点关联的平滑函数)。 4. 计算向量场:​ 对每个采样点 pi​, 将其法向 ni​平滑地散布到其附近的八叉树节点上, 累加到节点对应的向量场系数中。 5. 构建线性系统:​ a. 离散拉普拉斯算子L: 基于八叉树邻接关系构建。 b. 右侧散度项v: 对每个节点, 计算其接收到的向量场的散度近似。 得到线性系统 Lx=v。 6. 求解线性系统:​ 由于L是对称正定稀疏矩阵, 使用共轭梯度法迭代求解指示函数在节点上的值 x。 7. 提取网格:​ 对八叉树中的每个单元格, 根据其8个顶点的 x值, 利用移动立方体查找表生成该单元格内的三角面片。 将所有面片组合, 形成水密的三角网格。 8. 可选后处理:​ 网格简化, 平滑。

顺序/迭代序列。 八叉树构建、系统构建、求解、提取等步骤顺序执行, 其中系统求解是迭代的。

时间复杂度: 与点数量和八叉树节点数量相关。 构建向量场和线性系统为 O(NlogN), 求解共轭梯度为 O(m⋅nn​)(m迭代次数, n_n节点数)。 内存消耗大。

CPU:​ 执行八叉树操作, 稀疏矩阵组装, 迭代线性求解(共轭梯度)。指令: 指针操作(树遍历), 稀疏矩阵-向量乘, 浮点运算。 内存访问模式不规则。 GPU加速可能用于法向估计和向量场计算。

计算几何, 计算机图形学, 数值分析, 偏微分方程数值解。

Robot-0030

控制/决策

强化学习

策略优化

通过与环境交互, 直接优化参数化的策略函数。

近端策略优化

1. 收集经验:​ 使用当前策略 πθold​​与环境交互, 收集一组轨迹(状态、动作、奖励)数据。
2. 计算优势估计:​ 使用广义优势估计等方法, 基于收集的数据计算每个状态-动作对的优势函数估计 A^t​。 GAE: A^t​=∑l=0∞​(γλ)lδt+l​, 其中 δt​=rt​+γV(st+1​)−V(st​), V是价值函数估计。
3. 构建替代目标函数:​ PPO通过裁剪概率比来限制策略更新的幅度。 概率比 (r_t(\theta) = \frac{\pi_\theta(a_t

s_t)}{\pi{\theta{old}}(a_t

s_t)} )。 目标函数为: LCLIP(θ)=E^t​[min(rt​(θ)A^t​,clip(rt​(θ),1−ϵ,1+ϵ)A^t​)], 其中 ϵ是超参数(如0.2)。
4. 优化策略:​ 在收集的数据上, 使用随机梯度上升法(如Adam)最大化目标函数 LCLIP(θ)若干轮, 更新策略参数 θ。 通常同时优化价值函数 Vϕ​(s)的均方误差损失。
5. 更新旧策略:​ 用优化后的 θ替换 θold​, 回到步骤1收集新数据。

学习曲线(累计奖励随训练轮次增长), 最终策略性能。

策略梯度定理, 重要性采样, 信赖域优化(通过裁剪近似)。

机器人 locomotion (行走、奔跑), 复杂操作技能(如拧瓶盖)的端到端学习。

策略网络参数 θ; 价值网络参数 ϕ; 优势估计 A^t​; 概率比 rt​(θ); 裁剪范围 ϵ; 折扣因子 γ; GAE参数 λ; 经验缓冲区数据。

状态:​ {交互收集数据, 计算优势, 策略优化(多轮梯度步), 策略更新}。
转移:​ 用当前策略与环境交互N步 -> 计算优势估计 A^t​-> 对策略网络执行K个epoch的优化, 最大化裁剪目标函数 -> 用新策略参数覆盖旧策略 -> 循环。

优化(梯度上升), 概率(重要性采样比率), 统计(优势估计), 裁剪(约束更新幅度)。

基于策略梯度、重要性采样和裁剪的优化算法描述。

训练循环:​ 1. 初始化:​ 随机初始化策略网络 πθ​和价值网络 Vϕ​。 2. 迭代:​ for iteration = 1, 2, ...: a. 数据收集:​ 用当前策略 πθold​​在环境中运行T个时间步, 收集状态、动作、奖励序列, 并计算每个状态的回报。 b. 优势计算:​ 使用收集的数据, 通过时间差分误差计算GAE优势估计 A^t​。 这需要价值网络 Vϕ​的预测。 c. 优化阶段:​ for epoch = 1, ..., K: i. 从收集的数据中随机采样一个mini-batch。 ii. 计算概率比 (r_t(\theta) = \pi_\theta(a_t

s_t) / \pi{\theta{old}}(a_t

s_t) )。 iii. 计算裁剪目标函数值: LCLIP=E^[min(rt​(θ)A^t​,clip(rt​(θ),1−ϵ,1+ϵ)A^t​)]。 iv. 计算价值函数损失: LVF=E^[(Vϕ​(st​)−Rt​)2]。 v. 计算总损失: L=LCLIP−c1​LVF+c2​S[πθ​](st​), 其中S是熵奖励项。 vi. 对 θ,ϕ执行梯度上升/下降更新参数。 d. 策略更新:​ 设置 θold​←θ。

编号

领域

模型/算法方向

类别

模型/算法配方

算法/模型/函数/引擎方法名称

算法/模型/函数/引擎方法的逐步思考推理过程及每一个步骤的数学方程式

精度/密度/误差/强度

底层规律/理论定理

算法/模型应用场景

变量/常量/张量/标量/向量参数列表及说明

状态机

数学特征

语言特征

时序和交互流程的所有细节/分步骤时序情况及数学方程式

顺序/乱序/差序列/倒序/并行序列/分布式序列/随机序列/其他

复杂度

机器人的各类芯片执行的各类指令和指令代码情况和各类硬件芯片执行调度情况

关联知识

Robot-0031

控制

柔顺控制

导纳控制

根据测量的外力, 调整机器人的期望位置, 使机器人表现出期望的动力学特性。

导纳控制(基于位置的导纳控制)

1. 导纳模型:​ 定义期望的导纳行为(外力到位置修正的传递函数), 通常为二阶系统: Md​(x¨c​−x¨d​)+Bd​(x˙c​−x˙d​)+Kd​(xc​−xd​)=Fext​。 其中 xd​是原始期望位置, xc​是修正后的指令位置, Fext​是外力。
2. 求解修正位置:​ 在离散时间下, 将上述微分方程转换为差分方程, 或通过积分计算。 例如, 计算目标加速度: x¨c​=x¨d​+Md−1​[Fext​−Bd​(x˙c​−x˙d​)−Kd​(xc​−xd​)]。 通过数值积分(如欧拉法)更新 x˙c​和 xc​: x˙c​(k+1)=x˙c​(k)+x¨c​(k)Ts​, xc​(k+1)=xc​(k)+x˙c​(k)Ts​。
3. 内环位置跟踪:​ 将计算得到的修正位置指令 xc​输入到一个高带宽、高刚度的位置控制器(如PID或计算转矩控制), 驱动机器人实际位置 x跟踪 xc​。 核心思想是: 外环导纳环根据力计算柔顺的位置指令, 内环位置环快速准确地跟踪它。

导纳模型跟踪误差(实际位置与导纳模型输出位置的偏差), 力的灵敏度。

阻抗/导纳对偶性, 二阶系统动力学, 力-位置混合控制框架。

机器人与人物理协作(如拖动示教), 轮廓跟踪(用恒力按压曲面), 康复机器人。

原始指令 xd​,x˙d​,x¨d​; 修正指令 xc​,x˙c​,x¨c​; 外部力 Fext​; 导纳参数 Md​,Bd​,Kd​; 内环位置控制器输出 τ; 控制周期 Ts​。

状态:​ {读取外力与指令, 导纳模型计算, 数值积分更新指令, 内环位置控制}。
转移:​ 周期性执行:读取当前外力 Fext​和原始指令 xd​,x˙d​,x¨d​-> 根据导纳模型计算 x¨c​-> 积分得到 x˙c​,xc​-> 内环位置控制器计算力矩 τ以跟踪 xc​,x˙c​-> 输出 τ。

微分方程(二阶系统), 数值积分, 动力学, 控制框图(内外环)。

基于“力-位置”变换(导纳)和位置跟踪的双环控制结构描述。

控制循环(~1kHz):​ 1. 读取六维力传感器值 Fext​。 2. 获取当前期望的原始轨迹点 xd​,x˙d​,x¨d​。 3. 导纳环计算:​ a. 计算导纳模型输出加速度: x¨c​=x¨d​+Md−1​[Fext​−Bd​(x˙c​−x˙d​)−Kd​(xc​−xd​)]。 (注意: 此式中的 x˙c​,xc​为上周期积分结果)。 b. 数值积分: x˙c​=x˙c​+x¨c​⋅Ts​, xc​=xc​+x˙c​⋅Ts​。 4. 内环控制:​ 将 xc​,x˙c​,x¨c​作为内环计算转矩控制(Robot-0003)的输入, 计算关节力矩 τ。 5. 输出 τ。 6. 等待下一控制周期, 用新积分得到的 xc​,x˙c​作为下一周期的输入。

严格的周期性顺序序列。 外环(导纳)和内环(位置)在同一周期内顺序计算。

单步计算复杂度: 导纳模型计算为 O(n3)(若 Md​非对角需求逆), 加上内环控制计算 O(n3)。 总体计算量较大。

CPU/专用控制芯片:​ 执行力传感器数据读取、矩阵运算(求逆, 乘加)、数值积分、内环控制律计算。 指令: 浮点矩阵运算, 积分运算。 需要实时处理力反馈和高频位置控制。

操作空间控制, 力控制, 机器人动力学, 阻抗控制(对偶)。

Robot-0032

决策/状态估计

概率推理

非参数滤波

使用一组随机样本(粒子)来表示状态的后验概率分布。

粒子滤波(序列重要性采样与重采样)

1. 初始化:​ 从先验分布 p(x0​)中采样 N 个粒子 {x0i​}i=1N​, 并为每个粒子赋予初始权重 w0i​=1/N。
2. 预测(采样):​ 对于每个粒子 i, 从重要性分布(通常取状态转移分布)采样新状态: (x_k^i \sim q(x_k

x_{k-1}^i, z_k) = p(x_k

x{k-1}^i) )。
3. 更新(权重计算):​ 收到观测 zk​后, 更新每个粒子的权重: (w_k^i = w
{k-1}^i \cdot \frac{p(z_k

x_k^i) p(x_k^i

x_{k-1}^i)}{q(x_k^i

x_{k-1}^i, z_k)} )。 若取 (q = p(x_k

x{k-1}^i) ), 则简化为 (w_k^i = w{k-1}^i \cdot p(z_k

x_k^i) )。 然后归一化权重: w~ki​=wki​/∑j=1N​wkj​。
4. 重采样:​ 计算有效粒子数 Neff​=1/∑i=1N​(w~ki​)2。 若 Neff​<Nthreshold​, 则进行重采样。 根据归一化权重 w~ki​进行有放回抽样 N 次, 生成新的粒子集 {xki∗​}, 并重置权重为 1/N。
5. 状态估计:​ 估计系统状态为粒子集的加权平均: x^k​=∑i=1N​w~ki​xki​。

状态估计误差(RMSE), 滤波一致性。

贝叶斯定理, 蒙特卡洛方法, 重要性采样, 序贯估计。

机器人定位(非高斯噪声, 多模态分布, 如绑架问题), 视觉目标跟踪, 同步定位与地图构建(FastSLAM)。

粒子集合 {xki​,wki​}i=1N​; 状态转移概率 (p(x_k

x_{k-1}) ); 观测似然 (p(z_k

Robot-0033

整机

运动规划

采样规划

通过在构型空间中随机采样来快速探索空间, 并渐进优化路径。

快速探索随机树星(RRT*)

1. 初始化:​ 树 T 仅包含起始节点 xinit​。
2. 采样:​ 在自由构型空间中随机采样一个点 xrand​。
3. 最近邻搜索:​ 在树 T 中找到距离 xrand​最近的节点 xnearest​。
4. 扩展:​ 从 xnearest​向 xrand​方向扩展一个步长 η, 得到新节点 xnew​。 如果路径 (xnearest​,xnew​)无碰撞, 则将 xnew​加入树 T。
5. 选择父节点(重布线):​ 在以 xnew​为圆心、半径为 r 的邻域内, 寻找所有树节点 xnear​。 对于每个 xnear​, 检查从 xnear​到 xnew​的路径是否无碰撞, 并且通过 xnear​到达 xnew​的路径代价是否比通过当前父节点更低。 如果是, 则将 xnear​设为 xnew​的新父节点。 路径代价通常为累积距离: c(x)=c(parent(x))+d(parent(x),x)。
6. 重布线邻域节点:​ 对于每个邻域节点 xnear​, 检查从新节点 xnew​到 xnear​的路径是否无碰撞, 并且通过 xnew​到达 xnear​的路径代价是否比其当前路径代价更低。 如果是, 则将 xnew​设为 xnear​的新父节点, 并更新 xnear​及其后代的代价。
7. 循环:​ 重复步骤2-6, 直到达到最大迭代次数或找到通往目标区域的路径。 RRT* 是渐进最优的。

路径代价收敛到最优值的速度, 最终路径长度。

随机几何图, 渐进最优性, 动态规划原理(Bellman最优性)。

高维运动规划(机械臂, 无人机), 动态环境重规划(通过不断运行RRT*)。

树结构 T; 起始点 xinit​; 目标区域 Xgoal​; 采样点 xrand​; 最近邻 xnearest​; 新节点 xnew​; 步长 η; 重布线半径 r; 路径代价函数 c(⋅); 距离度量 d(⋅,⋅)。

状态:​ {初始化, 采样, 最近邻, 扩展与碰撞检测, 邻域查询, 重选父节点, 重布线, 目标检查}。
转移:​ 初始化树 -> 采样随机点 -> 找最近邻 -> 尝试向随机点扩展新节点 -> 若成功, 在邻域内寻找更好的父节点(重选父节点) -> 对邻域内已有节点尝试通过新节点优化路径(重布线) -> 若新节点在目标区域内, 则路径找到; 否则继续循环。

随机采样, 图论(树生长), 几何(距离度量, 碰撞检测), 优化(渐进最优), 邻域搜索。

基于随机采样、树扩展和局部优化的渐进搜索过程描述。

1. 初始化:​ T.init(xinit​)。 2. for​ i = 1 to N: a. xrand​=SampleFree()。 b. xnearest​=Nearest(T,xrand​)。 c. xnew​=Steer(xnearest​,xrand​,η)(沿方向前进 η 距离)。 d. if​ CollisionFree(xnearest​,xnew​): i. Xnear​=Near(T,xnew​,r)。 ii. xmin​=xnearest​, cmin​=c(xnearest​)+d(xnearest​,xnew​)。 iii. for each​ xnear​∈Xnear​: 1. if​ CollisionFree(xnear​,xnew​)and​ c(xnear​)+d(xnear​,xnew​)<cmin​: xmin​=xnear​, cmin​=c(xnear​)+d(xnear​,xnew​)。 iv. 将 xnew​加入 T, 父节点设为 xmin​, 代价 c(xnew​)=cmin​。 v. for each​ xnear​∈Xnear​: 1. if​ CollisionFree(xnew​,xnear​)and​ c(xnew​)+d(xnew​,xnear​)<c(xnear​): 将 xnear​的父节点改为 xnew​, 并更新 xnear​及其后代的代价。 e. if​ xnew​∈Xgoal​: 可能找到一条路径, 可提前终止或继续优化。 3. 返回树 T, 从目标节点回溯到起点得到路径。

顺序/迭代序列。 每次迭代内部步骤顺序执行。 邻域内节点的父节点检查和重布线可部分并行。

时间复杂度: 每次迭代的最近邻搜索和邻域搜索是主要开销。 使用 kd-tree 可达 O(logN)。 总体为 O(NlogN), N 为迭代次数/节点数。 渐进最优但收敛速度可能较慢。

CPU:​ 执行随机采样, kd-tree 的最近邻和邻域搜索, 几何碰撞检测。 指令: 浮点运算, 距离计算, 树结构操作, 内存访问。 碰撞检测是性能瓶颈, 常使用空间划分数据结构加速。

采样规划, 计算几何, 图搜索, 路径规划。

Robot-0034

决策/模仿学习

对抗模仿学习

从专家演示中学习策略, 使鉴别器无法区分策略生成的状态-动作对与专家数据。

生成对抗模仿学习

1. 初始化:​ 随机初始化策略 πθ​(生成器)和鉴别器 Dϕ​。
2. 收集策略轨迹:​ 使用当前策略 πθ​与环境交互, 收集状态-动作对 (s,a)∼πθ​。
3. 训练鉴别器:​ 从专家数据集采样状态-动作对 (sE​,aE​), 与策略产生的数据混合。 训练鉴别器以最大化区分能力, 即最小化二分类交叉熵损失: LD​=−E(s,a)∼πE​​[logDϕ​(s,a)]−E(s,a)∼πθ​​[log(1−Dϕ​(s,a))]。 更新鉴别器参数 ϕ。
4. 训练策略(生成器):​ 固定鉴别器, 训练策略以“欺骗”鉴别器, 即最大化鉴别器对其产生的状态-动作对判断为专家数据的概率。 策略的损失函数为: Lπ​=−E(s,a)∼πθ​​[logDϕ​(s,a)]。 这等效于最小化策略分布与专家分布之间的 Jensen-Shannon 散度。 在更新策略时, 通常还会加入策略熵正则项 H(πθ​)以鼓励探索。
5. 循环:​ 重复步骤2-4, 直到策略性能收敛。

策略与专家策略的相似度(通过鉴别器得分或任务成功率衡量)。

生成对抗网络框架, 逆强化学习(不显式学习奖励函数), 分布匹配。

从人类演示中学习复杂的、多模态的机器人技能, 如灵巧操作、步态。

策略网络参数 θ; 鉴别器网络参数 ϕ; 专家数据分布 πE​; 策略数据分布 πθ​; 鉴别器输出 D(s,a)∈(0,1); 对抗损失 LD​,Lπ​; 熵正则化系数 λ。

状态:​ {策略交互收集数据, 训练鉴别器, 训练策略, 评估}。
转移:​ 初始化网络 -> 循环多个epoch: 用当前策略收集数据 -> 用混合数据训练鉴别器K步 -> 固定鉴别器, 用策略数据训练策略M步(最大化 D(s,a)) -> 可选:评估策略性能 -> 循环。

对抗优化(极小极大博弈), 分布匹配, 概率(二分类交叉熵), 强化学习(策略梯度)。

基于生成器(策略)和鉴别器对抗训练的模仿学习框架描述。

1. 输入:​ 专家示范数据集 DE​={(si​,ai​)}。 2. 初始化:​ 随机初始化策略网络 πθ​和鉴别器网络 Dϕ​。 3. 重复直到收敛:​ a. 策略数据收集:​ 运行当前策略 πθ​与环境交互, 收集一组轨迹, 得到状态-动作对数据集 Dπ​。 b. 训练鉴别器(内循环K步):​ for k in 1...K: i. 从 DE​采样一个batch的专家数据 (sE​,aE​)。 ii. 从 Dπ​采样一个batch的策略数据 (sπ​,aπ​)。 iii. 计算鉴别器损失: LD​=−B1​∑[logD(sE​,aE​)+log(1−D(sπ​,aπ​))]。 iv. 对 ϕ执行梯度下降更新: ϕ←ϕ−αD​∇ϕ​LD​。 c. 训练策略(内循环M步):​ for m in 1...M: i. 从 Dπ​采样一个batch的策略数据(或重新交互收集)。 ii. 计算策略损失: (L\pi = -\frac{1}{B}\sum \log D(s\pi, a\pi) - \lambda \mathcal{H}(\pi\theta(\cdot

s)) )。 (第一项鼓励“欺骗”鉴别器, 第二项是熵正则)。 iii. 对 θ执行梯度上升更新: θ←θ+απ​∇θ​Lπ​。 4. 输出训练好的策略 πθ​。

顺序/迭代序列。 外部是数据收集与对抗训练的交替循环。 内部是鉴别器和策略的多次梯度更新。

训练复杂度很高。 每次迭代需交互收集数据( O(T)), 鉴别器训练( O(K⋅B)), 策略训练( O(M⋅B))。 总体计算密集, 且训练不稳定。

GPU (训练):​ 策略网络和鉴别器网络的前向/反向传播。 策略交互环境可能在CPU模拟。 指令: 大规模并行矩阵运算, 自动微分, 二分类交叉熵计算。 数据在GPU内存和仿真环境(CPU)间交换。

生成对抗网络, 逆强化学习, 深度强化学习, 模仿学习。

Robot-0035

芯片/集成电路

数值计算

定点数运算

使用整数表示和运算来近似实数运算, 以在无FPU的硬件上高效执行。

定点数算术(Q格式)

1. 数字表示:​ 一个定点数用 N 位整数表示, 其中隐含地假设小数点左边有 I 位(整数部分), 右边有 F 位(小数部分), F = N - I。 数值 x与实际表示的整数 X的关系为: x=X⋅2−F。 缩放因子 S=2F。
2. 加/减法:​ 若两个操作数具有相同的 Q 格式(相同的 F), 则整数加减结果即为定点数加减结果, 但需注意溢出: Z=X±Y, 对应的 z=x±y。 若格式不同, 需先对齐小数点(移位)。
3. 乘法:​ 两个定点数相乘, 整数的乘积会将小数点位置移动。 若 x=X⋅2−Fx​, y=Y⋅2−Fy​, 则 x⋅y=(X⋅Y)⋅2−(Fx​+Fy​)。 因此, 两个 N 位整数相乘得到 2N 位乘积。 通常需要将乘积右移 Fy​位(或 (Fx​+Fy​)/2等, 取决于目标格式)并取中间 N 位, 以保持精度和范围。 常加入舍入处理: Z=(X⋅Y+2(F−1))>>F。
4. 除法:​ 更复杂, 通常通过将被除数左移 F 位再进行整数除法来实现: 若计算 x/y, 先计算 X⋅2F, 然后与 Y做整数除法: Z=(X<<F)/Y, 则 z≈x/y。 需处理除零和溢出。

量化误差, 动态范围, 运算速度。

二进制补码表示, 整数运算, 缩放线性变换。

嵌入式微控制器(MCU)中的数字信号处理(如滤波器, PID控制器), FPGA中的数字逻辑实现。

定点数整数表示 X; 总位宽 N; 小数位宽 F; 缩放因子 S=2F; 实际值 x=X/S; 中间乘积 P2N​; 舍入偏移量 R=2F−1。

状态:​ {操作数对齐(如有必要), 整数算术运算, 移位调整, 溢出/饱和处理, 舍入}。
转移:​ 根据运算类型: 加法/减法: 检查格式一致 -> 整数加减 -> 检查溢出并饱和 -> 输出。 乘法: 整数乘法得到双字长结果 -> 右移F位(或根据目标格式调整) -> 可选舍入(加偏移后移位) -> 饱和处理 -> 输出。 除法: 将被除数左移F位 -> 整数除法 -> 输出。

离散数学(整数运算), 缩放(移位), 误差分析(量化误差, 舍入误差), 溢出处理(饱和或回绕)。

基于整数运算和隐式缩放因子的数值计算规则描述。

以 Q1.15 格式(1位符号, 15位小数, 共16位)乘法为例, 结果也保持 Q1.15:​ 1. 输入:​ 两个 Q1.15 数 A,B, 实际值 a=A/215, b=B/215。 2. 整数乘法:​ 计算 32 位乘积 P32​=A∗B(在 32 位寄存器中)。 3. 调整小数点位:​ 乘积 P32​的小数点实际在 30 位后(因为 15+15)。 要得到 Q1.15 结果, 需要将小数点移到 15 位后。 即需要右移 15 位。 4. 舍入:​ 为了减少截断误差, 采用就近舍入。 在右移前, 加上舍入偏移量 214(即 0.5 的 Q1.15 表示)。 5. 取高位字:​ 右移 15 位后, 取结果的高 16 位(如果使用 32 位寄存器, 右移 15 位后自然得到 16 位有效结果)。 6. 溢出处理:​ 检查结果是否超出 Q1.15 范围(-1 <= r < 1)。 如果溢出, 则饱和到最大值(0x7FFF)或最小值(0x8000)。 7. 输出:​ 得到 16 位结果 C, 其实际值 c≈a∗b。 加法示例(同为 Q1.15):​ 1. 直接整数相加: C=A+B。 2. 检查溢出: 如果结果超出了 16 位有符号整数范围(-32768 到 32767), 则饱和处理。 3. 输出 C。

顺序运算序列。 每个运算的步骤顺序执行。 多个定点运算可组成一个算法(如滤波器), 按顺序或并行(硬件中)执行。

单次运算复杂度: 加/减法 O(1); 乘法 O(1)但涉及更多位操作和移位; 除法 O(1)但更慢。 远快于浮点模拟。

MCU (无FPU):​ 执行整数加、减、乘、移位、比较指令。 例如, 在ARM Cortex-M中: SMULL(有符号长乘)、ASR(算术右移)、QADD/QSUB(饱和加减)。 编译器或程序员负责安排这些指令序列来实现定点运算。 FPGA:​ 直接使用加法器、乘法器IP核和移位寄存器硬件实现, 可在一个时钟周期内完成, 且高度并行。

数字电路, 计算机算术, 嵌入式系统, 信号处理。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐