【AIGC面试面经第12期】具身智能算法工程师面试面经相关问题汇总

写在前面:

社区共建项目:AIGC算法工程师/开发工程师面试面经秘籍分享,Interview-for-Algorithm-Engineer,欢迎大家Star⭐收藏~

AIGC时代的 《三年面试五年模拟》AI算法工程师求职面试秘籍独家资源: 【三年面试五年模拟】AI算法工程师面试秘籍,欢迎 Star⭐收藏~,诚邀大家参与项目共建,聚力赋能 AIGC 行业生态建设!

AIGC算法岗/开发岗面试面经交流社群(涵盖AI Agent、AIGC图像创作、AI视频、LLM大模型、AI多模态、数字人、传统深度学习、具身智能等AIGC面试干货资源)一起交流学习。


目录

1.强化学习基础

面试问题:强化学习的本质是什么?与模仿学习的核心区别是什么?

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐⭐⭐ (5/5)

强化学习是机器学习三大核心范式之一,其本质是智能体在环境中通过持续的时序交互与试错,迭代优化自身的决策策略,最终目标是最大化整个交互周期内的长期累积奖励期望。它学习的不是单一的"输入-输出"映射,而是"在什么状态下采取什么动作,能让最终的全局收益最高"的序列决策逻辑。

与模仿学习的核心区别体现在四个维度:

  1. 训练信号来源不同:模仿学习属于有监督学习范畴,训练信号是专家提供的确定性动作标签,相当于直接给标准答案;强化学习的训练信号是环境返回的奖励,通常是延迟、稀疏甚至模糊的反馈,不会直接告诉智能体正确动作是什么。
  2. 学习逻辑不同:模仿学习是一次性拟合"观测→动作"的条件分布,本质是行为克隆;强化学习是基于时序信用分配的迭代优化,需要把最终的奖励回溯分配到每一步决策上。
  3. 能力上限不同:模仿学习的性能上限就是专家数据的水平,一旦场景超出专家数据分布,策略很容易失效;强化学习可以通过主动探索突破专家数据的边界,有机会学到比专家更优的策略。
  4. 数据依赖不同:模仿学习完全依赖高质量的专家演示数据,没有数据就无法训练;强化学习可以从零开始,通过智能体自主与环境交互生成训练数据。

面试问题:当强化学习完全依赖专家数据、不做探索时,和模仿学习有什么差异?什么时候需要结合两者?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐ (3/5)

趋同的表现:如果强化学习训练时只使用专家数据集、完全关闭环境探索机制,那么奖励函数的有效作用范围会被严格限制在专家数据的分布之内,策略无法触达专家演示之外的状态动作空间。此时最终的策略表现会和行为克隆式的模仿学习高度趋同------两者都只能复现专家的操作水平,无法超出专家能力边界。

底层逻辑仍有本质差异

  • 模仿学习是直接拟合观测到动作的映射关系,目标是让输出动作和专家动作尽可能一致;
  • 受限的强化学习是通过拟合奖励函数间接逼近专家策略,目标是让累积奖励最大化,只是因数据边界限制,最终结果与模仿学习近似。

两者结合的典型场景(即当前主流的 VLA+RL 技术路线):当任务既需要快速掌握标准化的操作范式、降低前期训练成本,又需要应对真实环境中的未知扰动、具备自主优化进化能力时。例如工业装配、家庭服务机器人:先用模仿学习从人类演示中快速学习基础动作流程,再用强化学习在仿真或真实环境中自主探索优化,提升策略的容错率和泛化能力,应对各种意外工况。

面试问题:强化学习模型部署后,是一直做随机探索吗?

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐ (3/5)

不是。随机探索是强化学习训练阶段特有的机制,部署推理阶段不会持续进行随机探索。

训练阶段为什么要随机探索(常见方式:ε-greedy 随机采样、策略网络熵正则、动作空间噪声注入):核心是解决"探索-利用"的平衡问题------一方面利用当前已学到的较优策略获取奖励,另一方面通过随机尝试新动作,采集更多样化的状态-动作数据,避免策略陷入局部最优,保证最终能收敛到全局最优策略。

部署阶段的行为 :模型训练完成、部署落地后,无论部署在仿真环境还是真实机器人上,核心目标都是稳定、高效、可靠地完成任务,此时会直接输出策略网络给出的确定性最优动作,移除随机探索分支。只有在少数需要持续在线学习的场景中,才会保留极低概率的探索机制用于策略的持续迭代,但绝不是"一直随机探索"的状态。

面试问题:强化学习的奖励函数都需要用神经网络拟合吗?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐ (3/5)

不一定。 奖励函数的实现形式完全取决于任务的复杂度和目标的可量化性,主要分为两类:

第一类:解析型奖励函数(不需要神经网络)。对于目标清晰、状态空间可量化的简单结构化任务,可以直接通过数学公式手动设计奖励。例如:

  • 定点移动任务:用智能体末端与目标点的欧氏距离的负数作为奖励,距离越近奖励越高;
  • 姿态对齐任务:用关节角度误差作为惩罚项。

这类奖励函数定义简单、梯度明确、训练稳定性高。只要能用解析形式准确表达任务目标,就优先采用这种方式。

第二类:学习型奖励函数(需要用神经网络拟合) 。对于复杂的长序列操作任务、语义级任务或高维非结构化场景,很难手动写出精准、完备的奖励函数。例如"把杯子整齐摆放到托盘里""拧瓶盖并倒出液体"这类任务,涉及多阶段动作、接触力控制、精细姿态约束等多重目标,手动写奖励很容易出现奖励稀疏、误导策略的问题。这时需要基于专家演示数据或智能体自主交互数据,通过反向强化学习、偏好学习等方法,用神经网络拟合隐含的奖励函数,让奖励信号更贴合真实的任务目标。

面试问题:目标位置随机的方块抓取任务,能用简单距离奖励吗?是否必须用强化学习?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

能用距离奖励:目标位置随机不代表不能使用距离奖励。可以先通过视觉感知模块(二维目标检测网络、三维姿态估计模型、点云分割算法等)实时计算出方块的三维空间坐标和抓取位姿,再以机械臂末端执行器到目标抓取点的欧氏距离为基础设计奖励函数------距离越近奖励越高,到达抓取范围并成功夹取时给予高额终止奖励。技术实现上,基于距离的简单奖励完全可行。

但通常不需要强化学习 :纯抓取本质上属于"感知-动作"的单步映射问题,用行为克隆、抓取检测网络或端到端的姿态生成模型,就能以更低的训练成本、更高的成功率实现,不需要强化学习的时序决策和试错机制。

强化学习的核心价值更多体现在多步决策、动态交互、存在连续反馈的任务中:

  • 长序列任务,如"抓取方块→放到指定容器→再按下按钮";
  • 存在接触力控制、动态障碍物、复杂约束的场景。

2.VLA 与生成式策略

面试问题:CoT-VLA 中的 action chunking 是什么含义?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

**Action Chunking(动作分块/动作序列预测)**是 CoT-VLA 以及主流视觉语言动作模型中,提升长序列任务性能的核心技术。

具体含义 :模型在当前时间步进行决策时,不是只预测下一步的单步动作,而是一次性预测未来连续多步的完整动作序列。例如在 CoT-VLA 中,模型会一次性预测当前时刻之后 10 步的关节动作:在 t=0 时刻直接输出 t=0 到 t=9 这 10 个时间步的全部动作。执行时可以按步依次执行,也可以采用滑动窗口机制------每执行几步就用最新观测重新预测一次。

三点优势

  1. 提升长序列动作的连贯性:避免单步预测带来的累积误差和动作卡顿;
  2. 引入短期规划能力:模型在决策当前动作时已经考虑到后续几步的目标,决策逻辑更符合人类执行动作的习惯;
  3. 降低推理频率:提升部署时的实时性,降低计算资源消耗。

工程补充:action chunk 沿时间轴扩展单步动作,要求明确片段长度、丢弃条件、抢占规则和重新规划时机,否则旧片段可能在环境变化后继续执行(详见第 9 章动作空间相关内容)。

面试问题:Action chunking 是 VLA 的特有技术吗?为什么很多论文都要做消融实验验证它?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐ (3/5)

不是特有技术 :action chunking 并非某一篇论文提出,而是 VLA 领域经过大量研究验证的通用基础技术,目前几乎所有主流的长序列机器人操作 VLA 模型都采用这一设计,属于业内标配的优化手段。

论文仍反复做消融实验的三个原因

  1. 学术严谨性要求:任何模块带来的性能增益都需要通过消融实验量化验证,明确证明加入该模块后任务成功率、动作连贯性、泛化能力等指标确实显著提升,而不是其他训练因素或超参数带来的效果。
  2. 最优配置因模型和任务而异:不同模型架构、不同任务场景下,action chunking 的最优步长和实现方式存在差异------短平快的抓取任务和长序列的装配任务,最佳预测步长完全不同,需要通过消融确定适配当前模型和任务的参数配置。
  3. 明确适用边界:对部分低自由度、短序列的简单任务,action chunking 增益有限,甚至可能因动作序列僵化产生负增益,消融实验可以划定该技术的适用边界。

面试问题:具身智能领域很多技术思路都借鉴自传统 CV、NLP 领域(如扩散策略 DP 源自图像生成领域的扩散模型),这对科研创新有什么启发?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐ (3/5)

跨领域技术迁移是具身智能领域非常高效的科研创新路径。具身智能本身是视觉、语言、控制、机器人学的交叉领域,很多核心技术范式都可以溯源到 CV、NLP 等成熟领域:

源领域技术 迁移结果
图像领域的扩散模型 迁移到动作生成 → Diffusion Policy 系列工作
Transformer 的序列建模能力 迁移到机器人模仿学习 → ACT 等经典模型
LLM 的上下文学习能力 + 视觉 催生 VLA 这一主流方向

对研究者的启发 :对刚入门的研究生或正在寻找创新点的研究者,这是非常值得借鉴的思路------持续跟进 AI 顶会(ICLR、NeurIPS、CVPR、ICML 等)的最新进展,分析成熟技术的核心原理,判断其能否迁移适配到机器人任务场景。这种跨领域范式迁移的创新路径研发成本低、可行性高,也是当前具身智能领域顶会论文的重要创新来源之一。

面试问题:ACT 和扩散策略(DP)在机器人任务中的表现有什么差异?各自的适用场景是什么?真机上的实际表现如何?

难度评分:⭐⭐⭐⭐ (4/5) | 考察频率:⭐⭐⭐⭐ (4/5)

ACT 和扩散策略的性能差异源于底层架构的核心特性,二者没有绝对优劣,分别适配不同场景:

ACT(基于 Transformer 架构)

  • 核心优势:时序序列建模能力强、训练收敛速度快、部署简单稳定、推理延迟低;
  • 适用场景:数据量相对较少、任务逻辑清晰的单一场景。此时 ACT 能表现出非常稳定且优异的性能,训练门槛低、复现性好------这也是很多开发者觉得"ACT 单任务效果最好"的核心原因。

扩散策略(基于扩散生成范式)

  • 核心优势:对连续高维动作分布的建模能力更强,生成动作的多样性和鲁棒性更好;
  • 适用场景:任务复杂度提升、存在多解性、对泛化能力要求高的场景。尤其在数据规模和模型规模同步扩大的 scaling 场景下,扩散模型的分布建模优势会充分释放,整体性能会超过 ACT。

真机实际表现

  • 简单的短平快抓取、放置任务:ACT 性价比更高、部署更轻量;
  • 复杂长序列操作、接触力控制、多物体交互任务:扩散架构或流匹配架构的动作生成模型 scaling law 表现更强,动作柔顺性和泛化性更优,真机成功率上限更高。

面试问题:Diffusion 和 Transformer 是什么关系?二者各自的核心优势是什么?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

关系:不是同一层级的对立概念,而是互补的组合关系。

  • Diffusion 是一种生成式建模的算法范式,定义了数据从噪声逐步还原为目标数据的训练与推理流程;
  • Transformer 是一种基础网络骨干架构,负责特征提取、序列建模和条件融合。

二者在实际应用中经常深度结合:在扩散模型中,Transformer 通常作为噪声预测网络的核心骨干,同时承担条件编码的功能。

各自的核心优势

  • Transformer:长程序列建模能力和跨模态对齐能力,擅长处理时序依赖关系,以及注入图像、语言、机器人状态等多模态条件信息;
  • Diffusion:擅长建模连续高维变量的复杂分布,生成结果质量高、多样性好,对多模态生成任务适配性强,非常适合机器人动作生成、图像生成这类连续空间的生成任务。

二者结合可以实现高质量、高自由度的多模态生成建模,也是当前机器人动作生成领域的主流技术路线之一(如以 Transformer 为骨干的扩散动作头)。

3.仿真、验证与 Sim2Real

面试问题:没有真实机器人本体,如何验证 VLA 模型的实际效果?

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐⭐ (4/5)

没有真机的情况下,完全可以通过机器人仿真环境来验证 VLA 模型的效果,这也是学术研究和算法开发阶段的主流验证方式。完整的验证流程分为六步:

  1. 模型准备:加载训练完成的 VLA 模型权重,配置推理参数(动作序列长度、输入观测模态、指令编码方式等);
  2. 环境初始化:启动对应的仿真环境(MuJoCo、PyBullet、Isaac Sim 等),加载机器人 URDF 模型、任务场景和目标物体,将环境重置到任务初始状态;
  3. 观测输入:从仿真环境获取当前时刻的多模态观测数据(RGB 图像、深度点云、机器人关节角度、末端位姿等),连同任务的语言指令一起输入 VLA 模型;
  4. 模型推理:VLA 模型对输入的观测和指令进行编码和解码,推理输出动作指令(关节位置、末端位姿、速度指令等);
  5. 环境步进:将动作指令发送给仿真环境中的机器人,驱动物理引擎计算并更新到下一状态,同时返回任务奖励、终止标志等反馈信息;
  6. 指标统计与复位:循环执行"观测输入-模型推理-动作执行"流程直到任务成功或失败,统计单轮成功率、完成步数、动作平滑度等指标;重置环境进行多轮测试取平均值,得到模型的最终性能。

面试问题:VLA 模型和仿真环境之间的交互逻辑是什么?核心接口是什么?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

交互逻辑:典型的"感知-决策-执行"闭环时序循环------仿真环境输出当前状态观测 → VLA 模型接收观测并决策动作 → 动作输入仿真环境驱动机器人执行 → 环境物理更新并返回新观测和反馈,循环往复直到任务终止。

核心接口 :强化学习领域通用的环境步进函数,标准范式为 env.step(action)。该函数以模型输出的动作指令为输入,在仿真环境中执行一个时间步的物理更新后,返回五个值(Gymnasium 标准 API):

  1. observation(观测):下一时刻的观测,包含图像、机器人本体状态等模型下次决策需要的全部输入;
  2. reward(奖励):当前步动作对应的任务反馈信号,用于量化评估动作好坏;
  3. terminated(终止标志):任务是否达到成功或失败的自然终止状态;
  4. truncated(截断标志):任务是否因超出最大步数、触发安全限制等原因被强制结束;
  5. info(信息字典):附加诊断信息,如成功标志、物体位姿等评测所需数据。

不同仿真引擎底层实现机制不同------MuJoCo 是 CPU 端的刚体物理计算,Isaac Sim/Isaac Lab 是基于 GPU 加速的大规模并行仿真------但上层的 step 接口逻辑是统一的。可参考 HuggingFace LeRobot 仓库的官方评估示例(如 examples/2_evaluate_pretrained_policy.py),其核心交互入口就是 env.step() 函数。

面试问题:为什么仿真在具身智能研究中是不可或缺的?

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐⭐ (4/5)

仿真环境是具身智能算法研发的核心基础设施,不可替代性体现在三个维度:

  1. 安全性与成本优势:真实机器人硬件成本高昂,强化学习训练初期策略完全随机,很容易出现关节超行程、高速碰撞等问题,轻则损坏电机、减速器等精密部件,重则造成安全事故。仿真环境可以无限次重置,没有任何硬件损耗和安全风险,可以大胆让算法从零开始自由探索。
  2. 训练与数据效率优势:仿真支持大规模并行部署,一台服务器可同时运行上千个仿真环境实例,并行采集数据、批量训练模型,数据采集速度比真机快几个数量级,大幅缩短算法迭代周期。完全依赖真机时一个简单任务的数据采集可能需要数周,仿真环境下几天甚至几小时就能完成。
  3. 实验可控性优势:仿真中所有物理参数和环境变量都可配置------摩擦系数、重力大小、光照条件、物体纹理、障碍物位置等,方便开展控制变量实验,精准定位算法性能瓶颈。真实环境中很多变量难以精准控制,实验可复现性差,很难做严谨的算法对比。

边界认识:仿真成功不等于真机成功------真机存在摩擦、延迟、传感器噪声、接触误差和安全约束,因此仿真必须配合 Sim2Real 迁移手段与严格的真机验证(见下题)。

面试问题:具身智能领域如何解决 Sim2Real(仿真到真实世界)的迁移问题?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐⭐ (5/5)

核心矛盾:仿真环境和真实环境之间存在"域差距"(domain gap),包括物理参数差异、视觉外观差异、动力学特性差异等,导致仿真中训练好的策略直接迁移到真机时性能大幅下降。

主流解决方案三大类

  1. 域随机化(Domain Randomization) :核心思想是"用训练数据的多样性覆盖真实世界的不确定性"。仿真训练时随机化环境属性:
    • 视觉层面:随机化物体纹理、颜色、大小,随机化光照条件、相机视角;
    • 物理层面:随机化摩擦系数、质量、阻尼、关节间隙等参数。
      让模型在海量不同的仿真域中训练,学到不依赖特定环境属性的通用特征,迁移到真实环境时也能快速适配。
  2. 域自适应(Domain Adaptation):核心是在特征层面缩小仿真域和真实域的分布差异。通常借助对抗学习思路,训练一个特征提取器,使模型从仿真数据和真实数据中提取的特征分布尽可能一致(让判别器无法区分输入来自仿真还是真实),从而实现跨域泛化。这类方法不需要太多真实数据就能有效降低域偏移的影响。
  3. 策略微调(Fine-tuning):工业界最常用也最有效的落地方案,分两步------先在仿真环境用大规模数据完成预训练,让策略学到基础运动技能和任务逻辑;再迁移到真实机器人上,用少量真实数据做少量步数的微调,快速适配真实环境的动力学和视觉特性。兼顾仿真训练效率和真机准确性,数据成本远低于从头训练。

