diff --git a/src/capture_laser_2D.cpp b/src/capture_laser_2D.cpp index 1e2f6bb4589a0424dcf8ca47eca717b9c414834a..8c5749ae48c0e82a3049fd245ba9aa9cad1023ca 100644 --- a/src/capture_laser_2D.cpp +++ b/src/capture_laser_2D.cpp @@ -7,19 +7,24 @@ // unsigned int CaptureLaser2D::max_beam_distance = 5;//max number of beams of distance between lines to consider corner or concatenation // double CaptureLaser2D::max_distance = 0.5;//max distance between line ends to consider corner or concatenation -//CaptureLaser2D::CaptureLaser2D(const TimeStamp & _ts, SensorBase* _sensor_ptr, const std::vector<float>& _ranges): +//CaptureLaser2D::CaptureLaser2D(const TimeStamp & _ts, SensorBase* _sensor_ptr, const std::vector<WolfScalar>& _ranges): // CaptureBase(_ts, _sensor_ptr, _ranges), // ranges_(data_.data(), _ranges.size()), // intensities_(data_.data(), 0) //{ // laser_ptr_ = (SensorLaser2D*)sensor_ptr_; //} -CaptureLaser2D::CaptureLaser2D(const TimeStamp & _ts, SensorBase* _sensor_ptr, const std::vector<float>& _ranges) : - CaptureBase(_ts, _sensor_ptr), ranges_(_ranges) +CaptureLaser2D::CaptureLaser2D(const TimeStamp & _ts, + SensorBase* _sensor_ptr, + const std::vector<float>& _ranges) + : + CaptureBase(_ts, _sensor_ptr), + ranges_(_ranges) { laser_ptr_ = (SensorLaser2D*) sensor_ptr_; } + //CaptureLaser2D::CaptureLaser2D(const TimeStamp & _ts, SensorBase* _sensor_ptr, const Eigen::VectorXs& _ranges, const Eigen::VectorXs& _intensities): // CaptureBase(_ts, _sensor_ptr, _ranges), // ranges_(data_.data(), _ranges.size()), @@ -27,12 +32,19 @@ CaptureLaser2D::CaptureLaser2D(const TimeStamp & _ts, SensorBase* _sensor_ptr, c //{ // laser_ptr_ = (SensorLaser2D*)sensor_ptr_; //} -CaptureLaser2D::CaptureLaser2D(const TimeStamp & _ts, SensorBase* _sensor_ptr, const std::vector<float>& _ranges, const std::vector<float>& _intensities) : - CaptureBase(_ts, _sensor_ptr), ranges_(_ranges), intensities_(_intensities) +CaptureLaser2D::CaptureLaser2D(const TimeStamp & _ts, + SensorBase* _sensor_ptr, + const std::vector<float>& _ranges, + const std::vector<float>& _intensities) + : + CaptureBase(_ts, _sensor_ptr), + ranges_(_ranges), + intensities_(_intensities) { laser_ptr_ = (SensorLaser2D*) sensor_ptr_; } + CaptureLaser2D::~CaptureLaser2D() { // @@ -41,8 +53,7 @@ CaptureLaser2D::~CaptureLaser2D() void CaptureLaser2D::processCapture() { //variables - //std::list<Eigen::Vector4s> corners; - std::list < laserscanutils::Corner > corners; + std::list <laserscanutils::Corner> corners; //extract corners from range data this->extractCorners(corners); @@ -60,15 +71,16 @@ void CaptureLaser2D::processCapture() unsigned int CaptureLaser2D::extractCorners(std::list<laserscanutils::Corner> & _corner_list) const { - std::list < laserscanutils::Line > line_list; - - laserscanutils::extractLines(laser_ptr_->getScanParams(), laser_ptr_->getCornerAlgParams(), ranges_, line_list); - return laserscanutils::extractCorners(laser_ptr_->getScanParams(), laser_ptr_->getCornerAlgParams(), line_list, _corner_list); +// std::list < laserscanutils::Line > line_list; +// +// laserscanutils::extractLines(laser_ptr_->getScanParams(), laser_ptr_->getCornerAlgParams(), ranges_, line_list); +// return laserscanutils::extractCorners(laser_ptr_->getScanParams(), laser_ptr_->getCornerAlgParams(), line_list, _corner_list); + return laserscanutils::extractCorners(laser_ptr_->getScanParams(), laser_ptr_->getCornerAlgParams(), ranges_, _corner_list); } unsigned int CaptureLaser2D::extractLines(std::list<laserscanutils::Line> & _line_list) const { - return laserscanutils::extractLines(laser_ptr_->getScanParams(), laser_ptr_->getCornerAlgParams(), ranges_, _line_list); + return laserscanutils::extractLines(laser_ptr_->getScanParams(), laser_ptr_->getCornerAlgParams().line_params_, ranges_, _line_list); } void CaptureLaser2D::createFeatures(std::list<laserscanutils::Corner> & _corner_list) @@ -257,9 +269,9 @@ void CaptureLaser2D::establishConstraintsMHTree() tree.solve(ft_lk_pairs,associated_mask); //print tree & score table - std::cout << "-------------" << std::endl; - tree.printTree(); - tree.printScoreTable(); +// std::cout << "-------------" << std::endl; +// tree.printTree(); +// tree.printScoreTable(); //loop over all features ii = 0; //runs over features diff --git a/src/capture_laser_2D.h b/src/capture_laser_2D.h index 3fde65d46aab37404f2bbdd88fd57b22d6429952..1c9ce106a8ed8b1951ef8ad5c3de8989873e7cf2 100644 --- a/src/capture_laser_2D.h +++ b/src/capture_laser_2D.h @@ -12,9 +12,10 @@ #include <eigen3/Eigen/Geometry> //laser_scan_utils +#include "iri-algorithms/laser_scan_utils/entities.h" #include "iri-algorithms/laser_scan_utils/scan_basics.h" +#include "iri-algorithms/laser_scan_utils/line_detector.h" #include "iri-algorithms/laser_scan_utils/corner_detector.h" -#include "iri-algorithms/laser_scan_utils/entities.h" //wolf includes #include "constraint_corner_2D_theta.h" @@ -45,9 +46,9 @@ class CaptureLaser2D : public CaptureBase // static double max_distance;//max distance between line ends to consider corner or concatenation //Eigen::Map<Eigen::VectorXs> ranges_; // a map to the ranges inside de data vector - std::vector<float> ranges_; // ranges vector + std::vector<float> ranges_; // ranges vector. Type float to match ROS LaserScan message //Eigen::Map<Eigen::VectorXs> intensities_; // a map to the intensities inside the data vector - std::vector<float> intensities_; // intensities vector + std::vector<float> intensities_; // intensities vector. Type float to match ROS LaserScan message SensorLaser2D* laser_ptr_; //specific pointer to sensor laser 2D object public: @@ -56,7 +57,6 @@ class CaptureLaser2D : public CaptureBase * Constructor with ranges * **/ - //CaptureLaser2D(const TimeStamp & _ts, SensorBase* _sensor_ptr, const Eigen::VectorXs& _ranges); CaptureLaser2D(const TimeStamp & _ts, SensorBase* _sensor_ptr, const std::vector<float>& _ranges); /** \brief Constructor with ranges and intensities @@ -64,7 +64,6 @@ class CaptureLaser2D : public CaptureBase * Constructor with ranges and intensities * **/ - //CaptureLaser2D(const TimeStamp & _ts, SensorBase* _sensor_ptr, const Eigen::VectorXs& _ranges, const Eigen::VectorXs& _intensities); CaptureLaser2D(const TimeStamp & _ts, SensorBase* _sensor_ptr, const std::vector<float>& _ranges, const std::vector<float>& _intensities); /** \brief Destructor diff --git a/src/examples/test_ceres_2_lasers.cpp b/src/examples/test_ceres_2_lasers.cpp index c34f025208a5c4086d13d6d83c125f7b5fdaaf5b..0d4c80f34c8a65a41ff96828ee8c8a194f6009b9 100644 --- a/src/examples/test_ceres_2_lasers.cpp +++ b/src/examples/test_ceres_2_lasers.cpp @@ -135,8 +135,8 @@ int main(int argc, char** argv) string modelFileName; //model and initial view point - modelFileName = "/home/jvallve/iri-lab/faramotics/models/campusNordUPC.obj"; - //modelFileName = "/home/acoromin/dev/br/faramotics/models/campusNordUPC.obj"; + //modelFileName = "/home/jvallve/iri-lab/faramotics/models/campusNordUPC.obj"; + modelFileName = "/home/acoromin/dev/br/faramotics/models/campusNordUPC.obj"; //modelFileName = "/home/andreu/dev/faramotics/models/campusNordUPC.obj"; devicePose.setPose(2, 8, 0.2, 0, 0, 0); viewPoint.setPose(devicePose); diff --git a/src/sensor_laser_2D.cpp b/src/sensor_laser_2D.cpp index bb6ff38f30b49fcaad8b4ed4097042b5333facd5..434a43ab0ec214e556e432c3b00c5574a77c07bc 100644 --- a/src/sensor_laser_2D.cpp +++ b/src/sensor_laser_2D.cpp @@ -59,13 +59,13 @@ void SensorLaser2D::setScanParams(const laserscanutils::ScanParams & _params) void SensorLaser2D::setDefaultCornerAlgParams() { //default parameters for corner extraction. TODO: get them from a file or static constants - corners_alg_params_.segment_window_size = 8; - corners_alg_params_.theta_min = 0.4; - corners_alg_params_.theta_max_parallel = 0.1; - corners_alg_params_.k_sigmas = 3; - corners_alg_params_.max_beam_distance = 5; - corners_alg_params_.max_distance = 1; - + corners_alg_params_.theta_min_ = 0.4; + corners_alg_params_.max_distance_ = 1; + corners_alg_params_.line_params_.jump_dist_ut_ = 1; + corners_alg_params_.line_params_.window_sz_ = 8; + corners_alg_params_.line_params_.k_sigmas_ut_ = 3; + corners_alg_params_.line_params_.concatenate_angle_ut_ = 0.1; + corners_alg_params_.line_params_.concatenate_ii_ut_ = 5; } void SensorLaser2D::setCornerAlgParams(const laserscanutils::ExtractCornerParams & _corner_alg_params)