pypose.RxSO3¶
- pypose.RxSO3 = functools.partial(<class 'pypose.lietensor.lietensor.LieTensor'>, ltype=<pypose.lietensor.lietensor.RxSO3Type object>)¶
Alias of RxSO3 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(*, 5), where*is empty, one, or more batched dimensions (thelshapeof this LieTensor), otherwise error will be raised.
Internally, RxSO3 LieTensors are stored by concatenating the unit quaternion representing the rotation with a scaling factor:
\[\mathrm{data}[*, :] = [q_x, q_y, q_z, q_w, s], \]where \(\begin{pmatrix} q_x & q_y & q_z & q_w \end{pmatrix}^T\) is the unit quaternion as in
pypose.SO3and \(s \in \mathbb{R}\) is the scaling factor.Examples
>>> pp.RxSO3(torch.randn(2, 5)) RxSO3Type LieTensor: tensor([[-0.3693, 2.5155, -0.5384, -0.8119, -0.4798], [-0.4058, -0.5909, -0.4918, -0.2994, 0.5440]]) >>> pp.RxSO3([0, 0, 0, 1, 1]) RxSO3Type LieTensor: tensor([0., 0., 0., 1., 1.])
If
datais tensor-like, the last dimension should correspond to the 5 elements of the above embedding.Note
It is not advised to construct RxSO3 Tensors by specifying storage sizes with ‘
int…’, which does not initialize data.Consider using
pypose.randn_RxSO3orpypose.identity_RxSO3instead.See
pypose.Log,pypose.Inv,pypose.Act,pypose.Retr,pypose.Adj,pypose.AdjT,pypose.Jinvpfor implementations of relevant operations.