Standardizing interfaces
							parent
							
								
									f6ad82eee6
								
							
						
					
					
						commit
						21f8079924
					
				|  | @ -137,12 +137,13 @@ namespace gtsam { | |||
|     /// print only keys
 | ||||
|     void printKeys(const std::string& s = "Factor", const KeyFormatter& formatter = DefaultKeyFormatter) const; | ||||
| 
 | ||||
|   protected: | ||||
|     /// check equality
 | ||||
|     bool equals(const This& other, double tol = 1e-9) const; | ||||
| 
 | ||||
|     /// @}
 | ||||
| 
 | ||||
| 
 | ||||
|   public: | ||||
|     /// @name Advanced Interface
 | ||||
|     /// @{
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -128,7 +128,7 @@ namespace gtsam { | |||
| 
 | ||||
|     /** Scale the values in \c gy according to the sigmas for the frontal variables in this
 | ||||
|      *  conditional. */ | ||||
|     void scaleFrontalsBySigma(VectorValuesUnordered& gy) const; | ||||
|     __declspec(deprecated) void scaleFrontalsBySigma(VectorValuesUnordered& gy) const; | ||||
| 
 | ||||
|   private: | ||||
| 
 | ||||
|  | @ -136,10 +136,8 @@ namespace gtsam { | |||
|     friend class boost::serialization::access; | ||||
|     template<class Archive> | ||||
|     void serialize(Archive & ar, const unsigned int version) { | ||||
|       ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(IndexConditional); | ||||
|       ar & BOOST_SERIALIZATION_NVP(matrix_); | ||||
|       ar & BOOST_SERIALIZATION_NVP(rsd_); | ||||
|       ar & BOOST_SERIALIZATION_NVP(sigmas_); | ||||
|       ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(BaseFactor); | ||||
|       ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(BaseConditional); | ||||
|     } | ||||
|   }; // GaussianConditionalUnordered
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -60,6 +60,24 @@ namespace gtsam { | |||
|     /** Return the dimension of the variable pointed to by the given key iterator */ | ||||
|     virtual size_t getDim(const_iterator variable) const = 0; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Return a dense \f$ [ \;A\;b\; ] \in \mathbb{R}^{m \times n+1} \f$ | ||||
|      * Jacobian matrix, augmented with b with the noise models baked | ||||
|      * into A and b.  The negative log-likelihood is | ||||
|      * \f$ \frac{1}{2} \Vert Ax-b \Vert^2 \f$.  See also | ||||
|      * GaussianFactorGraph::jacobian and GaussianFactorGraph::sparseJacobian. | ||||
|      */ | ||||
|     virtual Matrix augmentedJacobian() const = 0; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Return the dense Jacobian \f$ A \f$ and right-hand-side \f$ b \f$, | ||||
|      * with the noise models baked into A and b. The negative log-likelihood | ||||
|      * is \f$ \frac{1}{2} \Vert Ax-b \Vert^2 \f$.  See also | ||||
|      * GaussianFactorGraph::augmentedJacobian and | ||||
|      * GaussianFactorGraph::sparseJacobian. | ||||
|      */ | ||||
|     virtual std::pair<Matrix,Vector> jacobian() const = 0; | ||||
| 
 | ||||
|     /** Return the augmented information matrix represented by this GaussianFactorUnordered.
 | ||||
|      * The augmented information matrix contains the information matrix with an | ||||
|      * additional column holding the information vector, and an additional row | ||||
|  |  | |||
|  | @ -59,4 +59,11 @@ namespace gtsam { | |||
|       SymbolicFactorUnordered::FromIterator(orderedKeys.begin() + nFrontals, orderedKeys.end()))); | ||||
|   } | ||||
| 
 | ||||
|   /* ************************************************************************* */ | ||||
|   std::pair<boost::shared_ptr<SymbolicConditionalUnordered>, boost::shared_ptr<SymbolicFactorUnordered> > | ||||
|     SymbolicFactorUnordered::eliminate(const OrderingUnordered& keys) const | ||||
|   { | ||||
| 
 | ||||
|   } | ||||
| 
 | ||||
| } // gtsam
 | ||||
|  |  | |||
|  | @ -29,14 +29,9 @@ namespace gtsam { | |||
|   // Forward declarations
 | ||||
|   class SymbolicConditionalUnordered; | ||||
| 
 | ||||
|   /**
 | ||||
|    * SymbolicFactorUnordered serves two purposes.  It is the base class for all linear | ||||
|    * factors (GaussianFactor, JacobianFactor, HessianFactor), and also functions | ||||
|    * as a symbolic factor, used to do symbolic elimination by JunctionTree. | ||||
|    * | ||||
|    * It derives from Factor with a key type of Key, an unsigned integer. | ||||
|    * \nosubgrouping | ||||
|    */ | ||||
|   /** SymbolicFactorUnordered represents a symbolic factor that specifies graph topology but is not
 | ||||
|    *  associated with any numerical function. | ||||
|    *  \nosubgrouping */ | ||||
|   class GTSAM_EXPORT SymbolicFactorUnordered: public FactorUnordered { | ||||
| 
 | ||||
|   public: | ||||
|  | @ -92,7 +87,8 @@ namespace gtsam { | |||
|     static SymbolicFactorUnordered FromIterator(KEYITERATOR beginKey, KEYITERATOR endKey) { | ||||
|       return SymbolicFactorUnordered(Base::FromIterators(beginKey, endKey)); } | ||||
| 
 | ||||
|     /** Constructor from a collection of keys */ | ||||
|     /** Constructor from a collection of keys - compatible with boost::assign::list_of and
 | ||||
|      *  boost::assign::cref_list_of */ | ||||
|     template<class CONTAINER> | ||||
|     static SymbolicFactorUnordered FromKeys(const CONTAINER& keys) { | ||||
|       return SymbolicFactorUnordered(Base::FromKeys(keys)); } | ||||
|  | @ -105,6 +101,13 @@ namespace gtsam { | |||
|     /** Whether the factor is empty (involves zero variables). */ | ||||
|     bool empty() const { return keys_.empty(); } | ||||
| 
 | ||||
|     /** Eliminate the variables in \c keys, in the order specified in \c keys, returning a
 | ||||
|      *  conditional and marginal. */ | ||||
|     std::pair<boost::shared_ptr<SymbolicConditionalUnordered>, boost::shared_ptr<SymbolicFactorUnordered> > | ||||
|       eliminate(const OrderingUnordered& keys) const; | ||||
| 
 | ||||
|     /// @}
 | ||||
| 
 | ||||
|   private: | ||||
|     /** Serialization function */ | ||||
|     friend class boost::serialization::access; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue