/** * @brief get configuration parameter * @param [in] src : configuration parameter declaration * @param [out] dest : configuration parameter */ inline int proc_conf_get(gnd::conf::configuration *src, proc_configuration* dest) { gnd_assert(!src, -1, "invalid null pointer"); gnd_assert(!dest, -1, "invalid null pointer"); gnd::conf::get_parameter(src, &dest->bmp_map); gnd::conf::get_parameter(src, &dest->raw_map); gnd::conf::get_parameter(src, &dest->sokuikiraw_name); gnd::conf::get_parameter(src, &dest->sokuikiraw_id); gnd::conf::get_parameter(src, &dest->sokuikifs_name); gnd::conf::get_parameter(src, &dest->sokuikifs_id); gnd::conf::get_parameter(src, &dest->particle_name); gnd::conf::get_parameter(src, &dest->particle_id); gnd::conf::get_parameter(src, &dest->odometry_name); gnd::conf::get_parameter(src, &dest->odometry_id); gnd::conf::get_parameter(src, &dest->eval_name); gnd::conf::get_parameter(src, &dest->eval_id); gnd::conf::get_parameter(src, &dest->cycle); gnd::conf::get_parameter(src, &dest->sleeping_time); gnd::conf::get_parameter(src, &dest->sleeping_dist); gnd::conf::get_parameter(src, &dest->cull); gnd::conf::get_parameter(src, &dest->blur); gnd::conf::get_parameter(src, &dest->scan_range); gnd::conf::get_parameter(src, &dest->matching_false); gnd::conf::get_parameter(src, &dest->false_positive); if( gnd::conf::get_parameter(src, &dest->sleeping_orient) >= 0 ){ // convert unit of angle(deg2rad) dest->sleeping_orient.value = gnd_deg2rad(dest->sleeping_orient.value); } return 0; }
/** * @brief set configuration parameter declaration * @param [out] dest : configuration parameter declaration * @param [in] src : configuration parameter */ inline int proc_conf_set(gnd::conf::configuration *dest, proc_configuration* src) { gnd_assert(!src, -1, "invalid null pointer"); gnd_assert(!dest, -1, "invalid null pointer"); gnd::conf::set_parameter(dest, &src->bmp_map); gnd::conf::set_parameter(dest, &src->raw_map); gnd::conf::set_parameter(dest, &src->sokuikiraw_name); gnd::conf::set_parameter(dest, &src->sokuikiraw_id); gnd::conf::set_parameter(dest, &src->odometry_name); gnd::conf::set_parameter(dest, &src->odometry_id); gnd::conf::set_parameter(dest, &src->particle_name); gnd::conf::set_parameter(dest, &src->particle_id); gnd::conf::set_parameter(dest, &src->eval_name); gnd::conf::set_parameter(dest, &src->eval_id); gnd::conf::set_parameter(dest, &src->cycle); gnd::conf::set_parameter(dest, &src->sleeping_time); gnd::conf::set_parameter(dest, &src->sleeping_dist); // convert unit of angle (rad2deg) src->sleeping_orient.value = gnd_rad2deg(src->sleeping_orient.value); gnd::conf::set_parameter(dest, &src->sleeping_orient); // reconvert unit of angle (rad2deg) src->sleeping_orient.value = gnd_deg2rad(src->sleeping_orient.value); gnd::conf::set_parameter(dest, &src->cull); gnd::conf::set_parameter(dest, &src->blur); gnd::conf::set_parameter(dest, &src->scan_range); gnd::conf::set_parameter(dest, &src->mfailure); return 0; }
namespace peval { static const char proc_name[] = "opsm-particle-evaluator"; // bmp-map static const gnd::conf::parameter_array<char, 512> ConfIni_BMPMap = { "bmp-map", "", // file path "load map with bmp map directory" }; // raw-map static const gnd::conf::parameter_array<char, 512> ConfIni_RawMap = { "cnt-map-dir", "", // map file directory "load map with counting map" }; // sokuiki-raw-name static const gnd::conf::parameter_array<char, 512> ConfIni_SokuikiRawName = { "sokuiki-raw-ssm-name", SSM_NAME_SCAN_POINT_2D, // ssm name "sokuiki raw data ssm name" }; // sokuiki-raw-id static const gnd::conf::parameter<int> ConfIni_SokuikiRawID = { "sokuiki-raw-ssm-id", 0, // id "sokuiki raw data ssm id" }; // sokuiki-raw-name static const gnd::conf::parameter_array<char, 512> ConfIni_SokuikiFSName = { "sokuiki-fs-ssm-name", "", // ssm name "sokuiki fs data ssm name. if sokuiki-raw-ssm-name and id are not defined, read sokuiki fs data from ssm" }; // sokuiki-raw-id static const gnd::conf::parameter<int> ConfIni_SokuikiFSID = { "sokuiki-fs-ssm-id", -1, // id "sokuiki fs data ssm id. if sokuiki-raw-ssm-name and id are not defined, read sokuiki fs data from ssm" }; // odometry-raw-name static const gnd::conf::parameter_array<char, 512> ConfIni_OdometryName = { "odometry-ssm-name", SNAME_ODOMETRY, // map file directory "odometry data ssm name (for sleeping mode)" }; // odometry-raw-id static const gnd::conf::parameter<int> ConfIni_OdometryID = { "odometry-ssm-id", -1, // map file directory "odometry data ssm id (for sleeping mode)" }; // particle-name static const gnd::conf::parameter_array<char, 512> ConfIni_ParticleName = { "particles-ssm-name", SNAME_PARTICLES, // ssm name "particles data ssm name" }; // particle-id static const gnd::conf::parameter<int> ConfIni_ParticleID = { "particle-ssm-id", 0, // ssm id "particles data ssm id" }; // particle-name static const gnd::conf::parameter_array<char, 512> ConfIni_ParticleEvalName = { "particle-eval-ssm-name", SNAME_PARTICLES_EVALUATION, // ssm name "particles evaluation data ssm name" }; // particle-id static const gnd::conf::parameter<int> ConfIni_ParticleEvalID = { "particle-eval-ssm-id", 0, // ssm id "particles evaluation data ssm id" }; // cycle static const gnd::conf::parameter<double> ConfIni_Cycle = { "cycle", 0.083333, // [s] "evaluation cycle" }; // rest-cycle static const gnd::conf::parameter<double> ConfIni_SleepingTime = { "sleep-time", 0.0, // sec "if robot did not move, evaluation stop for this time" }; // rest-threshold-distance static const gnd::conf::parameter<double> ConfIni_SleepingDist = { "sleep-threshold-distance", 0.01, // [m] "if robot did not move more than this distance, evaluation stop" }; // rest-threshold-orientation static const gnd::conf::parameter<double> ConfIni_SleepingOrient = { "sleep-threshold-orientation", gnd_deg2rad(5), // [rad] "if robot did not move more than this angle, evaluation stop" }; // cull static const gnd::conf::parameter<double> ConfIni_Cull = { "cull", 0.1, // [m] "input data culling parameter" }; // blur static const gnd::conf::parameter<double> ConfIni_Blur = { "blur", 0.05, // [m] }; // matching failure static const gnd::conf::parameter<double> ConfIni_ScanRangeDist = { "scan-range-dist", 0, // [m] }; // matching failure static const gnd::conf::parameter<double> ConfIni_MatchingFailureRate = { "matching-failure-rate", 0.2, }; // matching failure static const gnd::conf::parameter<double> ConfIni_MatchingFalsePositive = { "matching-false-positive", 0.05, }; } // <--- namespace opsm