面试问题:LeRobot 框架在 VLA 开发中的定位是什么?做科研重点关注哪些部分?

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐ (3/5)

定位 :LeRobot 是 HuggingFace 推出的具身智能全栈开发框架,定位是具身智能领域的通用基础设施------把机器人算法开发中通用、重复的工程部分全部封装好,让开发者不用从零搭建整套工具链。

覆盖范围:从数据采集、数据集加载、仿真环境搭建、模型训练到评估部署的完整开发流程;内置多种主流 VLA 模型的官方实现;兼容 MuJoCo、Isaac Gym 等常见仿真环境;也支持真实机器人(如 SO101)的数据采集和部署,大大降低了具身智能算法的开发门槛。

科研人员的关注重点 :不需要从头到尾吃透整个框架的所有工程细节,核心重点关注 model 目录下的具体模型结构代码------这部分是算法创新的核心载体。其他的环境封装、数据加载、训练循环、评估脚本、日志可视化等通用工程模块直接复用框架能力即可,能大幅减少重复工程工作量,把精力集中在模型结构、算法原理的创新上。

面试问题:具身算法复现主要是在仿真环境下完成吗?真机复现的核心流程是什么?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐ (3/5)

是的,学术论文中的算法复现绝大多数先在仿真环境下完成:仿真环境可复现性强、成本低、速度快,是验证算法有效性的首选平台;大部分论文也会开源仿真环境下的训练和评估代码,方便同行复现和对比。

真机复现复杂度远高于仿真,核心流程四个环节

  1. 真实数据采集与参数校准:在真实机器人上采集对应任务的演示数据,同时校准相机内参、手眼标定参数、机器人运动学参数,保证真实数据的观测空间、动作空间定义和仿真训练时完全一致,避免维度、坐标系不匹配的问题。
  2. 模型部署与硬件接口适配:把训练好的模型部署到真机控制系统,适配机器人底层驱动接口,把模型输出的通用动作指令转换成控制器能识别的控制信号(关节位置指令、末端位姿指令等),同时保证控制频率满足实时性要求。
  3. 真机测试与问题排查:在真实场景运行模型、测试任务成功率,排查仿真和真实的差异点(摩擦力差异、控制延迟、视觉检测误差等),定位性能下降的原因。
  4. 策略微调优化:直接迁移效果不佳时,用真机采集的少量数据对模型微调,进一步适配真实环境的动力学特性和视觉特性,最终达到预期性能指标。

面试问题:仿真环境通常在什么系统下安装?

难度评分:⭐ (1/5) | 考察频率:⭐⭐ (2/5)

主流的具身智能仿真环境开发与教程默认基于 Ubuntu(Linux)系统部署,这也是科研与工业界的主流开发环境。不同仿真引擎的跨平台支持差异明显:

  • 轻量级引擎(PyBullet、MuJoCo) :跨平台兼容性很好,Linux、macOS、Windows 均可安装,如 PyBullet 直接 pip install pybullet 即可完成全平台部署;
  • 重型 GPU 加速引擎(Isaac Sim / Isaac Lab) :依赖 NVIDIA RTX 显卡与 CUDA 生态,官方支持 Windows 和 Linux 平台,安装配置相对复杂(需要适配驱动、依赖库和环境变量);macOS 因缺少 NVIDIA GPU 支持,无法运行 Isaac Sim,Mac 用户通常采用轻量级引擎或远程 Linux 工作站/云实例替代。

工程建议:真机部署端(机器人机载计算机)几乎都是 Ubuntu + ROS2 环境,训练与部署统一使用 Linux 可以最大程度减少环境差异带来的复现问题。

4.触觉感知

面试问题:触觉传感器能够提升机器人哪些方面的能力?触觉数据集如何收集?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐ (3/5)

触觉感知是机器人实现柔顺物理交互的核心技术,也是具身智能的前沿研究方向。核心提升机器人三方面能力

  1. 柔顺交互能力:典型如关门、插拔零件、按压开关等存在刚性接触的任务------通过实时力反馈避免出力过大导致关节抱死、物体损坏或机器人触发保护停机,实现精准的力控交互;
  2. 精细操作能力:拧瓶盖、捏取柔性物体、线缆插接等任务中,触觉能提供视觉无法感知的接触力大小、表面纹理、物体形变等信息,补全视觉感知的盲区;
  3. 安全冗余能力:在视觉遮挡、光线失效或动态障碍物场景下,触觉可以作为独立的感知源,快速触发避障、减速等保护机制。

触觉数据集收集的两类路径

  • 真机采集 :在机器人末端、关节或夹爪上安装六维力传感器、阵列式触觉传感器,通过人类遥操作演示或机器人自主执行任务,同步采集触觉信号、机器人位姿状态和视觉图像,构建真实的视触觉数据集;
  • 仿真合成:通过物理引擎模拟接触力、压强、形变等触觉信号,低成本、大规模生成标注完整的合成触觉数据集,用于模型预训练。

应用方式:触觉信号既可以作为输入特征融入端到端模型,也可以基于触觉阈值设计规则化的控制策略。

面试问题:小型模型中加入触觉感知的相关研究多吗?力反馈和触觉是什么关系?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐ (2/5)

研究现状:小模型结合触觉感知的研究已有不少成熟工作,典型代表如 FACTR 等面向轻量模型的视触觉融合操作框架,在小参数量下实现了力控操作能力。

力反馈与触觉的关系 :二者高度相关但不完全等同,是感知与执行的对应关系

  • 触觉 属于感知层 概念:通过各类触觉传感器获取接触力、纹理、温度、形变等多维度接触信息,是信号输入的过程;
  • 力反馈 属于控制层 概念:基于感知到的触觉力信号,实时调整机器人的输出力矩、运动速度和动作轨迹,是控制输出的过程。

一句话总结:触觉是力反馈的信号基础,力反馈是触觉最典型的应用场景------本质上就是通过触觉感知实现机器人的力反馈控制。

与视觉的分工(结合第 10 章):视觉适合接触前定位,力觉和触觉适合接触后的闭环调整与成功判断;单一力阈值不能区分"抓住物体"和"夹爪卡住",可靠判断需要组合夹爪开度、驱动电流、压力分布变化、视觉跟踪和抬升后的物体运动。

5.世界模型

面试问题:世界模型和 VLA 的核心区别是什么?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐⭐ (5/5)

二者的核心目标、输入输出和定位都有本质区别,分属不同的技术模块:

对比项 VLA(视觉语言动作模型) 世界模型
核心目标 生成机器人控制指令 建模环境动力学、预测环境未来变化
模型属性 决策模型 预测模型
输入 视觉观测 + 自然语言指令(+ 机器人状态) 当前环境观测(图片、点云、本体状态等)+ 候选动作
输出 关节角度偏移、末端位姿、速度等直接控制量 下一时刻的环境状态(未来图像、物体轨迹、点云变化等)
作用 直接驱动机器人执行任务,是端到端控制系统的核心 刻画环境的运行规律,不直接输出机器人控制动作

组合趋势 :当前很多研究工作会将世界模型嵌入 VLA 架构中形成组合系统,同时输出未来状态预测和动作指令;但二者的核心定位依然清晰------世界模型负责理解和预测环境,VLA 负责输出动作决策

面试问题:世界模型的作用是辅助 VLA 输出更准确、更安全的动作吗?它在 VLA 系统中扮演什么角色?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

是的。世界模型的核心作用就是辅助 VLA 优化决策,让动作输出更准确、更安全、更具备前瞻性。

底层逻辑 :普通 VLA 做决策时只能基于当前时刻的观测生成动作,无法预判动作带来的后续环境变化,容易出现碰撞、动作超调、任务失败等问题。世界模型相当于给 VLA 提供了"预判能力"------提前模拟不同候选动作会导致的环境变化,让 VLA 在决策阶段就能评估动作的后续效果,从而筛选出最优、最安全的动作序列。

例如:机器人面对三个候选动作(从左侧抓、从上方抓、先推开障碍再抓),世界模型可以帮助系统估计每种动作的后果------是否会碰撞、是否会掉落、是否更可能成功。对长时序或高风险任务,能否在行动前预演并比较候选方案,往往比更快地产生一个动作更重要。

分工不变:最终的动作输出依然由 VLA 负责,世界模型提供未来状态预测作为先验信息辅助决策。目前也有大量工作将二者深度耦合、联合训练,进一步提升端到端的任务性能。

面试问题:同时输出未来状态和动作的模型,属于纯世界模型还是世界模型与 VLA 的结合?

难度评分:⭐⭐⭐⭐ (4/5) | 考察频率:⭐⭐⭐ (3/5)

属于世界模型与 VLA 的深度结合架构,并非纯世界模型。

典型的多阶段训练范式

  1. 第一阶段:在大规模通用视频数据集上预训练世界模型,让模型学习通用的环境动力学规律,具备基础的未来状态预测能力;
  2. 第二阶段:引入动作头(action head),在机器人任务数据集上联合训练世界模型主干和动作决策模块------最终模型可以同时输出未来环境状态预测和机器人动作指令。

为什么标题仍常标注"世界模型" :主要是因为模型的核心基础是世界模型的预训练范式,重点强调环境建模能力;但从功能定位上看,已经融合了 VLA 的动作决策能力,是二者的结合体。判断依据不是论文标题,而是输出接口:是否直接产生可送入控制链路的动作。

面试问题:世界模型是否自带语言理解功能?任务初始阶段机器人处于零位时,世界模型能否发挥作用?

难度评分:⭐⭐⭐⭐ (4/5) | 考察频率:⭐⭐ (2/5)

通常不自带语言理解功能 :纯世界模型的核心建模对象是环境的物理动力学,只关注状态、动作与环境变化之间的映射关系,不处理自然语言的语义理解。语言指令的理解通常由 VLA 端的语言编码器完成,在任务执行过程中语言指令作为全局条件注入,全程保持一致。

零位阶段的作用前提 :世界模型发挥作用有明确前提------需要基于机器人当前状态 ,结合候选动作输入 ,才能预测对应的未来环境变化。任务初始阶段机器人处于零位、还没有明确的动作序列时,仅靠初始的环境图片和机器人状态,世界模型无法独立预测未来的动作走向和环境变化,必须结合动作输入才能生效。

工程含义:世界模型是"给定动作评估后果"的模拟器,不是"自主产生动作"的策略------动作候选仍需由策略(VLA/规划器)提出,世界模型负责预演与筛选;其预测也不能替代真实传感器反馈,执行后仍需闭环校正。

面试问题:面对异构机器人、非通用目标的新场景,世界模型的泛化性如何?有哪些低成本的适配方案?

难度评分:⭐⭐⭐⭐ (4/5) | 考察频率:⭐⭐⭐ (3/5)

泛化现状 :世界模型在跨域场景下的泛化能力非常有限,这是目前领域公开的研究瓶颈之一。核心原因是世界模型强依赖预训练数据的分布------主流预训练数据集覆盖的都是常见机器人构型、通用目标物体和场景;一旦遇到结构差异大的异构机器人、罕见目标物体,动力学预测误差会大幅上升甚至直接失效。

低成本适配的三类方案(全量微调的数据和计算成本都非常高):

  1. 参数高效微调:采用 LoRA、Adapter 等轻量适配方法,只训练少量新增的适配层参数,冻结世界模型主干,大幅降低参数量和训练成本;
  2. 跨形态映射:通过一个轻量级映射网络,将异构机器人的状态空间、动作空间映射到世界模型的输入输出空间,无需修改世界模型本身;
  3. 分布对齐与域适应:用少量目标场景数据做特征层面的分布对齐,结合域随机化、对抗域适应等方法,降低域偏移带来的性能损失。

6.具身智能导论与系统闭环

面试问题:什么是具身智能?它与传统 AI、大模型应用有什么区别?

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐⭐⭐ (5/5)

定义:具身智能是指智能体依托身体,在真实或仿真的物理环境中,通过感知、理解、规划、行动、反馈和学习,完成开放世界任务的能力。

核心区别在于任务形态,而不是模型名字:

text 复制代码
数字 AI:输入数据 → 模型推理 → 输出结果
具身智能:观察环境 → 决策动作 → 改变环境 → 获得反馈 → 持续修正
普通 AI 具身智能
处理静态或离线数据 面对动态物理环境
输出文本、标签、图像 输出动作、轨迹、控制指令
错误多是信息错误 错误可能造成物理后果
单次推理即可完成很多任务 必须持续闭环执行
数据主要来自互联网 数据来自真实机器人交互和仿真

展开说明:视觉模型识别错了,原图不会改变;机器人抓错了,杯子可能被碰倒,桌面状态随之改变,下一次感知面对的已经不是刚才那个世界。所以系统不能在起点做一次判断就一路执行到底,必须边行动、边观察、边修正------闭环是具身智能的基本结构。大语言模型能回答"如何抓杯子"(知识表达),但"做得成"考验的是感知、几何、规划、控制、反馈、安全和数据组成的完整系统。

一句话总结:具身智能不是让机器人把任务说清楚,而是让它在真实世界中把任务可靠地做成。

面试问题:一个完整的具身智能体由哪几部分组成?

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐⭐ (4/5)

七个相互约束的组成部分:

组成部分 作用 例子
身体 决定能做什么 机械臂、移动底盘、人形机器人、灵巧手
感知 决定能看到什么 RGB 相机、深度相机、力觉、触觉、IMU
状态 决定是否知道自己在哪里 关节角、末端位姿、夹爪状态、底盘位姿
任务 决定要做什么 抓杯子、搬箱子、整理桌面、补货
策略 决定下一步怎么做 规划器、模仿学习策略、VLA 策略
控制 决定动作能否稳定执行 位置控制、速度控制、力控、全身控制
数据 决定系统能否持续变好 示教数据、失败样本、部署日志、标签

关键点:这七部分不是简单拼装,而是相互约束------身体改变,动作空间就改变;传感器改变,系统能获得的信息就改变;数据分布改变,同一算法的效果也可能完全不同。因此讨论具身智能不能只问"用了什么模型",还要问:它装在什么身体上、看到什么信息、输出什么动作、怎样知道自己做对了。

另外两点深入理解:

  1. 身体不是容器,而是能力边界:机械臂擅长桌面操作但难以自己移动;移动底盘能导航但无法操作物体;人形最适合人类环境但复杂度最高。算法是否有效必须放回具体身体、传感器和任务中判断。
  2. 感知不是"看见",而是获得可行动信息:识别出"这是杯子"只是起点,机器人还需要目标位置、姿态、可抓取区域、障碍物位置、接触状态、是否完成任务等信息。

面试问题:以"把红色杯子放到托盘里"为例,描述机器人完成任务的系统闭环。

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐⭐ (4/5)

这句话对人是意图,对机器人是一条多环节的链,任何一环出错任务都可能失败,且前一环的输出是后一环的输入:

  1. 任务输入:把用户意图拆成机器可执行目标------目标物是红色杯子、目标区域是托盘、任务类型是抓取并放置;复杂任务(如"整理桌面")还要生成子目标序列。
  2. 环境感知:通过相机等传感器确认目标是否存在,识别托盘、桌面边缘、障碍物。感知是最容易出问题的环节:光照变化、遮挡、反光、透明物体、堆叠场景都会使其失效。
  3. 状态估计:既要知道目标在哪里,也要知道自己在哪里------关节角度、末端位置、夹爪状态。状态估计偏差过大时,规划即使数学正确也会把机器人带到错误位置。
  4. 策略与规划:策略回答"做什么",规划把目标转成可执行路径。落地系统常用混合方式:高层模型理解任务、规划器检查可行性、低层控制器稳定执行、安全模块兜底。
  5. 控制执行:策略给出的动作不是电机命令,控制层要把目标位置/速度/轨迹变成稳定、受限、符合硬件接口的控制信号。最小控制器的核心思想:离目标越远指令越大,越接近指令越小。
  6. 反馈检测与失败恢复:执行后必须检查结果------是否抓住、是否掉落、是否放进托盘、是否碰撞、是否重试。没有反馈,系统只知道"命令发出去了",不知道"杯子是否真的进了托盘"。
  7. 数据记录与模型迭代:把任务指令、图像、状态、动作、时间戳、异常原因和人工修正记录下来,用于下一轮训练和评测------任务闭环进一步变成学习闭环。

面试问题:为什么大模型生成的动作不能直接发给电机?物理世界带来了哪些硬约束?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

物理世界至少加上了四类硬约束:

  1. 实时性:机器人控制有频率要求,不能无限等待模型推理。移动机器人避障、人形机器人维持平衡、机械臂接触控制,都必须在有限时间内完成感知和反应。
  2. 安全性:机器人有电机、关节和动能,错误动作不只是"答错了",还可能碰撞、损坏物体甚至伤人。任何模型输出都必须经过安全边界检查。
  3. 物理可行性:关节不能超角度范围,夹爪不能穿过物体,底盘不能瞬移,人形不能违反平衡条件。模型提出的动作最终必须得到身体和物理规律的允许。
  4. 闭环反馈:物体会滑动、人会进入工作区、目标会被遮挡,机器人不能只执行预先写好的轨迹,必须根据最新观察持续调整。

工程含义:高层模型输出只是"候选动作",要经过语义校验(单位、维度、关节顺序、坐标系)、边界检查(限位、限速、碰撞)和驱动适配才能执行。"端到端"描述的是模型输入输出形式,不是绕过状态检查、动作边界和急停链路的许可证。这四类约束共同说明:物理世界不会因为模型"理解了任务"就自动配合。

面试问题:比较传统 Pipeline、模仿学习、强化学习、VLA、世界模型五条技术路线。

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐⭐ (5/5)

