diff --git a/src/capture_base.h b/src/capture_base.h index cd195be7fc7ad5a8a2d547344e0cca360013cace..ac99b54e92328ae39b175dc21ec0efab2a4934ff 100644 --- a/src/capture_base.h +++ b/src/capture_base.h @@ -38,6 +38,12 @@ class CaptureBase : public NodeLinked<FrameBase, FeatureBase> CaptureBase(const TimeStamp& _ts, SensorBase* _sensor_ptr, const Eigen::VectorXs& _data, const Eigen::MatrixXs& _data_covariance); + + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * + **/ virtual ~CaptureBase(); /** \brief Set link to Frame diff --git a/src/capture_fix.h b/src/capture_fix.h index 103f9452e146eb3fb6dd642c4a78add0e17be3a5..984abf00c2fbaa043de29d94db6198946d39798f 100644 --- a/src/capture_fix.h +++ b/src/capture_fix.h @@ -16,6 +16,11 @@ class CaptureFix : public CaptureBase CaptureFix(const TimeStamp& _ts, SensorBase* _sensor_ptr, const Eigen::VectorXs& _data, const Eigen::MatrixXs& _data_covariance); + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * + **/ virtual ~CaptureFix(); virtual void processCapture(); diff --git a/src/capture_gps.h b/src/capture_gps.h index 4aa9d3c96cb917a3fd9a625c380d39fc4137b0de..ca9be411bb3d5177ec57363d7d1cacdbecd835b7 100644 --- a/src/capture_gps.h +++ b/src/capture_gps.h @@ -40,7 +40,11 @@ public: CaptureGPS(const TimeStamp& _ts, SensorBase* _sensor_ptr, const Eigen::VectorXs& _raw_data); - + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * + **/ virtual ~CaptureGPS(); void processCapture(); diff --git a/src/capture_gps_fix.h b/src/capture_gps_fix.h index 1a17154a41287073c721c78c67052298d0faba1d..2f8ebd4dda6b7c6c206fb94f43b6abc1ab666f33 100644 --- a/src/capture_gps_fix.h +++ b/src/capture_gps_fix.h @@ -18,6 +18,11 @@ class CaptureGPSFix : public CaptureBase CaptureGPSFix(const TimeStamp& _ts, SensorBase* _sensor_ptr, const Eigen::VectorXs& _data, const Eigen::MatrixXs& _data_covariance); + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * + **/ virtual ~CaptureGPSFix(); virtual void processCapture(); diff --git a/src/capture_laser_2D.h b/src/capture_laser_2D.h index 95c402510687690e11f5efae515af959a4d3ed40..babf6c1cd50b9840715dc345ec7cf5a8a3f1fc4a 100644 --- a/src/capture_laser_2D.h +++ b/src/capture_laser_2D.h @@ -69,10 +69,10 @@ class CaptureLaser2D : public CaptureBase **/ CaptureLaser2D(const TimeStamp & _ts, SensorBase* _sensor_ptr, const std::vector<float>& _ranges, const std::vector<float>& _intensities); - /** \brief Destructor - * - * Destructor - * + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * **/ virtual ~CaptureLaser2D(); diff --git a/src/capture_motion.h b/src/capture_motion.h index d272272321eecaa348e6cb39a0ecbde1f968d076..e62f91e4f52cef2d032fd0589c24e22b14894205 100644 --- a/src/capture_motion.h +++ b/src/capture_motion.h @@ -22,6 +22,11 @@ class CaptureMotion : public CaptureBase CaptureMotion(const TimeStamp& _init_ts, const TimeStamp& _final_ts, SensorBase* _sensor_ptr, const Eigen::VectorXs& _data, const Eigen::MatrixXs& _data_covariance); + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * + **/ virtual ~CaptureMotion(); virtual void integrateCapture(CaptureMotion* _new_capture) = 0; diff --git a/src/capture_odom_2D.h b/src/capture_odom_2D.h index d53d8677ed9eeb0b18f825efa66d51aeec04931b..c3a5d8c9b81218c78ca93bf49f64ef4fbe41a65d 100644 --- a/src/capture_odom_2D.h +++ b/src/capture_odom_2D.h @@ -20,7 +20,12 @@ class CaptureOdom2D : public CaptureMotion CaptureOdom2D(const TimeStamp& _init_ts, const TimeStamp& _final_ts, SensorBase* _sensor_ptr, const Eigen::Vector3s& _data); CaptureOdom2D(const TimeStamp& _init_ts, const TimeStamp& _final_ts, SensorBase* _sensor_ptr, const Eigen::Vector3s& _data, const Eigen::Matrix3s& _data_covariance); - + + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * + **/ virtual ~CaptureOdom2D(); virtual void processCapture(); diff --git a/src/capture_void.h b/src/capture_void.h index da96557ebd79489fc735068e42cd0b62ec8c70b9..1de4522e5871a09d7e55342284f099627e799441 100644 --- a/src/capture_void.h +++ b/src/capture_void.h @@ -10,6 +10,11 @@ class CaptureVoid : public CaptureBase public: CaptureVoid(const TimeStamp& _ts, SensorBase* _sensor_ptr); + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * + **/ virtual ~CaptureVoid(); virtual Eigen::VectorXs computePrior(const TimeStamp& _now) const; diff --git a/src/constraint_base.cpp b/src/constraint_base.cpp index 31d31c97c886ba3f47d5a72820ab77882e6a9c8b..b3110fcffb94eacb6ec3ede052885afd65ada4db 100644 --- a/src/constraint_base.cpp +++ b/src/constraint_base.cpp @@ -70,12 +70,6 @@ ConstraintBase::~ConstraintBase() landmark_ptr_->removeConstraintTo(this); } -//void ConstraintBase::destruct() -//{ -// if (!is_deleting_) -// up_node_ptr_->removeDownNode(this); -//} - ConstraintType ConstraintBase::getType() const { return type_; diff --git a/src/constraint_base.h b/src/constraint_base.h index c59fd6413fe3c82c95c3511643a33b3597b3cd98..fa41df4eb539a2640a724118ab679efdb87faa08 100644 --- a/src/constraint_base.h +++ b/src/constraint_base.h @@ -55,20 +55,13 @@ class ConstraintBase : public NodeLinked<FeatureBase, NodeTerminus> **/ ConstraintBase(ConstraintType _tp, LandmarkBase* _landmark_ptr, ConstraintStatus _status); - /** \brief Destructor - * - * Destructor + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) * **/ virtual ~ConstraintBase(); - /** \brief Destructor call if is not already deleting - * - * Destructor call if is not already deleting - * - */ - //virtual void destruct(); - /** \brief Returns the constraint type * * Returns the constraint type diff --git a/src/constraint_container.h b/src/constraint_container.h index bfedc48f3744cea0d879857dd56f10d94fb10f0e..dd45e22fc745ec8036400be795f8aa8c55a45813 100644 --- a/src/constraint_container.h +++ b/src/constraint_container.h @@ -23,7 +23,12 @@ class ConstraintContainer: public ConstraintSparse<3,2,1,2,1> assert(_corner >= 0 && _corner <= 3 && "Wrong corner id in constraint container constructor"); lmk_ptr_->addConstraintTo(this); } - + + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * + **/ virtual ~ConstraintContainer() { //std::cout << "deleting ConstraintContainer " << nodeId() << std::endl; diff --git a/src/constraint_corner_2D.h b/src/constraint_corner_2D.h index 9f5c2c478841f01c4b1fb6e24e897b4e40a12dc6..d603f91655203a1d5faa4fae8f3fd8d28f754b95 100644 --- a/src/constraint_corner_2D.h +++ b/src/constraint_corner_2D.h @@ -16,7 +16,12 @@ class ConstraintCorner2D: public ConstraintSparse<3,2,1,2,1> { landmark_ptr_->addConstraintTo(this); } - + + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * + **/ virtual ~ConstraintCorner2D() { //std::cout << "deleting ConstraintCorner2D " << nodeId() << std::endl; diff --git a/src/constraint_fix.h b/src/constraint_fix.h index a254a9d81bc8dec847591113b2c40e1deee5e7aa..fef49f4b9b768cf193be59ffb4d5d5512d1eae69 100644 --- a/src/constraint_fix.h +++ b/src/constraint_fix.h @@ -16,7 +16,12 @@ class ConstraintFix: public ConstraintSparse<3,2,1> { //std::cout << "creating ConstraintFix " << std::endl; } - + + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * + **/ virtual ~ConstraintFix() { // diff --git a/src/constraint_gps_2D.h b/src/constraint_gps_2D.h index 777496bda0379ead5ea4610065d5b01d3166ad92..0740930053aca9da527b7792cff6b0eaf43f2ac9 100644 --- a/src/constraint_gps_2D.h +++ b/src/constraint_gps_2D.h @@ -16,7 +16,12 @@ class ConstraintGPS2D: public ConstraintSparse<2,2> { // } - + + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * + **/ virtual ~ConstraintGPS2D() { // diff --git a/src/constraint_gps_pseudorange.h b/src/constraint_gps_pseudorange.h index 8a8b1e2324f445205dc5af16ceb6c71568f0ee9f..afb698c0862a9cb017429bd14cf1a2fe34d7243e 100644 --- a/src/constraint_gps_pseudorange.h +++ b/src/constraint_gps_pseudorange.h @@ -26,6 +26,11 @@ public: createConstraint((FeatureGPSPseudorange*) _ftr_ptr); } + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * + **/ virtual ~ConstraintGPSPseudorange() { diff --git a/src/constraint_odom_2D.h b/src/constraint_odom_2D.h index 69fc4f1f4d880f66189cac7697ff78a51cf885ef..312d55c3e39b8f592d3dcaa95753b70e4ee875d3 100644 --- a/src/constraint_odom_2D.h +++ b/src/constraint_odom_2D.h @@ -16,6 +16,11 @@ class ConstraintOdom2D : public ConstraintSparse<3, 2, 1, 2, 1> // } + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * + **/ virtual ~ConstraintOdom2D() { // diff --git a/src/constraint_sparse.h b/src/constraint_sparse.h index a00aa5bf42c844b8bc57d9977aea68a6199a6822..e1918b355b290b7b3646b5dcba4b3e8170c1121c 100644 --- a/src/constraint_sparse.h +++ b/src/constraint_sparse.h @@ -106,9 +106,9 @@ class ConstraintSparse: public ConstraintBase StateBlock* _state8Ptr = nullptr, StateBlock* _state9Ptr = nullptr ) ; - /** \brief Destructor - * - * Destructor + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) * **/ virtual ~ConstraintSparse(); diff --git a/src/examples/test_wolf_imported_graph.cpp b/src/examples/test_wolf_imported_graph.cpp index 41f1f79f266975d536d462b00d2ed97d69b3ef97..33380ff31ce7e2946b80dfb7b454ee198e38d218 100644 --- a/src/examples/test_wolf_imported_graph.cpp +++ b/src/examples/test_wolf_imported_graph.cpp @@ -48,7 +48,7 @@ int main(int argc, char** argv) unsigned int MAX_VERTEX = atoi(argv[2]); if (MAX_VERTEX == 0) MAX_VERTEX = 1e6; std::ifstream offLineFile_; - clock_t t1, t2; + clock_t t1; ceres::Solver::Summary summary_full, summary_prun; Eigen::MatrixXs Sigma_ii(3,3), Sigma_ij(3,3), Sigma_jj(3,3), Sigma_z(3,3), Ji(3,3), Jj(3,3); WolfScalar xi, yi, thi, si, ci, xj, yj; diff --git a/src/feature_base.h b/src/feature_base.h index d541679b23e05efc21e53b2cf74f1902bd5b0398..fd41174bbc0a765afd7c32ff14ec3d560f76f110 100644 --- a/src/feature_base.h +++ b/src/feature_base.h @@ -37,9 +37,9 @@ class FeatureBase : public NodeLinked<CaptureBase,ConstraintBase> */ FeatureBase(const Eigen::VectorXs& _measurement, const Eigen::MatrixXs& _meas_covariance); - /** \brief Destructor + /** \brief Default destructor (not recommended) * - * Destructor + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) * */ virtual ~FeatureBase(); diff --git a/src/feature_corner_2D.h b/src/feature_corner_2D.h index 5de276c478e061f3dad626cae62de0c1cabfa46b..8c9cd7a76841b414d54145c643851a9cdb5d1d6d 100644 --- a/src/feature_corner_2D.h +++ b/src/feature_corner_2D.h @@ -17,9 +17,9 @@ class FeatureCorner2D : public FeatureBase */ FeatureCorner2D(const Eigen::Vector4s & _measurement, const Eigen::Matrix4s & _meas_covariance); //TODO: add const WolfScalar& aperture); - /** \brief Destructor - * - * destructor + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) * */ virtual ~FeatureCorner2D(); diff --git a/src/feature_fix.h b/src/feature_fix.h index 122d816fed0e3508595067d83d43a986d212e958..8d1bf068b948419621226069f598643e8b22e2d2 100644 --- a/src/feature_fix.h +++ b/src/feature_fix.h @@ -19,6 +19,11 @@ class FeatureFix : public FeatureBase */ FeatureFix(const Eigen::VectorXs& _measurement, const Eigen::MatrixXs& _meas_covariance); + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * + **/ virtual ~FeatureFix(); }; #endif diff --git a/src/feature_gps_fix.h b/src/feature_gps_fix.h index 9e7228548470e2977f4750d87fee38e788abfc52..e59982f206f49c6142a8b74d87dfa156a0d06178 100644 --- a/src/feature_gps_fix.h +++ b/src/feature_gps_fix.h @@ -26,6 +26,11 @@ class FeatureGPSFix : public FeatureBase */ FeatureGPSFix(const Eigen::VectorXs& _measurement, const Eigen::MatrixXs& _meas_covariance); + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * + **/ virtual ~FeatureGPSFix(); }; #endif diff --git a/src/feature_gps_pseudorange.h b/src/feature_gps_pseudorange.h index 97a614e893cafd4b635cadaf7f38bd178c6b2f64..891ef0643b9c2cca6f7975cbe42dd1a4303253e4 100644 --- a/src/feature_gps_pseudorange.h +++ b/src/feature_gps_pseudorange.h @@ -43,6 +43,11 @@ public: FeatureGPSPseudorange(const WolfScalar &_satellite_data); + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * + **/ virtual ~FeatureGPSPseudorange(); diff --git a/src/feature_odom_2D.h b/src/feature_odom_2D.h index b220c8b3c751527766e54073a242bc555c1faa0a..d8ba3a6aa06aa057792a1f702558df436f7202ac 100644 --- a/src/feature_odom_2D.h +++ b/src/feature_odom_2D.h @@ -26,6 +26,11 @@ class FeatureOdom2D : public FeatureBase */ FeatureOdom2D(const Eigen::VectorXs& _measurement, const Eigen::MatrixXs& _meas_covariance); + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * + **/ virtual ~FeatureOdom2D(); /** \brief Generic interface to find constraints diff --git a/src/frame_base.cpp b/src/frame_base.cpp index 4a717f7bbea8eae9cd0a1ebcd5fdc580685fdd4d..d3ae71cb3cd1486c08a608f49253ce489db128a7 100644 --- a/src/frame_base.cpp +++ b/src/frame_base.cpp @@ -51,12 +51,6 @@ FrameBase::~FrameBase() //std::cout << "constraints deleted" << std::endl; } -//void FrameBase::destruct() -//{ -// if (!is_deleting_) -// up_node_ptr_->removeDownNode(this); -//} - void FrameBase::addConstraintTo(ConstraintBase* _ctr_ptr) { constraint_to_list_.push_back(_ctr_ptr); diff --git a/src/frame_base.h b/src/frame_base.h index 71d596a5315238615e9adbfbeb3e0d347840ee0d..7c69726976c76e5c316853b22e1eea333d1c0b36 100644 --- a/src/frame_base.h +++ b/src/frame_base.h @@ -52,21 +52,14 @@ class FrameBase : public NodeLinked<TrajectoryBase,CaptureBase> * **/ FrameBase(const FrameType & _tp, const TimeStamp& _ts, StateBlock* _p_ptr, StateBlock* _o_ptr = nullptr); - - /** \brief Destructor - * - * Destructor + + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) * **/ virtual ~FrameBase(); - /** \brief Destructor call if is not already deleting - * - * Destructor call if is not already deleting - * - */ - //virtual void destruct(); - /** \brief Link with a constraint * * Link with a constraint diff --git a/src/hardware_base.h b/src/hardware_base.h index 99556845ddaa45c5965c714fe31b2a77e61a7323..b5868996b4cd6597959d600003d4cdf7cea6546e 100644 --- a/src/hardware_base.h +++ b/src/hardware_base.h @@ -20,9 +20,9 @@ class HardwareBase : public NodeLinked<WolfProblem,SensorBase> **/ HardwareBase(); - /** \brief Destructor + /** \brief Default destructor (not recommended) * - * Destructor + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) * **/ ~HardwareBase(); diff --git a/src/landmark_base.cpp b/src/landmark_base.cpp index a52f79cc608c4124ca9ffe40e7421624f4f06387..de4fea69e4631f7d877a23f0fbe753f871d584fb 100644 --- a/src/landmark_base.cpp +++ b/src/landmark_base.cpp @@ -39,12 +39,6 @@ LandmarkBase::~LandmarkBase() //std::cout << "constraints deleted" << std::endl; } -//void LandmarkBase::destruct() -//{ -// if (!is_deleting_) -// up_node_ptr_->removeDownNode(this); -//} - void LandmarkBase::addConstraintTo(ConstraintBase* _ctr_ptr) { constraint_to_list_.push_back(_ctr_ptr); diff --git a/src/landmark_base.h b/src/landmark_base.h index de18a044abb1933017a687e4639388f134e47eee..4b73d8dbd99b38f9a5b313162a5c714559be139b 100644 --- a/src/landmark_base.h +++ b/src/landmark_base.h @@ -45,20 +45,13 @@ class LandmarkBase : public NodeLinked<MapBase, NodeTerminus> **/ LandmarkBase(const LandmarkType & _tp, StateBlock* _p_ptr, StateBlock* _o_ptr = nullptr); - /** \brief Destructor + /** \brief Default destructor (not recommended) * - * Destructor + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) * **/ virtual ~LandmarkBase(); - /** \brief Destructor call if is not already deleting - * - * Destructor call if is not already deleting - * - */ - //virtual void destruct(); - /** \brief Link with a constraint * * Link with a constraint diff --git a/src/landmark_container.h b/src/landmark_container.h index d02b3158afeadf5d4c6a19ad809619eb488e0632..46f766f02ea1a877eff0389ea06aa450bd7e29d3 100644 --- a/src/landmark_container.h +++ b/src/landmark_container.h @@ -62,9 +62,9 @@ class LandmarkContainer : public LandmarkBase **/ LandmarkContainer(StateBlock* _p_ptr, StateBlock* _o_ptr, LandmarkCorner2D* _corner_A_ptr, LandmarkCorner2D* _corner_B_ptr, LandmarkCorner2D* _corner_C_ptr, LandmarkCorner2D* _corner_D_ptr, const WolfScalar& _witdh=2.44, const WolfScalar& _length=12.2); - /** \brief Destructor - * - * Destructor + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) * **/ virtual ~LandmarkContainer(); diff --git a/src/landmark_corner_2D.h b/src/landmark_corner_2D.h index 5e3e7d24099ee4f1f7e7cc39e8b7d16eb23ae1f8..0707edbe5e3c877c8fdaf6790d9bbcbe823884ea 100644 --- a/src/landmark_corner_2D.h +++ b/src/landmark_corner_2D.h @@ -28,10 +28,10 @@ class LandmarkCorner2D : public LandmarkBase * **/ LandmarkCorner2D(StateBlock* _p_ptr, StateBlock* _o_ptr, const WolfScalar& _aperture=0); - - /** \brief Destructor - * - * Destructor + + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) * **/ virtual ~LandmarkCorner2D(); diff --git a/src/map_base.h b/src/map_base.h index 2acbb034ad398c480db070974eabc5bf6ad57ae8..d65a628c433c2064f8fbbd6550c7aa89bd43ad59 100644 --- a/src/map_base.h +++ b/src/map_base.h @@ -30,9 +30,9 @@ class MapBase : public NodeLinked<WolfProblem,LandmarkBase> **/ MapBase(); - /** \brief Destructor + /** \brief Default destructor (not recommended) * - * Destructor + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) * **/ ~MapBase(); diff --git a/src/node_linked.h b/src/node_linked.h index 16b0c150e6eb5244d4974de72730233ce2727599..28e2de3c5cab6a2bf76cf8c4bedd038374212a49 100644 --- a/src/node_linked.h +++ b/src/node_linked.h @@ -58,9 +58,9 @@ class NodeLinked : public NodeBase */ NodeLinked(const NodeLocation _loc, const std::string& _label); - /** \brief Default destructor + /** \brief Default destructor (not recommended) * - * Default destructor + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) * */ virtual ~NodeLinked(); diff --git a/src/sensor_base.h b/src/sensor_base.h index 507fc63302274ba0beb3823c2444b57de4ccd2cf..399691b06e4ea379c52a22f646f447a4f75b5a7b 100644 --- a/src/sensor_base.h +++ b/src/sensor_base.h @@ -61,6 +61,11 @@ class SensorBase : public NodeLinked<HardwareBase,NodeTerminus> // **/ // SensorBase(const SensorType & _tp, StateBlock* _p_ptr, StateBlock* _o_ptr, unsigned int _params_size, const bool _extr_dyn = false); + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * + **/ virtual ~SensorBase(); // const SensorType getSensorType() const; diff --git a/src/sensor_gps.h b/src/sensor_gps.h index 7222413ff5120bc1e5b1b3626763af52a67016ee..ca459c1f9c531ce139cfb5799e3c5c0610b9f24c 100644 --- a/src/sensor_gps.h +++ b/src/sensor_gps.h @@ -29,6 +29,11 @@ public: //pointer to sensor position and orientation. SensorGPS(StateBlock *_p_ptr, StateBlock *_o_ptr, StateBlock* _bias_ptr); + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) + * + **/ virtual ~SensorGPS(); diff --git a/src/sensor_gps_fix.h b/src/sensor_gps_fix.h index 2a45bf05cdc6a6005fee20fe8f50f6adf7fc9f6c..8a300fbe918e7454f7a903b5128c5213f56489e9 100644 --- a/src/sensor_gps_fix.h +++ b/src/sensor_gps_fix.h @@ -17,10 +17,10 @@ class SensorGPSFix : public SensorBase * **/ SensorGPSFix(StateBlock* _p_ptr, StateBlock* _o_ptr, const double& _noise); - - /** \brief Destructor - * - * Destructor + + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) * **/ virtual ~SensorGPSFix(); diff --git a/src/sensor_laser_2D.h b/src/sensor_laser_2D.h index 076648fda283f34657eae503693b6e7c40afc648..8ab58ee4874b8466635fbad8775cc345beab40fd 100644 --- a/src/sensor_laser_2D.h +++ b/src/sensor_laser_2D.h @@ -31,9 +31,9 @@ class SensorLaser2D : public SensorBase SensorLaser2D(StateBlock* _p_ptr, StateBlock* _o_ptr); //SensorLaser2D(const Eigen::VectorXs & _sp, const laserscanutils::ScanParams & _params); - /** \brief Destructor - * - * Destructor + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) * **/ virtual ~SensorLaser2D(); diff --git a/src/sensor_odom_2D.h b/src/sensor_odom_2D.h index 65be03c8ce0e2b87145b700e9a873d9629265636..e823f939892faa92c57fcb4952829c09078a5672 100644 --- a/src/sensor_odom_2D.h +++ b/src/sensor_odom_2D.h @@ -19,10 +19,10 @@ class SensorOdom2D : public SensorBase * **/ SensorOdom2D(StateBlock* _p_ptr, StateBlock* _o_ptr, const WolfScalar& _disp_noise_factor, const WolfScalar& _rot_noise_factor); - - /** \brief Destructor - * - * Destructor + + /** \brief Default destructor (not recommended) + * + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) * **/ virtual ~SensorOdom2D(); diff --git a/src/trajectory_base.h b/src/trajectory_base.h index c041bcd895599baf90a92cab8bacec56bd18a221..5f191ddc2bb880e9fd9cd1ac18379dba97b259b8 100644 --- a/src/trajectory_base.h +++ b/src/trajectory_base.h @@ -35,9 +35,9 @@ class TrajectoryBase : public NodeLinked<WolfProblem,FrameBase> **/ TrajectoryBase(); - /** \brief Destructor + /** \brief Default destructor (not recommended) * - * Destructor + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) * **/ ~TrajectoryBase(); diff --git a/src/wolf_manager.cpp b/src/wolf_manager.cpp index e905ef397ed5902cbc6dcf2dffff2535df850a58..66f18271766db9e51918500144c7c7b476c5f97b 100644 --- a/src/wolf_manager.cpp +++ b/src/wolf_manager.cpp @@ -51,7 +51,7 @@ WolfManager::WolfManager(const FrameStructure _frame_structure, WolfManager::~WolfManager() { - std::cout << "deleting wolf manager..." << std::endl; + //std::cout << "deleting wolf manager..." << std::endl; delete problem_; } diff --git a/src/wolf_problem.cpp b/src/wolf_problem.cpp index c185cfe31f73d7975ac8fd704e957bde97e83359..61cc63d5f855d633081c2ade0f31d2522b0a4416 100644 --- a/src/wolf_problem.cpp +++ b/src/wolf_problem.cpp @@ -26,7 +26,7 @@ WolfProblem::WolfProblem(TrajectoryBase* _trajectory_ptr, MapBase* _map_ptr, Har WolfProblem::~WolfProblem() { - std::cout << "deleting wolf problem " << nodeId() << std::endl; + //std::cout << "deleting wolf problem " << nodeId() << std::endl; state_block_add_list_.clear(); covariances_.clear(); state_block_update_list_.clear(); @@ -39,6 +39,11 @@ WolfProblem::~WolfProblem() hardware_ptr_->destruct(); } +void WolfProblem::destruct() +{ + delete this; +} + void WolfProblem::addStateBlockPtr(StateBlock* _state_ptr) { // add the state unit to the list diff --git a/src/wolf_problem.h b/src/wolf_problem.h index e2b4fb9490734d90ddfa77f7426c2c800d9929ce..8c632c8fd8879f2e223ab280a769bfb6a48740b9 100644 --- a/src/wolf_problem.h +++ b/src/wolf_problem.h @@ -55,13 +55,20 @@ class WolfProblem: public NodeBase */ WolfProblem(TrajectoryBase* _trajectory_ptr, MapBase* _map_ptr=nullptr, HardwareBase* _hardware_ptr=nullptr); - /** \brief Default destructor + /** \brief Default destructor (not recommended) * - * Default destructor + * Default destructor (please use destruct() instead of delete for guaranteeing the wolf tree integrity) * */ virtual ~WolfProblem(); + /** \brief Wolf destructor + * + * Wolf destructor (please use it instead of delete for guaranteeing the wolf tree integrity) + * + */ + virtual void destruct() final; + /** \brief Adds a new state block to be added to solver manager * * Adds a new state block to be added to solver manager