鹤啸九天 自律更自由,平凡不平庸 Less is More

机器人控制

Notes(温馨提示):

  1. ★ 首次阅读建议浏览:导航指南, 或划到本页末尾, 或直接点击跳转, 查看全站导航图
  2. 右上角工具条搜索文章,右下角二维码关注微信公众号(鹤啸九天),底栏分享、赞赏、评论
  3. ★ 转载请注明文章来源,知识点积累起来不容易,水滴石穿,绳锯木断,谢谢理解
  4. ★ 如有疑问,邮件讨论,欢迎贡献优质资料


机器人控制

学习教程

站内专题

系统教程

Every-Embodied

  • GitHub every-embodied
  • 从0构建自己的具身智能机器人;从0逐步构建VLA/OpenVLA/SmolVLA/Pi0, 深入理解具身智能
  • 从仿真入门、Pi0 部署、LeRobot 遥操作,到视觉感知、无人机导航和 LIBERO 基准。

embodied-ai-learning-handbook 具身智能学习手册 - 覆盖VLA模型、遥操作、Sim2Real、强化学习等完整知识体系的系统性学习指南

  • 具身智能基础理论(机器人学、深度学习、多模态融合)
  • 核心算法(模仿学习、强化学习、视觉感知、轨迹规划)
  • 前沿技术(VLA 模型、Diffusion Policy、Sim2Real、世界模型)
  • 仿真环境实战(MuJoCo、Isaac Lab、PyBullet、Genesis)
  • 数据飞轮与遥操作(ALOHA、UMI、数据采集与增强)
  • 顶会论文精选(CVPR / AAAI / ICLR / NeurIPS 2023-2025)
  • 行业研究与产业报告(人形机器人、灵巧手、传感器)
  • 本地项目技术讨论精华(VLA 闭环落地、方向选择、会议记录)

具身智能高频面试题库

  • 覆盖具身智能算法岗的 8 个方向:通识基础、RL 算法、VLA / 模仿学习、世界模型 / Sim2Real、工程落地、腿足机器人运动控制 / 全身控制 / 遥操作、3D 感知 / SLAM / VLN / 零样本 ObjectNav / Embodied VLM、通用工程 coding 与系统设计。 主表题来自牛客、知乎、小红书、一亩三分地等公开面经,同义题合并后频次 ≥3 才入卷;近期趋势题用 补充 标签,不伪造频次。 每题答案经独立审查后发布。

行动控制

Microduck

2026年8月27日,美东时间的一个普通上午,AI开源社区 Hugging Face 联合其收购的法国机器人公司 Pollen Robotics,发布了一只售价399美元、高25厘米、不足800克的双足机器鸭——Microduck。开订6小时,订单额突破100万美元;24小时,累计超过260万美元,折合超过5000台,高峰期平均每4秒卖出一一台。官方随后发布公告,原话是“社区订了太多鸭子”,新订单发货排期4到6个月。

image

研发团队为:Pollen Robotics (法国),AI与软件生态:Hugging Face

image

制造商: 矽递科技 Seeed Studio(中国深圳)。

Microduck 搭载

  • 瑞芯微的RK3566(已经确认),芯片负责控制回路驱动全身的电机跟传感器。
  • 伺服电机: ROBOTIS XL330(售价23.9美金一个)*15PCS(根据供应链的消息),大概的材料清单贴图表格所示(没有实物拆解分析,根据现有的信息评估的清单)。

15个伺服电机要是按照官网报价,目前成本已经来到了358.5美金,整机卖399,仅电机零售成本就占整机的售价的90%,剩下10%要覆盖主控,传感器,电池,结构件,PCB,组装费用…..。还能卖399美金不亏钱。

批量采购成本+深圳制造把结构件跟组装成本都压到了极致,才能把一台能走,能蹲,有15个自由度的机器人,做到了中端家电的价钱。这种极致资源整合能力很难复制。

【2026-8-30】真正普及 Physical AI 的,可能不是人形机器人,而是一只机器鸭:Microduck。

Microduck 和大型人形机器人,代表的其实是 Physical AI 的两条路线。

大型人形机器人负责探索能力上限,Microduck 这种小型机器人,更适合把 Physical AI 带进开发者的日常实验环境。我反而很看好后者。

  • ① 更适合高频试错: Physical AI 最大的问题之一,就是算法最终要落到真实世界。行走、转向、摔倒起身、姿态切换,都需要在真机上不断训练、测试和调整。小型机器人天然更适合这种反复折腾。
  • ② 仿真之后,可以快速上真机:强化学习不是只在模拟器里跑 Demo,而是可以把策略真正部署到实体机器人上。对普通开发者来说,这一步非常重要。
  • ③ 桌面级设备更容易形成开发者生态:真正推动一项技术扩散的,未必是能力最强的设备,而是能进入实验室、学校、开发者桌面,被大量人持续使用和改造的平台。

Raspberry Pi、Arduino 当年真正重要的,也不是性能有多强,而是它们把硬件开发的门槛降到了足够多人可以参与。

Microduck 给我的感觉也有点类似。

百万人形机器人决定 Physical AI 最终能走多远,

Microduck 这种小机器人,可能决定有多少开发者真正开始参与 Physical AI。

Physical AI 真正普及的标志,可能不是街上出现多少台人形机器人,而是越来越多开发者的桌面上,开始出现一台可以随便训练、随便摔、随便改的机器人。

PS:Microduck 实际使用的是 RK3566 芯片

实现方法

【2026-9-10】MicroDuck:一只开源机器鸭,带你玩转双足机器人仿真开发(有教程)

技术路线

  1. ROS2 + RViz 路线(轻量方案)
    • 系统环境:Ubuntu 24.04 + ROS 2 Jazzy
    • 不需要 NVIDIA 独立显卡,无需安装 Isaac Sim
    • 适合:入门预览机器人 URDF 模型,查看完整机体结构,手动操控 14 个关节转动,熟悉机器人本体,零基础快速上手。
  2. Isaac Sim + Isaac Lab 路线(完整仿真训练方案)
    • 系统环境:Ubuntu 24.04 + NVIDIA 显卡
    • 推荐版本组合:Isaac Sim 6.0.1 搭配 Isaac Lab 3.0.0 beta2
    • 适合:物理仿真环境下完整模拟鸭子运动,训练强化学习运动策略,实现行走、翻滚、踢球等复杂动作,完成 “仿真训练→策略调试” 完整闭环。