路线 核心思想 优势 弱点/风险
传统 Pipeline 把复杂任务拆开:感知、定位、规划、控制、安全各自完成边界明确的工作 可解释、易调试、工程边界清晰,适合结构化工业场景 物体开放、遮挡复杂、任务变长时规则和接口膨胀,泛化与维护成本上升
模仿学习 从人类示教数据(遥操作、拖动示教)中学习行为 路径直接,适合真实机器人操作任务 数据没覆盖的场景部署时最容易失败------学会"示范里有什么",不会补齐"示范里缺什么"
强化学习 通过试错和奖励学习策略,常先在仿真训练再迁移真机 适合运动控制、灵巧手、高速动态和接触丰富任务(四足行走、人形平衡) 依赖可信仿真、合理奖励、大量算力和严格真机验证;奖励写错会"指标做高但任务没做好"
VLA 视觉---语言---动作模型:输入图像+语言指令+机器人状态,输出动作 语言降低任务定义成本,为多任务、多物体、多场景泛化提供可能 "模型能输出动作"≠"机器人可以安全执行",仍需低层控制器、安全约束、失败检测和数据回流
世界模型 在行动前预测"做完会怎样",比较候选动作的后果 对长时序或高风险任务,预演并比较方案比更快产生动作更重要 价值在理解动作与后果,不在于生成好看的未来视频

关键结论------路线不是互斥的,真实机器人通常是混合架构:传统 Pipeline 提供可解释的工程基础;模仿学习从示教获得操作能力;强化学习在仿真中学习运动和接触技能;VLA 提供语言理解和多任务泛化;世界模型帮助预判后果;安全系统和低层控制器为所有路线兜底。真正的问题不是"哪条路线最先进",而是"在具体任务里,哪种能力放在哪一层,由什么机制保证可靠"。

面试问题:什么是数据飞轮?为什么说数据是具身智能系统的一部分而不是附属品?

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐ (3/5)

数据飞轮是通过执行、记录、训练和再部署持续提升系统的回路:

text 复制代码
任务执行 → 记录状态、动作与结果 → 筛选成功和失败数据
    ↑                                      ↓
重新部署 ← 模型评测 ← 模型训练 ← 清洗、标注与样本构建

为什么数据是系统能力的一部分

  1. 一个机器人完成任务只解决了眼前问题;把过程记录下来,才可能解决下一次的问题。失败被忽略,系统就不知道自己为什么没做好。
  2. 成功数据说明哪些行为有效,失败数据暴露系统在哪些地方不可靠。有价值的记录不只是最终成败,还包括任务指令、图像、状态、动作、时间戳、异常原因和人工修正。
  3. 数据通常包括图像、深度、关节状态、动作、语言指令、任务结果、人工修正和失败原因,它们成为下一轮训练、评测和系统优化的原材料------任务闭环由此变成学习闭环。

注意边界:不是"只要数据多就一定能学会",数据还要覆盖关键场景、失败情况、恢复动作和边界条件。数据飞轮也不是软件栈里单独的一层,而是一条贯穿系统的回路。

面试问题:人形机器人为什么受到关注?它比机械臂复杂在哪里?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

受关注的原因:门把手、楼梯、桌椅和工具本来就按照人的尺度设计,人形机器人理论上最适合进入人类环境。

复杂度来源------适配人类环境的外形带来了必须同时成立的系统问题:

  1. 行走与平衡:基座不再固定,躯干姿态随站立、行走、转向、接触和扰动变化,上肢任务必须同时满足身体姿态和支撑条件。
  2. 双臂协同:搬运、装配中的相对位姿约束、载荷分配、臂间自碰撞。
  3. 全身控制:手部目标的位置姿态随躯干、支撑脚和身体运动变化;上肢加速、负载变化或工具接触会反过来影响全身平衡。
  4. 环境感知、任务规划、安全约束和人机共处:跌倒后果不只是任务失败,还可能伤害本体、环境和人。

关键认识:人形机器人不是"把 VLA 装进人形身体"这么简单,也不是换了一个外形------它更像是对整套软硬件闭环的一次综合考试。不能把人形操作理解为在机械臂下方简单增加若干关节。

面试问题:具身智能有哪些常见误区?

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐ (3/5)

常见误区 正确认识
具身智能就是大模型控制机器人 大模型只负责部分理解和推理,机器人还需要感知、控制、安全和数据系统
端到端模型一定比传统 Pipeline 好 真实系统常常是混合架构,不同模块各有价值
仿真成功就等于真机成功 真机存在摩擦、延迟、传感器噪声、接触误差和安全约束(Sim2Real gap)
只要数据多,机器人就一定能学会 数据还要覆盖关键场景、失败情况、恢复动作和边界条件
人形机器人只是换了一个外形 人形涉及全身平衡、双臂协同、接触控制和人机共处

面试加分点:能进一步说明判断系统是否可靠的五条标准------具身智能是 AI 进入物理世界后的系统问题而非单个模型问题;闭环是基本结构;大模型/VLA/世界模型不能脱离身体、传感器、控制、安全和数据独立工作;可落地系统通常是"高层理解、策略生成、低层控制、安全约束、数据回流"各担其责的混合架构;所有能力最终以"机器人能否在真实世界中稳定、可靠、可持续地完成任务"为检验标准。

7.机器人系统架构与 ROS2

面试问题:机器人硬件系统由哪几类部件组成?选型时各自要确认什么?

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐ (3/5)

一套能持续运行的机器人系统至少要同时考虑六类硬件:

硬件部分 主要职责 例子 设计时要确认
本体与机构 提供自由度、工作空间和承载能力 六关节机械臂、连杆、底座、夹爪 自由度、负载、工作空间、机械限位
传感器 测量机器人自身与外部环境 编码器、RGB-D 相机、力传感器 量程、精度、频率、时延、坐标系
执行器 把电信号转化为运动或力 电机、减速器、夹爪驱动 位置/速度/力矩模式、额定能力、温度
计算平台 运行控制、感知、策略和日志 MCU、工控机、CPU/GPU 主机 算力、实时性、功耗、散热、系统版本
通信与同步 连接传感器、控制器和计算机 CAN、EtherCAT、USB、串口、以太网 带宽、周期、丢包、时钟和时间戳
电源与安全 供电并在异常时限制风险 电源、保险、急停、限位开关、制动器 电压电流、上电顺序、急停链路、故障状态

关键认识:这六类硬件共同决定系统的能力上限------再强的策略也补偿不了失真的编码器,再清晰的相机也不能让超出负载的机械臂安全搬起物体。硬件选型的起点不是"哪个传感器最贵、哪个模型最大",而是任务需要机器人看见什么、承受什么、以多快速度完成什么动作。

面试问题:为什么机器人里常常不止一台计算机?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐ (3/5)

根本原因:不同任务生活在不同的时间尺度上。 电机电流环、位置环要求稳定、快速、可预测;视觉模型和 VLA 推理需要强算力但单次耗时长;日志、界面和远程管理没有强实时要求。把它们塞进同一个计算节奏,会让关键控制受非关键任务影响。因此工程系统采用分级计算:

计算位置 典型任务 时间特点 常见形态
电机或关节内部 电流、速度、位置闭环与保护 高频、强实时 MCU、驱动器固件
机器人控制器 轨迹插值、状态汇总、安全联锁 稳定周期、低抖动 实时控制器、工业控制器
机载/边缘计算机 ROS2、感知、规划、策略与记录 中等频率、多进程 CPU/GPU 主机、嵌入式平台
远程工作站或云端 训练、离线评测、数据管理 非实时、大算力 GPU 服务器、训练集群

关键不在用了几块计算板,而在责任不能混在一起:高层策略即使暂停几百毫秒,底层安全控制仍要继续工作;网络一旦断开,机器人应进入定义明确的安全状态,而不是一直保持最后一条可能危险的命令。这也是高层模型不应绕过底层控制直接连电机的原因------它既不具备相同的实时保证,也不该承担底层安全职责。

面试问题:描述机器人软件栈的分层结构。

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐ (3/5)

从下到上六层:

软件层 主要职责 典型内容
固件与驱动 访问设备、执行底层协议 电机固件、相机驱动、CAN/串口驱动
硬件抽象与中间件 统一接口并连接模块 ROS2、消息定义、设备适配器
控制与安全 轨迹、限幅、稳定执行、异常停机 位置/速度/力控、看门狗、急停处理
感知与状态估计 将原始信号变成可行动状态 标定、滤波、检测、位姿估计、融合
规划与策略 决定下一步目标或动作 规划器、规则策略、模仿学习、VLA
应用、数据与运维 组织任务、交互、记录和诊断 任务管理、UI、日志、episode、监控

注意 :这张表描述的是职责,不是强制的软件目录------每一层不必对应一个进程,软件也不必只运行在一台计算机上。判断拆分是否合理,不看节点数量,而看三个问题:接口是否清楚、故障能否隔离、频率与算力是否满足要求

另外要区分两种架构视图:物理部署图 回答"有哪些硬件、软件跑在哪、设备怎样连接";功能分层图(本体层/控制层/感知层/策略层)回答"谁负责什么"。例如相机属于硬件系统、图像驱动属于软件驱动层、目标检测属于感知功能层------三者相关却不是同一模块,混淆部署位置和功能职责是架构图看似完整、实际无法实施的常见原因。

面试问题:软硬件接口契约应包含哪些内容?为什么说接口是系统最容易出错的边界?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

系统最容易出错的地方往往不是模块内部,而是两个模块交接的边界。接口绝不只是一个 Topic 名称,而是一组完整契约:

契约项 需要回答的问题 错误后果
数据含义 是绝对位置、位置增量、速度还是力矩? 动作方向或幅值错误
维度与顺序 有几个关节,数组顺序如何对应关节? 命令发给错误关节
单位与坐标系 角度还是弧度,相机系还是基座系? 运动尺度或方向错误
时间语义 时间戳是什么,数据多旧算过期? 用旧状态生成新动作
更新频率 状态和命令以多少 Hz 更新? 控制迟缓、速度失控或振荡
有效范围 关节、速度、力和工作空间限制是什么? 越界、碰撞或硬件损坏
异常行为 丢包、超时、断电或急停时怎样处理? 系统保持危险动作

为什么关键:"消息已经发出去"不等于"硬件正确执行"。一条动作要经过语义校验、边界检查和驱动适配;一份状态也要检查来源、时间戳、单位和有效性。接口写得含糊,错误会沿着闭环一路放大。

面试问题:ROS2 的 Node、Topic、Service、Action、Launch 分别解决什么问题?如何选择通信方式?

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐⭐⭐ (5/5)

ROS2 不是直接管理硬件的操作系统,而是面向机器人软件的通信机制、工具和工程组织方式,让模块保持相对独立、通过标准消息协作。三个工程概念:工作空间 (存放多个 Package 统一构建)、功能包 Package (组织相关节点、配置、Launch 和依赖)、节点 Node(真正运行并承担一项功能的单元)。

  • Node:基本运行单元,划分职责。判断标准:这项职责能否单独启动、观察和替换?可同机运行也可通过网络分布。
  • Topic:发布---订阅,适合持续或事件式数据流(图像、关节状态、动作指令),双方不必直接调用。
  • Service:一次请求---一次响应,适合短请求(复位、查询状态、切换模式、保存一次 episode)。
  • Action:发送目标---反馈---结果,适合几秒到几分钟的长任务(导航、轨迹执行、抓取),支持进度上报和中途取消。
  • Launch:统一描述和启动多个节点,设置参数、命名空间、重映射,保证每次以一致配置启动。但 Launch 只回答"怎样启动",不保证数据语义正确。
通信方式 交互形式 是否持续 过程反馈 能否取消 典型场景
Topic 发布---订阅 可以持续 由消息流本身提供 不适用 图像、关节状态、动作指令
Service 一次请求---一次响应 通常很短 通常没有 通常不支持 复位、查询状态、切换模式
Action 发送目标---反馈---结果 可以持续较长时间 支持 支持 导航、轨迹、抓取任务

选择方法(不必死记定义,先问三个问题):数据是否持续产生?调用者是否必须等待明确响应?任务是否需要进度和取消?连续数据优先 Topic,短请求优先 Service,长任务优先 Action。

边界认识 :ROS2 解决模块发现、消息传输和工程组织,却不会自动修正感知误差、稳定控制器或提升模型泛化。通信"连通"只是第一步,语义正确、时间一致和执行安全才决定系统是否真的可用。常用调试命令:ros2 node listros2 topic list / echo / hz / info -vrqt_graph

面试问题:VLA、模仿学习、强化学习、世界模型等学习模型如何接入机器人系统?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

"接入模型"不是把权重文件加载成功,而是回答四个工程问题:它读取什么、输出什么、运行在哪里、由谁检查结果。判断模型在系统中的位置不能只看名字,要看接口和时间尺度:

模型或方法 主要位置 典型输入 典型输出 接入系统时还需要什么
VLM / 检测 / 分割 感知层 图像、文本 类别、框、mask、语义 深度、标定、位姿估计与坐标变换
VLA 策略层 语言、图像、状态 单步动作、动作序列或子目标 动作空间映射、限幅、控制器与安全检查
ACT / Diffusion Policy 策略层 观测、状态 action chunk 时序队列、重规划频率、反馈与超时
强化学习 策略层或控制层 状态、观测 高层动作或低层控制量 仿真评测、实时部署与真机保护
世界模型 预测与规划模块 历史状态、观测、动作 未来预测或候选轨迹 规划器、策略以及真实反馈校正

三个要点

  1. "主要位置"表示典型职责而非固定部署方式,但模型输出越接近电机,系统对实时性、稳定性和安全的要求就越高
  2. "端到端"描述的是模型输入输出形式,不是绕过状态检查、动作边界和急停链路的许可证。
  3. 模型接入必须回答:输入由谁产生、输出由谁消费、异常由谁处理、效果由什么真实反馈判断。答不清,模型就只是离线能力,不是可部署的系统模块。

工程原则是"模块可以替换,契约尽量稳定":把简单比例策略替换为 ACT 时,只要策略节点仍消费定义明确的状态与目标、输出定义明确的动作,其他节点不必重写。

面试问题:描述一个最小机器人闭环的完整数据流,如何判断它是不是闭环?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

以"六关节机械臂移动到目标关节位置"为例(四个教学 Topic:/target_joint/joint_states/action_command/task_status):

text 复制代码
读取 /joint_states(当前状态)
        ↓
接收 /target_joint(任务目标)
        ↓
策略生成 /action_command(如:误差 × 增益,再单步限幅)
        ↓
控制器检查维度、限位、频率和状态新鲜度
        ↓
更新 mock 对象或下发硬件命令
        ↓
读取新的 /joint_states → 发布 /task_status → 记录 episode → 下一周期

判断标准只有一句话:动作执行后,系统有没有读取新状态并据此修正下一步?没有就是开环;有,闭环才真正转起来。

各环节要点

  1. 状态读取:有数值不等于可信,消费者至少检查------消息是否收到、关节名称和数量是否符合预期、数值是否有限且在合理范围、时间戳是否足够新、实际发布频率是否满足控制需求。
  2. 动作生成:必须明确动作空间(绝对关节目标、关节增量、末端位姿、速度还是力矩),维度和关节顺序必须与状态一致,否则本想移动肩关节的命令可能送到肘关节。
  3. 动作执行:整条链路风险最高的边界。至少检查动作维度、单步最大变化、关节限位、速度限制、状态新鲜度、通信超时和急停状态;涉及空间运动还要检查自碰撞、环境碰撞和工作空间。控制频率也是动作语义的一部分------同样"每步 0.02 弧度",10 Hz 和 100 Hz 执行速度完全不同。
  4. 任务反馈:成功条件必须来自可测量状态(如最大关节误差 < 阈值判 reached、状态过旧判 stale_state、超时判 timeout),不能用"动作已发送"代替"任务已完成"。

多级闭环:电机驱动在最高频率闭环,机器人控制器以较低频率更新轨迹,策略模型以更低频率生成目标------每层都要知道自己的频率、职责和安全边界。

面试问题:episode 数据应记录哪些字段?为什么只记录动作不够?

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐ (3/5)

Episode 是一次任务从开始到结束的时序记录,不只用于回放,也用于排错、评测和后续训练。最小字段集:

字段 含义 为什么需要
timestamp 记录时刻 对齐不同数据并计算频率
joint_state 当前关节状态 知道动作从什么状态出发
target_joint 当前任务目标 判断策略是否朝正确目标运动
action_command 本周期策略动作 分析策略实际输出
task_status 运行/到达/超时/异常 确定任务阶段和结束原因
success 最终成功标签 用于评测和筛选数据
error 异常信息 定位失败原因

为什么只记录动作不够 :任务失败时系统要能回答"从哪一步开始出错"。只有动作而没有执行前后的状态,就无法判断动作是否生效;没有失败原因,就难以形成有效的数据飞轮。记录必须能回答"机器人看到了什么、处于什么状态、执行了什么、结果怎样"。

生产系统还要处理图像与状态同步、掉帧、压缩格式、episode 边界和元数据版本。更完整的日志还应区分:原始模型输出、适配后的目标、滤波/插值后的参考、控制器实际接收命令、硬件反馈、裁剪或拒绝原因------这样才能区分"模型输出不合理""适配层改变语义""低层因约束未执行"三类问题。

面试问题:机器人系统出问题时,应该按什么顺序排查?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

原则 :一出问题人们容易先怀疑模型,但更有效的顺序是从可观察证据开始------先确认节点是否存在,再确认 Topic 是否连接,然后检查消息内容和频率,最后才分析策略与控制逻辑。排查遵守单变量原则:一次只改一个因素,保存修改前后的日志。

典型现象与排查:

现象 可能原因 检查方法
预期节点没有出现 启动失败、入口未注册、环境未加载 ros2 node list,看 Launch 终端最早的报错
Topic 存在但没有数据 发布节点未运行、回调未触发 ros2 topic info -vros2 topic echo
发布订阅无法通信 Topic 名称或消息类型不同 ros2 topic info -v <topic>
状态频率偏低 计时器配置、驱动或计算阻塞 ros2 topic hz /joint_states
报告 stale_state 时间戳过旧或发布中断 查 header 与当前时间差、频率
动作始终达到上限 目标过远、增益过大或单位错误 核对弧度与角度
动作在变但状态不变 控制节点未订阅、mock 未更新或驱动拒绝 ros2 topic info -v /action_command、控制日志
状态越过目标并振荡 增益或单步上限过大、反馈延迟 对比连续状态和动作,测状态频率
真机运动方向异常 关节顺序、正方向或单位映射错误 逐关节低速小范围测试
rqt_graph 连通但任务失败 数据语义、单位、时间或控制逻辑错误 继续查消息内容、频率和任务状态

