diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8582571f4b82b89b174b62e9c134457adebcaa53..d37f3fd9595734fc24b71bb63f6436178c313fad 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -20,6 +20,7 @@ SET(HDRS capture_base.h capture_relative.h capture_gps_fix.h + capture_laser_2D.h capture_odom_2D.h correspondence_base.h correspondence_sparse.h @@ -51,6 +52,7 @@ SET(SRCS capture_base.cpp capture_relative.cpp capture_gps_fix.cpp + capture_laser_2D.cpp capture_odom_2D.cpp correspondence_base.cpp feature_base.cpp diff --git a/src/capture_base.cpp b/src/capture_base.cpp index de303e1b79467dd8b57757565046f8734729c665..3de5889327899272420ae6446c6e5a06eea04437 100644 --- a/src/capture_base.cpp +++ b/src/capture_base.cpp @@ -48,16 +48,26 @@ const FrameBasePtr CaptureBase::getFramePtr() const return upperNodePtr(); } -// FeatureBaseList & CaptureBase::getFeatureList() const -// { -// return downNodeList(); -// } - FeatureBaseList* CaptureBase::getFeatureListPtr() { return getDownNodeListPtr(); } +void CaptureBase::getCorrespondenceList(CorrespondenceBaseList & _corr_list) +{ + std::list<FeatureBaseShPtr>::iterator f_it; + std::list<CorrespondenceBaseShPtr>* c_list_ptr; + std::list<CorrespondenceBaseShPtr>::iterator c_it; + + for( f_it = down_node_list_.begin(); f_it != down_node_list_.end(); ++f_it) + { + c_list_ptr = (f_it->get())->getCorrespondenceListPtr(); + for( c_it = c_list_ptr->begin(); c_it != c_list_ptr->end(); ++c_it) + { + _corr_list.push_back(*c_it); + } + } +} TimeStamp CaptureBase::getTimeStamp() const { @@ -102,7 +112,7 @@ void CaptureBase::setDataCovariance(const Eigen::MatrixXs& _data_cov) void CaptureBase::processCapture() { - std::cout << "... processing capture" << std::endl; + std::cout << "CaptureBase::processCapture()... processing capture" << std::endl; } void CaptureBase::printSelf(unsigned int _ntabs, std::ostream & _ost) const diff --git a/src/capture_base.h b/src/capture_base.h index 0ec6c867426325a4af1cf6570269ad7c5567a659..62c7760a97155a34b6d507233b8e949118a4bb2d 100644 --- a/src/capture_base.h +++ b/src/capture_base.h @@ -29,7 +29,7 @@ class CaptureBase : public NodeLinked<FrameBase,FeatureBase> Eigen::Vector3s inverse_sensor_pose_; ///< World pose in the sensor frame: inverse of the global_pose_. TODO: use state units public: - CaptureBase(const TimeStamp& _ts, const SensorBasePtr& _sensor_ptr); + CaptureBase(const TimeStamp& _ts, const SensorBasePtr& _sensor_ptr);//TODO: to be removed ?? CaptureBase(const TimeStamp& _ts, const SensorBasePtr& _sensor_ptr, const Eigen::VectorXs& _data); @@ -58,21 +58,21 @@ class CaptureBase : public NodeLinked<FrameBase,FeatureBase> **/ const FrameBasePtr getFramePtr() const; - /** \brief Gets a reference to feature list + /** \brief Gets a pointer to feature list * - * Gets a reference to feature list + * Gets a pointer to feature list * **/ -// FeatureBaseList & getFeatureList() const; - FeatureBaseList* getFeatureListPtr(); - /** \brief Gets a const reference to correspondence list + /** \brief Fills the provided list with all correspondences related to this capture * - * Gets a const reference to correspondence list + * Fills the provided list with all correspondences related to this capture + * * **/ - const CorrespondenceBaseList getCorrespondenceList() const; + //const CorrespondenceBaseList getCorrespondenceList() const; + void getCorrespondenceList(CorrespondenceBaseList & _corr_list);//TODO: Should be const TimeStamp getTimeStamp() const; diff --git a/src/capture_laser_2D.h b/src/capture_laser_2D.h index ed167e4b34b611e5a7e98fc663a1b04e38906153..342b672123b328d3794910484cb0d48487cdd43a 100644 --- a/src/capture_laser_2D.h +++ b/src/capture_laser_2D.h @@ -17,7 +17,7 @@ class CaptureLaser2D : public CaptureBase * Constructor * **/ - CaptureLaser2D(double _ts, const SensorLaser2D & _sensor_ptr, const Eigen::VectorXs& _ranges, const double & _std_dev); + CaptureLaser2D(const TimeStamp & _ts, const SensorLaser2DPtr & _sensor_ptr, const Eigen::VectorXs& _ranges); /** \brief Destructor * @@ -40,37 +40,4 @@ class CaptureLaser2D : public CaptureBase **/ virtual void extractCorners(); }; - -//////////////////////////////// -// IMPLEMENTATION -//////////////////////////////// - - -inline CaptureLaser2D::CaptureLaser2D(const FrameShPtr& _frm_ptr, const SensorShPtr& _sen_ptr, const NodeLocation _loc) : - Capture(_frm_ptr, _sen_ptr, _loc) -{ - // -} - -inline CaptureLaser2D::~CaptureLaser2D() -{ - // -} - -inline void CaptureLaser2D::processCapture() -{ - extractCorners(); -} - -inline void CaptureLaser2D::extractCorners() -{ - std::cout << "Extracting corners ... " << std::endl; - //TODO by Andreu: create class FeatureCorner2D + main to test this method. - //TODO by Juan AC - // Laser ranges are at data_ - // Scan size is data_.size() - // Corners should be created as FeatureCorner2D. Corner 3 params to be stored at FeatureBase::measurement_ - // After creation, they have to be pushed back to down_node_list_ by means of the method Capture::addFeature(const FeatureShPtr& _f_ptr) -} - #endif /* CAPTURE_LASER_2D_H_ */ diff --git a/src/sensor_laser_2D.cpp b/src/sensor_laser_2D.cpp index e0c09ed0fcec798069e197aa4fb4859be75e6e79..6b670fc7d2453d40095a6587e19cb0add078950b 100644 --- a/src/sensor_laser_2D.cpp +++ b/src/sensor_laser_2D.cpp @@ -1,10 +1,10 @@ #include "sensor_laser_2D.h" -SensorLaser2D::SensorLaser2D(const Eigen::VectorXs & _sp, unsigned int _nrays, WolfScalar _apert, WolfScalar _rmin, WolfScalar _rmax) : - SensorBase(LIDAR, _sp, 4) -// SensorBase(LIDAR, _sp,{(WolfScalar)(_nrays), _apert, _rmin, _rmax}) +SensorLaser2D::SensorLaser2D(const Eigen::VectorXs & _sp, unsigned int _nrays, WolfScalar _apert, WolfScalar _rmin, WolfScalar _rmax, WolfScalar _range_stdev) : + SensorBase(LIDAR, _sp, 5) +// SensorBase(LIDAR, _sp,{(WolfScalar)(_nrays), _apert, _rmin, _rmax, _range_stdev}) { - params_ << (WolfScalar)(_nrays), _apert, _rmin, _rmax; + params_ << (WolfScalar)(_nrays), _apert, _rmin, _rmax, _range_stdev; } SensorLaser2D::~SensorLaser2D() diff --git a/src/sensor_laser_2D.h b/src/sensor_laser_2D.h index 0a9fd1b9189cc17a535b03ca2be27391391390fd..a8ee94d2397ab9c0fa364536f2ad7582882c5b56 100644 --- a/src/sensor_laser_2D.h +++ b/src/sensor_laser_2D.h @@ -23,9 +23,10 @@ class SensorLaser2D : public SensorBase * \param _apert angular aperture [rad] * \param _rmin minimum range [m] * \param _rmax maximum range [m] + * \param _range_stdev range standard deviation [m] * **/ - SensorLaser2D(const Eigen::VectorXs & _sp, unsigned int _nrays, WolfScalar _apert, WolfScalar _rmin, WolfScalar _rmax); + SensorLaser2D(const Eigen::VectorXs & _sp, unsigned int _nrays, WolfScalar _apert, WolfScalar _rmin, WolfScalar _rmax, WolfScalar _range_stdev); /** \brief Destructor * diff --git a/src/wolf.h b/src/wolf.h index d30fbde7fff8c5d355652114efa7d4c082d0efd0..aec9f17a5139b65c0856041d18409a6176f23c7d 100644 --- a/src/wolf.h +++ b/src/wolf.h @@ -243,9 +243,10 @@ typedef CorrespondenceBaseList::iterator CorrespondenceBaseIter; typedef std::shared_ptr<RawBase> RawShPtr; typedef RawBase* RawPtr; -// - Sensor +// - Sensors typedef std::shared_ptr<SensorBase> SensorBaseShPtr; typedef SensorBase* SensorBasePtr; +typedef SensorLaser2D* SensorLaser2DPtr; // - transSensor typedef std::shared_ptr<TransSensor> TransSensorShPtr;