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
 information about the Lie geometry:
   http://ethaneade.com/lie.pdf

 See rotationsfactory and euclideanfactory for details.

 See also: rotationsfactory euclideanfactory

CROSS-REFERENCE INFORMATION ^

This function calls: 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:
0036 %   http://ethaneade.com/lie.pdf
0037 %
0038 % See rotationsfactory and euclideanfactory for details.
0039 %
0040 % See also: rotationsfactory euclideanfactory
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 30-Sep-2022 13:18:25 by m2html © 2005