From 125c025ddaaa9826f118a93ead97f35d34a354cf Mon Sep 17 00:00:00 2001 From: jvallve <jvallve@iri.upc.edu> Date: Fri, 25 Feb 2022 13:18:06 +0100 Subject: [PATCH] averaging gravity in 3D --- src/subscriber_imu.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/subscriber_imu.cpp b/src/subscriber_imu.cpp index a399245..41f6e72 100644 --- a/src/subscriber_imu.cpp +++ b/src/subscriber_imu.cpp @@ -321,8 +321,13 @@ void SubscriberImu::callback(const sensor_msgs::Imu::ConstPtr& msg) else if (std::dynamic_pointer_cast<SensorImu>(sensor_ptr_) != nullptr) { - auto q_first = Eigen::Quaterniond(Eigen::Vector4d(sensor_ptr_->getProblem()->getTrajectory()->getFirstFrame()->getStateVector("O"))); - g_local_xy = (q_first.conjugate() * gravity()).head<2>(); + g_local_xy.setZero(); + for (auto frm_it : sensor_ptr_->getProblem()->getTrajectory()->getFrameMap()) + { + auto q_first = Eigen::Quaterniond(Eigen::Vector4d(frm_it.second->getStateVector("O"))); + g_local_xy += (q_first.conjugate() * gravity()).head<2>(); + } + g_local_xy /= sensor_ptr_->getProblem()->getTrajectory()->getFrameMap().size(); } else return; -- GitLab