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, orlist, or ‘int…’) –A
Tensorobject, or constructing aTensorobject fromlist, which defines tensor data (see below), or from ‘int…’, which defines tensor shape.The shape of
Tensorobject must be(*, 7), where*is empty, one, or more batched dimensions (thelshapeof 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
datais 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_SE3orpypose.identity_SE3instead.See
pypose.Log,pypose.Inv,pypose.Act,pypose.Retr,pypose.Adj,pypose.AdjT,pypose.Jinvpfor implementations of relevant operations.