diff --git a/include/core/sensor/sensor_diff_drive.h b/include/core/sensor/sensor_diff_drive.h index 79d1c769a842d267b32dbffe4fdaa58580358476..9367347e07da6a0f9aaa0708c5db3b939a0deba3 100644 --- a/include/core/sensor/sensor_diff_drive.h +++ b/include/core/sensor/sensor_diff_drive.h @@ -22,8 +22,6 @@ struct IntrinsicsDiffDrive : public IntrinsicsBase Scalar wheel_separation; Scalar ticks_per_wheel_revolution; - Scalar radians_per_tick; ///< Not user-definable -- DO NOT PRETEND TO USE YAML TO SET THIS PARAM. - IntrinsicsDiffDrive() = default; IntrinsicsDiffDrive(std::string _unique_name, const wolf::ParamsServer & _server) : @@ -33,17 +31,14 @@ struct IntrinsicsDiffDrive : public IntrinsicsBase radius_right = _server.getParam<Scalar>(_unique_name + "/radius_right"); wheel_separation = _server.getParam<Scalar>(_unique_name + "/wheel_separation"); ticks_per_wheel_revolution = _server.getParam<Scalar>(_unique_name + "/ticks_per_wheel_revolution"); - radians_per_tick = 2.0 * M_PI / ticks_per_wheel_revolution; } - std::string print() std::string print() const { return "\n" + IntrinsicsBase::print() + "\n" + "radius_left: " + std::to_string(radius_left) + "\n" + "radius_right: " + std::to_string(radius_right) + "\n" + "wheel_separation: " + std::to_string(wheel_separation) + "\n" - + "ticks_per_wheel_revolution: " + std::to_string(ticks_per_wheel_revolution)+ "\n" - + "radians_per_tick: " + std::to_string(radians_per_tick) + "\n"; + + "ticks_per_wheel_revolution: " + std::to_string(ticks_per_wheel_revolution)+ "\n"; } }; @@ -59,8 +54,15 @@ class SensorDiffDrive : public SensorBase virtual ~SensorDiffDrive(); IntrinsicsDiffDriveConstPtr getParams() const {return params_diff_drive_;} + Scalar getRadiansPerTick() const + { + return radians_per_tick; + } + protected: IntrinsicsDiffDrivePtr params_diff_drive_; + Scalar radians_per_tick; ///< Not user-definable -- DO NOT PRETEND TO USE YAML TO SET THIS PARAM. + }; } /* namespace wolf */ diff --git a/src/processor/processor_diff_drive.cpp b/src/processor/processor_diff_drive.cpp index 8c31ff7a74ee17cdb7674567b03340058304dd01..d0afacb45a6fb235e6d01e7c893ffc612449e6c0 100644 --- a/src/processor/processor_diff_drive.cpp +++ b/src/processor/processor_diff_drive.cpp @@ -38,7 +38,7 @@ void ProcessorDiffDrive::configure(SensorBasePtr _sensor) SensorDiffDriveConstPtr sensor_diff_drive = std::static_pointer_cast<SensorDiffDrive>(_sensor); - radians_per_tick_ = sensor_diff_drive->getParams()->radians_per_tick; + radians_per_tick_ = sensor_diff_drive->getRadiansPerTick(); } diff --git a/src/sensor/sensor_diff_drive.cpp b/src/sensor/sensor_diff_drive.cpp index d8c29515a1113fa65c88fb6ec83ceb29546030f8..369e32919a84d20ab3e7396b67bfcb5e68b514c5 100644 --- a/src/sensor/sensor_diff_drive.cpp +++ b/src/sensor/sensor_diff_drive.cpp @@ -20,7 +20,7 @@ SensorDiffDrive::SensorDiffDrive(const Eigen::VectorXs& _extrinsics, 2), params_diff_drive_(_intrinsics) { - params_diff_drive_->radians_per_tick = 2.0*M_PI / params_diff_drive_->ticks_per_wheel_revolution; + radians_per_tick = 2.0*M_PI / params_diff_drive_->ticks_per_wheel_revolution; getIntrinsic()->setState(Eigen::Vector3s(_intrinsics->radius_left,_intrinsics->radius_right,_intrinsics->wheel_separation)); getIntrinsic()->unfix(); } diff --git a/test/gtest_sensor_diff_drive.cpp b/test/gtest_sensor_diff_drive.cpp index 29ccea249acb27a6b0ac3bbbfb88b7bc0516d05c..363847f6c30ea0bcb36fce264f7aabcfe36fc298 100644 --- a/test/gtest_sensor_diff_drive.cpp +++ b/test/gtest_sensor_diff_drive.cpp @@ -30,7 +30,6 @@ TEST(DiffDrive, constructor) TEST(DiffDrive, getParams) { auto intr = std::make_shared<IntrinsicsDiffDrive>(); - intr->radians_per_tick = 1; intr->radius_left = 2; intr->radius_right = 3; intr->ticks_per_wheel_revolution = 4; @@ -42,7 +41,7 @@ TEST(DiffDrive, getParams) ASSERT_NE(sen->getParams(), nullptr); - ASSERT_EQ(sen->getParams()->radians_per_tick, 2.0*M_PI/intr->ticks_per_wheel_revolution); // this is dependent on 'ticks_per_wheel_revolution' + ASSERT_EQ(sen->getRadiansPerTick(), 2.0*M_PI/intr->ticks_per_wheel_revolution); // this is dependent on 'ticks_per_wheel_revolution' ASSERT_EQ(sen->getParams()->radius_left, 2); ASSERT_EQ(sen->getParams()->radius_right, 3); ASSERT_EQ(sen->getParams()->ticks_per_wheel_revolution, 4); @@ -52,7 +51,6 @@ TEST(DiffDrive, getParams) TEST(DiffDrive, create) { auto intr = std::make_shared<IntrinsicsDiffDrive>(); - intr->radians_per_tick = 1; intr->radius_left = 2; intr->radius_right = 3; intr->ticks_per_wheel_revolution = 4; @@ -66,7 +64,7 @@ TEST(DiffDrive, create) ASSERT_NE(sen->getParams(), nullptr); - ASSERT_EQ(sen->getParams()->radians_per_tick, 2.0*M_PI/intr->ticks_per_wheel_revolution); // this is dependent on 'ticks_per_wheel_revolution' + ASSERT_EQ(sen->getRadiansPerTick(), 2.0*M_PI/intr->ticks_per_wheel_revolution); // this is dependent on 'ticks_per_wheel_revolution' ASSERT_EQ(sen->getParams()->radius_left, 2); ASSERT_EQ(sen->getParams()->radius_right, 3); ASSERT_EQ(sen->getParams()->ticks_per_wheel_revolution, 4);