36 #include <visp3/core/vpConfig.h> 38 #if defined(VISP_HAVE_CATCH2) 39 #define CATCH_CONFIG_ENABLE_BENCHMARKING 40 #define CATCH_CONFIG_RUNNER 45 #include <visp3/core/vpIoTools.h> 46 #include <visp3/io/vpImageIo.h> 47 #include <visp3/mbt/vpMbGenericTracker.h> 51 #include <visp3/gui/vpDisplayX.h> 62 sprintf(buffer, ipath.c_str(), cpt);
63 std::string image_filename = buffer;
75 for (
unsigned int i = 0; i < 3; i++) {
76 for (
unsigned int j = 0; j < 4; j++) {
77 CHECK(cMo1[i][j] == Approx(cMo2[i][j]).epsilon(std::numeric_limits<double>::epsilon()));
87 const bool verbose =
false;
93 const vpPoseVector initPose(0.02231950571, 0.1071368004, 0.5071128378, 2.100485509, 1.146812236, -0.4560126437);
100 TEST_CASE(
"Check MBT determinism sequential",
"[MBT_determinism]") {
104 configureTracker(tracker1, cam);
113 for (
int cpt = 0; read_data(cpt, I); cpt++) {
124 std::cout <<
"First tracker, final cMo:\n" << cMo1 << std::endl;
128 configureTracker(tracker2, cam);
130 for (
int cpt = 0; read_data(cpt, I); cpt++) {
141 std::cout <<
"Second tracker, final cMo:\n" << cMo2 << std::endl;
144 checkPoses(cMo1, cMo2);
147 TEST_CASE(
"Check MBT determinism parallel",
"[MBT_determinism]") {
149 std::future<vpHomogeneousMatrix> res_cMo1 = std::async(std::launch::async, []() {
152 configureTracker(tracker1, cam);
156 for (
int cpt = 0; read_data(cpt, I); cpt++) {
164 std::future<vpHomogeneousMatrix> res_cMo2 = std::async(std::launch::async, []() {
167 configureTracker(tracker2, cam);
171 for (
int cpt = 0; read_data(cpt, I); cpt++) {
180 std::cout <<
"Run both trackers in seperate threads" << std::endl;
181 std::cout <<
"First tracker, final cMo:\n" << cMo1 << std::endl;
182 std::cout <<
"Second tracker, final cMo:\n" << cMo2 << std::endl;
185 checkPoses(cMo1, cMo2);
188 TEST_CASE(
"Check Stereo MBT determinism parallel",
"[MBT_determinism]") {
190 std::future<vpHomogeneousMatrix> res_cMo1 = std::async(std::launch::async, []() {
193 configureTracker(tracker1, cam);
197 for (
int cpt = 0; read_data(cpt, I); cpt++) {
198 tracker1.
track(I, I);
206 std::future<vpHomogeneousMatrix> res_cMo2 = std::async(std::launch::async, []() {
209 configureTracker(tracker2, cam);
213 for (
int cpt = 0; read_data(cpt, I); cpt++) {
214 tracker2.
track(I, I);
222 std::cout <<
"Run both stereo trackers in seperate threads" << std::endl;
223 std::cout <<
"First tracker, final cMo:\n" << cMo1 << std::endl;
224 std::cout <<
"Second tracker, final cMo:\n" << cMo2 << std::endl;
227 checkPoses(cMo1, cMo2);
230 int main(
int argc,
char *argv[])
232 Catch::Session session;
235 session.applyCommandLine(argc, argv);
237 int numFailed = session.run();
static void read(vpImage< unsigned char > &I, const std::string &filename, int backend=IO_DEFAULT_BACKEND)
virtual void track(const vpImage< unsigned char > &I)
virtual void display(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, const vpColor &col, unsigned int thickness=1, bool displayFullModel=false)
Implementation of an homogeneous matrix and operations on such kind of matrices.
virtual void setDisplayFeatures(bool displayF)
Use the X11 console to display images on unix-like OS. Thus to enable this class X11 should be instal...
static const vpColor none
Real-time 6D object pose tracking using its CAD model.
static void flush(const vpImage< unsigned char > &I)
virtual void loadModel(const std::string &modelFile, bool verbose=false, const vpHomogeneousMatrix &T=vpHomogeneousMatrix())
static void display(const vpImage< unsigned char > &I)
virtual void loadConfigFile(const std::string &configFile, bool verbose=true)
Generic class defining intrinsic camera parameters.
virtual void initFromPose(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo)
virtual void getCameraParameters(vpCameraParameters &camera) const
static void displayFrame(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, double size, const vpColor &color=vpColor::none, unsigned int thickness=1, const vpImagePoint &offset=vpImagePoint(0, 0))
Implementation of a pose vector and operations on poses.
virtual void getPose(vpHomogeneousMatrix &cMo) const