From 55c7e7b1769b828449349a48c5b14b6ebafa5991 Mon Sep 17 00:00:00 2001 From: joanvallve <jvallve@iri.upc.edu> Date: Wed, 3 Feb 2021 18:09:38 +0100 Subject: [PATCH] using SensorOdom2d::computeCovFromMotion() to compute cov --- include/subscriber_odom2d.h | 2 +- src/subscriber_odom2d.cpp | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/subscriber_odom2d.h b/include/subscriber_odom2d.h index 50a3a7d..d59ae53 100644 --- a/include/subscriber_odom2d.h +++ b/include/subscriber_odom2d.h @@ -18,7 +18,7 @@ class SubscriberOdom2d : public Subscriber { protected: ros::Time last_odom_stamp_; - double odometry_translational_cov_factor_, odometry_rotational_cov_factor_; + SensorOdom2dPtr sensor_odom_; public: diff --git a/src/subscriber_odom2d.cpp b/src/subscriber_odom2d.cpp index e9645b4..0643bc0 100644 --- a/src/subscriber_odom2d.cpp +++ b/src/subscriber_odom2d.cpp @@ -28,9 +28,9 @@ SubscriberOdom2d::SubscriberOdom2d(const std::string& _unique_name, const SensorBasePtr _sensor_ptr) : Subscriber(_unique_name, _server, _sensor_ptr) , last_odom_stamp_(ros::Time(0)) - , odometry_translational_cov_factor_(std::static_pointer_cast<SensorOdom2d>(_sensor_ptr)->getDispVarToDispNoiseFactor()) - , odometry_rotational_cov_factor_(std::static_pointer_cast<SensorOdom2d>(_sensor_ptr)->getRotVarToRotNoiseFactor()) + , sensor_odom_(std::static_pointer_cast<SensorOdom2d>(_sensor_ptr)) { + assert(std::dynamic_pointer_cast<SensorOdom2d>(_sensor_ptr) != nullptr && "SubscriberOdom2d: sensor provided is not of type SensorOdom2d!"); } void SubscriberOdom2d::initialize(ros::NodeHandle& nh, const std::string& topic) @@ -45,12 +45,12 @@ void SubscriberOdom2d::callback(const nav_msgs::Odometry::ConstPtr& msg) if (last_odom_stamp_ != ros::Time(0)) { double dt = (msg->header.stamp - last_odom_stamp_).toSec(); + Eigen::Vector2d data(msg->twist.twist.linear.x * dt, msg->twist.twist.angular.z * dt); CaptureOdom2dPtr new_capture = std::make_shared<CaptureOdom2d>( TimeStamp(msg->header.stamp.sec, msg->header.stamp.nsec), sensor_ptr_, - Eigen::Vector2d(msg->twist.twist.linear.x * dt, msg->twist.twist.angular.z * dt), - Eigen::DiagonalMatrix<double, 2>(msg->twist.twist.linear.x * dt * (double)odometry_translational_cov_factor_, - msg->twist.twist.angular.z * dt * (double)odometry_rotational_cov_factor_)); + data, + sensor_odom_->computeCovFromMotion(data)); sensor_ptr_->process(new_capture); } last_odom_stamp_ = msg->header.stamp; -- GitLab