Isaac Sim知识小解(4):Transformation

1. 三维刚体的空间表示

假设空间中的一个物体是刚体。换句话来说,这个物体在空间中不会因为任何的力的作用而产生任何的形变,这使得我们可以简单地将这个物体拆分成两个部分,一个是物体的形状信息,一个是物体的位置信息。

形状信息 :在 Isaac Sim 里面通常以 Prim 进行表示,并且以 Mesh 的方式进行储存,即一些通过一系列的点,以及一些多元组表示的面组成的信息。

作为一个例子,在大多数的 Mesh 中,面均以三角形存储,如一个 Mesh 可以被表示为 [(0, 0, 0), (1, 1, 0), (1, 1, 1)] 以及 [(0, 1, 2)] 来表示,前者表示这个 Mesh 的三个顶点在空间中的坐标,而后者则表示仅存在一个面,这个面由序号 0, 1, 2 的三个顶点组成。

位置信息 :通过两个变量来组成,即 position 和 orientation。

  • 平移

  • 旋转:欧拉角、旋转矩阵、四元数

对于四元数,在 Isaac Sim 中,默认使用的是 scalar_first 的形式,也就是 [w, x, y, z] 的形式,而我们最常使用的旋转库,scipy.spatial.transform.Rotation 默认使用的是 vector_first 的形式,也就是 [x, y, z, w] 的形式。

博客:欧拉角、quat四元组和旋转矩阵的关系

2. World Frame

  • World Frame

一般来说,任何一个坐标系都可以通过关于另一个坐标系的平移和旋转来表示。事实上这种通过相对关系来进行的表示并不方便,而是存在一个绝对的基准,这样只维护不同坐标系相对于这个绝对的基准的变换关系。

这里合理的,因此给出定义,World Frame,为世界坐标系,是某个空间内绝对的静止的坐标系。

在 Isaac Sim 中,我们认为 Root,即 get_prim_at_path("/") 所获得的 Prim 表示的坐标系为世界坐标系。

  • Local Frame

同时,我们也存在另一种需求,诸如我们想要将一个 Camera 和 Franka hand 进行固连,即让 Camera 随着 Franka hand 而运动,似乎我们只能定义一个 Camera 相对于 Franka hand 的变换,从而使得这个变换为固定值。实际中,我们只需要将 Camera 放置在 Franka hand 的 prim_path 下方,就可以确保 franka hand 在变换的过程中使得 Camera 一起变换。

因此在计算 World Frame 的变换的过程中,事实上是通过链式进行传播,将若干 Local Frame 的变换组合在一起而得到的。

3. Isaac Sim 的 API

Isaac Sim 在提供了仿真平台的同时,大概还是给出了一些比较不错的接口的,即之前事实上提到过的,Isaac Sim XFormPrim。在这里给出程序示例:

python 复制代码
from omni.isaac.core.prims import XFormPrim
from scipy.spatial.transform import Rotation as R

object_xform = XFormPrim("/World/object")
position, orientation = object_xform.get_world_pose()

position[2] += 2.0

orientation_R = R.from_quat(orientation[[1, 2, 3, 0]]) * R.from_euler("xyz", np.array([90,0,0]), degrees=True)
orientation = orientation_R.as_quat()[[3, 0, 1, 2]]

object_xform.set_world_pose(position=position, orientation=orientation)
相关推荐
几何心凉几秒前
端到端具身交互智能正式上线:让 AI 通过屏幕和机器人,真正走进现实世界
前端·人工智能·实时互动·机器人·交互
语音之家18 分钟前
NeurIPS 2026|RAIL:从人类认知能力视角重新审视大型音频语言模型的听觉智能
人工智能·机器人·语⾳agent·音频语言
深圳多奥智能一卡(码、脸)通系统1 小时前
高效电梯运力智能提升与机器人(狗)乘梯管理系统落地方案
机器人·agv·机器狗·电梯门禁·梯控·智能梯控·amr
硅谷秋水1 小时前
Robo-COP 总结
人工智能·深度学习·机器学习·语言模型·机器人
Rock Chin69710 小时前
把 n8n 接进 Slack:在对话里 @机器人 触发自动化工作流
运维·机器人·自动化
物联网软硬件开发-轨物科技11 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
真的想上岸啊13 小时前
笔记 1:思小伴 搭载 EEG 脑电专注力监测的多功能儿童陪伴桌宠
机器人
是Yu欸13 小时前
机器人握手前如何找准你的手:ECCV 2026 TAIHRI 论文解读
机器人
深蓝学院13 小时前
TRO顶刊|隐蔽攻击下的多机器人安全学习控制:小规模学习,大规模泛化
机器人·具身智能
niyongsheng15 小时前
多智能体连续时间内路径规划:AA-SIPP(m) 的 Rust 实现与算法
算法·rust·机器人