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

Added auto_conf for sensors. Missing Sensor_Laser_2D

parent c92becc2
No related branches found
No related tags found
1 merge request!260WIP: params autoconf
Pipeline #2660 failed
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#define HELLO_WOLF_SENSOR_RANGE_BEARING_H_ #define HELLO_WOLF_SENSOR_RANGE_BEARING_H_
#include "base/sensor/sensor_base.h" #include "base/sensor/sensor_base.h"
#include "base/params_server.hpp"
namespace wolf namespace wolf
{ {
...@@ -18,6 +19,12 @@ struct IntrinsicsRangeBearing : public IntrinsicsBase ...@@ -18,6 +19,12 @@ struct IntrinsicsRangeBearing : public IntrinsicsBase
{ {
Scalar noise_range_metres_std = 0.05; Scalar noise_range_metres_std = 0.05;
Scalar noise_bearing_degrees_std = 0.5; Scalar noise_bearing_degrees_std = 0.5;
IntrinsicsRangeBearing(std::string _unique_name, const paramsServer& _server):
IntrinsicsBase(_unique_name, _server)
{
noise_range_metres_std = _server.getParam<Scalar>(_unique_name + "/noise_range_metres_std", "0.05");
noise_bearing_degrees_std = _server.getParam<Scalar>(_unique_name + "/noise_bearing_degrees_std", "0.5");
}
}; };
WOLF_PTR_TYPEDEFS(SensorRangeBearing) WOLF_PTR_TYPEDEFS(SensorRangeBearing)
......
...@@ -20,6 +20,7 @@ namespace wolf { ...@@ -20,6 +20,7 @@ namespace wolf {
struct IntrinsicsGPS : public IntrinsicsBase struct IntrinsicsGPS : public IntrinsicsBase
{ {
// add GPS parameters here // add GPS parameters here
using IntrinsicsBase::IntrinsicsBase;
virtual ~IntrinsicsGPS() = default; virtual ~IntrinsicsGPS() = default;
}; };
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
//wolf includes //wolf includes
#include "base/sensor/sensor_base.h" #include "base/sensor/sensor_base.h"
#include "base/params_server.hpp"
// std includes // std includes
...@@ -14,6 +15,11 @@ struct IntrinsicsGPSFix : public IntrinsicsBase ...@@ -14,6 +15,11 @@ struct IntrinsicsGPSFix : public IntrinsicsBase
{ {
Eigen::Vector3s noise_std; Eigen::Vector3s noise_std;
// Empty -- it acts only as a typedef for IntrinsicsBase, but allows future extension with parameters // Empty -- it acts only as a typedef for IntrinsicsBase, but allows future extension with parameters
IntrinsicsGPSFix(std::string _unique_name, const paramsServer& _server):
IntrinsicsBase(_unique_name, _server)
{
noise_std = _server.getParam<Eigen::Vector3s>(_unique_name + "/noise_std", "");
}
virtual ~IntrinsicsGPSFix() = default; virtual ~IntrinsicsGPSFix() = default;
}; };
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
//wolf includes //wolf includes
#include "base/sensor/sensor_base.h" #include "base/sensor/sensor_base.h"
#include "base/params_server.hpp"
#include <iostream> #include <iostream>
namespace wolf { namespace wolf {
...@@ -27,6 +28,16 @@ struct IntrinsicsIMU : public IntrinsicsBase ...@@ -27,6 +28,16 @@ struct IntrinsicsIMU : public IntrinsicsBase
Scalar wb_rate_stdev = 0.00001; Scalar wb_rate_stdev = 0.00001;
virtual ~IntrinsicsIMU() = default; virtual ~IntrinsicsIMU() = default;
IntrinsicsIMU(std::string _unique_name, const paramsServer& _server):
IntrinsicsBase(_unique_name, _server)
{
w_noise = _server.getParam<Scalar>(_unique_name + "/w_noise", "0.001");
a_noise = _server.getParam<Scalar>(_unique_name + "/a_noise", "0.004");
ab_initial_stdev = _server.getParam<Scalar>(_unique_name + "/ab_initial_stdev", "0.01");
wb_initial_stdev = _server.getParam<Scalar>(_unique_name + "/wb_initial_stdev", "0.01");
ab_rate_stdev = _server.getParam<Scalar>(_unique_name + "/ab_rate_stdev", "0.00001");
wb_rate_stdev = _server.getParam<Scalar>(_unique_name + "/wb_rate_stdev", "0.00001");
}
}; };
WOLF_PTR_TYPEDEFS(SensorIMU); WOLF_PTR_TYPEDEFS(SensorIMU);
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
//wolf includes //wolf includes
#include "base/sensor/sensor_base.h" #include "base/sensor/sensor_base.h"
#include "base/params_server.hpp"
namespace wolf namespace wolf
{ {
...@@ -18,6 +19,15 @@ struct IntrinsicsCamera : public IntrinsicsBase ...@@ -18,6 +19,15 @@ struct IntrinsicsCamera : public IntrinsicsBase
Eigen::Vector4s pinhole_model_rectified;///< k = [u_0, v_0, alpha_u, alpha_v] vector of pinhole intrinsic parameters Eigen::Vector4s pinhole_model_rectified;///< k = [u_0, v_0, alpha_u, alpha_v] vector of pinhole intrinsic parameters
Eigen::VectorXs distortion; ///< d = [d_1, d_2, d_3, ...] radial distortion coefficients Eigen::VectorXs distortion; ///< d = [d_1, d_2, d_3, ...] radial distortion coefficients
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", "");
}
virtual ~IntrinsicsCamera() = default; virtual ~IntrinsicsCamera() = default;
}; };
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
//wolf includes //wolf includes
#include "base/sensor/sensor_base.h" #include "base/sensor/sensor_base.h"
#include "base/diff_drive_tools.h" #include "base/diff_drive_tools.h"
#include "base/params_server.hpp"
namespace wolf { namespace wolf {
...@@ -32,7 +33,28 @@ struct IntrinsicsDiffDrive : public IntrinsicsBase ...@@ -32,7 +33,28 @@ struct IntrinsicsDiffDrive : public IntrinsicsBase
Scalar left_gain_ = 0.01; Scalar left_gain_ = 0.01;
Scalar right_gain_ = 0.01; Scalar right_gain_ = 0.01;
IntrinsicsDiffDrive(std::string _unique_name, const paramsServer& _server):
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_", "");
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;
else throw std::runtime_error("Failed to fetch a valid value for the enumerate DiffDriveModel. Value provided: " + model_str);
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_gain_ = _server.getParam<Scalar>(_unique_name + "/left_gain", "0.01");
right_gain_ = _server.getParam<Scalar>(_unique_name + "/right_gain", "0.01");
}
virtual ~IntrinsicsDiffDrive() = default; virtual ~IntrinsicsDiffDrive() = default;
}; };
......
...@@ -15,6 +15,12 @@ struct IntrinsicsOdom2D : public IntrinsicsBase ...@@ -15,6 +15,12 @@ struct IntrinsicsOdom2D : public IntrinsicsBase
Scalar k_disp_to_disp; ///< ratio of displacement variance to displacement, for odometry noise calculation Scalar k_disp_to_disp; ///< ratio of displacement variance to displacement, for odometry noise calculation
Scalar k_rot_to_rot; ///< ratio of rotation variance to rotation, for odometry noise calculation Scalar k_rot_to_rot; ///< ratio of rotation variance to rotation, for odometry noise calculation
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", "");
}
}; };
WOLF_PTR_TYPEDEFS(SensorOdom2D); WOLF_PTR_TYPEDEFS(SensorOdom2D);
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
//wolf includes //wolf includes
#include "base/sensor/sensor_base.h" #include "base/sensor/sensor_base.h"
#include "base/params_server.hpp"
namespace wolf { namespace wolf {
...@@ -22,7 +23,15 @@ struct IntrinsicsOdom3D : public IntrinsicsBase ...@@ -22,7 +23,15 @@ struct IntrinsicsOdom3D : public IntrinsicsBase
Scalar k_rot_to_rot; ///< ratio of rotation variance to rotation, for odometry noise calculation Scalar k_rot_to_rot; ///< ratio of rotation variance to rotation, for odometry noise calculation
Scalar min_disp_var; Scalar min_disp_var;
Scalar min_rot_var; Scalar min_rot_var;
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", "");
}
virtual ~IntrinsicsOdom3D() = default; virtual ~IntrinsicsOdom3D() = default;
}; };
......
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