diff --git a/src/problem.cpp b/src/problem.cpp index 2b44e3181124d1910bdc81f1cdb548d700a2602d..50100be20ff50ec47858026cbbf5ec44f1bb20ad 100644 --- a/src/problem.cpp +++ b/src/problem.cpp @@ -100,8 +100,10 @@ SensorBasePtr Problem::installSensor(const std::string& _sen_type, // const Eigen::VectorXs& _extrinsics, // const std::string& _intrinsics_filename) { + if (_intrinsics_filename != "") { + assert(file_exists(_intrinsics_filename) && "Cannot install sensor: intrinsics' YAML file does not exist."); IntrinsicsBasePtr intr_ptr = IntrinsicsFactory::get().create(_sen_type, _intrinsics_filename); return installSensor(_sen_type, _unique_sensor_name, _extrinsics, intr_ptr); } @@ -149,6 +151,7 @@ ProcessorBasePtr Problem::installProcessor(const std::string& _prc_type, // return installProcessor(_prc_type, _unique_processor_name, sen_ptr, nullptr); else { + assert(file_exists(_params_filename) && "Cannot install processor: parameters' YAML file does not exist."); ProcessorParamsBasePtr prc_params = ProcessorParamsFactory::get().create(_prc_type, _params_filename); return installProcessor(_prc_type, _unique_processor_name, sen_ptr, prc_params); } diff --git a/src/processors/processor_tracker_feature_trifocal.cpp b/src/processors/processor_tracker_feature_trifocal.cpp index 0f16f3d4ad5bad25ef20ac89788183f269e3bc97..5db65175984a3e5cb3933b487a4e0b1609e20706 100644 --- a/src/processors/processor_tracker_feature_trifocal.cpp +++ b/src/processors/processor_tracker_feature_trifocal.cpp @@ -24,6 +24,8 @@ ProcessorTrackerFeatureTrifocal::ProcessorTrackerFeatureTrifocal(const Processor initialized_(false) { assert(!(params_.yaml_file_params_vision_utils.empty()) && "Missing YAML file with vision_utils parameters!"); + assert(file_exists(params_.yaml_file_params_vision_utils) && "Cannot setup processor: vision_utils' YAML file does not exist."); + // Detector std::string det_name = vision_utils::readYamlType(params_.yaml_file_params_vision_utils, "detector"); det_ptr_ = vision_utils::setupDetector(det_name, det_name + " detector", params_.yaml_file_params_vision_utils); diff --git a/src/wolf.h b/src/wolf.h index 6fd47ad622d9a5754e5525041ebcd138c6229241..f062e7b00aa29c723fbb227fa79af130108f1643 100644 --- a/src/wolf.h +++ b/src/wolf.h @@ -23,6 +23,9 @@ #include <map> #include <memory> // shared_ptr and weak_ptr +// System specifics +#include <sys/stat.h> + namespace wolf { /** @@ -282,6 +285,12 @@ WOLF_PTR_TYPEDEFS(LocalParametrizationBase); // ================================================== // Some dangling functions +inline bool file_exists(const std::string& _name) +{ + struct stat buffer; + return (stat (_name.c_str(), &buffer) == 0); +} + inline const Eigen::Vector3s gravity(void) { return Eigen::Vector3s(0,0,-9.806); } diff --git a/src/yaml/processor_tracker_feature_trifocal_yaml.cpp b/src/yaml/processor_tracker_feature_trifocal_yaml.cpp index 024d7a3a8f3519c91a5f31cad458a4d443c9a8ee..cb77aac131a61229e4d556426f6b19481f6cfea0 100644 --- a/src/yaml/processor_tracker_feature_trifocal_yaml.cpp +++ b/src/yaml/processor_tracker_feature_trifocal_yaml.cpp @@ -40,6 +40,13 @@ static ProcessorParamsBasePtr createProcessorParamsTrackerFeatureTrifocal(const YAML::Node vision_utils = config ["vision_utils"]; params->yaml_file_params_vision_utils = vision_utils["YAML file params"].as<std::string>(); + // relative to global path for Vision Utils YAML + assert(params->yaml_file_params_vision_utils.at(0) != ('/') && "The parameter YAML FILE PARAMS (in processor params YAML file) must be specified with a path relative to the processor YAML file."); + unsigned first = _filename_dot_yaml.find("/"); + unsigned last = _filename_dot_yaml.find_last_of("/"); + std::string strNew = _filename_dot_yaml.substr (first,last-first); + params->yaml_file_params_vision_utils = _filename_dot_yaml.substr (first,last-first) + "/" + params->yaml_file_params_vision_utils; + YAML::Node algorithm = config ["algorithm"]; params->time_tolerance = algorithm["time tolerance"] .as<Scalar>(); params->voting_active = algorithm["voting active"] .as<bool>();