Home > manopt > manifolds > specialeuclidean > specialeuclideanfactory.m

# specialeuclideanfactory

## PURPOSE

Returns a manifold structure to optimize over the special Euclidean group

## SYNOPSIS

function M = specialeuclideanfactory(n, k)

## DESCRIPTION

``` Returns a manifold structure to optimize over the special Euclidean group

function M = specialeuclideanfactory(n)
function M = specialeuclideanfactory(n, k)

The special Euclidean group (the manifold of rigid transformations):
This is a product manifold of the rotations group SO(n) and the
translation group R^n, copied k times. (See note below.)

Points on the manifold are represented as structures X with two fields.
X.R is a 3D array of size nxnxk such that each slice X.R(:, :, i)
corresponds to a rotation matrix (orthogonal with determinant 1).
X.t is a matrix of size nxk such that each column X.t(:, i) corresponds
to a translation vector.

Tangent vectors are represented as structures with the same fields. Note
that rotational components of the tangent vectors are represented in the
Lie algebra, i.e., each slice Xdot.R(:, :, i) is a skew-symmetric matrix.
Use M.tangent2ambient(X, Xdot) to obtain a representation in the ambient
space. This is often necessary when defining problem.ehess(X, Xdot).

This is a description of SE(n)^k with the induced metric from the
embedding space (R^nxn)^k x (R^n)^k, i.e., this manifold is a Riemannian
submanifold of the embedding Euclidean space with the usual inner
product.

By default, k = 1.

Note: this is a product geometry: it may not be the "appropriate"
geometry to give to SE(n) for your application. In particular, this is
not the Lie geometry of SE(n), because SE(n) is not a direct product of
SO(n) and R^n: it is only a semidirect product. Following a comment by
Martijn Zeestraten on the Manopt forum, see this file for more

See rotationsfactory and euclideanfactory for details.

## CROSS-REFERENCE INFORMATION

This function calls:
• euclideanfactory Returns a manifold struct to optimize over real matrices.
• rotationsfactory Returns a manifold structure to optimize over rotation matrices.
• productmanifold Returns a structure describing a product manifold M = M1 x M2 x ... x Mn.
This function is called by:

## SOURCE CODE

```0001 function M = specialeuclideanfactory(n, k)
0002 % Returns a manifold structure to optimize over the special Euclidean group
0003 %
0004 % function M = specialeuclideanfactory(n)
0005 % function M = specialeuclideanfactory(n, k)
0006 %
0007 % The special Euclidean group (the manifold of rigid transformations):
0008 % This is a product manifold of the rotations group SO(n) and the
0009 % translation group R^n, copied k times. (See note below.)
0010 %
0011 % Points on the manifold are represented as structures X with two fields.
0012 % X.R is a 3D array of size nxnxk such that each slice X.R(:, :, i)
0013 % corresponds to a rotation matrix (orthogonal with determinant 1).
0014 % X.t is a matrix of size nxk such that each column X.t(:, i) corresponds
0015 % to a translation vector.
0016 %
0017 % Tangent vectors are represented as structures with the same fields. Note
0018 % that rotational components of the tangent vectors are represented in the
0019 % Lie algebra, i.e., each slice Xdot.R(:, :, i) is a skew-symmetric matrix.
0020 % Use M.tangent2ambient(X, Xdot) to obtain a representation in the ambient
0021 % space. This is often necessary when defining problem.ehess(X, Xdot).
0022 %
0023 % This is a description of SE(n)^k with the induced metric from the
0024 % embedding space (R^nxn)^k x (R^n)^k, i.e., this manifold is a Riemannian
0025 % submanifold of the embedding Euclidean space with the usual inner
0026 % product.
0027 %
0028 % By default, k = 1.
0029 %
0030 % Note: this is a product geometry: it may not be the "appropriate"
0031 % geometry to give to SE(n) for your application. In particular, this is
0032 % not the Lie geometry of SE(n), because SE(n) is not a direct product of
0033 % SO(n) and R^n: it is only a semidirect product. Following a comment by
0034 % Martijn Zeestraten on the Manopt forum, see this file for more
0035 % information about the Lie geometry:
0037 %
0038 % See rotationsfactory and euclideanfactory for details.
0039 %
0041
0042 % This file is part of Manopt: www.manopt.org.
0043 % Original author: Nicolas Boumal, Sep. 23, 2014.
0044 % Contributors:
0045 % Change log:
0046
0047
0048     if ~exist('k', 'var') || isempty(k)
0049         k = 1;
0050     end
0051
0052     elements = struct();
0053     elements.R = rotationsfactory(n, k);
0054     elements.t = euclideanfactory(n, k);
0055
0056     M = productmanifold(elements);
0057
0058 end```

Generated on Fri 08-Sep-2017 12:43:19 by m2html © 2005