summaryrefslogtreecommitdiffhomepage
path: root/ftnoir_tracker_aruco/ftnoir_tracker_aruco.h
diff options
context:
space:
mode:
Diffstat (limited to 'ftnoir_tracker_aruco/ftnoir_tracker_aruco.h')
-rw-r--r--ftnoir_tracker_aruco/ftnoir_tracker_aruco.h59
1 files changed, 26 insertions, 33 deletions
diff --git a/ftnoir_tracker_aruco/ftnoir_tracker_aruco.h b/ftnoir_tracker_aruco/ftnoir_tracker_aruco.h
index 4cab84b5..3d37dacd 100644
--- a/ftnoir_tracker_aruco/ftnoir_tracker_aruco.h
+++ b/ftnoir_tracker_aruco/ftnoir_tracker_aruco.h
@@ -5,10 +5,8 @@
* copyright notice and this permission notice appear in all copies.
*/
-#ifndef FTNOIR_TRACKER_HT_H
-#define FTNOIR_TRACKER_HT_H
+#pragma once
-#include "ftnoir_tracker_base/ftnoir_tracker_base.h"
#include "ui_aruco-trackercontrols.h"
#include "ar_video_widget.h"
#include <QObject>
@@ -16,18 +14,20 @@
#include <QMutex>
#include <QHBoxLayout>
#include <QDialog>
-#include <opencv2/opencv.hpp>
-#include <opencv/highgui.h>
+#include <QTimer>
#include "facetracknoir/options.h"
+#include "ftnoir_tracker_aruco/trans_calib.h"
+#include "facetracknoir/plugin-api.hpp"
+
+#include <opencv2/core/core.hpp>
+#include <opencv2/highgui/highgui.hpp>
+
using namespace options;
struct settings {
pbundle b;
value<double> fov, headpos_x, headpos_y, headpos_z;
value<int> camera_index, force_fps, resolution;
- value<bool> red_only;
- value<bool> eyaw, epitch, eroll, ex, ey, ez;
- value<double> marker_pitch;
settings() :
b(bundle("aruco-tracker")),
fov(b, "field-of-view", 56),
@@ -36,59 +36,52 @@ struct settings {
headpos_z(b, "headpos-z", 0),
camera_index(b, "camera-index", 0),
force_fps(b, "force-fps", 0),
- resolution(b, "force-resolution", 0),
- red_only(b, "red-only", false),
- eyaw(b, "enable-y", true),
- epitch(b, "enable-p", true),
- eroll(b, "enable-r", true),
- ex(b, "enable-x", true),
- ey(b, "enable-y", true),
- ez(b, "enable-z", true),
- marker_pitch(b, "marker-pitch", 0)
+ resolution(b, "force-resolution", 0)
{}
};
class Tracker : protected QThread, public ITracker
{
Q_OBJECT
+ static constexpr double c_search_window = 2.2;
public:
- Tracker();
- virtual ~Tracker();
+ Tracker();
+ ~Tracker() override;
void StartTracker(QFrame* frame);
void GetHeadPoseData(double *data);
void run();
void reload() { s.b->reload(); }
+ void getRT(cv::Matx33d &r, cv::Vec3d &t);
private:
QMutex mtx;
volatile bool stop;
QHBoxLayout* layout;
- ArucoVideoWidget* videoWidget;
+ ArucoVideoWidget* videoWidget;
settings s;
double pose[6];
cv::Mat frame;
cv::VideoCapture camera;
+ cv::Matx33d r;
+ cv::Vec3d t;
};
-// Widget that has controls for FTNoIR protocol client-settings.
class TrackerControls : public QWidget, public ITrackerDialog
{
Q_OBJECT
public:
TrackerControls();
- void registerTracker(ITracker * x) {
- tracker = dynamic_cast<Tracker*>(x);
- }
- void unRegisterTracker() {
- tracker = nullptr;
- }
+ void registerTracker(ITracker * x) { tracker = dynamic_cast<Tracker*>(x); }
+ void unRegisterTracker() { tracker = nullptr; }
private:
- Ui::Form ui;
+ Ui::Form ui;
Tracker* tracker;
settings s;
+ TranslationCalibrator calibrator;
+ QTimer calib_timer;
private slots:
- void doOK();
- void doCancel();
+ void doOK();
+ void doCancel();
+ void toggleCalibrate();
+ void cleanupCalib();
+ void update_tracker_calibration();
};
-
-#endif
-