Open Duck Mini

【2026-8-31】买不到 Microduck?考虑 Open Duck Mini 平替。

Microduck 的优势很明显:

  • 体积小、完成度高,买回来就能直接跑强化学习,比较适合想快速进入具身智能的人。

但问题也很现实:Microduck 并不是所有地区都方便购买。

这时候 Open Duck Mini 反而值得看。一台参考 Disney BDX Droid

桌面机器狗 OpenCat

【2026-9-3】X帖子

OpenCat

跑在 ESP32 上的开源机器人框架,手搓类似宇树机器狗的桌面机器人。

配套的 Petoi BiBoard 是一块基于 ESP32 的开发板,面向多关节机器人,板载 12 路舵机输出;支持无线连接、扩展接口和音频功能;还增加了语音指令模块以及对树莓派的支持。

这块板子搭配开源框架 OpenCat,很适合作为四足机器人的起点,以及面向编程与机器人教学和物联网机器人应用以及 AI 机器人服务和科研项目

AnyCar

【2024-9-24】CMU 推出 AnyCar 是一种基于 Transformer 的通用动力学模型,专为各种轮式机器人的敏捷控制设计

AnyCar 系统包括: 数据收集、模型训练、微调部署。

  • 数据收集阶段 使用 4 个模拟器的不同物理引擎模拟各种地形,以及具有不同尺寸和物理属性的车辆
  • 部署阶段再用现实世界数据微调模型,使得车辆在野外环境运行也能符合模拟预期。

实验中 AnyCar 在不同车辆和环境中展示出零样本泛化能力,最终模型与基于采样的 MPC 相结合,性能比专业模型高出 54%。

这些结果代表了构建敏捷轮式机器人控制基础模型的关键一步。

Symbiosis Robotics 机器人开卡丁车

【2026-8-19】共生知行 Symbiosis Robotics 2026年6月底才成立,创始人丁鹏翔是 95 后浙大&西湖大学博士。

公司甚至不造机器人本体,专门做机器人的“大脑”,第一个公开 Demo 就把宇树 G1 塞进卡丁车,用手打方向、脚踩油门,在赛道里完成连续驾驶。

现在很多人形机器人的思路还是“大脑+小脑”:上层 AI 看懂环境、决定干什么,再把动作目标交给下面的控制器执行。问题是,大脑想得再明白,最后身体未必做得出来。

多数全身系统仍采用模块化架构:System 1 理解任务并生成高层运动目标,System 0 根据当前身体状态追踪目标。

这种设计便于复用已有控制器,却在完整的 Perception-to-Control 执行链上引入了三个问题。

  • 第一,Motion Interface 不充分:System 1 将完整上下文压缩为 Zt 时,可能丢失与控制相关的任务信息。
  • 第二,分别训练、串联推理:System 1 与 System 0 由不同目标独立优化,却必须在部署时组成同一条执行链。
  • 第三,低层动作边界:真正可执行的动作仍被 frozen System 0 已学习的 control distribution 限制。

感知扩展让机器人更懂世界,但理解任务并不自动等于能够可靠行动。我们把智能模型的边界从生成需要被追踪的运动学目标,推进到生成由当前身体状态决定、能够直接执行的物理动作。

共生知行这套 DPC 直接把中间层砍了。直接感知控制

  • 视觉、语言、身体状态、动作历史和执行反馈一起输入,模型直接生成机器人关节和手部动作。
  • 于是开卡丁车这种任务,就变成了一次很变态的全身压力测试:眼睛判断弯道,手连续调整方向盘,脚控制油门,同时身体还得处理转弯和加减速产生的惯性。

一共统一了 15,010 小时具身训练数据,但真正的双足人形数据只有 545 小时,其余来自 6,781 小时人类第一视角、4,024 小时机械臂机器人和 3,660 小时轮式人形,再全部转换成宇树 G1 可以执行的关节轨迹。

如果这条路线最后跑通,机器人行业还会出现一个类似大模型时代的新层级:

  • 宇树们卖身体,另一批公司卖可以跨机器人迁移的基础大脑。

一家成立不到两个月的中国创业公司,已经开始赌这一层了。

ROBOTO_ORIGIN

【2026-8-28】RoboParty 团队开源 ROBOTO_ORIGIN(萝博头原型机),把所有东西都摊开给你了。

  • 1.25米高、34公斤重、23个自由度,能走能跑,最高速度约3米/秒。
  • GitHub roboto_origin

关键是真心手搓友好——结构图纸、电气方案、PCB设计、BOM清单、训练代码、ROS2部署、固件全开源,淘宝加嘉立创就能凑齐零件自己装。

仓库是各子模块的快照聚合,硬件、训练、部署、固件分在不同子仓库里,可以按方向挑着看。

机器人操控

多种方案

  • YOLO 目标识别➕深度测距➕RGB点云渲染系统
  • VLA 视觉理解
  • WMA 世界模型决策

相机引导机械臂修正位姿,分为两大类:

  • 2D/3D 眼在手上(Eye-in-Hand)相机装在机械臂末端,随臂运动。
    • IBVS(图像视觉伺服):直接用像素误差闭环,不用标定精准 3D;
    • PBVS(位置视觉伺服):视觉算出目标 3D 坐标,交给运动规划。
  • 眼在手外(Eye-to-Hand)
    • 相机固定桌面 / 吊顶,全局观测机械臂。
    • 配套视觉算法:手眼标定(Tsai、AX=XB 求解)、深度检测、AprilTag/ArUco 标记定位、YOLO 物体检测 + 点云分割抓取

YOLO

YOLO 目标识别➕深度测距➕RGB点云渲染系统,示例

