diff --git a/include/publisher_vision.h b/include/publisher_vision.h index c54b9fb8a039955f622a5ecae61bfd7e75f5df0a..76f09852bcc30f3e14b13fd749c3426602bde8de 100644 --- a/include/publisher_vision.h +++ b/include/publisher_vision.h @@ -93,13 +93,13 @@ class PublisherVisionDebug : public Publisher */ void showTracks(cv::Mat _image, const TrackMatrix& _track_matrix, CaptureBasePtr _cap_img, COLORFEATURES _color_of_features, bool _show_track_ID); - Eigen::Vector2d projectLandmarkHp (const LandmarkBasePtr _lmk, const CaptureBasePtr _capture) const; - Eigen::Vector2d projectLandmarkHp(const TrackMatrix& _track_matrix, const FeatureBasePtr& _ftr, const LandmarkBasePtr _lmk); + Eigen::Vector2d projectLandmarkHp (const LandmarkBasePtr _lmk, const CaptureBasePtr _capture) const; + Eigen::Vector2d projectLandmarkHp (const CaptureBasePtr& _capture, const LandmarkBasePtr _lmk); LandmarkBasePtr getAssociatedLandmark(const TrackMatrix& _track_matrix, const FeatureBasePtr& _ftr); - Eigen::Matrix<double, 3, 4> getProjectionMatrix (const FeatureBasePtr _ftr) const; - Eigen::Isometry3d getTcw (const FeatureBasePtr _ftr) const; - Eigen::Matrix4d getTcwMatrix (const FeatureBasePtr _ftr) const; - void showLandmarks (cv::Mat _image, const TrackMatrix& _track_matrix, const FeatureBasePtr& _ftr, bool _show_landmark_ID); + Eigen::Matrix<double, 3, 4> getProjectionMatrix (const CaptureBasePtr _capture) const; + Eigen::Isometry3d getTcw (const CaptureBasePtr _capture) const; + Eigen::Matrix4d getTcwMatrix (const CaptureBasePtr _capture) const; + void showLandmarks (cv::Mat _image, const TrackMatrix& _track_matrix, const FeatureBasePtr& _ftr, bool _show_landmark_ID); }; diff --git a/src/publisher_vision.cpp b/src/publisher_vision.cpp index 8888c2048d758a7f0e350871418849e1d172f6a9..1b44063c26bfe79e55c36e089fe7e69f1b76837d 100644 --- a/src/publisher_vision.cpp +++ b/src/publisher_vision.cpp @@ -320,30 +320,30 @@ void PublisherVisionDebug::showTracks(cv::Mat _image, } } -Eigen::Isometry3d PublisherVisionDebug::getTcw(const FeatureBasePtr _ftr) const +Eigen::Isometry3d PublisherVisionDebug::getTcw(const CaptureBasePtr _capture) const { // get robot position and orientation at capture's timestamp - const auto& state = _ftr->getCapture()->getProblem()->getState(_ftr->getCapture()->getTimeStamp()); + const auto& state = _capture->getProblem()->getState(_capture->getTimeStamp()); const auto& pos = state.at('P'); const auto& ori = state.at('O'); // compute world-to-camera transform Eigen::Isometry3d T_w_r = Translation3d(pos) * Quaterniond(ori.data()); - Eigen::Isometry3d T_r_c = Translation3d(_ftr->getCapture()->getSensorP()->getState()) - * Quaterniond(_ftr->getCapture()->getSensorO()->getState().data()); + Eigen::Isometry3d T_r_c = Translation3d(_capture->getSensorP()->getState()) + * Quaterniond(_capture->getSensorO()->getState().data()); // invert transform to camera-to-world and return return (T_w_r * T_r_c).inverse(); } -Eigen::Matrix4d PublisherVisionDebug::getTcwMatrix(const FeatureBasePtr _ftr) const +Eigen::Matrix4d PublisherVisionDebug::getTcwMatrix(const CaptureBasePtr _capture) const { - return getTcw(_ftr).matrix(); + return getTcw(_capture).matrix(); } -Eigen::Matrix<double, 3, 4> PublisherVisionDebug::getProjectionMatrix(const FeatureBasePtr _ftr) const +Eigen::Matrix<double, 3, 4> PublisherVisionDebug::getProjectionMatrix(const CaptureBasePtr _capture) const { - auto k(_ftr->getCapture()->getSensor()->getIntrinsic()->getState()); + auto k(_capture->getSensor()->getIntrinsic()->getState()); Eigen::Matrix<double, 3, 4> P; P << k(2), 0 , k(0), 0, // @@ -382,12 +382,12 @@ LandmarkBasePtr PublisherVisionDebug::getAssociatedLandmark(const TrackMatrix& _ return lmk; } -Eigen::Vector2d PublisherVisionDebug::projectLandmarkHp(const TrackMatrix& _track_matrix, const FeatureBasePtr& _ftr, const LandmarkBasePtr _lmk) +Eigen::Vector2d PublisherVisionDebug::projectLandmarkHp(const CaptureBasePtr& _capture, const LandmarkBasePtr _lmk) { Eigen::Vector2d lmk_position; const auto& pos = _lmk->getP()->getState(); - Eigen::Vector3d pixel_position3 = getProjectionMatrix(_ftr) - * getTcwMatrix(_ftr) + Eigen::Vector3d pixel_position3 = getProjectionMatrix(_capture) + * getTcwMatrix(_capture) * pos; lmk_position << pixel_position3(0)/pixel_position3(2), @@ -399,7 +399,7 @@ Eigen::Vector2d PublisherVisionDebug::projectLandmarkHp(const TrackMatrix& _trac void PublisherVisionDebug::showLandmarks(cv::Mat _image, const TrackMatrix& _track_matrix, const FeatureBasePtr& _ftr, bool _show_landmark_ID) { const auto& lmk = getAssociatedLandmark(_track_matrix, _ftr); - const auto& lmk_position = projectLandmarkHp(_track_matrix, _ftr, lmk); + const auto& lmk_position = projectLandmarkHp(_ftr->getCapture(), lmk); if (lmk != nullptr) {