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)
相关推荐
EAI-Robotics1 小时前
机器人操作鲁棒性:当机械手遇上真实世界的不确定性
人工智能·算法·机器人
深圳多奥智能一卡(码、脸)通系统3 小时前
机器人(狗)和AGV,AMR自动开门过闸配合使用的门控规格书
机器人·agv·机器狗·门禁·梯控·智能门禁·amr
2601_963671688 小时前
机器人产业演进逻辑与商业化落地全景攻略
机器人
rosemary5129 小时前
WSL2 ROS2 控制Issac sim中机器人
机器人·ros2·issac sim
陈天伟教授20 小时前
FreeCAD 启动后小窗口闪现即退的解决思路
人工智能·机器人·工业设计
workflower21 小时前
设备单元级(L1)实施路径
人工智能·线性代数·矩阵·机器人·开源
iPad协议个微协议1 天前
企业微信文件上传下载在自动化系统中的处理方式
java·运维·人工智能·机器人·自动化·企业微信
沫儿笙1 天前
克鲁斯弧焊机器人混合气智能节气装置
机器人
辰尘_星启1 天前
【三维重建】概述
计算机视觉·机器人·slam·控制·三维重建·sfm
硅谷秋水1 天前
FATE:面向物理落地机器人课程学习具备主动修复功能且考虑可行性-觉察的闭环任务生成方法
人工智能·深度学习·语言模型·机器人