比如,基于 Intel RealSense D435i 双目深度摄像头 + YOLO 深度学习目标检测 + ROS2 数据通信 + PyQt 可视化界面 的智能视觉感知系统。

  • 系统能够实时采集 D435i 的 RGB 图像深度图像点云数据
  • 并通过 YOLO 模型完成目标识别,同时计算目标的像素坐标、中心点深度信息,实现目标检测深度测距三维感知可视化展示。

技术实现

  1. 系统使用 Python 语言开发,基于 PyQt/Qt 可视化框架 设计图形化操作界面,界面简洁直观,可根据需求进行二次开发和UI定制。
  2. 系统结合 ROS2 + Intel RealSense D435i 实现深度相机数据采集,支持订阅 RGB 图像、深度图像和点云相关话题,可实时获取环境中的视觉信息与深度信息。
  3. 目标识别部分采用 YOLO 系列深度学习目标检测算法,基于 PyTorch / Ultralytics 框架 实现模型加载与实时推理,可支持 YOLOv5、YOLOv8、YOLOv11 等不同版本模型,也可以替换为自定义训练模型,可根据需求进行二次开发。
  4. 系统支持加载不同的 .pt 推理模型,可以针对不同场景进行模型替换,例如行人检测、机械零件识别、工业缺陷检测、机器人抓取目标识别、桌面物体识别等,可根据需求进行二次开发。
  5. 左侧控制面板支持模型加载、置信度 Conf 调节、IOU 阈值调节、状态信息显示、模型类别信息显示等功能,方便用户实时调整检测效果。
  6. 中间主画面显示 YOLO 实时检测结果,能够展示目标类别、置信度、检测框、目标中心点、像素坐标以及对应的深度距离信息。

系统展示内容:

  1. 左侧为参数控制区域
    • 加载 YOLO 模型
    • 调节置信度 Conf
    • 调节交并比 IOU
    • 显示 FPS
    • 显示检测目标数量
    • 显示当前模型路径和类别信息
  2. 中间为 YOLO 检测结果区域
    • 实时显示 RGB 图像
    • 显示检测框
    • 显示目标类别
    • 显示置信度
    • 显示目标像素坐标
    • 显示目标深度距离
  3. 右侧为深度图/点云渲染区域
    • 显示 D435i 深度图像
    • 使用 JET 色彩映射进行可视化
    • 近处、远处目标颜色区分明显
    • 支持显示深度范围和图像分辨率

宇树机器人控制 OpenClaw-Robotics

OpenClaw-Robotics

npx skills add LooperRobotics/OpenClaw-Robotics

机械臂

NERO 机械臂

NERO 是松灵机器人在具身智能赛道上的重磅新品,一款专为科研、人形机器人开发及复杂任务场景打造的高自由度、高灵活性仿生臂。

这款机械臂采用仿人七轴冗余构型,精准复刻人类手臂的7个自由度(肩3、肘1、腕3),不仅在结构上高度仿生,更在运动学层面实现了类人的冗余解空间。

NERO自重仅4.8kg,末端负载达3kg,可稳定搭载RGB-D相机、灵巧手、力传感器等典型具身科研载荷。它原生支持CAN、TCP、HTTP通信协议,提供完整Python SDK,全面兼容ROS1与ROS2,无缝对接主流AI框架

自然语言操控

skill

A1X SDK

A1X SDK 是基于 Python 的机械臂控制接口,专为 A1X 型机械手设计。

该 SDK 为 ROS 2 控制器提供易于使用的 Python 封装,并附带多个端到端任务的综合示例,包括视觉目标抓取、手眼标定和直接运动控制。

4个 skill

  • a1x-arm-codegen:生成 Galaxea A1X 机械臂可执行代码
  • A1X 智能抓取技能(a1x-grab-skill)
  • a1x-realsense-vision 当用户询问看到什么、能看到什么、需要观察/分析当前摄像头画面时触发,通过 RealSense D405 相机实时拍摄,调用 qwen3.5-plus 云端 VLM 进行视觉分析
  • a1x-tts 将文本转为语音并播放,支持多种声音和 HD 模型。可独立使用,也可被其他技能调用实现机器人语音播报

当用户明确提出物体抓取任务时触发(如”帮我抓桌上的黄色物体”),采用 Code-as-Policies 方法:先视觉识别场景,再由 LLM 生成高层逻辑代码调用原语函数执行抓取

基于 Code as Policies 架构,将用户的自然语言抓取请求转化为可执行的机器人操作:

  • 视觉层:RealSense D405 + qwen3.5-plus 云端大模型识别场景物体
  • 规划层:LLM 根据场景描述和用户意图生成 Python 调度代码
  • 执行层:SAM3 分割 + 完整抓取流水线(深度计算 → 坐标变换 → IK → 运动)

AgileX skill 操控

① OpenClawPi AgileX

OpenClawPi 是模块化技能集合仓库,聚焦机器人核心功能的快速集成与复用,覆盖机械臂控制、抓取、视觉感知、语音交互等关键场景,为机器人的二次开发和应用落地提供开箱即用的技能组件。

AgileX Robotics 技能集合库

② pyAgxArm

2026-3-4 让小龙虾帮我控制七轴臂 openclaw 操控机械臂,含演示视频

pyAgxArm 是 AgileX 机械臂与末端执行器的 Python SDK,支持 CAN 通信、状态读取、运动控制,以及 Piper、Nero、AgxGripper、Revo2 等设备的接口调用。

pyAgxArm 是 AgileX Robotics提供的官方Python SDK,专门用于控制其系列机械臂(包括NERO和Piper等)。

该SDK提供了完整的控制接口:

  • 连接与配置:通过函数创建配置字典,指定机械臂型号、通信方式、通道等参数,然后使用AgxArmFactory创建机械臂实例并连接。
  • 运动模式:支持多种运动模式,每种模式对应不同的控制接口:
  • 关节位置速度模式(robot.MOTION_MODE.J)
  • 关节快速响应模式(robot.MOTION_MODE.JS)
  • 点到点模式(robot.MOTION_MODE.P)
  • 直线模式(robot.MOTION_MODE.L)
  • 圆弧模式(robot.MOTION_MODE.C)
  • 单位系统:关节角度使用弧度制,笛卡尔位姿的位置使用米制,姿态使用弧度制。