两个易错点

  1. 看到 Topic 名称只能证明"通道被发现了",不能证明消息类型、内容、单位和频率都正确;节点图连通不代表数据语义正确。
  2. 构建失败先看最早出现的错误,不要被连锁报错带偏。

判断一个具身智能系统是否完整的六个追问:观测从哪里来?目标怎样表达?策略输出什么?动作由谁检查和执行?系统怎样判断成功或失败?过程数据是否足以复盘?只要一个问题没有明确答案,系统就还没有形成可靠闭环。

8.机器人本体与运动结构

面试问题:什么是机器人本体(embodiment)?本体如何影响具身智能系统?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

定义:机器人本体是由机械结构、驱动方式、传感配置、计算资源和控制接口共同构成的物理系统。它不仅限定机器人能施加的运动和接触,还决定系统可获得哪些状态、可下发哪些命令,以及训练数据应如何组织。

影响链条(明确的因果链):

text 复制代码
本体参数 → 可观测量和可控量 → 数据字段与动作空间 → 训练目标与部署适配 → 本体的运动、接触与安全约束检验策略是否可执行

具体表现:

  1. 决定可控量与任务边界:固定基座机械臂以关节位置、速度和夹爪开度为主要可控量,适合桌面抓取;移动操作机器人增加底盘位姿、线速度和角速度,机械臂与底盘必须共享时间基准和坐标变换;人形机器人还要处理腿部关节、躯干姿态、IMU 和足端接触,上肢动作可行性受支撑状态和全身约束影响。
  2. 决定观测与数据字段:桌面机械臂示教样本 = RGB(-D) 图像 + 关节状态 + 夹爪状态 + 动作标签;移动操作还要底盘状态、导航参考系、相机-机械臂外参;人形还要 IMU、足端接触、躯干姿态、安全状态。字段增加意味着标定、时间同步和缺失数据处理的复杂度上升------若图像、关节状态和动作标签不来自同一时间窗口,学到的映射会把不同时刻的因果关系错误对应。
  3. 决定失效模式:固定机械臂常见末端位置偏差、夹持不足、碰撞、关节到限位;移动操作还有定位漂移、底盘与机械臂不同步、运动中视角变化;人形还有接触切换异常、姿态恢复不足、全身耦合导致的稳定性下降。

诊断顺序:把失败简单归因为"模型没有学会"会掩盖物理与接口条件。合理顺序是------先检查观测是否反映真实状态,再检查动作定义是否与控制接口一致,最后检查本体约束是否使该动作在当前姿态下不可行。跨本体迁移时,这条链上的每个接口都要重新确认。

面试问题:机器人本体由哪几个子系统组成?各自的职责是什么?

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐ (3/5)

子系统 职责 要点
机械结构 以确定的运动关系、承载能力和碰撞边界完成任务 连杆建模为刚体(长度、质量、质心、转动惯量);关节规定相对运动;关节轴、连杆尺寸和限位决定末端可达范围
驱动系统 把控制器输出转换为关节机械运动 链路:电源→驱动器→电机电流→减速器/传动→关节力矩→编码器反馈。传动机构不只放大扭矩,还改变速度范围、反向间隙、等效刚度、摩擦和可回驱性
传感系统 提供本体状态、环境状态和接触状态 编码器(关节状态主来源)、IMU(角速度+比力,姿态需融合估计)、相机、力/触觉。价值在于明确的测量对象、坐标系、时间戳和误差模型
控制系统 把任务级目标转化为可稳定执行的命令并用反馈维持约束 分层:任务/策略层→运动学/规划/轨迹层→关节控制器(state interface 反馈 + command interface 下发)。实时性是基本约束,安全逻辑贯穿各层
计算系统 为感知、估计、规划、推理、通信和日志提供运行环境 不直接产生力矩,但决定信息能否以正确顺序、足够时效、可追溯地抵达控制系统。选型要核对算力、接口、时钟、供电、散热和故障恢复,不能只比峰值推理指标

驱动器级联结构(由内向外):电流环快速调节电机电流 → 速度环根据速度误差给出电流/力矩请求 → 位置环根据位置误差产生速度/力矩参考。关键边界:高层策略通常不直接闭合电流环,而是通过规定的命令接口向已具备保护和实时能力的驱动层提出目标。

分层数据流:运行时形成持续闭合的数据流------物理世界产生测量值 → 估计融合形成观测 → 策略产生候选动作 → 适配与控制层转换为硬件命令 → 执行结果经传感器返回。任何关键量都要能回答五个问题:由谁产生、在什么坐标系和单位下表达、何时产生、被谁使用、失效时以何种现象暴露。

面试问题:什么是自由度(DoF)?自由度与关节数、电机数一定相等吗?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

定义 :自由度是确定机器人构型所需的独立变量数量。对串联机械臂常与独立单自由度关节数相同,但不能普遍等同

三个层面的区分

  1. 刚体运动自由度:三维空间中不受约束的刚体有 6 个自由度(3 平移 + 3 转动);平面运动刚体有 3 个(2 平移 + 1 转动)。任务若只要求从上方到达平面位置而不要求绕工具轴朝向,任务自由度会相应减少。
  2. 关节自由度 ≠ 电机数:一个电机可通过传动同时驱动多个关节;多个电机也可共同作用于一个输出自由度;闭链机构、差动机构和被动关节还会引入额外约束。描述平台时应优先说明可独立控制的关节变量及其约束,而不是只列执行器数量。
  3. 外部约束改变有效自由度 :固定基座以基座为已知约束;移动底盘与地面接触后受平面运动和非完整约束限制瞬时可实现速度;人形在双脚、单脚或腾空状态下具有不同接触约束。同一台机器人不存在脱离接触状态的唯一"有效自由度"------控制器和规划器必须把当前支撑、接触和任务约束作为条件,而不是只看参数表里的关节数。

软件接口层面:自由度表现为关节状态向量、命令向量或任务变量的维数,但向量长度本身不足以说明语义------每个分量还需绑定关节名称、排列顺序、单位、范围和参考时间,否则两个维数相同的动作向量可能控制完全不同的机构。

面试问题:关节有哪些类型?在控制接口层面要注意什么?

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐ (3/5)

关节类型

  • 转动关节:绕规定轴线改变相对角度,变量通常以弧度表示;
  • 移动关节:沿规定轴线改变相对位置,变量通常以米表示;
  • 连续转动关节:几何上可跨越完整旋转范围,但仍可能受线缆、传动或软件限制;
  • 固定关节:不提供独立运动变量,但在坐标变换链中确定两连杆间的刚性关系。

接口层面注意事项

  1. 关节轴必须相对于明确的父连杆坐标系定义------轴方向或零位配置错误会使同一正命令产生错误的空间运动。
  2. 区分主动关节 (执行器直接或经传动驱动)与被动关节(由机构约束、重力、接触或其他主动关节带动)。两者都可能出现在运动学模型中,但不应在控制接口中被同样处理。
  3. 闭链、差动或腱绳机构中,一个执行器变化可能影响多个关节变量,或一个关节变量由多个执行器共同形成------命令空间与关节空间之间需要额外映射,不能简单按数组索引逐项下发。
  4. 关节配置应在模型、控制器和硬件之间保持同源:名称、顺序、轴方向、单位、限位与控制模式的任一差异都会造成命令解释错误。
  5. 区分物理关节、传动关节和软件暴露的控制变量:某些机构以耦合变量表示多个关节,某些把被动关节保留在模型中但不提供命令接口。
  6. 上线前检查:低速单关节运动、限位接近时的减速行为、状态反馈方向、急停后的恢复前提------这些只验证接口一致性,不以突破硬件限位来验证动作范围。

面试问题:什么是末端执行器和工具中心点(TCP)?为什么 TCP 配置错误会产生系统性偏移?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

末端执行器是运动链中直接与任务对象、工具或环境发生作用的部分:二指夹爪、吸盘、灵巧手、焊枪、螺丝刀、打磨工具或专用夹具。它决定机器人以何种接触方式完成动作,因此既影响任务能力,也影响状态观测、控制接口和动作空间的定义。

典型末端的适配性:二指夹爪靠两指相对运动夹持,适合有可夹持边缘或平行接触面的物体;吸盘依赖密封和压力差,适合平整且气密性足够的对象;灵巧手提供丰富接触构型、支持在手操作,但状态维度、接触不确定性和控制难度都更高。"装上手"不等于具备通用操作能力,末端形式必须与对象形状、材料、接触力、精度和安全约束匹配。

TCP 是为描述工具工作位置和姿态而选定的参考点/参考坐标系:夹爪的 TCP 常在两指之间的预期抓取中心;吸盘的 TCP 与吸附面法向和接触中心相关;螺丝刀的 TCP 对应真正参与作业的尖端或轴线。TCP 是在工具坐标系中显式配置的工程约定

为什么错误会产生系统性偏移:运动学、轨迹规划和视觉引导若引用不同的 TCP,机械臂即使准确执行关节命令,实际工具作用点仍会偏离目标------这是模型参数层面的固定偏差,不随控制精度提高而消失。

更换末端的固定核验流程:确认工具识别和 TCP 配置正确 → 检查质量与碰撞模型是否更新 → 低速无负载验证可达范围 → 受控条件下验证接触与释放。未经这些步骤,策略在旧工具上学到的动作不能直接迁移到新工具------即便法兰接口相同,接触几何和控制语义也可能不同。

面试问题:关节空间和任务空间(末端空间)的区别与联系是什么?

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐⭐ (4/5)

关节空间(joint space):以各独立关节变量组成的向量 q 描述构型。每个分量必须对应具体关节名称、单位、零位和限位,直接适合控制器、编码器反馈和驱动接口使用。两组数值即使维数相同,关节顺序或单位不同也不能互相解释。

任务空间(task space)/末端空间:描述末端执行器的位姿------位置用指定坐标系中的三个平移分量,朝向可用旋转矩阵、欧拉角、轴角或四元数表示。不同姿态表示有不同的参数约束和数值特性,接口中必须固定约定,不能在同一数据链路中混用。工具中心点、基坐标系和目标参考坐标系共同决定末端位姿的物理含义;任一坐标系未定义,"末端到达目标"就没有可验证的参照。

联系 :二者描述同一机构的不同层次,通过机构几何、关节轴和坐标变换链建立映射------给定关节状态计算末端位姿是正运动学 ;给定目标末端位姿在约束下寻找可行关节构型是逆运动学。关节空间便于表达驱动变量和限位,任务空间便于表达抓取、插接、搬运等任务目标。

任务可达性核验顺序:先确认目标在正确参考坐标系中 → 检查机构几何和关节限位是否允许该位姿 → 检查碰撞、工具姿态、负载和路径连续性 → 最后交给控制器跟踪。任何一层未通过,不应把任务空间目标强行转换为关节命令。这也说明末端目标误差可能源于视觉外参、TCP 配置、运动学模型或控制跟踪,不能只通过修改关节目标补偿。此外空间转换验证还应覆盖时间关系:关节状态、末端位姿和外部观测若来自不同时间点,即使坐标变换正确也会产生表观误差。

面试问题:比较固定机械臂、移动底盘、移动操作、双臂、灵巧手、人形机器人的特点与典型失效模式。

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

比较不同平台不应只按外观或自由度数量分类,而应同时考察支撑条件、可控对象、观测来源、动作空间和典型失效模式------它们面对的是不同的接触、运动和安全问题,并非复杂度单调递增的同一产品序列

平台 可控对象/特点 典型失效模式
固定基座机械臂 关节和末端;工作空间相对确定,适合桌面抓取、分拣、装配 姿态不可达、夹持失败、工具碰撞、关节限位
移动底盘 线速度和角速度;核心是定位、路径、避障与地面条件 定位漂移;无操作末端时不能完成精细接触任务
移动操作机器人 底盘+机械臂+感知组合,任务范围扩展 底盘与手臂坐标变换、时序同步、底座扰动、视角变化、手眼坐标不一致
双臂系统 相对位姿约束与载荷分配能力(搬运、稳定抓持、装配) 臂间自碰撞、时序协调、相对位姿失配
灵巧手 多手指多关节,支持捏取、转动、在手操作 高维状态、接触不确定性、观测不足
人形机器人 腿/足/腰/躯干/双臂/头,全身状态 摩擦变化、接触切换异常、姿态恢复不足、全身耦合稳定性下降

移动操作的坐标链至少涉及:世界/地图坐标系、底盘坐标系、机械臂基座坐标系、相机坐标系、末端 TCP 与目标对象坐标系。底盘移动后机械臂基座和相机相对环境的位置都会改变;若坐标变换未更新或不同模块引用了不同时间的变换,视觉估计的目标位置无法正确用于规划。固定桌面实验的手眼标定配置不能直接移植到移动平台。

选型原则:增加传感器、自由度或接触点不仅扩大能力,也增加标定、同步、模型更新和安全检查的对象。应以任务所需的最小可控量和可观测量为起点,避免把不必要的系统复杂度误当作能力优势。

面试问题:工作空间和任务可达空间是一回事吗?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐ (3/5)

**不是。工作空间(workspace)**是在给定关节限位和机构几何条件下,末端理论上可能到达的位置或位姿集合。任务可达空间还必须额外考虑:

  1. 末端的目标姿态(能到达某点 ≠ 能以所需朝向接近该点);
  2. 负载方向(夹持载荷后关节力矩和姿态是否仍安全);
  3. 自碰撞与环境障碍物;
  4. 线缆干涉;
  5. 关节速度限制;
  6. 当前支撑状态(人形/移动平台)。

因此规划系统需要在运动学可达性之外,使用碰撞模型和约束条件筛选可执行路径。

工程含义:三维点位于机械臂附近,不代表带指定姿态的末端一定可达;位置可达但姿态不可达时,需要更换接近方向或安全偏移。末端偏移问题应先检查 TCP、相机外参和关节零位,而不是只修改轨迹终点。

面试问题:CAD 模型、URDF 和碰撞模型有什么区别?

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐ (3/5)

模型 服务对象 特点
CAD 模型 机械设计、制造和装配 保留较细的几何细节
URDF(统一机器人描述格式) 软件读取的结构树 把连杆、关节、质量、惯性、视觉几何和碰撞几何组织起来,用于状态发布、可视化和运动学计算
碰撞模型 规划效率 采用较简单的形状近似,不追求完整外观

三者可以相互校核,但不能互相替代:高精度 CAD 直接用于实时碰撞检测会造成不必要的计算负担;只依据简化碰撞模型不足以完成机械制造和装配验证。

配置管理要求:部署前应核对模型参数与实物的一致性------工具更换、负载变化、维修后的零位偏移或线缆重新布置,都可能使原有质量参数、碰撞边界或 TCP 不再适用;这些变化应进入配置和验收流程,不能依赖操作者凭经验补偿。上线前至少检查:工具中心点、负载参数、碰撞几何与关节零位是否对应当前硬件状态。

模型校验方法(从可观测结果开始):在安全速度下比较若干已知关节构型的预测末端位姿与实测位姿;检查负载变化前后的重力补偿与跟踪误差;确认碰撞模型既不遗漏关键部件,也不过度扩大安全边界。发现系统偏差时,应区分几何标定、质量参数、传动弹性和传感误差,而不是只修改轨迹终点。

9.控制基础与动作空间

面试问题:开环控制和闭环控制的区别是什么?开环在什么条件下才能成立?

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐⭐ (4/5)

开环控制:控制输入按预定命令、时间表或逻辑条件发出,不利用被控对象的实时输出修正当前命令。开环不等于没有传感器、没有计划------关键在于某一控制环节的输入不根据该环节实际结果形成闭环误差。

闭环控制:以目标值与测量值之间的误差为依据持续修正控制输入。最小闭环包含:参考值、被控对象、传感测量、误差计算和控制器。关键在测量结果被用于改变后续输入,使系统能抵抗一定范围内的扰动和模型误差。

开环成立的条件:对象初始状态可控、负载和环境扰动较小、执行器输出与命令关系足够稳定、任务对最终误差不敏感、失效后果可接受。若摩擦、负载、电源或接触条件变化,实际位移会逐步偏离预期,而开环不能自行识别这种偏差------因此不适用于需要精确到位、接触安全、动态平衡或环境变化显著的任务。

三个深入点

  1. 时间驱动 ≠ 状态驱动:收到"到达下一工位"的高层信号后开始一段固定动作,并不表示关节位置已被实时反馈控制。只有将目标值与测量值比较并据此调整输入,才形成该对象的闭环。
  2. 闭环也不保证任何目标都能实现:执行器能力、关节限位、通信延迟、传感精度和稳定性条件仍会限制效果。反馈延迟使控制器根据较早时刻的误差工作,过高增益可能对已改变的状态过度修正而产生过冲或振荡;传感噪声在对变化率敏感的环节可能被放大为高频命令抖动;执行器饱和(位置/速度/力矩/电流到顶)时误差不再按理想模型减小,可能造成积分累积、过冲、温升或保护触发。
  3. 闭环稳定性应在明确工况下验证:低速空载稳定不代表带负载、高速、接触或延迟条件下同样稳定;更高反馈增益不必然改善跟踪,可能放大噪声或激发机构柔性。实验应从受限速度和小范围动作开始,逐步改变负载、轨迹和反馈条件。

面试问题:比较位置控制、速度控制、力矩控制三种模式。

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐⭐ (5/5)

控制模式 主要输入 关键反馈 典型任务 核心注意点
位置控制 目标位置或位姿 位置误差 点到点操作 接口直观但并非天然更安全
速度控制 速度参考 速度与姿态 连续移动、视觉伺服 不直接保证最终位置到达
力矩控制 力矩参考 电流、力或接触 柔顺接触、重力补偿、动态动作 硬件前提最严格

