创建操作#

用于创建与可微分仿真兼容的 Genesis tensors 的函数。

概述#

在使用可微分仿真时,使用这些函数创建与梯度系统正确集成的 tensors。

创建 Tensors#

从 Python 值创建#

import genesis as gs
import torch

gs.init()

# 在正确的设备上创建 tensor
tensor = torch.tensor([1.0, 2.0, 3.0], device=gs.device, dtype=gs.tc_float)

# 启用梯度追踪
tensor = torch.tensor(
    [1.0, 2.0, 3.0],
    device=gs.device,
    dtype=gs.tc_float,
    requires_grad=True,
)

零/一 Tensors#

# 创建零 tensor
zeros = torch.zeros(10, device=gs.device, dtype=gs.tc_float)

# 创建一 tensor
ones = torch.ones(10, device=gs.device, dtype=gs.tc_float)

# 启用梯度追踪
zeros_grad = torch.zeros(10, device=gs.device, dtype=gs.tc_float, requires_grad=True)

随机 Tensors#

# 随机均匀分布 [0, 1)
rand = torch.rand(10, device=gs.device, dtype=gs.tc_float)

# 随机正态分布
randn = torch.randn(10, device=gs.device, dtype=gs.tc_float)

转换为 Genesis Tensors#

标准 PyTorch tensors 在与 scene state 结合时会变成 Genesis tensors:

# 标准 PyTorch tensor
external = torch.tensor([1.0, 2.0, 3.0], device=gs.device, requires_grad=True)

# 与 scene state 结合 -> Genesis tensor
pos = robot.get_pos()
combined = pos + external  # 结果是 Genesis tensor

API 参考#

genesis.grad.creation_ops.torch_op_wrapper(torch_op)[source]#
genesis.grad.creation_ops.from_torch(torch_tensor, dtype=None, requires_grad=False, detach=True, scene=None)[source]#

By default, detach is True, meaning that this function returns a new leaf tensor which is not connected to torch_tensor’s computation gragh.

另请参阅#