From 79086327a6a4b98331d831eeab3cc033b701f286 Mon Sep 17 00:00:00 2001 From: Paul Furgale Date: Thu, 11 Dec 2014 12:54:48 +0100 Subject: [PATCH] Making things in sync --- GTSAM-Concepts.md | 4 ++-- gtsam/base/concepts.h | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/GTSAM-Concepts.md b/GTSAM-Concepts.md index fca273c77..4acc24d73 100644 --- a/GTSAM-Concepts.md +++ b/GTSAM-Concepts.md @@ -27,6 +27,7 @@ In detail, we ask the following are defined in the namespace `gtsam::manifold::t * types: * `TangentVector`, type that lives in tangent space. This will almost always be an `Eigen::Matrix`. * `DefaultChart`, the default chart at a point p + * `ChartJacobian`, a typedef for `OptionalJacobian::value, dimension::value>`. * valid expressions: * `size_t dim = getDimension(p);` free function should be defined in case the dimension is not known at compile time. @@ -34,11 +35,10 @@ Anything else? Chart ----- -A given chart is implemented using a small class that defines the chart itself (from manifold to tangent space) and its inverse. +A given chart is implemented using a small class that defines the chart itself (from manifold to tangent space) and its inverse. The trait `gtsam::manifold::traits::DefaultChart::type` should point to the chart implementation. This specialization requires the following: * types: * `ManifoldType`, a pointer back to the type - * `Jacobian`, a typedef for `gtsam::OptionalJacobian` where the dimension is taken from `gtsam::maifold::traits::dimension`. * valid expressions: * `v = Chart::Local(p,q,Hp,Hq)`, the chart, from manifold to tangent space, think of it as *q (-) p* * `p = Chart::Retract(p,v,Hp,Hv)`, the inverse chart, from tangent space to manifold, think of it as *p (+) v* diff --git a/gtsam/base/concepts.h b/gtsam/base/concepts.h index 7608c0776..7c8fa3543 100644 --- a/gtsam/base/concepts.h +++ b/gtsam/base/concepts.h @@ -54,9 +54,12 @@ namespace traits { template struct dimension; template struct TangentVector; template struct DefaultChart; +template struct ChartJacobian { + typedef OptionalJacobian::value, dimension::value> value; +}; //@} -}// \ namespace traits +}// \ namespace manifold::traits /// Check invariants for Manifold type template