位置控制:以关节或末端位置为参考目标。伺服增益过高、目标跳变过大、缺少限速限加速度、碰撞检测或工作空间约束时,同样可能产生很大接触力------不是"更安全"的模式。位置命令不应被理解为瞬时跳变:参考角度在一个周期内大幅变化会要求过高速度/加速度/力矩,导致过冲、限幅、振动或保护触发,因此需要轨迹生成器把离散目标转换为连续参考,并按关节限位、速度、加速度、加加速度和碰撞约束安排时间参数。跟踪误差要按参考值、测量值、时间和接口状态共同解释:接近限位时增大→查软限位和减速空间;只在带工具时出现→查工具质量、质心和重力补偿;周期性振荡→查控制周期、增益、机械刚度和测量噪声。

速度控制 :以期望变化率为参考。关节速度(rad/s)、末端速度(线速度+角速度)、底盘速度(机体或地图坐标系)三者的控制对象、单位和参考坐标系不同,不能不经转换混用。末端速度控制需通过雅可比转换为关节速度,并处理奇异、限位与自碰撞。速度控制不直接保证位置到达:速度偏置、执行器响应不一致或反馈误差会使位置误差随时间累积(底盘表现为里程/航向漂移,机械臂表现为末端缓慢偏离)------需要到达指定位置的任务通常要叠加位置反馈、外部定位或阶段性校正。把速度控制说成"更平滑的位置控制"会忽略其积分特性。

力矩控制 :以关节输出力矩或对应电流参考为控制对象,用于调节作用力、接触柔顺性或动态响应。注意三个量相关但不相同:电流(A)在特定电机条件下与电磁转矩相关;关节力矩(N·m)经传动受效率、摩擦和柔性影响;末端接触力(N)还取决于机构姿态、雅可比映射和接触几何------不能把电流命令或关节额定力矩直接解释为末端施加的力。硬件前提比位置模式严格:设备只支持内部位置伺服时,不应在软件层把普通位置接口命名为"力矩控制"。

接触任务的模式切换:自由空间用位置/速度接近目标,接触确认后转入受限的力矩、阻抗或混合控制,在接触力异常、工具滑移、目标脱离或状态超时时退出。切换前后应保证参考值连续,避免位置控制器的残余误差在切换后形成突发力矩;切换事件、接触状态、命令和实际反馈均需写入日志。若硬件不具备可信的力矩/接触反馈,应采用更保守的速度、位置和机械限位方案,而不是在软件中假设柔顺性。

面试问题:说明 PID 控制器三项的作用,什么是积分饱和?如何处理?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

三项作用

环节 主要作用 过强时的表现 调节依据
比例项 P 根据当前误差立即修正,加快误差响应 过冲或振荡 当前误差
积分项 I 累计历史误差,减小稳态偏差 积分累积与饱和 长期误差
微分项 D 增加阻尼、改善瞬态响应 对测量噪声敏感(通常配低通滤波) 误差变化率
  • P 项误差大时控制作用大,可提高响应速度,但不能单独消除所有稳态偏差------重力、摩擦或恒定外扰可能使系统在存在小误差时达到平衡。
  • I 项对"关节因摩擦、重力补偿不足或小负载长期未达目标"的情况逐步增加输出补偿。
  • 过冲、震荡和稳定性应结合 P/I/D、采样周期、时延与被控对象动力学共同分析。

积分饱和(integral windup):当执行器已饱和或目标不可达时,积分仍继续累积;恢复可行状态后,过大的积分量导致明显过冲或反向修正。典型现象是"先缓慢顶住,随后猛然冲出"------此时应检查积分状态、输出裁剪和目标可达性,而不是只判断驱动器故障。

处理方法:积分限幅、积分分离、条件积分或在输出饱和时进行抗饱和(回算/暂停累计)。参考突变、模式切换和安全停机后,也应处理积分状态与滤波器状态,避免恢复时产生脉冲输出。PID 调参不应绕过软硬限位、急停或驱动保护;在复杂接触或人形全身约束下,PID 仅是低层组件,仍需上层规划、状态估计和安全逻辑限定其参考范围。

调试方法 (固定条件---单一改动---记录响应---判断边界):先固定关节初始构型、负载、参考轨迹、控制周期、滤波和安全限幅,记录基线响应;一次只改一个增益,比较上升时间、稳态误差、峰值过冲、振荡持续时间、输出裁剪和温升。响应曲线必须与实际关节或末端现象相互验证:慢响应可能错过移动目标,稳态偏差造成插接持续偏离,过冲导致工具撞击,高频抖动增加磨损和安全风险。曲线改善但任务结果未改善时,应检查任务空间标定、TCP、视觉/接触观测和高层参考,而不是继续追求单一关节误差最小化。具体 PID 数值必须绑定被控对象、控制周期、驱动器和测试条件,没有通用经验值。

面试问题:什么是正运动学(FK)?它的输出为什么可能有系统性偏差?

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐⭐ (4/5)

定义:正运动学描述在机构模型和关节状态已知时,如何计算末端执行器相对于指定参考坐标系的位姿。输入包括关节变量、关节轴与连杆几何、各连杆间固定变换、基坐标系和 TCP;输出是末端位置与姿态。本质是把编码器状态与结构模型通过坐标变换链组合的几何计算:对串联机械臂,沿运动链依次组合每个关节和连杆的变换,即可从基座坐标系得到末端或 TCP 坐标系。

要点:末端位姿必须明确表达在何种坐标系中(基座、世界或相机坐标系)------同一物理末端在不同参考系中数值不同,不能不经变换直接比较。工具更换后,TCP 相对法兰的固定变换需要更新。

系统性偏差的来源(FK 的输入质量决定输出可信度):

  1. 关节角层面:名称、顺序、单位、零位错误,编码器零位偏移;
  2. 模型层面:连杆长度/关节轴方向/安装偏置与实物不一致,法兰工具变换未更新,坐标系定义混乱------这些偏差会沿运动链传播,并可能在远离基座的末端被放大;
  3. 物理层面:柔性传动、显著负载或接触任务中,输出端真实姿态受弹性形变、背隙和装配误差影响,理想刚体 FK 需结合标定和反馈使用。

此时即使控制器报告的关节跟踪误差很小,计算出的末端位姿仍有系统偏差。

误差诊断:末端未到目标可能源自目标本身在错误坐标系、视觉外参不准、IK 选择不合适、轨迹跟踪误差、工具接触或 FK 模型不一致。日志需保存关节状态、模型版本、TCP 配置、参考坐标系、FK 输出、目标位姿和实际反馈,才能比较误差在哪一层产生。结构、工具或软件配置变化后,FK 验证需重新执行,保证后续 action、IK 和控制器使用同一物理模型。

面试问题:什么是逆运动学(IK)?工程中要处理哪些常见问题?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐⭐ (5/5)

定义 :逆运动学在目标末端位姿、结构模型和约束已知时,求取可行的关节构型或关节速度候选。IK 的输出不等同于可直接执行的关节命令:还需选择连续且满足限位、奇异和碰撞约束的解,由运动规划生成带时间参数的参考轨迹,再由控制器转化为执行指令。

求解方法对比

方法 原理 优点 局限
解析 IK 利用特定机构几何得到封闭形式解 计算快、可枚举部分多解 依赖机构构型和模型假设
数值 IK 迭代最小化末端误差或约束代价 适用一般机构与冗余条件 依赖初值、步长、终止条件和计算时间

两类方法都不能自动保证避障、轨迹平滑或动态可执行性;求解后仍需检查关节限位、自碰撞、环境碰撞、速度/加速度、工具姿态和控制器可跟踪性。

常见问题与处理

  1. 多解:同一末端位姿可由不同肘部/腕部姿态或冗余关节配置实现,相邻目标间关节可能突然跳到另一分支。处理:以当前关节状态为种子,按轨迹连续性、限位余量、碰撞距离和任务偏好选解;冗余机构可用姿态或避障等二级目标。不保留种子状态和分支选择规则,重复执行同一任务可能得到不同关节路径,影响数据采集和安全验证。
  2. 不可达/无解 :目标位置、姿态或组合超出机构与约束允许范围,表现为返回无解、残差无法降低或关节持续贴近限位。处理:先核对目标坐标系、TCP、单位和姿态表示,再检查工作空间、限位、工具长度、障碍和接近方向;修改目标、放宽不必要姿态要求或换接近方向,比强制关节越限更合理。无解或未收敛是应被显式返回的结果,而不是通过放宽约束、重复命令或强制运动掩盖的问题。
  3. 奇异位形:某些位形下雅可比退化,末端微小运动可能要求关节速度无穷大,应避免或限制。
  4. 种子状态管理:在线执行优先使用当前实测关节状态或上一可行轨迹点作初值;离线规划可用多个有界初值搜索,但所有候选解要做相同的碰撞、限位和速度检查。冗余、人形或移动操作系统的种子还应包含底座、腰部、支撑和工具状态。
  5. 全身约束复核:人形/移动平台上,即使手臂 IK 有解,底座位置、支撑脚、躯干姿态、腿部限位、自碰撞和可用速度仍可能使该解不可执行。约束冲突时返回清晰失败码(目标不可达、姿态约束冲突、碰撞、限位、状态无效、求解超时),失败码与残差、种子、目标和约束快照共同构成后续规划与训练的依据。
  6. 时间预算:IK 求解时长超过控制或规划周期时,应保持当前安全目标、降低更新率或请求重新规划,不能让迟到的候选解在状态已改变后直接进入执行链。

面试问题:为什么很多策略输出末端增量(eef delta)而不是绝对关节角?

难度评分:⭐⭐⭐⭐ (4/5) | 考察频率:⭐⭐⭐⭐ (4/5)

定义 :末端执行器相对增量(end-effector delta)是以当前末端位姿为基准,描述下一控制区间内位置和姿态小幅变化的动作表示,通常由平移增量、旋转增量和夹爪/工具状态组成。它不直接驱动电机,需要经过坐标变换、尺度还原、IK、轨迹和低层控制才能成为实际关节运动------是策略层与控制层之间的一种约定

采用增量表示的原因

  1. 把动作表达为"从当前状态向目标方向作小步修正",而不是要求模型一次预测完整的绝对关节构型或绝对末端位姿;
  2. 视觉闭环任务中,对象相对位置变化时,增量命令可在每次新观测后重新计算;
  3. 对不同初始构型,局部增量比绝对目标更容易与当前状态衔接;
  4. 有助于限制单步动作幅度,使高层输出能在低层闭环和安全过滤的约束下逐步执行。

参考坐标系决定物理方向 (面试高频追问):平移增量在基坐标系中定义时,正 x 在工作台上保持固定;在末端工具坐标系中定义时,"向前"随工具姿态改变;在相机坐标系中定义时,需依赖手眼变换和相机姿态解释。相同数值在不同参考系中可能使末端沿完全不同的方向运动。姿态增量还需说明采用轴角、欧拉角还是小旋转向量,并避免在大角度或奇异区域把近似增量错误解释为全局姿态。

限幅的累计效应:单个 action 被裁剪后,实际执行的末端变化小于策略期望;连续多步裁剪会使策略观察到的状态与其内部假设逐渐偏离。系统应记录裁剪前后值、触发约束和实际反馈,必要时由高层重新观测和规划,而不是机械重复同一增量。训练数据若已包含裁剪或安全过滤,其配置必须随数据一同保存。

跨平台迁移:应分别重新核对 TCP、基坐标系、相机外参、关节限位、工作空间、IK 求解器、控制频率和动作归一化范围。末端增量本身不能消除不同臂长、工具、刚度、底座运动或支撑状态的差异------它只提供一个可配置的任务空间接口。目标平台不能稳定执行训练动作的尺度或频率时,应调整动作定义、适配器或任务条件,而不是把不一致隐藏为"模型泛化失败"。

面试问题:什么是动作空间?常见的 action 类型有哪些?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

定义:动作空间是策略输出与机器人执行接口之间的约定集合。它不仅规定输出向量的维度,还必须规定:每一维控制什么对象、采用什么单位、在哪个坐标系中解释、允许的数值范围、更新频率、归一化方式,以及经过何种适配层进入控制器。离开这些约定,数值向量没有确定的物理含义。

同维度可以语义完全不同:七维向量可能是"六维末端位姿增量+夹爪开度",也可能是"若干关节目标+一个离散模式";两个三维速度向量可能分别位于世界、机体或工具坐标系。因此动作空间设计不能只依据"模型方便输出什么",而应从任务目标、本体可控量、可获得状态、低层接口和安全边界共同确定。

常见八类动作表示

动作类型 直接对象与单位 适用条件与主要风险
关节位置 各主动关节目标位置,rad 关节接口明确的机械臂;零位、顺序或限位错误产生错误姿态
关节速度 各主动关节目标速度,rad/s 连续扫掠或伺服;积分漂移、保持过久、限位接近时风险增大
末端位姿 TCP 目标位置(m)与姿态 任务空间描述的操作;可能不可达、多解、奇异或碰撞
末端增量 TCP 相邻时刻平移/旋转增量 示教和闭环微调;坐标系误用使运动方向整体偏离
夹爪动作 开度、目标位置、速度或开闭状态 抓取任务;未考虑对象尺寸、力限制和接触状态时易夹空或过夹
底盘速度 机体坐标系线速度(m/s)与角速度(rad/s) 移动操作;定位误差、制动距离和障碍物改变可执行速度
全身动作 腿、躯干、双臂等多部位协调目标 人形/腿式平台;支撑转换、摩擦和自碰撞使耦合约束显著增加
action chunk 连续多个控制时刻的动作片段 以片段预测降低逐步决策负担;模型与执行端时钟不一致会造成错时或陈旧命令

权衡:关节位置动作最容易与状态和位置控制器一一对应,但可迁移性弱------同一组关节角在不同机构上不具有相同的末端位置意义;末端位姿/eef delta 更贴近任务意图,但依赖坐标变换、TCP、IK 和可行性检查。action chunk 需要明确片段长度、丢弃条件、抢占规则和重新规划时机,否则旧片段可能在环境变化后继续执行。

对部署故障模式的影响 :范围过大→单步命令导致 IK 不可达、碰撞、饱和或安全裁剪;范围过小→动作被摩擦、死区或噪声淹没;归一化统计不同→相同输出对应错误尺度;频率不匹配→策略意图被保持、插值或延迟改变。安全层可以限制危险命令,但频繁裁剪说明动作空间、训练数据或接口适配需要重审

面试问题:动作归一化的作用是什么?训练与部署之间的尺度失配有哪几类?

难度评分:⭐⭐⭐⭐ (4/5) | 考察频率:⭐⭐⭐⭐ (4/5)

归一化的作用与边界 :使不同量级的动作分量以稳定数值范围进入学习过程。它不改变物理单位,也不改变控制器最终接收的物理命令------关节角仍以弧度解释、末端平移仍以米解释;归一化只是在训练和推理的模型侧建立与物理量对应的数值坐标。把归一化值直接发给硬件,或把物理量误当已归一化值,都会破坏动作语义。

工程要求

  1. 每个动作维度分别确定统计量(均值/标准差或最小/最大值),不同维度不应共用单一全局缩放因子------平移、旋转、夹爪开度的数值范围、噪声特征和任务重要性不同;
  2. 统计量必须与数据集版本、动作字段顺序、单位、坐标系、姿态表示、异常值处理和样本数绑定保存;模型检查点、预处理程序和统计文件共同构成动作接口的一部分,不能任意替换
  3. 部署时先用与训练一致的统计量反归一化,再按机器人接口的单位、关节顺序和坐标系生成候选命令,然后执行运行期检查(数值有限、在线裁剪范围、当前状态允许、运动学/控制器接受);
  4. 区分三个范围:训练范围(模型看到的动作分布)、在线裁剪范围(限制异常值)、控制器接受范围(当前设备状态与保护规则)------三者可重合但不能默认相同。把训练最小/最大值直接当关节软限位,是错误地把数据覆盖范围当成机械安全范围。

训练与部署失配的三大位置:坐标系失配(训练定义在相机系、部署按基座系解释,同一正数对应完全不同方向);尺度失配(部署端遗漏反归一化,控制器收到的数值不再对应训练时的位移);频率与执行约束失配(低频策略与高频驱动器之间缺少保持/插值/重采样机制,或超出限位、速度、碰撞约束的命令未被拒绝或裁剪)。

四类尺度部署问题与诊断

  1. 尺度过大:末端单步跳跃、关节逼近限位、规划频繁失败、保护持续触发。查原始输出、反归一化数值、裁剪比例、IK 状态、碰撞检查和跟踪误差;根因可能是训练动作范围过宽、归一化统计错误、解码重复放大或分布外异常值。仅靠增大控制器刚度或放宽限位不能修复语义错误。
  2. 尺度过小:数值稳定但不足以克服摩擦、背隙、量化误差、执行器死区------末端几乎不动、夹爪无有效闭合、底盘被静摩擦抵消。不能简单整体放大所有维度(各维有效尺度不同),应按对象分别调整并重新验证安全边界。
  3. 统计量/坐标系错配 :某些维度始终饱和、分量幅度比例异常、重新部署后突然偏移(统计);运动方向系统性错误(坐标)。这类问题可能不触发任何硬件报警,"硬件没报警"不能判定接口正确。用已知小幅测试动作分别验证每个轴和关节后再恢复任务级动作。
  4. 仿真到真机差异:仿真与真机的关节范围、速度限制、执行延迟、摩擦、背隙、相机外参、TCP 和控制模式不一致。比较同一 action 在仿真与真机的适配结果、状态变化和端到端时间戳,分离模型误差、感知误差、适配误差与执行误差;从校准机器人描述、TCP 和传感坐标开始,而不是全部归因于训练不足。

面试问题:控制频率、模型推理频率有什么区别?低频策略如何驱动高频控制器?

难度评分:⭐⭐⭐⭐ (4/5) | 考察频率:⭐⭐⭐⭐ (4/5)

