47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
| /**
 | |
| * @file   Simulated3D.h
 | |
| * @brief  measurement functions and derivatives for simulated 3D robot
 | |
| * @author Alex Cunningham
 | |
| **/
 | |
| 
 | |
| // \callgraph
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include "NonlinearFactor.h"
 | |
| 
 | |
| // \namespace
 | |
| 
 | |
| namespace gtsam {
 | |
| 	
 | |
| 	/**
 | |
| 	* Prior on a single pose
 | |
| 	*/
 | |
| 	Vector prior_3D (const Vector& x); 
 | |
| 	Matrix Dprior_3D(const Vector& x);
 | |
| 	
 | |
| 	/**
 | |
| 	* odometry between two poses
 | |
| 	*/
 | |
| 	Vector odo_3D(const Vector& x1, const Vector& x2);
 | |
| 	Matrix Dodo1_3D(const Vector& x1, const Vector& x2);
 | |
| 	Matrix Dodo2_3D(const Vector& x1, const Vector& x2);
 | |
| 	
 | |
| 	/**
 | |
| 	*  measurement between landmark and pose
 | |
| 	*/
 | |
| 	Vector mea_3D(const Vector& x,  const Vector& l);
 | |
| 	Matrix Dmea1_3D(const Vector& x, const Vector& l);
 | |
| 	Matrix Dmea2_3D(const Vector& x, const Vector& l);
 | |
| 	
 | |
| 	struct Point2Prior3D : public NonlinearFactor1 {
 | |
| 		Point2Prior3D(const Vector& mu, double sigma, const std::string& key):
 | |
| 		NonlinearFactor1(mu, sigma, prior_3D, key, Dprior_3D) {}
 | |
| 	};
 | |
| 	
 | |
| 	struct Simulated3DMeasurement : public NonlinearFactor2 {
 | |
| 		Simulated3DMeasurement(const Vector& z, double sigma, const std::string& key1, const std::string& key2):
 | |
| 		NonlinearFactor2(z, sigma, mea_3D, key1, Dmea1_3D, key2, Dmea2_3D) {}
 | |
| 	};
 | |
| 	
 | |
| } // namespace gtsam
 |