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
							 |