Skip to content
Snippets Groups Projects
Commit 87a1b8d8 authored by Pep Martí Saumell's avatar Pep Martí Saumell
Browse files

WIP

parent 4e13cf99
No related branches found
No related tags found
3 merge requests!30Release after RAL,!29After 2nd RAL submission,!2Resolve "autoconf: add create function"
...@@ -31,11 +31,11 @@ class SensorLaser2D : public SensorBase ...@@ -31,11 +31,11 @@ class SensorLaser2D : public SensorBase
public: public:
/** \brief Constructor with extrinsics /** \brief Constructor with extrinsics
* *
* \param _p_ptr StateBlock pointer to the sensor position * \param _p_ptr StateBlock pointer to the sensor position
* \param _o_ptr StateBlock pointer to the sensor orientation * \param _o_ptr StateBlock pointer to the sensor orientation
* *
**/ **/
SensorLaser2D(StateBlockPtr _p_ptr, StateBlockPtr _o_ptr); SensorLaser2D(StateBlockPtr _p_ptr, StateBlockPtr _o_ptr);
/** \brief Constructor with extrinsics and scan parameters /** \brief Constructor with extrinsics and scan parameters
...@@ -58,25 +58,26 @@ class SensorLaser2D : public SensorBase ...@@ -58,25 +58,26 @@ class SensorLaser2D : public SensorBase
SensorLaser2D(StateBlockPtr _p_ptr, StateBlockPtr _o_ptr, IntrinsicsLaser2DPtr _params); SensorLaser2D(StateBlockPtr _p_ptr, StateBlockPtr _o_ptr, IntrinsicsLaser2DPtr _params);
virtual ~SensorLaser2D(); virtual ~SensorLaser2D();
void setDefaultScanParams(); void setDefaultScanParams();
/** \brief Set scanner intrinsic parameters /** \brief Set scanner intrinsic parameters
* *
* \param _params struct with scanner intrinsic parameters. See laser_scan_utils library API for reference. * \param _params struct with scanner intrinsic parameters. See laser_scan_utils library API for reference.
* *
**/ **/
void setScanParams(const laserscanutils::LaserScanParams & _params); void setScanParams(const laserscanutils::LaserScanParams & _params);
/** \brief Get scanner intrinsic parameters /** \brief Get scanner intrinsic parameters
* *
* Get scanner intrinsic parameters * Get scanner intrinsic parameters
* *
**/ **/
const laserscanutils::LaserScanParams & getScanParams() const; const laserscanutils::LaserScanParams & getScanParams() const;
public: public:
static SensorBasePtr create(const std::string& _unique_name, const Eigen::VectorXs& _extrinsics_po, const IntrinsicsBasePtr _intrinsics); static SensorBasePtr create(const std::string& _unique_name, const Eigen::VectorXs& _extrinsics_po, const IntrinsicsBasePtr _intrinsics);
static SensorBasePtr createAutoConf(const std::string& _unique_name, const paramsServer& _server);
static IntrinsicsBasePtr createParams(const std::string& _filename_dot_yaml); static IntrinsicsBasePtr createParams(const std::string& _filename_dot_yaml);
}; };
......
...@@ -79,6 +79,23 @@ SensorBasePtr SensorLaser2D::create(const std::string& _unique_name, const Eigen ...@@ -79,6 +79,23 @@ SensorBasePtr SensorLaser2D::create(const std::string& _unique_name, const Eigen
return sen; return sen;
} }
SensorBasePtr SensorLaser2D::createAutoConf(const std::string& _unique_name, const paramsServer& _server)
{
// decode extrinsics vector
Eigen::VectorXs _extrinsics_po = _server.getParam<Eigen::VectorXs>(_unique_name + "/extrinsic/pos", "[0,0,0]");
assert(_extrinsics_po.size() == 3 && "Bad extrinsics vector length. Should be 3 for 2D.");
StateBlockPtr pos_ptr = std::make_shared<StateBlock>(_extrinsics_po.head(2), true);
StateBlockPtr ori_ptr = std::make_shared<StateBlock>(_extrinsics_po.tail(1), true);
SensorLaser2DPtr sen;
IntrinsicsLaser2D params;
sen = std::make_shared<SensorLaser2D>(pos_ptr, ori_ptr, params.scan_params);
sen->setName(_unique_name);
return sen;
}
} // namespace wolf } // namespace wolf
// Register in the SensorFactory and the ParameterFactory // Register in the SensorFactory and the ParameterFactory
...@@ -88,3 +105,7 @@ namespace wolf { ...@@ -88,3 +105,7 @@ namespace wolf {
WOLF_REGISTER_SENSOR("LASER 2D", SensorLaser2D) WOLF_REGISTER_SENSOR("LASER 2D", SensorLaser2D)
//const bool registered_laser_params = IntrinsicsFactory::get().registerCreator("LASER 2D", createIntrinsicsLaser2D); //const bool registered_laser_params = IntrinsicsFactory::get().registerCreator("LASER 2D", createIntrinsicsLaser2D);
} // namespace wolf } // namespace wolf
#include "core/sensor/autoconf_sensor_factory.h"
namespace wolf {
WOLF_REGISTER_SENSOR_AUTO("LASER 2D", SensorLaser2D)
} // namespace wolf
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