整个控制流程遵循严格的安全协议和操作顺序:

  • 连接建立:首先通过CAN总线建立与机械臂的物理连接。
  • 模式切换:机械臂必须在使能前切换到正常模式,模式切换前后都需要1秒的延迟。
  • 使能操作:CRITICAL原则——机械臂在切换模式前必须处于使能状态。如果机械臂处于失能状态,无法切换模式。
  • 运动执行:所有运动命令都必须在正常模式下使用。
  • 运动完成检测:通过检查motion_status来判断运动是否完成。
  • 安全措施:每次机械臂操作后添加小延迟(0.01秒),运动完成等待使用较短超时(2-3秒)。

实现 openclaw 指令与设备执行的全流程联动,大幅降低机械臂操控门槛。

核心功能:

  • 根据用户自然语言描述,引导OpenClaw生成可执行的pyAgxArm控制代码(Python脚本)。

技能文件定义了何时触发该技能——当用户说“写代码控制机械臂”、“根据我的描述生成控制脚本”或“让机械臂按顺序执行多个动作”时,OpenClaw便会启动代码生成流程。

skill目录创建 agx_arm_codegen 目录,然后创建使用下面的skill文件

当用户向 OpenClaw 描述机械臂动作时,如“帮我把东西从左边移到右边”,OpenClaw会:

  • 解析自然语言指令,理解用户的意图
  • 结合pyagxarm-api.md中的API参考和代码模板
  • 生成完整的、可运行的Python控制脚本
  • 提醒用户需要在已安装pyAgxArm和python-can的环境中运行,且CAN需已激活、机械臂已上电
  • 强调安全注意事项:执行前确认工作区域内无人员和障碍物;建议先小幅度、低速度测试

生成的代码包含了连接配置、使能流程、运动命令序列以及安全检测逻辑,用户只需在准备好的环境中运行即可。

Claw Arm

2026-4-7 从零开始让AI接管你的机械臂(so-100+skills+openclaw/claude code)

Claw Arm 是让机械臂”变聪明”的开源项目。

  • 用户说:”抓起那个红色的方块”
  • 机器人做:识别方块 -> 计算位置 -> 精准抓取 -> 完成

不需要机器人专业背景,只需要 Python 基础。

自然语言控制

/nature_arm 跳个舞
/nature_arm 抓取红色物体
/nature_arm 把方块放到左边

结合 Claude Code / OpenClaw,用自然语言控制机械臂

摄像头画面
    |
    v
颜色/物体检测
    |
    v
坐标转换 (像素->世界)
    |
    v
机械臂运动
    |
    v
精准抓取

安装

# 1. 克隆项目
git clone https://github.com/Linmoqian/claw_arm.git
cd claw_arm

# 2. 一键配置环境
conda env create -f environment.yml
conda activate claw_arm

# 3. 测试硬件连接
python script/1.3test_motors.py  # 电机测试
python CV/1_camera_test.py       # 摄像头测试

# 4. 运行第一个示例
python examples/basic/hello_arm.py

AlohaMini

具身智能的真机实验就必须动辄几十万么?

探索未来的工具,本不该高不可攀, 推动具身智能向前的,不只是少数实验室里的昂贵设备,更在于让每一位开发者、每一个课题组都能买得起、用得上、跑得通算法。

【2025-11-23】AlohaMini 机器人正式发布, 全开源,可量产

AlohaMini 是一款支持电动升降臂的双臂移动机器人。设计精美、可完全3D打印且成本亲民,专为具身智能研究与真实世界场景操作而打造,组装大约60分钟即可完成,并能通过LeRobot系统进行训练与部署。

  • 💰 极具性价比:整机12999起!打破真机采购高门槛。
  • 🌐 100% 全栈开源:CAD、BOM 清单、LeRobot 算法代码全开源,拒绝黑盒。
  • 🏭 可稳定量产:已实现标准化组装,到手即用,告别手工攒机的不稳定。
  • 🦾 全能硬件形态:6+1 自由度双臂 + 电动升降主轴 + 全向移动底盘,完美适配 ACT / SmolVLA / GR00T 等主流端到端算法。

理论

方向表示

如何描述空间坐标或者空间物体的方向(姿态,rotations)?

  • 四元数: 4个有一定相关性(a^2 + b^2 + c^2 + d^2 = 1)的数来描述空间旋转
  • 欧拉角: 通过3个独立的参数来描述空间的旋转
  • 旋转矩阵: 通过3x3矩阵来描述空间旋转。每一行,每一列都有特殊的含义。现在假设Oxyz是原始坐标系,Ox’y’z’是旋转过后的坐标系。

总结

  • 欧拉角:给人看、手动调参;不能用来连续动力学计算
  • 四元数:算法内部姿态存储、平滑插值、姿态解算(工业首选)
  • 旋转矩阵:底层几何运算、批量点变换、渲染输出媒介
