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(解析算法库),它们各自具有不同的优势和应用场景,为机器人运动控制提供了强有力的支持。

相关推荐
yzx99101328 分钟前
实时数据流处理实战:从滑动窗口算法到Docker部署
算法·docker·容器
人工智能训练38 分钟前
从 1.1.3 到 1.13.2!Ubuntu 24.04 上 Dify 升级保姆级教程(零数据丢失 + 一键迁移)
linux·运维·人工智能·windows·ubuntu·dify
醉舞经阁半卷书138 分钟前
从零到1了解Agent Skills
人工智能·机器学习
冰西瓜60040 分钟前
深度学习的数学原理(二十二)—— Seq2Seq编码器-解码器基础框架
人工智能·深度学习
袖手蹲40 分钟前
Arduino UNO Q 板载 Nanobot 自动化编程指南之七
运维·人工智能·自动化
AI医影跨模态组学41 分钟前
J Immunother Cancer(IF=10.6)中山大学孙逸仙纪念医院陈柏深等团队:动态时间数据预测NSCLC新辅助免疫化疗主要病理反应
人工智能·深度学习·机器学习·医学·医学影像
maxmaxma44 分钟前
ROS2 机器人 少年创客营:Day6 - colcon
机器人·ros2
liliwoliliwo1 小时前
vision transformer
人工智能·深度学习·transformer
佩奇大王1 小时前
P674 三羊献瑞
算法·深度优先·图论
tkevinjd1 小时前
hello-agents-chapter1-初识智能体
人工智能·ai·agent