# 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 (*, 7), 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 unit quaternion representing the rotation with a vector representing the translation.

$\mathrm{data}[*, :] = [t_x, t_y, t_z, q_x, q_y, q_z, q_w],$

where $$\begin{pmatrix} t_x & t_y & t_z \end{pmatrix}\top \in \mathbb{R}^3$$ is the translation and $$\begin{pmatrix} q_x & q_y & q_z & q_w \end{pmatrix}\top$$ is the unit quaternion as in pypose.SO3.

Examples

>>> pp.SE3(torch.randn(2, 7))
SE3Type LieTensor:
tensor([[ 0.1626,  1.6349,  0.3607,  0.2848, -0.0948,  0.1541,  1.0003],
[ 1.4034, -1.3085, -0.8886, -1.6703,  0.7381,  1.5575,  0.6280]])
>>> pp.SE3([0, 0, 0, 0, 0, 0, 1])
SE3Type LieTensor:
tensor([0., 0., 0., 0., 0., 0., 1.])


If data is tensor-like, the last dimension should correspond to the 7 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.Log, pypose.Inv, pypose.Act, pypose.Retr, pypose.Adj, pypose.AdjT, pypose.Jinvp for implementations of relevant operations.