Sim2Sim理论与实践1:坐标系与位姿变换

目录

[1 学习目标](#1 学习目标)

[2 内容](#2 内容)

[2.1 笛卡尔坐标系与关节坐标系](#2.1 笛卡尔坐标系与关节坐标系)

[2.2 平移与旋转](#2.2 平移与旋转)

[2.2.1 平移](#2.2.1 平移)

[2.2.2 旋转](#2.2.2 旋转)

[2.3 机器人正运动学](#2.3 机器人正运动学)

[2.3.1 正运动学建模](#2.3.1 正运动学建模)

[① 建立连杆坐标系](#① 建立连杆坐标系)

[② 计算单步变换矩阵](#② 计算单步变换矩阵)

[③ 链式法则相乘(总变换)](#③ 链式法则相乘(总变换))

[2.3.2 MDH参数法](#2.3.2 MDH参数法)

[2.3.3 齐次变换矩阵](#2.3.3 齐次变换矩阵)

[2.3.4 坐标变换](#2.3.4 坐标变换)

[2.4 机器人逆运动学](#2.4 机器人逆运动学)

[2.4.1 解析法](#2.4.1 解析法)

[2.4.2 数值迭代法](#2.4.2 数值迭代法)


Sim2Sim (Simulation-to-Simulation) 指的是在不同的仿真环境之间进行知识迁移或验证的过程。

在具身智能的开发流程中,它通常位于Sim2Real(仿真到现实)之前,具有以下几层含义:

  • 跨平台验证:在动力学仿真器 A(如Isaac Gym(即现在的Isaac Lab),适合大规模强化学习)中训练出的算法,在不经过任何修改的情况下,直接放到仿真器 B(如MuJoCo 或Gazebo,物理特性更精细)中去跑。如果效果一致,说明你的算法具有较好的泛化性。

  • 从高层到低层的映射: 在具身智能中,我们常在"视觉仿真器"(如 AI2-THOR)中训练感知和逻辑决策,然后将动作指令传递给"物理仿真器"(如PyBullet)来执行精细的抓取动作。这个对接过程就是Sim2Sim。

  • 模型精简与蒸馏: 有时我们在一个极其理想的仿真环境中训练一个复杂的模型,然后将其迁移到一个模拟了更多噪声(传感器误差、延迟)的仿真环境中进行压力测试。

直接从仿真环境跳到真机(Sim2Real)代价极高且容易损坏硬件。Sim2Sim是一个低成本的"中间站",用来排查坐标系不统一、物理参数不匹配等问题。

1 学习目标

理解机器人运动的空间表示,掌握齐次变换矩阵的使用。

(1)笛卡尔坐标系与关节坐标系

(2)齐次矩阵(4×4)表示位姿

(3)平移、旋转(欧拉角、四元数)

(4)坐标系之间的转换与链式计算

2 内容

2.1笛卡尔坐标系与关节坐标系

在机器人世界里,所有的任务都可以简化为:把一个点A坐标系转换到B坐标系。

(1)笛卡尔坐标系

描述物体在三维空间的位置(x, y, z)

(2)关节坐标系

描述机器人每个电机转了多少度

(3)学习目标

建立一套数学公式,让电脑知道:当电机转动30度时,机器人的手指尖在空间中具体哪个(x, y, z)位置。

2.2 平移与旋转
2.2.1 平移

(1)定义

物体在空间中的位置变化,即物体在某个方向上移动而不改变其形状和姿态。

(2)数学表示

通常用一个3x1的列向量P=[x, y, z]^T表示

2.2.2 旋转

(1)物体绕某固定点或轴的转动,即位置、方向变化,形状大小不变。旋转有三种表达式,分别为旋转矩阵、欧拉角、四元数

(2)旋转矩阵

定义:一个3x3的正交矩阵(行列式为 1)

核心特性:

用途:最适合进行数学推导和坐标变换

(3)欧拉角

定义:将旋转拆分为绕三个轴的顺序旋转(如 Roll-Pitch-Yaw)

致命伤:万向节死锁(Gimbal Lock)。当第二个旋转角为90°时,第一轴和第三轴会重合,丢失一个自由度

注意点:必须搞清楚旋转顺序(是ZYX还是XYZ)以及是绕"固定轴"还是"转动轴"旋转

(4)四元数(Quaternions)

定义:用4个数q= (w, x, y, z)表达旋转。

优势:没有奇异性(不会死锁),插值平滑(适合动画和轨迹规划),计算量比矩阵小。

Sim2Sim必备:在Isaac Lab或MuJoCo的代码里,物体姿态通常直接以四元数形式存储。

齐次矩阵(4×4)表示位姿平移、旋转(欧拉角、四元数)坐标系之间的转换与链式计算(Python中可以使用PyTransform3D

2.3 机器人正运动学

由关节转角、连杆等参数计算机器人末端相对基坐标系位姿。

2.3.1 正运动学建模
① 建立连杆坐标系

我们需要在机器人的每一个关节上定义一个坐标系。目前工业界和学术界最通用的方法是D-H参数法 (Denavit-Hartenberg Convention)。

  • 它通过4个参数(连杆长度、连杆转角、连杆偏移、关节角来唯一确定两个相邻关节之间的关系。

  • Sim2Sim注意点:虽然D-H很经典,但在Isaac Lab或MuJoCo中,通常直接使用URDF (Unified Robot Description Format),软件直接算好了。URDF更加直观,直接定义了子坐标系相对于父坐标系的偏移和旋转。

② 计算单步变换矩阵

对于每一个关节i,根据其当前的旋转角度,写出它相对于前一个关节i-1的齐次变换矩阵

这个矩阵里包含了:

  • 这一段机械臂的物理长度。

  • 当前电机转动的角度。

③ 链式法则相乘(总变换)

最终得到的矩阵的右上角3x1部分就是末端的位置,左上角3x3部分就是末端的姿态。

2.3.2 MDH参数法
2.3.3 齐次变换矩阵

联系平移和旋转。需要掌握如何构建这个4*4矩阵。

左上角 (R):旋转部分

右上角 (P):平移部分

左下角 (0):透视缩放(机器人学中固定为 0)

核心意义:将"旋转乘法 + 平移加法"的混合运算,统一成了单一的矩阵乘法

2.3.4 坐标变换
  • 左乘(相对固定参考系):如果物体的变换是相对于"世界坐标系(Static Frame)"发生的,连续变换时矩阵从左边往右乘。

  • 右乘(相对自身当前系):如果物体的变换是相对于"当前自身坐标系(Body Frame)"发生的,矩阵从右边往左乘。

2.4 机器人逆运动学

已知末端相对于机器人基坐标系位姿,求解各关节角(结果不唯一)。主要求解方式两种:解析法数值迭代法

2.4.1 解析法

通过建立逆运动学方程,直接求解关节角度。这种方法通常适用于结构较简单的机器人,如具有较少自由度的机械臂。解析法的优点是计算速度快,且能得到精确解,但在某些情况下可能会有多个解或无解的情况

2.4.2 数值迭代法

通过迭代优化算法逐步逼近目标姿态。这种方法适用于结构复杂或自由度较高的机器人,能够处理较为复杂的逆运动学问题。常见的数值方法包括牛顿-拉夫森法和梯度下降法。尽管数值迭代法灵活性更高,但其收敛速度和计算时间通常较慢,并且可能陷入局部最优解。

在机器人逆运动学求解中,常用的库包括KDL、Track-IK(数值迭代法)和IKFast(解析算法库),它们各自具有不同的优势和应用场景,为机器人运动控制提供了强有力的支持。

相关推荐
Elastic 中国社区官方博客2 小时前
Elasticsearch:使用 Agent Builder 的 A2A 实现 - 开发者的圣诞颂歌
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
chools2 小时前
【AI超级智能体】快速搞懂工具调用Tool Calling 和 MCP协议
java·人工智能·学习·ai
郝学胜-神的一滴3 小时前
深度学习必学:PyTorch 神经网络参数初始化全攻略(原理 + 代码 + 选择指南)
人工智能·pytorch·python·深度学习·神经网络·机器学习
leobertlan3 小时前
好玩系列:用20元实现快乐保存器
android·人工智能·算法
青梅橘子皮3 小时前
C语言---指针的应用以及一些面试题
c语言·开发语言·算法
笨笨饿3 小时前
#58_万能函数的构造方法:ReLU函数
数据结构·人工智能·stm32·单片机·硬件工程·学习方法
jr-create(•̀⌄•́)3 小时前
从零开始:手动实现神经网络识别手写数字(完整代码讲解)
人工智能·深度学习·神经网络
冬奇Lab4 小时前
一天一个开源项目(第78篇):MiroFish - 用群体智能引擎预测未来
人工智能·开源·资讯
冬奇Lab4 小时前
你的 Skill 真的好用吗?来自OpenAI的 Eval 系统化验证 Agent 技能方法论
人工智能·openai
数智工坊4 小时前
Transformer 全套逻辑:公式推导 + 原理解剖 + 逐行精读 - 划时代封神之作!
人工智能·深度学习·transformer