Shortcuts

pypose.se3

pypose.se3 = functools.partial(<class 'pypose.lietensor.lietensor.LieTensor'>, ltype=<pypose.lietensor.lietensor.se3Type object>)

Alias of se3 type LieTensor.

Parameters:

data (Tensor, or list, or ‘int…’) –

A Tensor object, or constructing a Tensor object from list, which defines tensor data (see below), or from ‘int…’, which defines tensor shape.

The shape of Tensor object must be (*, 6), where * is empty, one, or more batched dimensions (the lshape of this LieTensor), otherwise error will be raised.

Internally, se3 LieTensors are stored by concatenating the “velocity” vector with the axis-angle representation of the rotation:

\[\mathrm{data}[*, :] = [\tau_x, \tau_y, \tau_z, \delta_x, \delta_y, \delta_z], \]

where \(\begin{pmatrix} \tau_x & \tau_y & \tau_z \end{pmatrix}^T = \mathbf{J}^{-1} \begin{pmatrix} t_x & t_y & t_z \end{pmatrix}^T\) is the product between the left Jacobian inverse (of SO3’s logarithm map) and the translation vector, and \(\begin{pmatrix} \delta_x & \delta_y & \delta_z \end{pmatrix}^T\) is the axis-angle vector as in pypose.so3. More details go to pypose.Log() with SE3_type input.

Examples

>>> pp.se3(torch.randn(2, 6))
se3Type LieTensor:
tensor([[-0.8710, -1.4994, -0.2843,  1.0185, -0.3932, -0.4839],
        [-0.4750, -0.4804, -0.7083, -1.8141, -1.4409, -0.3125]])
>>> pp.se3([0, 0, 0, 0, 0, 1])
se3Type LieTensor:
tensor([0., 0., 0., 0., 0., 1.])

If data is tensor-like, the last dimension should correspond to the 6 elements of the above embedding.

Note

It is not advised to construct se3 Tensors by specifying storage sizes with ‘int…’, which does not initialize data.

Consider using pypose.randn_se3 or pypose.identity_se3 instead.

See pypose.Exp, pypose.Inv for implementations of relevant operations.

Docs

Access documentation for PyPose

View Docs

Tutorials

Get started with tutorials and examples

View Tutorials

Get Started

Find resources and how to start using pypose

View Resources