对比维度 旋转矩阵(DCM) 欧拉角(Euler Angles) 单位四元数(Unit Quaternion)
主要优点 ① 数学底层标准,理论推导方便
② 无奇点,全局有效
③ 批量点变换、渲染管线最优
① 参数最少,存储最小
② 人机交互首选,UI 调参直观
③ 调试友好,易理解、易表达
① 无万向锁,全姿态连续
② SLERP 插值平滑,动画/动捕标配
③ 合成效率高,数值维护简单
④ 机器人/无人机/SLAM 工业首选
主要缺点 ① 存储冗余、占内存
② 无法平滑插值
③ 需定期正交化
④ 难以直接提取旋转轴角
万向节死锁(致命硬伤)
② 插值效果差
③ 不适合连续动力学积分
④ 旋转顺序易踩坑,工程 bug 多
① 人类不直观,难调试
② 存在 q/-q 对偶歧义
③ 批量顶点旋转不如矩阵高效
典型应用场景 渲染管线、GPU 顶点变换、相机投影、坐标系变换 UI 编辑器、人工调参、姿态显示(仅给人看) 游戏动画、动捕、无人机飞控、IMU 姿态解算、SLAM 后端优化
参数形式 3×3 正交矩阵,9 个浮点数 3 个角度(α, β, γ),3 个浮点数 四维向量 [w,x,y,z],4 个浮点数
自由度 / 冗余 自由度 3,存储高度冗余(6 个约束) 自由度 3,无冗余 自由度 3,单位模长约束 + q 与 -q 对偶冗余
奇异性 / 万向锁 无任何奇点,全局有效 存在万向节死锁(中间角 ±90° 时丢失一个自由度) 无奇点,SO(3) 全局光滑覆盖
直观可读性 极差,无法直接看出旋转轴与角度 极好,人可直接理解 roll/pitch/yaw,便于调参 极差,纯数值,人类无法直接解读姿态
姿态插值 不能直接线性插值,会丧失正交性,无简单平滑方案 线性插值路径畸变、抖动、容易翻转 SLERP 球面线性插值,过渡平滑、角速度均匀
旋转合成(多次旋转叠加) 矩阵乘法,约 45 次浮点运算 需反复转矩阵 + 三角函数,开销最大 四元数乘法,约 28 次浮点运算,效率最高
向量 / 点云旋转 直接矩阵乘向量,批量顶点变换最优,GPU 原生支持 不能直接旋转向量,必须先转为矩阵 单点旋转 qvq*,开销高于矩阵;批量场景建议先转矩阵
数值稳定性 / 漂移修正 多次运算后失去正交性,需定期正交化修正(成本高) 奇点附近角度跳变、不连续,难以修正 仅需归一化,维护成本极低
歧义性 一一对应,无歧义 同一姿态对应多组角度(多解) q 与 -q 表示同一旋转(二重覆盖)
微分 / 姿态积分 支持,但推导繁琐 奇点附近不可积分,惯性导航禁用 非常适合角速度积分,INS/SLAM 工业标准

欧拉角

欧拉角用于表示刚体当前的姿态。

思想:

  • 将刚体绕某一轴的一次旋转,分解为依次分别绕X、Y、Z轴的三次旋转。
  • 这三个轴分别旋转的转动角度,就是一组三个欧拉角。

三次旋转(而其实可以绕某一轴,一次旋转即可达到最终位置)

两组坐标系,我们定义为:

  • xyz:世界坐标系(固定不动)
  • XYZ :刚体坐标系(与刚体同步运动)

万向节死锁(Gimbal Lock)

万向节死锁发生在欧拉角形式下,是由欧拉旋转定义本身造成的。

平衡环架(英语:Gimbal)是一具有枢纽的装置,作用是使得一物体能以单一轴旋转。由彼此垂直的枢纽轴所组成的一组三只平衡环架,则可使架在最内的环架的物体维持旋转轴不变,而应用在船上的陀螺仪、罗盘、饮料杯架等用途上,而不受船体因波浪上下震动、船身转向的影响。

陀螺仪分别绕X、Y、Z三个轴旋转时的旋转角。这里直接等同于欧拉角, 陀螺仪用来测量平衡和转速,在载体高速转动的时候,陀螺仪始终要通过自我调节,使得转子保持原有的平衡。

万向节死锁

四元数

四元数是一种扩展复数概念的数学结构

由爱尔兰数学家哈密顿于1843年提出,是复数在三维空间的自然推广。

核心价值

  • 通过“实部+三维虚部”的结构描述旋转,完美规避欧拉角的轴序依赖与奇异问题(如万向锁),成为机器人学、计算机图形学等领域描述三维姿态的核心工具。

通常表示为 q=w+xi+yj+zk, 标准形式由1个实部和3个虚部组成,完整表达三维旋转的“角度”与“轴方向”信息:

  • w 为标量部分
  • x, y, z 为向量部分,对应虚数单位 i, j, k。

机器人学中,四元数被广泛用于三维姿态表示,相比欧拉角旋转矩阵,能避免万向节死锁、计算高效且插值平滑。

核心优势包括:

  • 无万向锁:欧拉角在俯仰 ±90° 时会丢失自由度,四元数无此问题。
  • 高效旋转叠加:通过四元数乘法即可实现姿态组合。
  • 平滑插值:球面线性插值(Slerp)可实现自然过渡。
  • 紧凑表示:仅需 4 个参数且满足单位化约束。

特点: 数值上更稳定,适合连续姿态插值。

机器人系统的位姿描述中,四元数是ROS、SLAM、IMU解算等系统默认使用的姿态表示方式

为什么用四元数表示机器人姿态?

  • 欧拉角在特定角度(如俯仰角 ±90°)时会丢失一个自由度,而四元数无此问题。

不同表示形式的转换

  • 四元数 → 旋转矩阵:便于在运动学中与齐次变换矩阵结合。
  • 四元数 → 欧拉角:方便与人类可读的姿态角度交互。
  • 旋转矩阵 / 欧拉角 → 四元数:用于传感器数据融合(如 IMU)。

机器人学应用场景

  • ROS / SLAM:作为标准姿态表示,减少数值漂移。
  • 机械臂控制:末端执行器姿态规划与插值。
  • 无人机与航天器:姿态解算与控制,确保飞行稳定性。

四元数在机器人学中不仅是数学工具,更是高精度姿态控制与路径规划的核心。在实际工程中,结合 IMU 数据与四元数滤波(如 Madgwick、Mahony 算法)可显著提升姿态估计精度。

URDF

URDF(Unified Robot Description Format)通用机器人说明书,本质是XML文本文件,告诉仿真器三件事:

  • 机器人有什么零件(连杆/Link)
  • 零件之间怎么连接(关节/Joint)
  • 每个零件长什么样、有多重

正向运动 FK

正向运动学 FK

  • 已知各关节角度,计算机械臂末端 TCP(工具中心点)空间坐标、姿态。
  • 主流解法:D-H 参数法(标准 MDH/SDH),绝大多数 6 轴机械臂通用
  • 进阶:改进 D-H、PoE(旋量理论),适合 7 轴冗余机械臂、人形手臂
  • 软件实现:符号推导(Mathematica)、数值矩阵乘算(C++ 实时跑)

