diff --git a/include/laser/processor/processor_odom_icp.h b/include/laser/processor/processor_odom_icp.h index 5b80854e4d716889e2c54c2f7da983da5d1e259d..de4d764cd387c659d19261c2da9a059c4566d7c4 100644 --- a/include/laser/processor/processor_odom_icp.h +++ b/include/laser/processor/processor_odom_icp.h @@ -37,32 +37,33 @@ struct ProcessorParamsOdomICP : public ProcessorParamsTracker ProcessorParamsOdomICP(std::string _unique_name, const ParamsServer &_server): ProcessorParamsTracker(_unique_name, _server) { - use_point_to_line_distance = _server.getParam<int>(_unique_name + "/use_point_to_line_distance"); - max_correspondence_dist = _server.getParam<int>(_unique_name + "/max_correspondence_dist"); - max_iterations = _server.getParam<int>(_unique_name + "/max_iterations"); - use_corr_tricks = _server.getParam<int>(_unique_name + "/use_corr_tricks"); - outliers_maxPerc = _server.getParam<double>(_unique_name + "/outliers_maxPerc"); - outliers_adaptive_order = _server.getParam<double>(_unique_name + "/outliers_adaptive_order"); - outliers_adaptive_mult = _server.getParam<double>(_unique_name + "/outliers_adaptive_mult"); - vfk_min_dist = _server.getParam<double>(_unique_name + "/vfk_min_dist"); - vfk_min_angle = _server.getParam<double>(_unique_name + "/vfk_min_angle"); - vfk_min_time = _server.getParam<double>(_unique_name + "/vfk_min_time"); - vfk_min_error = _server.getParam<double>(_unique_name + "/vfk_min_error"); - vfk_max_points = _server.getParam<int>(_unique_name + "/vfk_max_points"); + use_point_to_line_distance = _server.getParam<int> (_unique_name + "/use_point_to_line_distance"); + max_correspondence_dist = _server.getParam<int> (_unique_name + "/max_correspondence_dist"); + max_iterations = _server.getParam<int> (_unique_name + "/max_iterations"); + use_corr_tricks = _server.getParam<int> (_unique_name + "/use_corr_tricks"); + outliers_maxPerc = _server.getParam<double> (_unique_name + "/outliers_maxPerc"); + outliers_adaptive_order = _server.getParam<double> (_unique_name + "/outliers_adaptive_order"); + outliers_adaptive_mult = _server.getParam<double> (_unique_name + "/outliers_adaptive_mult"); + vfk_min_dist = _server.getParam<double> (_unique_name + "/vfk_min_dist"); + vfk_min_angle = _server.getParam<double> (_unique_name + "/vfk_min_angle"); + vfk_min_time = _server.getParam<double> (_unique_name + "/vfk_min_time"); + vfk_min_error = _server.getParam<double> (_unique_name + "/vfk_min_error"); + vfk_max_points = _server.getParam<int> (_unique_name + "/vfk_max_points"); } std::string print() { - return "\n" + ProcessorParamsTracker::print() + "\n" + "use_point_to_line_distance: " + std::to_string(use_point_to_line_distance) + "\n" - "max_correspondence_dist: " + std::to_string(max_correspondence_dist) + "\n" - "max_iterations: " + std::to_string(max_iterations) + "\n" - "use_corr_tricks: " + std::to_string(use_corr_tricks) + "\n" - "outliers_maxPerc: " + std::to_string(outliers_maxPerc) + "\n" - "outliers_adaptive_order: " + std::to_string(outliers_adaptive_order) + "\n" - "outliers_adaptive_mult: " + std::to_string(outliers_adaptive_mult) + "\n" - "vfk_min_dist: " + std::to_string(vfk_min_dist) + "\n" - "vfk_min_angle: " + std::to_string(vfk_min_angle) + "\n" - "vfk_min_time: " + std::to_string(vfk_min_time) + "\n" - "vfk_min_error: " + std::to_string(vfk_min_error) + "\n" - "vfk_max_points: " + std::to_string(vfk_max_points) + "\n"; + return "\n" + ProcessorParamsTracker::print() + "\n" + + "use_point_to_line_distance: "+ std::to_string(use_point_to_line_distance)+ "\n" + + "max_correspondence_dist: " + std::to_string(max_correspondence_dist) + "\n" + + "max_iterations: " + std::to_string(max_iterations) + "\n" + + "use_corr_tricks: " + std::to_string(use_corr_tricks) + "\n" + + "outliers_maxPerc: " + std::to_string(outliers_maxPerc) + "\n" + + "outliers_adaptive_order: " + std::to_string(outliers_adaptive_order) + "\n" + + "outliers_adaptive_mult: " + std::to_string(outliers_adaptive_mult) + "\n" + + "vfk_min_dist: " + std::to_string(vfk_min_dist) + "\n" + + "vfk_min_angle: " + std::to_string(vfk_min_angle) + "\n" + + "vfk_min_time: " + std::to_string(vfk_min_time) + "\n" + + "vfk_min_error: " + std::to_string(vfk_min_error) + "\n" + + "vfk_max_points: " + std::to_string(vfk_max_points) + "\n"; } }; diff --git a/src/processor/processor_odom_icp.cpp b/src/processor/processor_odom_icp.cpp index aa7be21466c868189ab38f2df91718ec16f6b57f..d0f038a085ad3ce4ed84afc7bc2e79bb5f4d53de 100644 --- a/src/processor/processor_odom_icp.cpp +++ b/src/processor/processor_odom_icp.cpp @@ -8,19 +8,22 @@ ProcessorOdomICP::ProcessorOdomICP(ProcessorParamsOdomICPPtr _params): { proc_params_ = _params; - origin_last_.res_covar = Eigen::Matrix3s::Identity(); - origin_incoming_.res_covar = Eigen::Matrix3s::Identity(); - last_incoming_.res_covar = Eigen::Matrix3s::Identity(); - - - icp_params_.use_point_to_line_distance = proc_params_->use_point_to_line_distance; - icp_params_.max_correspondence_dist = proc_params_->max_correspondence_dist; - icp_params_.max_iterations = proc_params_->max_iterations; - icp_params_.use_corr_tricks = proc_params_->use_corr_tricks; - icp_params_.outliers_maxPerc = proc_params_->outliers_maxPerc; - icp_params_.outliers_adaptive_order = proc_params_->outliers_adaptive_order; - icp_params_.outliers_adaptive_mult = proc_params_->outliers_adaptive_mult; + + icp_params_.use_point_to_line_distance = proc_params_->use_point_to_line_distance; + icp_params_.max_correspondence_dist = proc_params_->max_correspondence_dist; + icp_params_.max_iterations = proc_params_->max_iterations; + icp_params_.use_corr_tricks = proc_params_->use_corr_tricks; + icp_params_.outliers_maxPerc = proc_params_->outliers_maxPerc; + icp_params_.outliers_adaptive_order = proc_params_->outliers_adaptive_order; + icp_params_.outliers_adaptive_mult = proc_params_->outliers_adaptive_mult; + + // ICP algorithm icp_tools_ptr_ = std::make_shared<ICP>(); + + // Frame transforms + origin_last_.res_covar = Eigen::Matrix3s::Identity(); + origin_incoming_.res_covar = Eigen::Matrix3s::Identity(); + last_incoming_.res_covar = Eigen::Matrix3s::Identity(); } ProcessorOdomICP::~ProcessorOdomICP() @@ -165,7 +168,7 @@ void ProcessorOdomICP::resetDerived() void ProcessorOdomICP::configure(SensorBasePtr _sensor) { - + icp_params_.sigma = std::static_pointer_cast<SensorLaser2D>(getSensor())->getScanParams().range_std_dev_; } void ProcessorOdomICP::preProcess()