68 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
		
		
			
		
	
	
			68 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @file    simulated2D.cpp
							 | 
						||
| 
								 | 
							
								 * @brief   measurement functions and derivatives for simulated 2D robot
							 | 
						||
| 
								 | 
							
								 * @author  Frank Dellaert
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "simulated2D.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace gtsam {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** prior on a single pose */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* ************************************************************************* */
							 | 
						||
| 
								 | 
							
								Vector prior (const Vector& x) {return x;}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* ************************************************************************* */
							 | 
						||
| 
								 | 
							
								Matrix Dprior(const Vector& x) {
							 | 
						||
| 
								 | 
							
								  Matrix H(2,2);
							 | 
						||
| 
								 | 
							
								  H(0,0)=1;  H(0,1)=0;
							 | 
						||
| 
								 | 
							
								  H(1,0)=0;  H(1,1)=1;
							 | 
						||
| 
								 | 
							
								  return H;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/* ************************************************************************* */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** odometry between two poses */                                
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* ************************************************************************* */
							 | 
						||
| 
								 | 
							
								Vector odo(const Vector& x1, const Vector& x2) {return x2 - x1;}
							 | 
						||
| 
								 | 
							
								Matrix Dodo1(const Vector& x1, const Vector& x2) {
							 | 
						||
| 
								 | 
							
								  Matrix H(2,2);
							 | 
						||
| 
								 | 
							
								  H(0,0)=-1;  H(0,1)= 0;
							 | 
						||
| 
								 | 
							
								  H(1,0)= 0;  H(1,1)=-1;
							 | 
						||
| 
								 | 
							
								  return H;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* ************************************************************************* */
							 | 
						||
| 
								 | 
							
								Matrix Dodo2(const Vector& x1, const Vector& x2) {
							 | 
						||
| 
								 | 
							
								  Matrix H(2,2);
							 | 
						||
| 
								 | 
							
								  H(0,0)= 1;  H(0,1)= 0;
							 | 
						||
| 
								 | 
							
								  H(1,0)= 0;  H(1,1)= 1;
							 | 
						||
| 
								 | 
							
								  return H;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* ************************************************************************* */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** measurement between landmark and pose */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* ************************************************************************* */
							 | 
						||
| 
								 | 
							
								Vector mea(const Vector& x,  const Vector& l)  {return l  - x;}
							 | 
						||
| 
								 | 
							
								Matrix Dmea1(const Vector& x, const Vector& l) {
							 | 
						||
| 
								 | 
							
								  Matrix H(2,2);
							 | 
						||
| 
								 | 
							
								  H(0,0)=-1;  H(0,1)= 0;
							 | 
						||
| 
								 | 
							
								  H(1,0)= 0;  H(1,1)=-1;
							 | 
						||
| 
								 | 
							
								  return H;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* ************************************************************************* */
							 | 
						||
| 
								 | 
							
								Matrix Dmea2(const Vector& x, const Vector& l) {
							 | 
						||
| 
								 | 
							
								  Matrix H(2,2);
							 | 
						||
| 
								 | 
							
								  H(0,0)= 1;  H(0,1)= 0;
							 | 
						||
| 
								 | 
							
								  H(1,0)= 0;  H(1,1)= 1;
							 | 
						||
| 
								 | 
							
								  return H;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* ************************************************************************* */
							 | 
						||
| 
								 | 
							
								} // namespace gtsam
							 |