解析逆运动 IK

逆向运动学 IK

  • 给定末端目标位姿,求解全部可行关节角度,操控最核心难点。

指定位置 让机械臂到达目的位置

四类IK算法路线 | 算法 | 原理 | 适用 | 优缺点 | |—-|—-|—-|—-| | 解析法 | 几何直接解方程,闭式解 | 6轴常规机械臂(PUMA、UR、串联6轴) | 速度极快、多解枚举;结构一变就要重推公式 | | 数值迭代IK | 牛顿-拉夫逊、高斯牛顿 | 7轴冗余、非标机械臂 | 通用,不用手推公式;迭代慢,容易局部最优 | | 雅可比伪逆 | 雅可比矩阵求逆,微小步迭代 | 实时轨迹跟随、冗余机械臂零空间优化 | 适合连续轨迹;奇异点会震荡 | | 深度学习IK | 神经网络拟合角度 | 超多自由度复杂臂 | 推理快;训练依赖数据集,精度不稳定 |

配套:IK解筛选算法——根据当前关节角度选最顺滑、关节转动最小的一组解。

运动轨迹规划

(让机械臂动得顺滑不抖动)

控制关节/末端从A点平稳走到B点,分为关节空间规划笛卡尔空间规划两大类。

关节空间轨迹(最常用,无奇异风险)

对每个关节单独规划角度随时间变化,各轴同步启停。

  1. 梯形速度曲线(Trap):匀加速→匀速→匀减速,简单高效,工业标配;加加速度突变,高速有震动
  2. S曲线加减速(S-Curve / Jerk限制):限制加加速度Jerk,全程加速度平滑,高速打磨、雕刻必备;7段S曲线行业主流
  3. 多项式插值:3次、5次、7次多项式。5次多项式(位置/速度/加速度起点终点全为0),启停无冲击,桌面机械臂首选。

避障

(1)奇异点规避算法

机械臂腕部伸直/收拢时雅可比行列式为0,速度失控。

方案:雅可比阻尼最小二乘DLS、关节限位软约束、规划路径绕开奇异构型。

避障与全局运动规划算法(自主操控必备)

解决:环境有障碍物,需要绕开障碍物到达目标。

  1. 基于采样的规划(最通用)
    • RRT、RRT*:快速随机扩展树,适合高自由度机械臂,狭窄通道好用
    • Informed RRT*:带启发域,收敛更快;MoveIt默认首选
  2. 基于优化的规划 CHOMP、STOMP:直接优化轨迹平滑度+碰撞代价,适合近距离小幅避障

  3. 碰撞检测算法(规划必带)
    • 包围盒:AABB、OBB快速粗检
    • 精确碰撞:GJK算法(距离快速计算)、FCL库(ROS标配碰撞检测)

软件:FCL、Bullet、V-Clip

求解方法

机械臂解析逆运动学(Analytical IK)主流解法

  • 前提:只有满足特定几何构型的串联机械臂,才能求出闭式解析解
  • 最经典:Pieper准则
  • Pieper条件:6R机械臂,三个相邻关节轴线交于一点(腕部交汇,绝大多数工业6轴机械臂满足:UR、遨博、KUKA、ABB)。
  • 不满足Pieper条件的通用6R无解析解,只能用数值IK。

解析IK通用分支特性

  • 1. 6R Pieper构型:最多 8组解析解(8个IK分支)
  • 2. 7R:无穷解集,离散分支取决于冗余约束方式
  • 3. 每个解都需要FK校验(FK closure)剔除无效解、奇异解

解析IK vs 数值IK(快速区分)

  • 解析IK:直接公式算出角度,速度极快;存在解/无解明确;只适配特定构型
  • 数值IK:迭代寻优(牛顿法等);任何机械臂通用;速度慢;容易陷入局部解
6R机械臂

(1)6R机械臂(Pieper构型,腕交汇)主流解析方法

腕部分离法(最通用、工业标准),也叫位置姿态解耦法 机械臂拆分为:手臂(前3关节) + 球形腕部(后3关节交于腕原点)

  • 1. 由目标TCP位姿算出腕中心坐标
  • 2. 前3轴:求解腕中心位置(位置IK)
  • 3. 后3轴:已知腕中心,求解末端姿态(姿态IK) 分析
  • ✅ 优点:逻辑清晰,容易实现,得到全部8组分支解
  • 适用:所有标准6轴协作/工业机械臂(UR系列等)

D-H 参数代数消元法

建立D-H齐次变换方程,不断代数消元,推导出关节角度闭式方程。

分析

  • ✅ 理论通用;
  • ❌ 手工推导极其繁琐,不同构型需要重新推导方程。

几何图解法

利用空间几何关系(投影、三角函数、余弦定理)直接求解关节角。

适合结构简单机械臂,直观;复杂7R很难纯几何求解。

7R冗余机械臂

(2)7R冗余机械臂解析IK(7自由度)

7R不存在唯一解,有无穷多组解,解析方案分为两类:

① 固定冗余角解析法(工程最常用)

7R相比6R多1个冗余自由度。人为固定其中一个关节角度,7R退化为可解的6R,再套用6R解析IK。

  • 优点:复用成熟6R求解代码;可以人为避开奇异点
  • 缺点:丢失冗余自由度的避障/优化能力

② 零空间参数化解析解法

以冗余关节作为自由参数,推导出其余关节关于该参数的闭式表达式。

分析

  • 可连续遍历无穷多组IK分支;
  • 公式复杂,极少原生落地。

ROS 开发框架

ROS 是⽬前机器⼈相关开源社区最流⾏的项⽬之⼀,易⽤且完备的机器⼈开发框架、⽣态乃⾄社区,海量的机器⼈开源项⽬(涵盖感知、规划、控制、定位、SLAM和建图、可视化等⼏乎所有机器⼈领域)均使⽤ROS作为基础。

