add logmap expression
							parent
							
								
									9e032e4511
								
							
						
					
					
						commit
						e0425f3548
					
				|  | @ -138,4 +138,21 @@ Point2_ uncalibrate(const Expression<CALIBRATION>& K, const Point2_& xy_hat) { | |||
|   return Point2_(K, &CALIBRATION::uncalibrate, xy_hat); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /// logmap
 | ||||
| // TODO(dellaert): Should work but fails because of a type deduction conflict.
 | ||||
| // template <typename T>
 | ||||
| // gtsam::Expression<typename gtsam::traits<T>::TangentVector> logmap(
 | ||||
| //     const gtsam::Expression<T> &x1, const gtsam::Expression<T> &x2) {
 | ||||
| //   return gtsam::Expression<typename gtsam::traits<T>::TangentVector>(
 | ||||
| //       x1, &T::logmap, x2);
 | ||||
| // }
 | ||||
| 
 | ||||
| template <typename T> | ||||
| gtsam::Expression<typename gtsam::traits<T>::TangentVector> logmap( | ||||
|     const gtsam::Expression<T> &x1, const gtsam::Expression<T> &x2) { | ||||
|   return Expression<typename gtsam::traits<T>::TangentVector>( | ||||
|       gtsam::traits<T>::Logmap, between(x1, x2)); | ||||
| } | ||||
| 
 | ||||
| }  // \namespace gtsam
 | ||||
|  |  | |||
|  | @ -58,6 +58,12 @@ TEST(SlamExpressions, unrotate) { | |||
|   const Point3_ q_ = unrotate(R_, p_); | ||||
| } | ||||
| 
 | ||||
| TEST(SlamExpressions, logmap) { | ||||
|   Pose3_ T1_(0); | ||||
|   Pose3_ T2_(1); | ||||
|   const Vector6_ l = logmap(T1_, T2_); | ||||
| } | ||||
| 
 | ||||
| /* ************************************************************************* */ | ||||
| int main() { | ||||
|   TestResult tr; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue