28 #ifndef _MLAB_LOCALIZATION_MARKER_H_ 29 #define _MLAB_LOCALIZATION_MARKER_H_ 31 #include <opencv2/calib3d/calib3d.hpp> 37 namespace mira {
namespace localization {
52 if (Tvec.rows != 3 || Tvec.cols != 1)
53 MIRA_THROW(XInvalidParameter,
"Can't construct marker pose: " 54 "Unexpected size of tvec (rows=" << Tvec.rows <<
", cols=" << Tvec.cols <<
")");
55 if (Rvec.rows != 3 || Rvec.cols != 1)
56 MIRA_THROW(XInvalidParameter,
"Can't construct marker pose: " 57 "Unexpected size of rvec (rows=" << Rvec.rows <<
", cols=" << Rvec.cols <<
")");
61 cv::Rodrigues(Rvec, rotMat);
67 Eigen::Vector3f ea =
eulerAngles(eigenRotMat, 2, 1, 0);
69 pose =
Pose3(Tvec.at<
float>(0, 0), Tvec.at<
float>(0, 1), Tvec.at<
float>(0, 2),
70 ea[0], ea[1], -ea[2]);
73 template<
typename Reflector>
97 typedef std::multimap<std::string, MarkerPtr>
MarkerMap;
Marker()
Definition: Marker.h:46
std::multimap< std::string, MarkerPtr > MarkerMap
A map of markers.
Definition: Marker.h:97
Pose3 pose
Definition: Marker.h:86
std::string id
Pose of the marker.
Definition: Marker.h:87
#define MIRA_THROW(ex, msg)
boost::shared_ptr< Marker > MarkerPtr
Marker pointer.
Definition: Marker.h:94
Base marker type.
Definition: Marker.h:42
void reflect(Reflector &r)
Definition: Marker.h:74
Time markerTimestamp
ID/content of the marker.
Definition: Marker.h:88
#define MIRA_OBJECT(classIdentifier)
Eigen::Matrix< typename Eigen::MatrixBase< Derived >::Scalar, 3, 1 > eulerAngles(const Eigen::MatrixBase< Derived > &mat, typename Eigen::MatrixBase< Derived >::Index a0, typename Eigen::MatrixBase< Derived >::Index a1, typename Eigen::MatrixBase< Derived >::Index a2)
Marker(const cv::Mat &Tvec, const cv::Mat &Rvec)
Construct a marker and initialize the pose of the marker by using.
Definition: Marker.h:50
REFLECT_CTRLFLAG_MEMBER_AS_ROPROPERTY