以⾃动驾驶汽⻋为代表的新的机器⼈应⽤场景,对于中间层和开发框架在实时性、可靠性、伸缩性、跨平台可移植等⽅⾯提出了⼤量新的需求

  • ROS 显然不能满⾜这些需求,ROS2因此产⽣,在经历了若⼲年的迭代后,ROS2项⽬⽬前已经相对完备和稳定。

ROS 1

ROS1项⽬给科研机器⼈Willow Garage PR2提供开发环境和相应的⼯具,让这套软件在更多的机器⼈上运⾏,ROS为机器⼈开发构建了应⽤层的抽象和通⽤的消息接⼝,最终在机器⼈社区中⼴为使⽤并发展为⽬前最流⾏的机器⼈软件⽣态体系之⼀。

然⽽,ROS1 研发初衷注定了该架构缺陷:

  • ⽆实时性(real-time)
  • 嵌⼊式设备不友好
  • 对于⽹络通信的重依赖(需要⼤带宽且稳定的⽹络连接)
  • 多⽤于学术应⽤
  • 超⾼的灵活性带来的不规范的编程模式
  • 原⽣的ROS仅⽀持单机器⼈

然⽽, ROS已在⼤量⼯业领域的应⽤,包括科研机器⼈、⼯业机器⼈、轮式机器⼈、⾃动驾驶汽⻋乃⾄航天⽆⼈驾驶设备,其原来的功能设计已经不能满⾜海量应⽤对于某些性能(如实时性、安全性、嵌⼊式移植等)的需求,ROS2即在这样的背景下被设计和开发。

ROS 2

ROS2 在设计之初就考虑了产品环境下挑战

ROS2采⽤(或者计划采⽤)以下策略以提升其在产品环境的适⽤度:

  • ⽀持多机器⼈
  • 对⼩型嵌⼊式设备和微控制器的⽀持
  • 实时系统:⽀持实时控制,包括进程间和机器间通信的实时性
  • ⽀持⾮理想⽹络环境:在低质量⾼延迟等⽹络环境下系统仍然能够⼯作
  • 对产品环境的⽀持的能力
  • 规范的编程模型以⽀持基于ROS的⼤规模⽬的构建、开发和部署

ROS1 核⼼: 基于master中⼼节点的匿名发布-订阅通信中间层

相⽐之下,ROS2 采⽤基于RTSP(Real-Time Publish-Subscribe) 协议的DDS作为中间层

DDS(Data-Distribution Service) ⽤于实时和嵌⼊式系统发布-订阅式通信的⼯业标准,这种点到点的通信模式类似于ROS1的中间层,但是DDS不需要像ROS1那样借由master节点来完成两个节点间通信,这使得系统更加容错和灵活,DDS 被⼴泛应⽤于关键系统中,包括战舰、⼤型基础设施(如⽔电站)、⾦融系统、空间系统、航空系统等场景,这些⽤例也证实了DDS的可靠性。

多个⼚商提供多种DDS实现,⼀般来说DDS的底层通信机制基于UDP协议或者共享内存机制(当然也有 ⼚商提供基于TCP的DDS实现),⽽ROS2⽀持多种DDS实现,⽤⼾可以根据实际情况选择DDS中间层, ⽬前来说ROS2 Foxy完整⽀持以下DDS中间层:

  • eProsima的Fast RTPS(当前ROS2版本默认的DDS实现)
  • RTI的Connext DDS
  • Eclipse Cyclone DDS

ROS2 引⼊了 Quality of Service, QoS(服务质量)的策略⽤于配置节点间通信,进⽽提升了ROS2适应于不同应⽤场景的灵活性。ROS1只⽀持基于TCP的通信,通过配置QoS,ROS2可以表现出TCP的可靠性,也可以表现出UDP那样的⾼实时性。

ROS2 ⼏乎每半年会发布新版本,对应的代号(类似与ROS1中的Kinetic, Melodic和Noetic等版本代号):

  • Crystal: 2018年12⽉
  • Dashing: 2019年5⽉底
  • Eloquent: 2019年11⽉
  • Foxy: 2020年6⽉
  • Galactic: 2021年5⽉

组件

关键组件

  • 节点 (Nodes):ROS2 应用中的基本执行单元,每个节点负责一个具体的功能,例如驱动一个传感器、控制一个电机或执行一个算法。 ROS2 的一个重要改进是允许在一个操作系统进程中运行多个节点,这提高了资源利用率和通信效率。
  • 话题 (Topics):ROS 中最常用的通信方式,采用发布/订阅模型。一个节点可以将消息发布到一个特定的话题上,而其他任意数量的节点可以订阅该话题以接收消息。 这种方式是单向、异步的,非常适合流式数据的传输,如传感器数据、摄像头图像等。
    • 得益于 DDS,ROS2 在话题通信中引入了 QoS (Quality of Service) 服务质量策略。开发者可以精细地配置通信的可靠性(如“尽力而为”或“可靠传输”)、持久性(新加入的订阅者是否能接收到历史消息)和历史记录深度等参数,以适应不同的应用场景,这是 ROS1 所不具备的。
  • 服务 (Services):实现双向的请求/响应通信。一个节点(服务端)提供一项具体服务,其他节点(客户端)可以向其发送请求并等待响应。与 ROS1 的同步阻塞式服务调用不同,ROS2 的服务调用是异步的,客户端在发送请求后不会被阻塞,可以在等待响应的同时执行其他任务,从而提高了系统的并发性能。
  • 动作 (Actions):处理需要长时间运行并提供持续反馈的任务,如导航到目标点或执行一个机械臂的复杂动作。动作机制整合了话题和服务的特点,它包含三个部分:
    • 目标 (Goal): 客户端向动作服务器发送一个任务目标。
    • 反馈 (Feedback): 服务器在执行任务期间,通过一个话题周期性地发布反馈信息。
    • 结果 (Result): 任务完成后,服务器通过一个服务将最终结果返回给客户端。

主流实现

1. UR5/UR6解析IK:腕解耦分支解法(大量Python开源实现) 2. KDL:数值IK为主,不自带解析解 3. TrajOpt、MoveIt:默认数值IK;想要解析解需要单独嵌入自研闭式公式

MoveIt

