Skip to content
Snippets Groups Projects
Commit 5dd7bf50 authored by Joaquim Casals Buñuel's avatar Joaquim Casals Buñuel
Browse files

Added no-default (with error) option for params server

parent 9480011f
No related branches found
No related tags found
1 merge request!260WIP: params autoconf
Pipeline #2704 passed
......@@ -65,6 +65,14 @@ public:
return converter<T>::convert(def_value);
}
}
template<typename T>
T getParam(std::string key) const {
if(_params.find(key) != _params.end()){
return converter<T>::convert(_params.find(key)->second);
}else{
throw std::runtime_error("The following key: '" + key + "' has not been found in the parameters server and no default value was provided.");
}
}
std::vector<ParamsInitSensor> getSensors(){
std::vector<ParamsInitSensor> rtn = std::vector<ParamsInitSensor>();
std::transform(this->_paramsSens.begin(), this->_paramsSens.end(), back_inserter(rtn), [](const std::pair<std::string,ParamsInitSensor> v){return v.second;});
......
......@@ -42,16 +42,16 @@ struct ProcessorParamsFrameNearestNeighborFilter : public ProcessorParamsLoopClo
ProcessorParamsFrameNearestNeighborFilter(std::string _unique_name, const paramsServer& _server):
ProcessorParamsLoopClosure(_unique_name, _server)
{
buffer_size_ = _server.getParam<int>(_unique_name + "/buffer_size", "");
sample_step_degree_ = _server.getParam<int>(_unique_name + "/sample_step_degree", "");
auto distance_type_str = _server.getParam<std::string>(_unique_name + "/distance_type", "");
buffer_size_ = _server.getParam<int>(_unique_name + "/buffer_size");
sample_step_degree_ = _server.getParam<int>(_unique_name + "/sample_step_degree");
auto distance_type_str = _server.getParam<std::string>(_unique_name + "/distance_type");
if(distance_type_str.compare("LC_POINT_ELLIPSE")) distance_type_ = LoopclosureDistanceType::LC_POINT_ELLIPSE;
else if(distance_type_str.compare("LC_ELLIPSE_ELLIPSE")) distance_type_ = LoopclosureDistanceType::LC_ELLIPSE_ELLIPSE;
else if(distance_type_str.compare("LC_POINT_ELLIPSOID")) distance_type_ = LoopclosureDistanceType::LC_POINT_ELLIPSOID;
else if(distance_type_str.compare("LC_ELLIPSOID_ELLIPSOID")) distance_type_ = LoopclosureDistanceType::LC_ELLIPSOID_ELLIPSOID;
else if(distance_type_str.compare("LC_MAHALANOBIS_DISTANCE")) distance_type_ = LoopclosureDistanceType::LC_MAHALANOBIS_DISTANCE;
else throw std::runtime_error("Failed to fetch a valid value for the enumerate LoopclosureDistanceType. Value provided: " + distance_type_str);
probability_ = _server.getParam<Scalar>(_unique_name + "/probability", "");
probability_ = _server.getParam<Scalar>(_unique_name + "/probability");
}
virtual ~ProcessorParamsFrameNearestNeighborFilter() = default;
......
......@@ -24,11 +24,11 @@ struct ProcessorParamsTrackerFeatureImage : public ProcessorParamsTrackerFeature
ProcessorParamsTrackerFeatureImage(std::string _unique_name, const paramsServer& _server):
ProcessorParamsTrackerFeature(_unique_name, _server)
{
yaml_file_params_vision_utils = _server.getParam<std::string>(_unique_name + "/yaml_file_params_vision_utils", "");
min_response_for_new_features = _server.getParam<Scalar>(_unique_name + "/min_response_for_new_features", "");
distance = _server.getParam<Scalar>(_unique_name + "/distance", "");
pixel_noise_std = _server.getParam<Scalar>(_unique_name + "/pixel_noise_std", "");
pixel_noise_var = _server.getParam<Scalar>(_unique_name + "/pixel_noise_var", "");
yaml_file_params_vision_utils = _server.getParam<std::string>(_unique_name + "/yaml_file_params_vision_utils");
min_response_for_new_features = _server.getParam<Scalar>(_unique_name + "/min_response_for_new_features");
distance = _server.getParam<Scalar>(_unique_name + "/distance");
pixel_noise_std = _server.getParam<Scalar>(_unique_name + "/pixel_noise_std");
pixel_noise_var = _server.getParam<Scalar>(_unique_name + "/pixel_noise_var");
}
};
......@@ -46,13 +46,13 @@ struct ProcessorParamsTrackerLandmarkImage : public ProcessorParamsTrackerLandma
ProcessorParamsTrackerLandmarkImage(std::string _unique_name, const paramsServer& _server):
ProcessorParamsTrackerLandmark(_unique_name, _server)
{
yaml_file_params_vision_utils = _server.getParam<std::string>(_unique_name + "/yaml_file_params_vision_utils", "");
yaml_file_params_vision_utils = _server.getParam<std::string>(_unique_name + "/yaml_file_params_vision_utils");
min_response_for_new_features = _server.getParam<Scalar>(_unique_name + "/min_response_for_new_features", "");
distance = _server.getParam<Scalar>(_unique_name + "/distance", "");
min_response_for_new_features = _server.getParam<Scalar>(_unique_name + "/min_response_for_new_features");
distance = _server.getParam<Scalar>(_unique_name + "/distance");
pixel_noise_std = _server.getParam<Scalar>(_unique_name + "/pixel_noise_std", "");
pixel_noise_var = _server.getParam<Scalar>(_unique_name + "/pixel_noise_var", "");
pixel_noise_std = _server.getParam<Scalar>(_unique_name + "/pixel_noise_std");
pixel_noise_var = _server.getParam<Scalar>(_unique_name + "/pixel_noise_var");
}
};
}
......
......@@ -32,13 +32,13 @@ struct ProcessorParamsTrackerFeatureTrifocal : public ProcessorParamsTrackerFeat
ProcessorParamsTrackerFeatureTrifocal(std::string _unique_name, const paramsServer& _server):
ProcessorParamsTrackerFeature(_unique_name, _server)
{
yaml_file_params_vision_utils = _server.getParam<std::string>(_unique_name + "/yaml_file_params_vision_utils", "");
n_cells_h = _server.getParam<int>(_unique_name + "/n_cells_h", "");
n_cells_v = _server.getParam<int>(_unique_name + "/n_cells_v", "");
min_response_new_feature = _server.getParam<int>(_unique_name + "/min_response_new_feature", "");
max_euclidean_distance = _server.getParam<Scalar>(_unique_name + "/max_euclidean_distance", "");
pixel_noise_std = _server.getParam<Scalar>(_unique_name + "/pixel_noise_std", "");
min_track_length_for_factor = _server.getParam<int>(_unique_name + "/min_track_length_for_factor", "");
yaml_file_params_vision_utils = _server.getParam<std::string>(_unique_name + "/yaml_file_params_vision_utils");
n_cells_h = _server.getParam<int>(_unique_name + "/n_cells_h");
n_cells_v = _server.getParam<int>(_unique_name + "/n_cells_v");
min_response_new_feature = _server.getParam<int>(_unique_name + "/min_response_new_feature");
max_euclidean_distance = _server.getParam<Scalar>(_unique_name + "/max_euclidean_distance");
pixel_noise_std = _server.getParam<Scalar>(_unique_name + "/pixel_noise_std");
min_track_length_for_factor = _server.getParam<int>(_unique_name + "/min_track_length_for_factor");
}
};
......
......@@ -18,7 +18,7 @@ struct IntrinsicsGPSFix : public IntrinsicsBase
IntrinsicsGPSFix(std::string _unique_name, const paramsServer& _server):
IntrinsicsBase(_unique_name, _server)
{
noise_std = _server.getParam<Eigen::Vector3s>(_unique_name + "/noise_std", "");
noise_std = _server.getParam<Eigen::Vector3s>(_unique_name + "/noise_std");
}
virtual ~IntrinsicsGPSFix() = default;
};
......
......@@ -25,11 +25,11 @@ struct IntrinsicsCamera : public IntrinsicsBase
IntrinsicsCamera(std::string _unique_name, const paramsServer& _server):
IntrinsicsBase(_unique_name, _server)
{
width = _server.getParam<unsigned int>(_unique_name + "/width", "");
height = _server.getParam<unsigned int>(_unique_name + "/height", "");
pinhole_model_raw = _server.getParam<Eigen::Vector4s>(_unique_name + "/pinhole_model_raw", "");
pinhole_model_rectified = _server.getParam<Eigen::Vector4s>(_unique_name + "/pinhole_model_rectified", "");
distortion = _server.getParam<Eigen::VectorXs>(_unique_name + "/distortion", "");
width = _server.getParam<unsigned int>(_unique_name + "/width");
height = _server.getParam<unsigned int>(_unique_name + "/height");
pinhole_model_raw = _server.getParam<Eigen::Vector4s>(_unique_name + "/pinhole_model_raw");
pinhole_model_rectified = _server.getParam<Eigen::Vector4s>(_unique_name + "/pinhole_model_rectified");
distortion = _server.getParam<Eigen::VectorXs>(_unique_name + "/distortion");
}
virtual ~IntrinsicsCamera() = default;
};
......
......@@ -42,11 +42,11 @@ struct IntrinsicsDiffDrive : public IntrinsicsBase
IntrinsicsBase(_unique_name, _server)
{
left_radius_ = _server.getParam<Scalar>(_unique_name + "/left_radius_", "");
right_radius_ = _server.getParam<Scalar>(_unique_name + "/right_radius_", "");
separation_ = _server.getParam<Scalar>(_unique_name + "/separation_", "");
left_radius_ = _server.getParam<Scalar>(_unique_name + "/left_radius_");
right_radius_ = _server.getParam<Scalar>(_unique_name + "/right_radius_");
separation_ = _server.getParam<Scalar>(_unique_name + "/separation_");
auto model_str = _server.getParam<std::string>(_unique_name + "/model", "");
auto model_str = _server.getParam<std::string>(_unique_name + "/model");
if(model_str.compare("Two_Factor_Model")) model_ = DiffDriveModel::Two_Factor_Model;
else if(model_str.compare("Three_Factor_Model")) model_ = DiffDriveModel::Three_Factor_Model;
else if(model_str.compare("Five_Factor_Model")) model_ = DiffDriveModel::Five_Factor_Model;
......@@ -54,8 +54,8 @@ struct IntrinsicsDiffDrive : public IntrinsicsBase
factors_ = _server.getParam<Eigen::VectorXs>(_unique_name + "/factors", "[1,1,1]");
left_resolution_ = _server.getParam<Scalar>(_unique_name + "/left_resolution_", "");
right_resolution_ = _server.getParam<Scalar>(_unique_name + "/right_resolution_", "");
left_resolution_ = _server.getParam<Scalar>(_unique_name + "/left_resolution_");
right_resolution_ = _server.getParam<Scalar>(_unique_name + "/right_resolution_");
left_gain_ = _server.getParam<Scalar>(_unique_name + "/left_gain", "0.01");
right_gain_ = _server.getParam<Scalar>(_unique_name + "/right_gain", "0.01");
......
......@@ -22,8 +22,8 @@ struct IntrinsicsOdom2D : public IntrinsicsBase
IntrinsicsOdom2D(std::string _unique_name, const paramsServer& _server):
IntrinsicsBase(_unique_name, _server)
{
k_disp_to_disp = _server.getParam<Scalar>(_unique_name + "/k_disp_to_disp", "");
k_rot_to_rot = _server.getParam<Scalar>(_unique_name + "/k_rot_to_rot", "");
k_disp_to_disp = _server.getParam<Scalar>(_unique_name + "/k_disp_to_disp");
k_rot_to_rot = _server.getParam<Scalar>(_unique_name + "/k_rot_to_rot");
}
};
......
......@@ -30,11 +30,11 @@ struct IntrinsicsOdom3D : public IntrinsicsBase
IntrinsicsOdom3D(std::string _unique_name, const paramsServer& _server):
IntrinsicsBase(_unique_name, _server)
{
k_disp_to_disp = _server.getParam<Scalar>(_unique_name + "/k_disp_to_disp", "");
k_disp_to_rot = _server.getParam<Scalar>(_unique_name + "/k_disp_to_rot", "");
k_rot_to_rot = _server.getParam<Scalar>(_unique_name + "/k_rot_to_rot", "");
min_disp_var = _server.getParam<Scalar>(_unique_name + "/min_disp_var", "");
min_rot_var = _server.getParam<Scalar>(_unique_name + "/min_rot_var", "");
k_disp_to_disp = _server.getParam<Scalar>(_unique_name + "/k_disp_to_disp");
k_disp_to_rot = _server.getParam<Scalar>(_unique_name + "/k_disp_to_rot");
k_rot_to_rot = _server.getParam<Scalar>(_unique_name + "/k_rot_to_rot");
min_disp_var = _server.getParam<Scalar>(_unique_name + "/min_disp_var");
min_rot_var = _server.getParam<Scalar>(_unique_name + "/min_rot_var");
}
virtual ~IntrinsicsOdom3D() = default;
};
......
......@@ -24,6 +24,9 @@ TEST(ParamsServer, Default)
EXPECT_EQ(server.getParam<double>("should_not_exist", "2.6"), 2.6);
EXPECT_EQ(server.getParam<bool>("my_proc_test/voting_active", "true"), false);
EXPECT_NE(server.getParam<unsigned int>("my_proc_test/time_tolerance", "23"), 23);
EXPECT_THROW({ server.getParam<unsigned int>("test error"); }, std::runtime_error);
EXPECT_NE(server.getParam<unsigned int>("my_proc_test/time_tolerance"), 23);
EXPECT_EQ(server.getParam<bool>("my_proc_test/voting_active"), false);
}
int main(int argc, char **argv)
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment