6#ifndef IFRAMETRANSFORMTEST_H
7#define IFRAMETRANSFORMTEST_H
9#define _USE_MATH_DEFINES
28#include <catch2/catch_amalgamated.hpp>
40 if (
v1.size() !=
v2.size())
45 for (
size_t i = 0;
i <
v1.size();
i++)
61 for (
size_t i = 0;
i <
v1.size();
i++)
74 if (
m1.cols() !=
m2.cols() ||
m1.rows() !=
m2.rows())
79 for (
size_t i = 0;
i <
m1.rows();
i++)
96 m1[2][0] = 0;
m1[2][1] = 0;
m1[2][2] = 1;
m1[2][3] = 2;
97 m1[3][0] = 0;
m1[3][1] = 0;
m1[3][2] = 0;
m1[3][3] = 1;
100 m2[1][0] = 0;
m2[1][1] = 1;
m2[1][2] = 0;
m2[1][3] = 0.2;
102 m2[3][0] = 0;
m2[3][1] = 0;
m2[3][2] = 0;
m2[3][3] = 1;
114 itf->setTransformStatic(
"frame2",
"frame1",
m1);
115 itf->setTransformStatic(
"frame3",
"frame2",
m2);
116 itf->setTransformStatic(
"frame4",
"frame3",
m3);
117 itf->setTransformStatic(
"frame11",
"frame10",
m1);
118 itf->setTransformStatic(
"frame3b",
"frame2",
m2);
119 itf->setTransformStatic(
"sibiling_test_frame",
"frame1",
sibiling);
122 m4[0][0] = +0.9585267399;
m4[0][1] = -0.2305627908;
m4[0][2] = +0.1675329472;
m4[0][3] = 0.1;
123 m4[1][0] = +0.2433237939;
m4[1][1] = +0.9680974922;
m4[1][2] = -0.0598395928;
m4[1][3] = 0.2;
124 m4[2][0] = -0.1483914426;
m4[2][1] = +0.0981226021;
m4[2][2] = +0.9840487461;
m4[2][3] = 0.3;
125 m4[3][0] = 0;
m4[3][1] = 0;
m4[3][2] = 0;
m4[3][3] = 1;
131 yInfo(
"Running Sub-test0");
132 std::vector<std::string>
ids;
135 for (
size_t i = 0;
i <
ids.size();
i++)
142 yInfo() <<
"Sub-test complete";
147 yInfo() <<
"Running Sub-test1";
149 itf->getParent(
"frame3", parent);
150 CHECK(parent ==
"frame2");
151 yInfo() <<
"Sub-test complete";
156 yInfo() <<
"Running Sub-test2";
158 bool b_gt =
itf->getTransform(
"frame3",
"frame1",
mt);
165 yInfo() <<
"Sub-test complete";
171 yInfo() <<
"Running Sub-test3";
172 CHECK(
itf->frameExists(
"frame3", exists));
174 CHECK(
itf->frameExists(
"frame3_err",exists));
176 yInfo() <<
"Sub-test complete";
181 bool canTransform =
false;
182 yInfo() <<
"Running Sub-test4";
183 CHECK(
itf->canTransform(
"frame2",
"frame1", canTransform));
185 CHECK(
itf->canTransform(
"frame11",
"frame1", canTransform));
186 CHECK(!canTransform);
187 yInfo() <<
"Sub-test complete";
192 yInfo() <<
"Running Sub-test4b";
194 bool canTransform =
false;
195 b_canb1 =
itf->canTransform(
"frame3b",
"frame1", canTransform);
198 yInfo() <<
"Sub-test complete";
203 yInfo() <<
"Running Sub-test4c";
205 bool canTransform =
false;
206 CHECK(
itf->canTransform(
"sibiling_test_frame",
"frame3",canTransform));
208 CHECK(
itf->getTransform(
"sibiling_test_frame",
"frame3",
sib));
210 yInfo() <<
"Sub-test complete";
215 yInfo() <<
"Running Sub-test5";
217 itf->getTransform(
"frame1",
"frame3b",
mti);
223 yInfo() <<
"Sub-test complete";
228 yInfo() <<
"Running Sub-test6";
279 yInfo() <<
"Sub-test complete";
284 yInfo() <<
"Running Sub-test7";
295 yInfo() <<
"Sub-test complete";
300 yInfo() <<
"Running Sub-test8";
301 itf->setTransformStatic(
"frame_test",
"frame1",
m1);
304 bool del_bool =
itf->frameExists(
"frame_test", exists);
307 del_bool &=
itf->deleteTransform(
"frame_test",
"frame1");
309 del_bool &= (
itf->frameExists(
"frame_test", exists));
325 yInfo() <<
"Sub-test complete";
330 yInfo() <<
"Running Sub-test8b";
333 bool del_bool =
itf->deleteTransform(
"not-exist1",
"not-exist2");
335 yInfo() <<
"Sub-test complete";
340 yInfo() <<
"Running Sub-test9";
342 std::vector<std::string>
cids;
345 yInfo() <<
"Sub-test complete";
350 yInfo() <<
"Running Sub-test10";
351 itf->setTransform(
"frame2",
"frame10",
m1);
354 bool canTransform =
false;
355 b_can =
itf->canTransform(
"frame2",
"frame10",canTransform);
359 b_can =
itf->canTransform(
"frame2",
"frame10",canTransform);
361 CHECK(!canTransform);
362 yInfo() <<
"Sub-test complete";
367 yInfo() <<
"Running Sub-test11";
369 bool set_b1 =
itf->setTransform(
"frame2",
"frame10",
m1);
372 itf->getTransform(
"frame2",
"frame10",
mt1);
373 bool set_b2 =
itf->setTransform(
"frame2",
"frame10",
m2);
376 itf->getTransform(
"frame2",
"frame10",
mt2);
384 yInfo() <<
"Sub-test complete";
389 yInfo() <<
"Running Sub-test11b";
391 bool set_b1 =
itf->setTransformStatic(
"frame2",
"frame10",
m1);
394 itf->getTransform(
"frame2",
"frame10",
mt1);
395 bool set_b2 =
itf->setTransformStatic(
"frame2",
"frame10",
m2);
398 itf->getTransform(
"frame2",
"frame10",
mt2);
403 yInfo() <<
"Sub-test complete";
408 yInfo() <<
"Running Sub-test12";
411 CHECK(
itf->setTransform(
"frame2",
"frame1",
m1));
415 CHECK(
itf->setTransform(
"frame3",
"frame2",
m2));
426 itf->getTransform(
"frame2",
"frame1",
mt1);
427 itf->getTransform(
"frame3",
"frame2",
mt2);
428 itf->getTransform(
"frame3",
"frame1",
mt3);
433 yInfo() <<
"Sub-test complete";
438 yInfo() <<
"Running Sub-test12b";
443 CHECK(
itf->setTransformStatic(
"frame2",
"frame1",
m1));
447 CHECK(
itf->setTransformStatic(
"frame3",
"frame2",
m2));
458 itf->getTransform(
"frame2",
"frame1",
mt1);
459 itf->getTransform(
"frame3",
"frame2",
mt2);
464 itf->getTransform(
"frame3",
"frame1",
mt3);
467 yInfo() <<
"Sub-test complete";
472 yInfo() <<
"Running Sub-test13";
475 bool canTransform =
false;
476 bcan =
itf->canTransform(
"not_existing_frame",
"not_existing_frame", canTransform);
480 CHECK(
itf->setTransformStatic(
"frame2",
"frame1",
m1));
481 bcan =
itf->canTransform(
"frame2",
"frame2", canTransform);
484 bcan =
itf->canTransform(
"frame1",
"frame1", canTransform);
490 itf->getTransform(
"frame1",
"frame1",
mt1);
492 itf->getTransform(
"frame2",
"frame2",
mt1);
494 yInfo() <<
"Sub-test complete";
528 CHECK(
itf->deleteTransform(
"/a",
"/b"));
529 CHECK(
itf->deleteTransform(
"/b",
"/c"));
533 CHECK(!
itf->setTransform(
"/finger",
"/arm", result));
537 CHECK(
itf->setTransform(
"/finger",
"/arm", result));
540 for (
int i = 0;
i < 4;
i++) {
541 for (
int j = 0;
j < 4;
j++) {
547 bool canTransform =
false;
548 CHECK(
itf->canTransform(
"/finger",
"/arm", canTransform));
550 CHECK(
itf->canTransform(
"/finger",
"/head", canTransform));
551 CHECK(!canTransform);
555 CHECK(
itf->frameExists(
"/finger", exists));
557 CHECK(
itf->frameExists(
"/head", exists));
582 CHECK(
itf->getParent(
"/finger", parent));
583 CHECK(parent ==
"/hand");
596 for (
int i = 0;
i < 3;
i++) {
625 itf->getTransform(
"/finger",
"/arm", result);
636 std::this_thread::sleep_for(std::chrono::milliseconds(250));
637 CHECK(!
itf->getTransform(
"/hand",
"/arm", result));
638 CHECK(!
itf->getTransform(
"/finger",
"/hand", result));
639 CHECK(!
itf->getTransform(
"/finger",
"/arm", result));
std::string toString(const T &value)
convert an arbitrary type to string.
contains the definition of a Matrix type
contains the definition of a Vector type
A mini-server for performing network communication in the background.
bool isEqual(const yarp::sig::Vector &v1, const yarp::sig::Vector &v2, double precision)
void exec_frameTransform_test_2(IFrameTransform *itf)
void exec_frameTransform_test_1(IFrameTransform *itf)
For streams capable of holding different kinds of content, check what they actually have.
yarp::sig::Matrix SE3inv(const yarp::sig::Matrix &H)
Returns the inverse of a 4 by 4 rototranslational matrix (defined in Math.h).
yarp::sig::Matrix rpy2dcm(const yarp::sig::Vector &rpy)
Converts roll-pitch-yaw angles in the corresponding dcm (direction cosine matrix) rotation matrix (de...
yarp::sig::Vector dcm2rpy(const yarp::sig::Matrix &R)
Converts a dcm (direction cosine matrix) rotation matrix to roll-pitch-yaw angles (defined in Math....
double now()
Return the current time in seconds, relative to an arbitrary starting point.
void delay(double seconds)
Wait for a certain number of seconds.
An interface to the operating system, including Port based communication.