三个频率概念必须区分

  • 控制频率:控制器读取状态、计算控制量并更新命令的节奏(倒数为控制周期);
  • 模型推理频率:策略单位时间内完成一次有效观测处理并产生可用动作输出的次数;
  • 推理吞吐率:离线基准中特定批量/硬件下的平均处理能力。三者可能相同,也可能因排队、批处理、同步等待或安全检查而明显不同。

频率不是越高越好 :频率过低会扩大离散更新之间的误差------快速运动、接触变化或扰动发生在两个周期之间时,控制器只能在下次更新后响应,表现为跟踪滞后、路径折线化、接触冲击增大或保护触发延迟。频率过高时,若传感器、通信、计算线程或驱动器不能在规定周期内稳定完成更新,会出现队列积压、丢帧、抖动或使用旧状态,还会放大传感噪声和数值微分波动。应以有效、可预测的更新周期,而不是名义频率评价控制链。同样,"每步移动 0.02 弧度"以 10 Hz 和 100 Hz 执行是完全不同的速度------控制频率本身属于动作语义。

延迟预算按阶段建立:设观测时间 t0、输入准备完成 t1、模型输出 t2、适配完成 t3、控制器接收 t4,则 t0→t4 是该动作的端到端命令延迟,实际机械响应还需结合状态反馈确认。平均延迟描述长期表现、最坏延迟描述最不利时刻、周期抖动描述相邻更新间隔的变化------不能以单个平均帧率代替。新观测到达时上一轮推理未结束,系统需明确策略:排队、丢旧帧、取消旧任务、复用最近结果或合并多帧。

动作桥接层(策略推理频率 < 控制频率时):接收带时间戳和语义定义的策略 action,将其转换为多个控制子周期内可执行、可监测、可被安全约束的目标序列。三种机制:

  1. 动作保持 :新策略输出到达前持续跟踪最近有效目标。必须规定命令有效期、状态超时条件、最大连续保持时长和失效时的安全状态------位置目标保持较长时间可能仍稳定,速度或力矩目标长期保持可能造成累积位移、接触力增加或接近限位。过期命令不应因数值尚在范围内而继续执行。
  2. 重采样与插值:在相邻有效目标间生成连续中间目标,降低突变。但插值本身改变中间时刻命令,可能在限位、碰撞区或接触边界产生不可接受路径------插值后的每个目标仍要经过范围、速度、加速度、运动学和碰撞检查;离散模式切换、夹爪接触等不适合连续插值的变量,用保持或状态机转换处理,不能按数值平均。
  3. 安全过滤:在命令进入硬件接口之前运行,且独立于策略是否更新。结果可为接受、裁剪、降速、保持最近安全目标、请求重新规划或直接停止。低层控制器在策略未更新时可继续自己的反馈闭环,但不得以继续闭环为理由忽略状态超时、保护触发或命令有效期结束。

例:策略每 50 ms 产生一次末端增量、控制器每 5 ms 更新位置目标,则桥接层在十个控制子周期内保持或插值出子步目标,每个子步经速度、限位和碰撞检查后送入控制器;若中途检测到状态超时或碰撞距离不足,后续子步不再使用原 action,由安全逻辑降速、保持或停止。

面试问题:人形机器人为什么比机械臂更难控制?

难度评分:⭐⭐⭐⭐ (4/5) | 考察频率:⭐⭐⭐⭐⭐ (5/5)

根本差异在基座和支撑条件 :固定机械臂基座可近似视为不变;人形躯干通过双足或单足与地面接触,基座位姿随站立、行走、转向、接触和扰动变化。上肢任务必须同时满足身体姿态和支撑条件------不能把人形操作理解为在机械臂下方简单增加若干关节

1. 状态描述扩大且相互耦合:除关节位置速度外,还需躯干姿态、线/角速度、惯性测量、足端接触、接触力、支撑相和碰撞信息。躯干姿态改变上肢末端的参考系;足端接触决定地面可施加的约束;关节运动改变全身质量分布和角动量。

2. 支撑和接触使约束时变:双足站立→单足支撑→抓住物体或受外力,每种接触切换都改变力、力矩、摩擦、运动范围和安全恢复的可行集合。

3. 站立与平衡 :以质心及其地面投影、足端接触区域构成的支撑区域做静态分析------质心投影位于支撑区域合理范围内时,地面接触力存在维持平衡的可能。但这是几何分析工具而非绝对保证:动态行走、快速转向、跳跃或受冲击时,速度、角动量、摆动腿运动、接触转换和地面柔顺性都影响稳定性,不能仅凭投影判断安全。上肢运动会改变全身状态:手臂前伸、抬举载荷会使质心投影向支撑边界移动,需要在踝、膝、髋、腰的允许范围内补偿,或限制手臂加速度、改变末端路径。

4. 行走是接触状态不断切换的过程:双支撑相两足共同承担,单支撑相支撑区域缩小、摆动腿和上肢动作对平衡影响更明显。落脚误差有风险链:足端实际接触点偏离预期 → 支撑区域和接触力分布改变 → 质心与姿态可用调整空间缩小 → 躯干偏差和滑移风险扩大。相位确认要结合接触检测、足端速度、地面条件和控制器状态,不能只按预定时间表假设接触已发生或解除。

5. 腰部与全身协调:腰部扩大有效可达空间(在限位、碰撞、支撑和姿态要求共同作用下的可达空间)、提供姿态冗余和重心调节,但较大躯干运动会使质心向支撑边界移动、改变足端接触力。全身控制同时处理末端目标、躯干姿态、关节姿态、足端接触、质心状态、碰撞距离和限位,按优先级分配------必须说明哪些目标是硬约束、哪些可在冲突时降级、冲突如何被记录。

6. 双臂协同:相对位姿约束(两手之间或手与物体之间)+ 对象约束(物体相对环境的目标)。两末端与同一刚性物体接触时,一个末端的运动会通过物体影响另一个的接触状态;一臂因限位、接触异常或延迟停止后,另一臂继续追踪原目标可能使对象受力异常。失败后应先保持或降低两臂动作、确认对象是否仍受控,再执行撤离、重新对准或人工干预。

7. 安全半径和恢复难度更高:移动和转向时身体、摆动腿、双臂、载荷和跌倒方向都可能扩大风险区域;失去平衡的后果不只是任务失败。安全约束应构成分层链路:高层候选动作→动作适配→约束过滤→控制器→驱动器保护→人工监护,每层明确触发条件、执行者、响应和恢复前提。足端接触丢失、滑移迹象、躯干姿态持续偏离或支撑状态不确定,都应限制上肢和移动动作。

10.传感器与感知

面试问题:机器人传感器如何分类?机器人为什么需要传感器?

难度评分:⭐⭐ (2/5) | 考察频率:⭐⭐⭐⭐ (4/5)

三分类(按信息对象):

类别 回答的问题 典型传感器
外感知 exteroception 环境中有什么、在哪里、是否可通行 RGB、RGB-D、LiDAR、麦克风
本体感知 proprioception 机器人自身处于什么状态 编码器、IMU、电流、温度
接触感知 contact sensing 是否接触、接触多大、是否滑动 六维力/力矩、触觉、夹爪电流

为什么需要:机器人控制器只能处理数值状态,真实世界中的物体、光照、接触和运动必须先通过传感器转换成可计算的数据。四个直接原因:获取外部环境信息、获取自身状态信息、根据环境变化调整动作、为感知决策和控制持续提供输入。没有传感器反馈,机器人只能执行预先设定的开环动作,无法判断目标是否移动、路径是否出现障碍、物体是否抓稳。

选型哲学 :机器人需要的不是"更多传感器",而是完成任务所需的最小充分信息。例如桌面抓取需要目标语义、三维位置、机械臂状态和抓取反馈;室内导航需要障碍物、局部运动、自身位姿和地图约束。

数据到任务变量的链路:传感器不会直接给出"杯子位于机器人前方 0.42 m",它只产生像素亮度、双目视差、光飞行时间、角速度、编码器计数或电桥电压。系统需要完成:

text 复制代码
物理量 → 传感器响应 → 数字采样 → 标定与单位转换 → 去噪和时间对齐 → 坐标转换 → 状态估计 → 任务变量

因此必须区分三层:原始测量 (图像、深度、点云、角速度、关节读数)、估计状态 (机器人位姿、目标三维点、速度、接触状态)、任务目标(抓取位姿、导航航点、插入方向、安全距离)。

面试问题:深度相机有哪几种测距原理?各自的优缺点是什么?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐⭐ (5/5)

先区分两个易混概念:RGB-D 描述的是"输出同时包含颜色和深度";双目、结构光和 ToF 描述的是"深度如何测出来"。一台 RGB-D 相机可以采用双目、结构光或 ToF 原理;一套双目相机也可能只输出左右图像,把深度计算交给上层算法。

三种深度原理

原理 机制 优点 典型失效
双目视觉 左右相机观察同一目标,通过视差恢复深度, Z = f B / d Z = fB/d Z=fB/d 不主动发光,室外适应性较好 依赖场景纹理和可靠匹配;低纹理、重复纹理、遮挡边界和强反光区域易产生错误深度
结构光 主动投射已知光学图案,通过图案形变计算深度 适合室内近距离操作 强阳光、多台设备相互干扰、透明/反光材料降低质量
ToF 飞行时间 通过光传播时间或调制相位差测距: r = c Δ t / 2 r = c\Delta t / 2 r=cΔt/2(除以 2 因为光经历往返两个路程) 直接测距、帧率高 多径反射、环境光、边缘飞点和物体反射率影响

视觉传感器整体:RGB 相机适合识别、检测、分割和人机交互,提供颜色纹理语义,但单目 RGB 通常不能直接给出带绝对尺度的三维位置;RGB-D 结合颜色与深度,适合三维定位、点云生成和近距离抓取;双目常用于导航、避障和三维重建。

快门类型(高频追问):全局快门同时曝光全部像素;卷帘快门逐行曝光------相机或目标快速运动时,卷帘快门可能把直线拍成倾斜或弯曲形状,使检测、三维重建和视觉伺服产生系统偏差。

选型关键参数 :分辨率、帧率、视场角、深度范围(最近/最远工作距离)、深度精度(要区分系统偏差、随机噪声、空洞率、边缘飞点和不同材质下的稳定性,不能只看单一标称值)、RGB-depth 对齐、内参、外参、曝光/动态范围/快门类型、时间戳与端到端延迟

延迟换算为空间误差 :机械臂末端以 0.2 m/s 横向运动、视觉链路总延迟 100 ms,仅延迟就造成 Δ x = v Δ t = 0.02 \Delta x = v\Delta t = 0.02 Δx=vΔt=0.02 m 即约 2 cm 偏差。所以一个 4K、60 FPS 但端到端延迟 300 ms 的相机,不一定比 720p、30 FPS、延迟 50 ms 的相机更适合实时闭环。

面试问题:为什么双目相机在远距离时深度误差更大?请推导。

难度评分:⭐⭐⭐⭐ (4/5) | 考察频率:⭐⭐⭐ (3/5)

公式:校正后的理想平行双目相机满足

Z = f B d Z = \frac{fB}{d} Z=dfB

其中 Z Z Z 是目标深度, f f f 是以像素为单位的焦距, B B B 是左右相机光心之间的基线长度, d d d 是同一空间点在左右图像中的横向视差。目标越远,视差越小 ;视差已经很小时,1 px 的匹配误差占据很大的相对比例,且 Z Z Z 与 d d d 成反比、是非线性放大关系。

定量算例 ( f = 600 f = 600 f=600 px、 B = 0.05 B = 0.05 B=0.05 m,视差估计误差 ±1 px):

  • 目标在 1 m 处:理论视差 d = 600 × 0.05 / 1 = 30 d = 600 \times 0.05 / 1 = 30 d=600×0.05/1=30 px; d d d 落在 29--31 px,估计深度约 0.968--1.034 m,误差约 -3.2 cm / +3.4 cm
  • 目标在 3 m 处:理论视差只有 d = 10 d = 10 d=10 px;同样 ±1 px 使估计深度变为 2.727--3.333 m,误差约 -27.3 cm / +33.3 cm

两种距离都只错了 1 px,但远距离误差从厘米级放大到几十厘米。

工程推论 :增大基线 B B B 或焦距 f f f 可以增大远距离视差,却会增加设备尺寸、左右图遮挡差异并提高最近可测距离。"短基线更适合近距离、长基线更有利于远距离"只是基本趋势,实际选型还要结合视场、工作距离、遮挡和匹配算法。

面试问题:IMU 测量的是什么?为什么单靠 IMU 不能长期定位?如何快速检查 IMU 数据是否正常?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

测什么 :IMU 通常包含三轴陀螺仪(测绕各轴旋转的角速度)和三轴加速度计(测比力 ),有些设备还含磁力计。IMU 不直接给出世界坐标系中的位置,也不直接"测得姿态"------姿态估计需要结合坐标变换、重力方向、积分过程以及可能的视觉、磁场或接触信息。

为什么不能长期定位:角速度积分可估计姿态变化;加速度计测得的比力要经过姿态变换、重力补偿和偏置校正后才能积分估计速度与位移。积分过程中噪声和残余偏差(零偏、温漂)不断累积为漂移,因此通常需要结合视觉、LiDAR、轮速或 GNSS。安装方向写错或重力处理错误,会导致姿态和速度估计迅速发散。很多系统"能运行但越走越偏",根因是 IMU frame 配错、角速度单位混用或把含重力的加速度当成世界坐标系线加速度。

快速检查方法(观察静止数据):

  1. 机器人静止在水平桌面时,理想陀螺仪输出接近零;
  2. 加速度计不会三个轴都为零------通常测到与重力相关的约 9.81 m/s² 比力(正负方向取决于消息定义和安装方向)。静止时加速度模长远离 9.81 m/s²,应先检查单位、量程和标定,而不是直接调滤波器参数;
  3. 让机器人绕某一轴缓慢旋转,检查陀螺仪轴方向是否符合 REP-103 右手规则。

关键指标:采样率、量程、噪声密度、随机游走、零偏稳定性、温漂、饱和和时间戳质量。标定至少包括加速度计零偏、陀螺仪零偏、噪声密度、随机游走、安装方向、IMU 到 base 的外参和时间同步;只做一次开机置零不能消除温漂和长期漂移。高精度视觉惯性系统还应联合估计 camera-IMU 外参和时间偏移(如 Kalibr),并保证数据包含足够的转动和加减速来约束参数。

对不同本体的意义:固定基座机械臂上 IMU 作用较小;存在底座运动和支撑切换的系统(移动机器人、四足、人形),IMU 的时间同步和坐标安装关系直接影响全身控制的可靠性,不能只依靠单一 IMU 输出判断长期位置或稳定性。

面试问题:编码器读数为什么不能直接等同于末端真实位置?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐ (3/5)

编码器把关节或轮子的运动转换成计数:增量编码器提供相对变化,绝对编码器直接给出绝对位置。它是关节状态(sensor_msgs/JointState:name、position、velocity、effort)的主要来源,但电机轴读数 ≠ 末端真实位置,原因:

  1. 安装位置限制:编码器装在电机端时,能较直接反映转子运动,但不完整包含减速器弹性、背隙或传动误差;装在输出端时更接近实际关节角,却可能受机构布置限制。
  2. 齿轮回差(背隙):正向接近和反向接近同一个角度时会产生不同的末端位置。
  3. 柔性连杆:负载变化时发生形变。
  4. 零位、关节方向和安装偏置:配置错误会造成系统偏差。
  5. 速度字段来源:可能是硬件直接测量,也可能是对位置差分得到(受量化和噪声影响)。

接口注意事项 :旋转关节的 effort 通常表示力矩,移动关节通常表示力;部分驱动不提供有效的 velocity 或 effort,使用前要检查数组长度和驱动文档;数组必须通过关节名称对应,不能假设不同节点中的数组顺序永远一致

核心结论:"关节状态正确"通常只能说明控制接口内部自洽。要验证机械臂的绝对定位能力,还需要外部视觉、测量治具或高精度跟踪设备。类似地,夹爪电机电流上升可能表示抓住了物体,也可能表示夹爪卡住------单一信号不能作为任务结论。

面试问题:力/触觉传感器在抓取任务中起什么作用?如何可靠判断"抓住了物体"?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

分工原则:视觉适合接触前定位,力觉和触觉适合接触后的闭环调整与成功判断。

  • 六维力/力矩传感器:输出三轴力+三轴力矩(wrench),通常安装在腕部或工具接口,测量工具与环境的整体作用力;
  • 触觉传感器:测量局部压力、接触位置、形变和滑动,指尖和夹爪触觉更接近局部接触。

关键参数与权衡:六维力------力量程、力矩量程、分辨率、采样频率、零点漂移、过载能力和安装坐标系;触觉------压力范围、触觉单元(taxel)密度、覆盖面积、采样频率、响应延迟和安装预紧力。量程过小会在碰撞或快速插入时饱和,量程过大牺牲小力分辨率;触觉密度很高但延迟过大时,可能在检测到滑动之前物体已经掉落。

为什么单一阈值不可靠 :夹爪力增大可能表示抓住物体,也可能是两个指尖互相碰到或夹爪卡住 ;压力分布稳定但物体正在缓慢滑动时,单帧触觉图像也可能误判成功。可靠判断需要组合:夹爪开度、驱动电流、压力分布变化、视觉跟踪和抬升后的物体运动。接触测量还会受工具重力、安装预紧力、材料老化、线缆弯折、温漂和表面污染影响。

典型应用------插头插入插座:视觉把插头移动到插孔附近,但毫米级位置和角度误差仍可能使插头顶在面板上,继续执行预设轨迹会快速增大接触力。更合理的策略:视觉负责粗定位 → 接触后切换低速柔顺控制 → 利用横向力判断偏差方向 → 小范围搜索找到插孔 → 根据轴向力和插入深度判断成功。

使用前置条件:空载置零、工具质量和重心补偿,确认传感器坐标系、力/力矩单位、过载保护和滤波参数。标定验证:不同末端姿态下工具不接触环境时,重力补偿后输出应接近零;沿已知轴施加已知方向的力,确认符号、轴方向和量程正确。力传感器异常时必须优先停止接触动作,不能用提高阈值掩盖零漂或轴方向错误。

