GCOP
1.0
|
#include <rn.h>
Public Member Functions | |
Rn (int n=_n) | |
void | Lift (Vectornd &v, const Vectornd &xa, const Vectornd &xb) |
void | Retract (Vectornd &xb, const Vectornd &xa, const Vectornd &v) |
void | dtau (Matrixnd &M, const Vectornd &v) |
void | Adtau (Matrixnd &M, const Vectornd &v) |
virtual bool | Bound (Vectornd &v, Vectornd &d, const Vectornd &v0) |
virtual bool | Clip (Vectornd &v) const |
Static Public Member Functions | |
static Rn< _n > & | Instance () |
Public Attributes | |
char | bndType |
type of bound | |
Vectornd | w |
ellipsoidal bound weights | |
Static Public Attributes | |
static const char | BND_BOX = 0 |
static const char | BND_ELLIPSOID = 1 |
n-dimension vector space, i.e.
Adjoint map of the retraction, i.e. Ad((v))
M | resulting matrix operator |
v | Lie algebra element |
Reimplemented from gcop::Manifold< Matrix< double, _n, 1 >, _n >.
bool gcop::Rn< _n >::Bound | ( | Vectornd & | v, |
Vectornd & | d, | ||
const Vectornd & | v0 | ||
) | [virtual] |
Find a vector v = v0 + d for given v0 and d such that v satisfies the bounds; this is accomplished by modifying d appropriately and returning the updated v and d. Default implementation is assuming the bound is a box defined by the vectors lb and ub.
v | vector satisfying bounds |
d | direction |
v0 | starting vector |
Referenced by gcop::Ddp< T, nx, nu, np >::Forward().
Clips a vector to be within lb and ub
vector | v |
Right-trivialized derivative of the retraction map dtau(v)
M | matrix operator |
v | Lie algebra element |
Reimplemented from gcop::Manifold< Matrix< double, _n, 1 >, _n >.
Singleton to be used only for fixed-size Rn, i.e. Rn<n>::Instance()
void gcop::Rn< _n >::Lift | ( | Vectornd & | v, |
const Vectornd & | xa, | ||
const Vectornd & | xb | ||
) | [virtual] |
Compute a lie algebra element corresponding to a group action between two given states on a manifold. This operation geometrically means that the curve from xa to xb is "lifted" to the tangent space of the manifold to a vector represented by the lie algebra element.
The element can also be regarded as a difference between the two states xa and xb. On a vector space this is v = xb - xa. On homogeneous manifolds v is a Lie algebra element corresponding to an action taking xa to xb.
v | Lie algebra element (regarded as difference between xb and xa) |
xa | starting state |
xb | ending state |
Implements gcop::Manifold< Matrix< double, _n, 1 >, _n >.
void gcop::Rn< _n >::Retract | ( | Vectornd & | xb, |
const Vectornd & | xa, | ||
const Vectornd & | v | ||
) | [virtual] |
Retracts a tangent vector on a manifold at state xa to produce a new state xb. The vector is represented using a Lie algebra element.
The operation can also be regarded as a way to perform addition on manifolds, i.e. to increment a given state xa by v to get a new state xb. On a vector space this is xb = xa + v. On homogeneous manifolds v is a Lie algebra element corresponding to an action taking xa to xb.
xb | ending state |
xa | starting state |
v | Lie algebra element (regarded as difference between xb and xa) |
Implements gcop::Manifold< Matrix< double, _n, 1 >, _n >.
const char gcop::Rn< _n >::BND_ELLIPSOID = 1 [static] |
ellipsoidal bound weights
Referenced by gcop::Rn< _n >::Rn().