MoveIt 是 ROS1 中最成熟、应用最广泛的机械臂运动规划框架,为机器人提供从模型描述到运动执行的一整套解决方案。

MoveIt 主要解决:

  • 机械臂运动规划(Motion Planning)
  • 碰撞检测(Collision Checking)
  • 逆运动学(IK)
  • 轨迹生成与执行
  • RViz 可视化与交互

MoveIt! 以 move_group 为核心节点,集成了各种组件,用于 ROS 动作和服务。

插件机制

MoveIt! 通过插件机制(plugin interface)与运动规划器(motion planner)进行交互,可以使用多个库的不同运动规划器,使得 MoveIt! 扩展性更强!默认使用的运动规划器是 OMPL(Open Motion Planning Library) 库。

SSIK

ssik

适用于6自由度旋转机械臂(6R)与7自由度冗余旋转机械臂(7R)的解析逆运动学求解方案。

每款机械臂对应一个独立完整的Python模块,可输出逆运动学全部分支解;经过正运动学闭环校验,求解误差远低于普通机器人重复定位精度,必要时还能进一步优化至机器精度。

RL + ROS

【2026-5-14】机器人端到端RL(强化学习)训练与 ROS2 真机部署, 含流程图

端到端RL从代码到真机跑起来,完整链路四个字:训、验、导、部署

端到端RL落地的四字诀:

  • 训:Isaac Gym + PPO,仿真里反复练习
  • 验:Mujoco Sim2Sim,确认策略泛化
  • 导:.pt → ONNX → TensorRT,固化加速
  • 部:ONNX Runtime + ROS2 + CAN,真机运行

每个阶段都有成熟开源工具,路线清晰,门槛在奖励设计——设计不好奖励,RL永远学不会。

仿真里能走 ≠ 真机能走。Sim2Real是端到端RL落地的关键一步——先在仿真A里练,再到仿真B里验,通过才上真机。

仿真

MuJoCo

MuJoCo 表示 Multi-Joint dynamics和Contact,通用的物理引擎, 促进机器人、生物力学、图形和动画、机器学习和其他需要快速准确地模拟与其环境相互作用的铰接结构的领域。

  • 最初由 Roboti LLC 开发,于 2021 年 2022 月被 DeepMind 收购并免费提供,并于2022 年 5 月开源。
  • MuJoCo代码库可在GitHub上的deepmind/mujoco存储库中找到。

MuJoCo 是带有C API的C / C++库,面向研究人员和开发人员。运行时模拟模块被调整为以最大限度地提高性能,并对由内置 XML 解析器和编译器预先分配的低级数据结构进行操作。

用户可使用本地 MJCF 场景描述语言(一种方便人们读写的XML 文件格式的语言)定义模型,也可以加载 URDF 模型文件。该库包括用 OpenGL 呈现的带有本地 GUI 的交互式可视化界面。同时MuJoCo 进一步公开了大量用于计算物理相关量的高效函数。

MujoCo 可用于实现基于模型的计算,例如控制合成、状态估计、系统辨识、机制设计、通过逆动力学进行数据分析,以及机器学习应用的并行采样。它还可以用作更传统的模拟器,包括用于游戏和交互式虚拟环境。

核心概念

  • MjModel:静态模型结构,包含质量、几何体、关节等只读配置(通常由 XML/MJCF 文件加载)。
  • MjData:动态状态量,包含关节位置 qpos、速度 qvel、控制输入 ctrl 及仿真时间等变量。
  • mj_step:核心函数,用于计算并推进下一个时间步长的物理状态

使用方法

安装

pip install mujoco
# import mujoco

启动环境

import mujoco
import mujoco.viewer

# 加载官方测试模型或本地 XML 路径
xml = """
<mujoco>
  <worldbody>
    <light diffuse=".5 .5 .5" pos="0 0 3" dir="0 0 -1"/>
    <geom type="plane" size="1 1 0.1"/>
    <body pos="0 0 1">
      <joint type="free"/>
      <geom type="box" size=".1 .1 .1" rgba="1 0 0 1"/>
    </body>
  </worldbody>
</mujoco>
"""
model = mujoco.MjModel.from_xml_string(xml)
data = mujoco.MjData(model)

# 启动图形预览界面
with mujoco.viewer.launch_passive(model, data) as viewer:
    while viewer.is_running():
        mujoco.mj_step(model, data)
        viewer.sync()

Text2MuJoCo

【2026-9-15】一句话直接创建仿真环境

Text2MuJoCo 是跑在现有编码 Agent 里的 Agent 技能包。

与 Codex 或 Claude Code 配合,把一段场景或任务描述转成可加载的 MuJoCo 3 包:解析物体、物理、传感器、动作顺序、成功条件和可见的交互点,然后用机器可读的报告来支撑结果。示例请求 展示了预期的输入格式。

GitHub 上的 Text2MuJoCo,装进 Claude Code 的 skill 包:一句话描述场景,就能生成一整套可运行、可验证的 MuJoCo 仿真环境

$ text2mujoco
Generate a desktop tool cabinet, unlock it, pull the drawer open by 22 cm, and inspect it with a camera.

# claudec code
/text2mujoco Generate a warehouse navigation task with visible checkpoints and a top-view camera.

Issac

NVIDIA Issac 机器人仿真环境

开放式机器人开发平台由仿真和机器人学习框架、基于 NVIDIA® CUDA® 加速的库、AI 模型以及参考工作流组成,可用于创建自主移动机器人 (AMR)、机械臂、操作机器人以及类人机器人。

结束


支付宝打赏 微信打赏

~ 海内存知已,天涯若比邻 ~

Share

Similar Posts

Related Posts

上一篇 AI+游戏

下一篇 VLA专题

标题:AI+游戏

摘要:RL/大模型在游戏中的应用

标题:VLA专题

摘要:端侧多模态应用场景:机械臂、具身机器人等

站内可视化导航

文章可视化导读:鼠标划过图形块时,如果出现蓝色光环, 点击即可跳转到对应主题

Comments

--disqus--

    My Moment ( 微信公众号 )
    欢迎关注鹤啸九天