GCOP
1.0
|
#include <group.h>
Public Member Functions | |
virtual void | inv (Matrixmd &gi, const Matrixmd &g) const |
virtual Matrixmd | inv (const Matrixmd &g) const |
virtual void | diff (Matrixmd &dg, const Matrixmd &ga, const Matrixmd &gb) const |
virtual Matrixmd | diff (const Matrixmd &ga, const Matrixmd &gb) const |
virtual void | hat (Matrixmd &g, const Vectornd &v) const =0 |
virtual Matrixmd | hat (const Vectornd &v) const |
virtual void | hatinv (Vectornd &v, const Matrixmd &g) const =0 |
virtual Vectornd | hatinv (const Matrixmd &g) const |
virtual void | Tg (Matrixnd &M, const Matrixmd &g) const =0 |
virtual Matrixnd | Tg (const Matrixmd &g) const |
virtual void | Ad (Matrixnd &M, const Matrixmd &g) const =0 |
virtual Matrixnd | Ad (const Matrixmd &g) const |
virtual void | ad (Matrixnd &M, const Vectornd &v) const =0 |
virtual Matrixnd | ad (const Vectornd &v) const |
virtual void | adinv (Vectornd &v, const Matrixnd &M) const =0 |
virtual Vectornd | adinv (const Matrixnd &M) const |
virtual void | exp (Matrixmd &g, const Vectornd &v) const =0 |
virtual Matrixmd | exp (const Vectornd &v) const |
virtual void | log (Vectornd &v, const Matrixmd &g) const =0 |
virtual Vectornd | log (const Matrixmd &g) const |
virtual void | cay (Matrixmd &g, const Vectornd &v) const |
virtual Matrixmd | cay (const Vectornd &v) const |
virtual void | cayinv (Vectornd &v, const Matrixmd &g) const |
virtual Vectornd | cayinv (const Matrixmd &g) const |
virtual void | dcay (Matrixnd &M, const Vectornd &v) const =0 |
virtual Matrixnd | dcay (const Vectornd &v) const |
virtual void | dcayinv (Matrixnd &M, const Vectornd &v) const =0 |
virtual Matrixnd | dcayinv (const Vectornd &v) const |
virtual void | Lift (Vectornd &v, const Matrixmd &ga, const Matrixmd &gb) |
virtual void | Retract (Matrixmd &gb, const Matrixmd &ga, const Vectornd &v) |
virtual void | dtau (Matrixnd &M, const Vectornd &v) |
virtual void | Adtau (Matrixnd &M, const Vectornd &v) |
Static Public Attributes | |
static const Matrixmd | Id = Matrix<double, m, m>::Identity() |
static const Vectornd | e = Matrix<double, n, 1>::Zero() |
General definition of a matrix Lie group and its algebra. Defines basic operations such as identity, inverse, multiplication, maps and flows from algebra to the group using exponentiation, adjoint transform and operators. This should serve as a base class for implementing specific groups.
A Lie group is also a homogeneous manifold, so it subclasses Manifold and provides a default implementation of the operations Manifold::Lift and Manifold::Retract
Subclasses should provide all methods (inv, cay, cayinv are provided for convenience but they can be implemented more efficiently for specific groups)
n | manifold dimension, i.e. algebra alements are vectors |
m | matrix dimension, group elements are m-by-m matrices |
Author: Marin Kobilarov -- Copyright (C) 2007
virtual void gcop::Group< n, m >::Ad | ( | Matrixnd & | M, |
const Matrixmd & | g | ||
) | const [pure virtual] |
The operator . One can think of this operator as a change-of-frame transformation.
m | resulting transformation |
g | group element corresponding to frame change |
Matrix< double, n, n > gcop::Group< n, m >::Ad | ( | const Matrixmd & | g | ) | const [virtual] |
The operator . One can think of this operator as a change-of-frame transformation.
g | group element corresponding to frame change |
virtual void gcop::Group< n, m >::ad | ( | Matrixnd & | M, |
const Vectornd & | v | ||
) | const [pure virtual] |
The operator . One can think of this operator as the infinitesimal of the change-of-frame transformation. It can also be written using brackets [*,*].
m | resulting map |
a | argument |
Matrix< double, n, n > gcop::Group< n, m >::ad | ( | const Vectornd & | v | ) | const [virtual] |
The operator . One can think of this operator as the infinitesimal of the change-of-frame transformation. It can also be written using brackets [*,*].
a | argument |
virtual void gcop::Group< n, m >::adinv | ( | Vectornd & | v, |
const Matrixnd & | M | ||
) | const [pure virtual] |
Inverse of ad operator
v | resulting algebra element |
m | ad operator matrix |
Matrix< double, n, 1 > gcop::Group< n, m >::adinv | ( | const Matrixnd & | M | ) | const [virtual] |
Inverse of ad operator
m | ad operator matrix |
void gcop::Group< n, m >::Adtau | ( | Matrixnd & | M, |
const Vectornd & | v | ||
) | [virtual] |
void gcop::Group< n, m >::cay | ( | Matrixmd & | g, |
const Vectornd & | v | ||
) | const [virtual] |
Cayley map of a lie algebra element a . Subclasses should implement this method
g | resulting group element |
v | Lie algebra element |
Matrix< double, m, m > gcop::Group< n, m >::cay | ( | const Vectornd & | v | ) | const [virtual] |
Cayley map of a lie algebra element a . Subclasses should implement this method
v | Lie algebra element |
void gcop::Group< n, m >::cayinv | ( | Vectornd & | v, |
const Matrixmd & | g | ||
) | const [virtual] |
Inverse of cayley . Subclasses should implement this method
v | Lie algebra element |
g | group element |
Referenced by gcop::MbsCspace::Lift(), and gcop::MbsManifold::Lift().
Matrix< double, n, 1 > gcop::Group< n, m >::cayinv | ( | const Matrixmd & | g | ) | const [virtual] |
Inverse of cayley . Subclasses should implement this method
g | group element |
virtual void gcop::Group< n, m >::dcay | ( | Matrixnd & | M, |
const Vectornd & | v | ||
) | const [pure virtual] |
Right-trivialized tangent of cayley
m | resulting linear map |
v | Lie algebra element |
Matrix< double, n, n > gcop::Group< n, m >::dcay | ( | const Vectornd & | v | ) | const [virtual] |
Right-trivialized tangent of cayley
v | Lie algebra element |
virtual void gcop::Group< n, m >::dcayinv | ( | Matrixnd & | M, |
const Vectornd & | v | ||
) | const [pure virtual] |
Right-trivialized tangent inverse of cayley
m | resulting linear map |
v | Lie algebra element |
Matrix< double, n, n > gcop::Group< n, m >::dcayinv | ( | const Vectornd & | v | ) | const [virtual] |
Right-trivialized tangent inverse of cayley
v | Lie algebra element |
void gcop::Group< n, m >::diff | ( | Matrixmd & | dg, |
const Matrixmd & | ga, | ||
const Matrixmd & | gb | ||
) | const [virtual] |
Compute the difference b/n two elements .
dg | resulting group element |
ga | first group element |
gb | second group element |
Referenced by gcop::GunicycleManifold::Lift().
Matrix< double, m, m > gcop::Group< n, m >::diff | ( | const Matrixmd & | ga, |
const Matrixmd & | gb | ||
) | const [virtual] |
Compute the difference b/n two elements .
ga | first group element |
gb | second group element |
void gcop::Group< n, m >::dtau | ( | Matrixnd & | M, |
const Vectornd & | v | ||
) | [virtual] |
virtual void gcop::Group< n, m >::exp | ( | Matrixmd & | g, |
const Vectornd & | v | ||
) | const [pure virtual] |
Exponentiate lie algebra element a . Subclasses should implement this method
g | resulting group element |
v | Lie algebra element |
Matrix< double, m, m > gcop::Group< n, m >::exp | ( | const Vectornd & | v | ) | const [virtual] |
Exponentiate lie algebra element a . Subclasses should implement this method
v | Lie algebra element |
virtual void gcop::Group< n, m >::hat | ( | Matrixmd & | g, |
const Vectornd & | v | ||
) | const [pure virtual] |
The operator such that $(v) I + v$
g | resulting map |
v | given algebra element |
Matrix< double, m, m > gcop::Group< n, m >::hat | ( | const Vectornd & | v | ) | const [virtual] |
The operator such that $(v) I + v$
v | given algebra element |
virtual void gcop::Group< n, m >::hatinv | ( | Vectornd & | v, |
const Matrixmd & | g | ||
) | const [pure virtual] |
Inverse of hat operator
v | resulting algebra element |
g | infinetisamal group element |
Matrix< double, n, 1 > gcop::Group< n, m >::hatinv | ( | const Matrixmd & | g | ) | const [virtual] |
Inverse of hat operator
g | infinetisamal group element |
void gcop::Group< n, m >::inv | ( | Matrixmd & | gi, |
const Matrixmd & | g | ||
) | const [virtual] |
Compute the inverse of a given group element
gi | inverse |
g | group element |
Matrix< double, m, m > gcop::Group< n, m >::inv | ( | const Matrixmd & | g | ) | const [virtual] |
Compute the inverse of a given group element
g | group element |
void gcop::Group< n, m >::Lift | ( | Vectornd & | v, |
const Matrixmd & | ga, | ||
const Matrixmd & | gb | ||
) | [virtual] |
virtual void gcop::Group< n, m >::log | ( | Vectornd & | v, |
const Matrixmd & | g | ||
) | const [pure virtual] |
Logarithm of a group element . Subclasses should implement this method
v | Lie algebra element |
g | group element |
Matrix< double, n, 1 > gcop::Group< n, m >::log | ( | const Matrixmd & | g | ) | const [virtual] |
Logarithm of a group element . Subclasses should implement this method
g | group element |
void gcop::Group< n, m >::Retract | ( | Matrixmd & | gb, |
const Matrixmd & | ga, | ||
const Vectornd & | v | ||
) | [virtual] |
virtual void gcop::Group< n, m >::Tg | ( | Matrixnd & | M, |
const Matrixmd & | g | ||
) | const [pure virtual] |
Tangent action
m | resulting action as a matrix |
g | infinetisamal group element |
Matrix< double, n, n > gcop::Group< n, m >::Tg | ( | const Matrixmd & | g | ) | const [virtual] |
Tangent action
g | infinetisamal group element |
Matrix< double, n, 1 > const gcop::Group< n, m >::e = Matrix<double, n, 1>::Zero() [static] |
Matrix< double, m, m > const gcop::Group< n, m >::Id = Matrix<double, m, m>::Identity() [static] |
Referenced by gcop::SE3::dcayinv(), and gcop::Gcay().