面试问题:2D 与 3D LiDAR 各适合什么任务?什么是 LiDAR 运动畸变?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐ (3/5)

原理 :LiDAR 发射激光并测量返回信号,输出传感器到物体的距离。2D LiDAR 在一个平面内扫描(输出 LaserScan),3D LiDAR 在多个方向采样(输出点云)。

对比

  • 2D:结构简单、数据量小,适合平面导航和室内避障;但看不到扫描平面之外的台阶、悬空桌面和伸出障碍物
  • 3D:能观察立体结构,适合复杂环境和大范围感知、三维建图与定位;数据量、算力和标定复杂度更高。

运动畸变 :旋转式 LiDAR 一帧点云不是同一时刻采集的,机器人运动时不同采样时刻的点会落入错误空间位置,需要结合 IMU 或里程计做运动补偿(利用每点时间)。缺少每点时间和运动补偿时,即使静态外参正确,运动场景中的点云仍会错位。

其他注意事项 :雨雾、玻璃、黑色吸光材料、多径反射和动态物体都会影响测量;点云更稠密不等于结果更准确 ------时间补偿或 LiDAR 到 base_link 的外参错误时,稠密点云也可能形成错误地图。

关键参数 :测距范围和近距盲区、测距精度和重复性(分别反映系统偏差与多次测量波动)、角分辨率和视场角、扫描频率和每秒点数、线数/垂直分辨率/回波数量(3D)、反射强度(可辅助区分材质)和每点时间(用于去畸变)、时间同步和外参(设备时钟、lidar→base_link 变换、是否支持硬件触发)。

选型原则:先写清机器人实际包络、障碍物高度、工作距离、运动速度和允许延迟,不能只保证激光扫描平面本身不碰撞。

面试问题:如何为一个机器人任务做传感器选型?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

核心方法:先写"任务失败条件",再反推观测需求选传感器------这比先购买设备再寻找用途更符合工程实践。

例:目标是把随机摆放的纸盒放入周转箱。失败条件包括看不到纸盒、三维位置误差过大、抓取后滑落、箱内空间不足。由此推导:RGB 提供目标语义,Depth 提供三维位置,编码器提供机械臂状态,夹爪电流或触觉确认是否抓住;现场存在透明包装时,还要准备基于桌面平面、双视角或固定抓取高度的降级方案。最终选型文档还应写明"哪些状态当前无法观测",因为不可观测状态往往就是系统部署后的主要风险。

典型任务选型表

任务 主传感器 辅助传感器 重点参数 主要失效 降级方案
桌面抓取 RGB-D 编码器、夹爪电流/触觉 近距深度、对齐、外参 透明反光、遮挡 mask 邻域深度、顶部抓取、重感知
精密插接 RGB/深度 六维力、触觉 外参、力分辨率、延迟 孔位偏差、卡滞 视觉粗定位 + 力控搜索
室内导航 2D/3D LiDAR IMU、轮速、RGB 扫频、视场、同步 玻璃、动态障碍 多模态融合、减速停车
人形行走 编码器、IMU 足底力、深度/LiDAR 高频率、低延迟、饱和 冲击、漂移、遮挡 本体状态闭环、安全姿态
人机交互 RGB、麦克风 深度、阵列麦克风 动态范围、音频延迟 逆光、噪声、遮挡 多模态确认、保守动作
移动操作 LiDAR/RGB-D IMU、轮速、关节编码器 全局外参、统一时钟 底盘运动造成错位 时空标定、运动补偿

通用原则:选型从任务的空间范围、精度、速度、材质、光照、安全和预算约束出发,而不是从设备型号出发。视觉选型先写清工作距离、目标尺寸、运动速度、材质、光照、允许延迟和容错范围,再决定单目 RGB、双目、结构光、ToF 还是组合。

面试问题:为什么原始传感器数据不能直接用于控制机器人?进入控制回路前要检查什么?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

原始数据与控制器目标之间的差距

  1. RGB 图像只有像素,没有真实距离------检测框只说明目标在图像哪个区域,不能直接给出基座坐标系下的位置;
  2. 深度值需结合内参才能变三维点 ------单独深度只给距离,还需像素坐标和 f x , f y , c x , c y f_x, f_y, c_x, c_y fx,fy,cx,cy 完成反投影;
  3. 点云通常仍在相机或雷达坐标系 ------规划器需要 base_link/map 等任务坐标系中的目标,必须用外参和 TF 转换;
  4. 数据可能有噪声、延迟、缺失和单位错误------单像素深度可能是空洞、图像可能过期、毫米可能被误当米;
  5. 控制器需要结构化任务信息------目标位姿、关节位置、速度、力或轨迹,而不是一整张图像或未筛选的点云。

每条数据都需要上下文 :时间戳(回答"测量发生在何时",不要用回调中的 now() 替代采集时间,否则高速运动时位置错位);frame_id(回答"数据在哪个坐标系表达",没有 frame 的三维点不能安全交给规划);可信程度和有效状态(轮速在光滑地面急加速时可能打滑、视觉定位在白墙前可能失效);单位、编码、有效范围和无效值(深度 16UC1 常以毫米或设备刻度存储,32FC1 以米存储,要结合驱动说明和 depth scale 解释)。

进入控制器前的五项检查 :数据是否有效、时间是否新鲜、单位是否统一、坐标系是否明确、目标是否满足任务与安全约束。任意一项不满足,都应停止执行、记录原因并触发重新感知或降级策略------对真实机器人,拒绝一条不完整或过期的目标,通常比"尽量执行"更安全。链路上任何一步失败都不应继续向下执行:深度无效→重新感知;TF 在图像时间戳处不可用→等待或丢弃该帧;目标超出工作空间→拒绝规划,而不是截断数值强行运动。

可复现性要求:一次可复现实验至少记录 rosbag2 原始数据、相机内参 YAML、静态和动态 TF、软件版本/参数/启动命令、图像分辨率/帧率/曝光/深度尺度、URDF/关节零位/末端工具配置、标定时间和验证误差。仅保存最终截图无法重现感知问题。

面试问题:多传感器融合需要哪些对齐?时间不同步会带来什么后果?

难度评分:⭐⭐⭐⭐ (4/5) | 考察频率:⭐⭐⭐⭐ (4/5)

为什么融合 :单一传感器只观察世界的一部分------相机有纹理语义但受光照影响;LiDAR 有几何但语义弱;IMU 高频但漂移;编码器稳定但看不到外部打滑;力觉只在接触后产生信号。融合的目标不是简单拼接数据,而是在统一的时间和坐标系下,利用互补性得到更稳定的状态估计

三种对齐

  1. 时间对齐:必须区分采集时刻(物理测量真正发生)、发布时间(驱动发布消息)、到达时刻(订阅节点收到)、处理完成时刻(算法输出)。同步方式:硬件触发(多设备共享触发信号)、PTP(IEEE 1588,网络设备间高精度同步)、NTP(一般计算机时钟同步,精度受网络延迟影响)、软件匹配(ExactTime / ApproximateTime)、插值(把高频 IMU/JointState 插值到图像或 LiDAR 时刻)。
  2. 空间对齐 :已知外参 T_base_cameraT_base_lidarT_base_imuT_wrist_ft 等。外参既包括平移也包括旋转------只测安装位置忽略姿态、或把 T_A_B 当成 T_B_A,都会造成明显错误。
  3. 语义对齐:写清每种传感器负责回答什么问题------RGB"是什么、外观如何"、depth"离传感器多远"、LiDAR"环境结构和障碍物在哪里"、force/torque"是否接触、受力多大"、tactile"夹住后是否稳定"、IMU/编码器"机器人如何移动、当前状态"。

时间不同步的定量后果 :移动机器人以 0.5 m/s 横向运动,RGB 和 Depth 时间相差 80 ms,仅时间差产生的空间错位约 Δ x = 0.5 × 0.08 = 0.04 \Delta x = 0.5 \times 0.08 = 0.04 Δx=0.5×0.08=0.04 m 即 4 cm。静态拍摄标定板很难发现,但在动态障碍、视觉伺服或移动抓取中会直接破坏几何一致性。

三个深入点

  1. "频率相同"≠"时刻相同":两路相机都标称 30 FPS 不保证同时曝光,可能有固定相位差甚至时钟速率漂移。严格的多相机三维重建或高速操作应优先硬件触发;软件近似同步适合无法硬同步且运动速度较低的场景。
  2. 200 Hz IMU 和 30 Hz 图像,不应简单取离图像最近的一条 IMU------视觉惯性系统通常需要图像间隔内整段 IMU 测量进行积分。
  3. 融合不是把三个有问题的传感器自动变成一个正确结果:轮速和视觉来自同一里程计源却被当独立观测重复融合,滤波器会高估信息量;IMU 外参方向错误,融合器会稳定地得到错误姿态;全局定位跳变直接用于要求连续的底层控制,机器人可能突然产生大速度指令。对齐错误不会因加入更多传感器自动消失,反而可能形成"更稳定但错误"的结果。

常见融合组合:RGB+Depth(语义+三维距离→目标点云)、Camera+IMU(环境参考+高频运动→连续位姿)、LiDAR+IMU(环境几何+高频运动→去畸变点云、连续位姿)、轮速+IMU(平面位移+姿态→连续 odom)、Camera+LiDAR(语义+远距准确几何→三维检测和语义地图)、视觉+力/触觉(接触前观察+接触后反馈→抓取/插接成功状态)。融合输出仍要说明时间、frame、有效状态和可信程度。

11.相机模型、坐标系与标定

面试问题:写出针孔相机模型的投影与反投影公式,内参矩阵各元素的含义是什么?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐⭐ (5/5)

内参矩阵

K = f x 0 c x 0 f y c y 0 0 1 K = \begin{bmatrix} f_x & 0 & c_x\\ 0 & f_y & c_y\\ 0 & 0 & 1 \end{bmatrix} K= fx000fy0cxcy1

  • f x , f y f_x, f_y fx,fy:x/y 方向以像素为单位的焦距(已结合传感器像元尺寸和图像采样,不是毫米焦距);
  • c x , c y c_x, c_y cx,cy:主点的横向/纵向像素坐标;
  • 另有畸变参数描述真实镜头偏离理想针孔模型的程度。

投影 (相机坐标系三维点 → 像素):设 P c = X , Y , Z T P_c = X, Y, Z^T Pc=X,Y,ZT,先做透视除法 x = X / Z , y = Y / Z x = X/Z,\ y = Y/Z x=X/Z, y=Y/Z,再乘内参:

u v 1 = K x y 1 \begin{bmatrix}u\\v\\1\end{bmatrix} = K \begin{bmatrix}x\\y\\1\end{bmatrix} uv1 =K xy1

反投影 (像素 + 深度 → 相机坐标系三维点):对已去畸变或与内参匹配的像素 ( u , v ) (u,v) (u,v),若深度 Z Z Z 表示相机 z 轴方向深度:

X = ( u − c x ) Z f x , Y = ( v − c y ) Z f y , P c = X , Y , Z T X = \frac{(u-c_x)Z}{f_x}, \qquad Y = \frac{(v-c_y)Z}{f_y}, \qquad P_c = X,Y,Z^T X=fx(u−cx)Z,Y=fy(v−cy)Z,Pc=X,Y,ZT

三个工程要点

  1. 内参与图像分辨率绑定 :图像缩放、裁剪或更换相机 stream 后,必须读取匹配当前图像的 CameraInfo,不能复用旧分辨率参数。更换输出分辨率时物理镜头没变,但像素坐标尺度改变, f x , f y , c x , c y f_x, f_y, c_x, c_y fx,fy,cx,cy 要相应缩放或重新读取。
  2. "匹配"要具体到图像流 :depth 已重投影到彩色图时,用对齐后彩色图对应的有效内参;用原始 depth 图时,用深度相机自己的内参。不能用彩色图的 ( u , v ) (u,v) (u,v) 直接索引未对齐的深度图,也不能把 raw 图的 K 与 rectified 像素混用。
  3. raw 与 rectified 区分:raw image 带镜头畸变,结合 K 和畸变参数 D 使用;rectified image 已校正,使用投影矩阵 P 中的有效焦距和主点。不能对已校正像素重复去畸变。

图像坐标系陷阱 :像素 ( u , v ) (u,v) (u,v) 中 u 向右增大、v 向下增大,原点在左上角;访问数组常写 image[v,u](行、列顺序),与数学表达 ( u , v ) (u,v) (u,v) 相反,是常见错误来源。

算例 : 640 × 480 640\times480 640×480 图像, f x = f y = 600 f_x=f_y=600 fx=fy=600、 c x = 320 c_x=320 cx=320、 c y = 240 c_y=240 cy=240。像素 ( 420 , 240 ) (420,240) (420,240) 比主点向右 100 px,深度 0.6 m 时相机 x 方向位置 X = ( 420 − 320 ) × 0.6 / 600 = 0.1 X = (420-320)\times0.6/600 = 0.1 X=(420−320)×0.6/600=0.1 m,即光轴右侧约 10 cm。

面试问题:如何鲁棒地读取目标像素的深度?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐ (3/5)

不要直接相信单个像素------检测框中心可能落在空洞、背景或反光区域。使用前必须明确:

  1. depth 的单位是米、毫米还是设备定义的 depth unit(如 uint16 深度图常以毫米存储,必须转换为米);
  2. 0、NaN 或 Inf 是否表示无效深度;
  3. depth 表示沿相机 z 轴的轴向深度 还是沿像素视线的距离(查设备和驱动定义);
  4. RGB 与 depth 是否已完成空间对齐和时间同步(未对齐就按相同 (u,v) 读深度,目标边缘尤其容易读到背景);
  5. 透明、反光、黑色或强吸光物体会产生空洞和飞点。

推荐的鲁棒读取顺序

  1. 在目标 mask 内采样(而不是只取中心点);
  2. 剔除 0、NaN、Inf 和范围外深度;
  3. 使用中位数或截断均值;
  4. 对局部点云做离群点过滤;
  5. 必要时拟合局部平面或选择可见表面点;
  6. 无有效深度时返回失败,而不是输出零坐标------零坐标会变成一个"数学上合法、物理上错误"的目标继续向下传播。

面试问题:如何把相机坐标系下的三维点转换到机器人基座坐标系?写出齐次变换。

难度评分:⭐⭐⭐⭐ (4/5) | 考察频率:⭐⭐⭐⭐⭐ (5/5)

齐次变换 :刚体变换由旋转 R 和平移 t 组成,点使用齐次坐标 X , Y , Z , 1 T X,Y,Z,1^T X,Y,Z,1T:

T A _ B = R A _ B t A _ B 0 1 , p ˉ A = T A _ B   p ˉ B , T A _ C = T A _ B   T B _ C T_{\mathrm{A\B}} = \begin{bmatrix} R{\mathrm{A\B}} & t{\mathrm{A\B}}\\ 0 & 1 \end{bmatrix}, \qquad \bar p_A = T{\mathrm{A\B}}\,\bar p_B, \qquad T{\mathrm{A\C}} = T{\mathrm{A\B}}\,T{\mathrm{B\_C}} TA_B=RA_B0tA_B1,pˉA=TA_BpˉB,TA_C=TA_BTB_C

记号约定 : T A _ B T_{\mathrm{A\_B}} TA_B 把 B frame 中的量转换到 A frame。逆变换:

T B _ A = R T − R T t 0 1 T_{\mathrm{B\_A}} = \begin{bmatrix} R^T & -R^T t\\ 0 & 1 \end{bmatrix} TB_A=RT0−RTt1

转换公式 : p ˉ b a s e = T b a s e _ c a m e r a   p ˉ c a m e r a \bar p_{\mathrm{base}} = T_{\mathrm{base\camera}}\,\bar p{\mathrm{camera}} pˉbase=Tbase_camerapˉcamera。

算例 (ROS 常见轴向约定:相机光学系 x 右、y 下、z 前;base_link x 前、y 左、z 上;忽略相机倾角):

R b a s e _ o p t i c a l = 0 0 1 − 1 0 0 0 − 1 0 R_{\mathrm{base\_optical}} = \begin{bmatrix} 0 & 0 & 1\\ -1 & 0 & 0\\ 0 & -1 & 0 \end{bmatrix} Rbase_optical= 0−1000−1100

相机光心位于 base 前方 0.20 m、左侧 0.05 m、上方 0.40 m,测得 p c a m e r a = 0.10 , − 0.02 , 0.60 T p_{\mathrm{camera}} = 0.10, -0.02, 0.60^T pcamera=0.10,−0.02,0.60T m,则 p b a s e = R   p c a m e r a + t = 0.80 , − 0.05 , 0.42 T p_{\mathrm{base}} = R\,p_{\mathrm{camera}} + t = 0.80, -0.05, 0.42^T pbase=Rpcamera+t=0.80,−0.05,0.42T m------目标位于 base 前方 0.80 m、右侧 0.05 m(y 为负即右侧)、上方 0.42 m。

常见错误清单(面试高频):

  1. T_camera_base 当成 T_base_camera------结果不报错,而是生成一个数学上合法、物理上错误的目标点;
  2. 行向量代码套用列向量公式;
  3. 齐次坐标最后一维写错;
  4. 平移用毫米、点坐标用米(单位混用);
  5. camera_link 外参处理 optical frame 数据(少乘一段固定旋转);
  6. 图像和 TF 不是同一时刻;
  7. 矩阵相乘顺序交换(不可交换)。

调试技巧 :从一个已知方向开始------相机正前方放置目标,理论上 point_camera 应接近 0 , 0 , Z 0,0,Z 0,0,Z;转换到 base 后点应落在机器人前方,而不是地下、背后或远高于相机。一个直观的已知点测试往往比打印整块矩阵更容易发现方向错误。若转换后所有目标的 base z 坐标都随相机深度大幅增长,优先怀疑 optical frame 旋转没有包含在变换中。真实安装还可能含俯仰、偏航和滚转,不能只套用固定轴变换。

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

区别来自使用目的

  • camera_link:方便在 URDF 中描述相机外壳如何安装,通常遵循机体轴向约定(x 前、y 左、z 上);
  • camera_optical_frame:遵循图像几何约定------z 沿镜头向前、x 向图像右方、y 向图像下方。图像投影和深度反投影基于 optical frame。

驱动通常通过一条固定 TF(绕 x 轴 -90°、绕 z 轴 -90° 的组合旋转)把两者连接起来。

混用的后果 :深度反投影得到的是 optical frame 点,若直接套用 T_base_camera_link,会少乘这段固定旋转。数值仍是三个浮点数,程序通常不会报错,但空间方向完全错误------这是"每个模块看起来都对、组合结果却错"的典型系统层问题。

工程规范

  1. 代码应尽量读取消息自己的 header.frame_id,让 TF2 查找完整变换链,而不是把源 frame 名称硬编码为开发者猜测的 frame;
  2. ROS 坐标系约定由 REP-103 规定:SI 单位 + 右手坐标系;机体坐标 x 前、y 左、z 上;相机光学坐标 z 前、x 右、y 下------两者都是右手系,但轴的用途不同;
  3. 检查方法:在 RViz 中同时显示 camera、base 坐标轴和目标点,确认轴方向符合约定。

面试问题:从感知得到的三维点到机械臂可执行目标位姿,需要经过哪些步骤?

难度评分:⭐⭐⭐⭐ (4/5) | 考察频率:⭐⭐⭐⭐ (4/5)

坐标转换得到的 point_base 只回答"目标点在哪里",还不能直接作为机械臂指令------末端需要完整位姿:位置决定到哪里,旋转决定夹爪以什么方向接近。完整目标通常写成 target_pose_base = [x, y, z, qx, qy, qz, qw](前三项为 base_link 下位置、后四项为单位四元数)。

五步流程

  1. 确定任务点 :反投影点可能位于物体表面、检测框中心或点击位置,不一定是末端最终到达位置。通常加安全偏移 p p r e = p b a s e + Δ p s a f e p_{\mathrm{pre}} = p_{\mathrm{base}} + \Delta p_{\mathrm{safe}} ppre=pbase+Δpsafe(如目标上方 5 cm);抓取任务还要根据夹爪长度、目标尺寸和抓取点位置计算 TCP,而不是让末端坐标系原点直接落到物体表面。
  2. 生成末端姿态 :可来自任务固定方向(桌面到达用"夹爪朝下")、物体位姿、表面法向或抓取算法。注意:表面法向只能确定一个接近轴,还要指定夹爪在表面切平面内的方向 ,才能得到完整旋转。位置与旋转组合成 T b a s e _ t a r g e t T_{\mathrm{base\_target}} Tbase_target,再将旋转矩阵转换为控制接口要求的四元数。
  3. 检查感知结果:深度是否有效、时间戳是否过期、frame_id 是否正确、单位是否为米、目标点是否仍对应当前场景。任何一项失效都重新感知,不继续使用旧目标。
  4. 检查机器人能否到达:运动规划求解 IK,检查工作空间、关节限位、自碰撞、环境碰撞和末端工具尺寸。三维点在机械臂附近 ≠ 带指定姿态的末端可达;位置可达但姿态不可达时,需更换接近方向或安全偏移。
  5. 生成并执行运动:规划通常不是直接冲向目标点,而是生成"当前位姿 → 预目标位姿 → 任务位姿 → 撤离位姿"的轨迹,加入速度、加速度和力限制;首次运行默认只可视化,安全检查全部通过后再低速执行。

接口契约示例 (把隐含假设变成可测试条件):target_pose_base 不能只约定"七个数",还要明确单位米、四元数顺序 x,y,z,w、坐标系 base_link、时间戳对应哪一帧图像、多久算过期(如 max_age_ms: 150)、有效工作空间范围、以及无效时的行为(on_invalid: stop_and_request_reperception)。控制器收到目标后先检查 frame、时间、单位、工作空间和碰撞约束,而不是默认上游永远正确。

面试问题:相机内参标定、外参标定和手眼标定分别解决什么问题?如何验证标定质量?

难度评分:⭐⭐⭐⭐ (4/5) | 考察频率:⭐⭐⭐⭐ (4/5)

标定的本质 :不是"生成一个 YAML 文件",而是估计测量模型参数,并证明这些参数在任务范围内可信

标定类型 主要输出 解决的问题
相机内参 f x , f y , c x , c y f_x, f_y, c_x, c_y fx,fy,cx,cy、畸变系数 D 像素如何对应光线
双目/RGB-depth 两相机间外参、校正参数 左右图或 RGB-depth 如何对齐
相机外参 T_base_camera 相机三维点如何进入机器人坐标系
手眼标定 camera、tool、base 之间的变换 相机与机械臂运动链如何关联
Camera-IMU 空间外参和时间偏移 视觉与惯性如何联合估计
LiDAR 外参 lidar-camera/IMU/base 变换 点云如何对齐和去畸变
力传感器 零点、重力、质心、轴方向 wrench 如何对应真实接触

内参标定要点 :标定物用棋盘格、ChArUco 或 AprilGrid;采集要覆盖图像中心和四角、近中远多个距离、不同俯仰/偏航/滚转角、实际工作分辨率和对焦状态。不要只在画面中心平移标定板 ------缺少姿态和视场覆盖会使参数欠约束,重投影误差看起来不高但边缘和工作距离表现差。要看每张图的重投影残差而不只总体均值;用未参与求解的图像做校正检查;在真实工作距离放已知尺寸目标验证三维结果。不断增加畸变参数能降低训练图像误差却使独立图像边缘变差,就是过拟合------标定目标是可泛化的成像模型,不是让求解报告中的单一数字最小

外参标定要点 :描述相机相对机器人 base/末端或其他参考系的位置和方向。T_base_camera(camera→base)与 T_camera_base(base→camera)不能只凭文件名猜方向。求解后应在工作空间多个位置验证,而不是只在标定板原位置看误差。

手眼标定要点 :Eye-to-hand = 相机固定在机器人外部;Eye-in-hand = 相机装在末端。经典形式 A X = X B AX = XB AX=XB:A 来自机器人两次采样间的相对运动,B 来自标定目标在相机观测中的相对运动,X 是待求固定变换------这是关系形式 ,不是可以脱离 frame 直接代入的固定矩阵命名,X 具体是 T_gripper_camera 还是其逆取决于配置和求解器接口;使用工具前先写出每个矩阵的 source/target frame。采样必须包含足够多、足够不同的旋转和平移:所有姿态都正对标定板、只在小范围平移,某些旋转参数会欠约束(病态);姿态变化过大导致标定板离开视场或严重倾斜,又降低角点质量。验证与求解分离:如用 20 组姿态求解,再选 5 个未参与求解的位置做测试;测试误差明显大于训练误差时,检查采样覆盖、机械臂重复定位、内参和安装刚度,而不是重跑同一组数据。

标定质量报告指标 :使用了多少帧、覆盖哪些距离和角度;重投影误差的均值、分布和边缘表现;独立验证集上的三维位置误差;工作空间多点的平均、95% 分位和最大误差;标定日期、设备序列号、安装状态和软件版本;重新标定的触发条件。标定文件生成不代表标定完成------支架松动、相机重新对焦、分辨率变化、末端工具更换和机械碰撞都可能使旧标定失效。

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

REP-103 约定 :ROS 使用 SI 单位和右手坐标系。机器人机体坐标(base_link)通常 x 向前、y 向左、z 向上;相机光学坐标(camera_optical_frame)通常 z 向前、x 向右、y 向下。两者都是右手系,但轴用途不同。

常见坐标系职责

坐标系 主要用途 注意事项
world 仿真或项目定义的固定参考 含义由具体平台定义,不一定等于 map
map 全局定位和任务规划 全局一致性取决于地图与定位算法,重定位或闭环优化时可能跳变
odom 连续局部运动和底层控制 连续但会长期漂移
base_link 机器人本体参考 x 前 y 左 z 上
arm_base 机械臂运动学链根节点 移动操作机器人中可能不等于 base_link
tool0/ee_link 末端工具和抓取位姿 换工具后需更新 TCP/外参
camera_link / camera_optical_frame 安装关系 / 图像几何 二者不等同

REP-105 典型链路map → odom → base_link → sensors。用走廊行驶的例子理解:轮速和 IMU 积分产生 odom→base_link,轨迹短时间连续,即使缓慢漂移也适合速度控制;定位系统根据地图识别到已知位置后修正 map→odom------这个修正可能使机器人在 map 中的位置瞬间变化,但不会破坏 odom 中连续的局部运动 。因此局部控制依赖连续的 odom,不能直接把 map 跳变引入底层控制(否则机器人可能突然产生大速度指令)。

为什么必须这样组织 :如果定位节点直接发布 map→base_link、底盘里程计又发布 odom→base_link,TF 树会出现同一 child 多个父节点或重复发布关系。正确的树不仅是命名规范,也是不同时间尺度估计之间的系统接口------高频连续估计(odom)与低频全局修正(map)各走各的边。

面试问题:旋转有哪些表示方式?各自的优缺点是什么?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

表示 优点 缺点
平移向量 简单 只表达位置,不表达朝向
旋转矩阵(3×3) 无奇异、便于组合变换 9 个数、有正交约束(冗余参数)
欧拉角 直观、3 个数 旋转顺序易混淆、存在万向节锁(奇异)
四元数 紧凑(4 个数)、适合插值 必须归一化; q q q 与 − q -q −q 表示同一旋转
轴角/小旋转向量 紧凑,适合增量表示 大角度或奇异区域不能把近似增量错误解释为全局姿态
齐次变换矩阵(4×4) 统一表达旋转和平移,适合坐标链组合 参数量最大

工程要点

  1. 不同姿态表示有不同的参数约束和数值特性,接口中必须固定约定,不能在同一数据链路中混用
  2. ROS geometry_msgs/Quaternion 字段顺序是 x, y, z, w,而部分数学库使用 w, x, y, z------跨库转换必须显式检查(高频翻车点);
  3. 点的变换同时受旋转和平移影响 p ˉ A = T A _ B p ˉ B \bar p_A = T_{\mathrm{A\B}} \bar p_B pˉA=TA_BpˉB;方向向量只表示方向,不应叠加平移 v A = R A _ B v B v_A = R{\mathrm{A\B}} v_B vA=RA_BvB;位姿通过变换链组合 T b a s e _ o b j e c t = T b a s e _ c a m e r a T c a m e r a _ o b j e c t T{\mathrm{base\object}} = T{\mathrm{base\camera}} T{\mathrm{camera\_object}} Tbase_object=Tbase_cameraTcamera_object,矩阵相乘顺序不能交换;
  4. 已知反方向变换时必须先求逆;
  5. 四元数在消息中应确认已归一化、旋转矩阵应确认正交------检查合法性是接口验证的一部分。

面试问题:TF2 解决什么问题?查询 TF 时为什么必须使用消息采集时间戳?

难度评分:⭐⭐⭐ (3/5) | 考察频率:⭐⭐⭐⭐ (4/5)

TF2 的职责 :维护一棵随时间变化的坐标变换树,提供静态和动态变换广播、一段时间历史的 transform buffer、任意连通 frame 间的变换查询、在指定测量时刻转换 Point/Pose/Vector 等带 frame 数据------让感知、规划和控制模块使用统一的空间表达。

树结构规则 :每条边包含 parent frame、child frame、平移、旋转和时间戳;固定安装关系用 static transform 发布到 /tf_static,随关节或机器人运动变化的关系用 dynamic transform 发布到 /tf;broadcaster 负责发布,listener 和 buffer 负责缓存查询。一棵合法 TF 树中每个 child frame 只能有一个直接 parent;树断裂、重复父节点或同一关系被多个节点发布时,查询会失败或产生跳变。

为什么必须用采集时间戳:感知数据必须使用它的采集时间查询 TF:

python 复制代码
transform = tf_buffer.lookup_transform(
    "base_link",           # target frame
    msg.header.frame_id,   # source frame
    msg.header.stamp,      # 采集时刻,不是 now()
)

查询"最新 TF"可能暂时绕过报错,但机器人运动时会把不同时刻的数据错误组合------典型现象正是"静态目标定位正确,机器人运动后误差快速增大"。

查询失败的正确处理 :TF 查询失败不一定是树永久断裂,也可能是数据到达顺序造成的(图像先到、对应时刻的关节状态和动态 TF 稍后才进 buffer,立即查询产生 extrapolation 错误)。合理做法是使用 TF message filter、短暂等待或按时间组织回调------而不是把时间改成零值查询最新变换。同时也不能无限等待:控制系统必须设定最大可接受延迟,超期后这条感知结果已过期,应记录原因并请求重新感知,而不是等 TF 到达后执行一个旧目标。

常见 TF 链路 :移动机器人 map → odom → base_link → lidar;机械臂视觉抓取 base → camera → object;Eye-in-hand base → end_effector → camera → object;移动操作 map → odom → base → arm_base → end_effector → camera → object。(箭头表示树中父子连接顺序,不表示矩阵一定按箭头方向相乘;实际转换方向由 source/target frame 和 T A _ B T_{\mathrm{A\_B}} TA_B 约定决定。)

排错工具与顺序tf2_echo 检查指定 frame 对;view_frames 检查整棵树和更新时间;RViz TF 显示检查轴方向;ros2 topic hz/delay 检查频率和延迟;静态已知点验证变换方向。固定顺序:先核对 frame 拼写和唯一父节点 → 检查变换是否覆盖消息时间戳 → RViz 中检查轴方向和四元数 → 已知静态点验证完整变换链,避免同时修改多个 broadcaster 或外参文件。

面试问题:机器人"抓不准"时,如何系统地排查感知误差?

难度评分:⭐⭐⭐⭐ (4/5) | 考察频率:⭐⭐⭐⭐⭐ (5/5)

误差传递链:图像和检测误差 → 深度误差 → 反投影误差 → 时间不同步误差 → 外参和 TF 误差 → target_pose 误差 → 运动学与机械误差 → 抓偏、抓空、碰撞或损坏物体。上游测量、同步和坐标误差会逐层传播为最终执行失败。

先区分误差性质 :随机噪声(多次测量围绕真值波动)、系统偏差(长期偏向某方向)、量化误差、漂移(偏差随时间温度变化)、延迟(数据描述过去状态)、离群值、缺失值------处理方法各不相同:低通滤波可减小随机噪声,但不能修复错误外参,过强滤波还增加延迟;单位错误产生数量级异常(600 mm 当成 600 m),与 RGB-depth 未对齐产生的边界方向性偏差是两类问题。

逐层冻结排错法

  1. 冻结机器人,只检查原始图像和深度;
  2. 固定目标,只检查相机坐标系三维点;
  3. 固定外参,只检查 base 坐标系目标点;
  4. 只做 RViz/Open3D 可视化,不发送动作;
  5. 低速移动到安全预目标点;
  6. 最后才加入抓取、碰撞和反馈逻辑。

如果一开始就运行完整抓取,视觉、TF、规划和控制错误会混在一起,难以定位。

三个典型现象与定位

  1. 目标点在相机点云中正确,转换到 base 后整体偏移固定距离 → 指向外参平移、单位或工具安装变化。在多个位置比较偏差,若方向和大小基本固定,不要优先调整检测模型。
  2. 静态目标正确,机器人一运动目标就漂移 → 指向时间同步、动态 TF 时间戳或机械臂状态延迟。记录图像 stamp、TF stamp 和关节状态 stamp,检查运动速度越高误差是否越大。
  3. 工作空间中心准确,越靠边缘误差越大 → 可能来自镜头畸变未正确处理、内参分辨率不匹配、标定姿态覆盖不足或外参旋转误差。只用中心点重新计算固定偏移无法解决。

定量误差预算表(每层独立验证):

层级 示例指标 验证方法
图像 清晰度、曝光、检测中心偏差 固定场景重复采集
深度 中位误差、标准差、空洞率 已知距离平面/标定板
内参 重投影误差、边缘残差 独立标定图像
外参 三维点误差、旋转误差 多位置已知目标
时间 消息时间差、端到端延迟 运动目标/时间日志
TF 查询成功率、变换连续性 tf2 工具和 RViz
机器人 末端重复定位和绝对定位误差 测量治具/标记点
任务 成功率、最大误差、失败类型 多位置多次任务运行

原则 :排错的目标不是找到一组"能让这次抓取成功"的补偿量,而是找到误差所在层,并使修复能推广到整个工作空间 。复盘时从最早出现异常的一层开始记录证据(原始图像和深度、point_camerapoint_base、TF 查询结果、规划结果),每次只修改一个因素,再重新运行同一输入比较。评估感知系统用任务指标而不是只看算法指标:检测 mAP 很高不代表抓取点位置准确,深度平均误差很小不代表透明物体和目标边缘没有危险离群值------最终验收回答:输出是否在规定时间内到达、坐标是否正确、误差是否小于动作容错、失败时能否停止或降级。

相关推荐
周末程序猿3 小时前
技术总结|十分钟了解 Palantir 数据本体论
aigc
一航jason4 小时前
大模型“上车“评估参数列表
人工智能·ai·aigc·ai编程·ai-native
Dawson Zhu5 小时前
从“会回答“到“能执行“:AI Agent 的系统构成、运行机制与工程实践
人工智能·语言模型·架构·aigc·agi
粉色大象6 小时前
handdrawn‑architecture‑video:开源SVG架构图转手绘4K动画视频|本地AI Agent Skill
人工智能·ai·ai作画·系统架构·开源·aigc·音视频
VIP_CQCRE6 小时前
用 Ace Data Cloud 快速接入 Kling 视频生成 API:把 AI 视频能力接进你的产品
aigc·api·ai视频·kling·acedatacloud
leeyi6 小时前
Token 账单减下来:从路由到裁剪的五道闸门(第109篇)
aigc·agent·设计
Rocky Ding*15 小时前
一文读懂MiniCPM5-2B:端侧 Agent 的突破,不是“小模型打赢大模型”,而是训练系统开始开源
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·minicpm5-2b
技灵AI15 小时前
中秋礼盒电商内容生产 SOP:从素材整理到 AI 批量出片
人工智能·prompt·aigc·ai批量生成
全栈弄潮儿16 小时前
一条高质量编程 Prompt,应该包含什么?
aigc·openai·ai编程