7 #include <gtest/gtest.h>
9 #include <geometry_msgs/WrenchStamped.h>
10 #include <geometry_msgs/Wrench.h>
12 #include <Eigen/Dense>
14 using namespace Eigen;
60 std::uint32_t lpos = msgCount_;
62 fxSamples_.conservativeResize(msgCount_);
63 fySamples_.conservativeResize(msgCount_);
64 fzSamples_.conservativeResize(msgCount_);
65 txSamples_.conservativeResize(msgCount_);
66 tySamples_.conservativeResize(msgCount_);
67 tzSamples_.conservativeResize(msgCount_);
69 fxSamples_(lpos) =
msg->wrench.force.x;
70 fySamples_(lpos) =
msg->wrench.force.y;
71 fzSamples_(lpos) =
msg->wrench.force.z;
72 txSamples_(lpos) =
msg->wrench.torque.x;
73 tySamples_(lpos) =
msg->wrench.torque.y;
74 tzSamples_(lpos) =
msg->wrench.torque.z;
80 SCOPED_TRACE(
"SetFTOffsets");
82 ASSERT_EQ(nh_.getParam(
"topic_name", topicName_),
true);
83 sub_ = nh_.subscribe(topicName_, 1000, &BotaDriverTestFTOffsets::meanwrenchCallback, (
BotaDriverTestFTOffsets*)
this);
84 ASSERT_EQ(nh_.getParam(
"test_duration", testDuration_),
true);
89 if (HasFatalFailure())
91 FAIL() <<
"Fatal errors occurred.\n";
95 EXPECT_GT(msgCount_, 0U);
96 meanWrenchOffset_.force.x = fxSamples_.mean();
97 meanWrenchOffset_.force.y = fySamples_.mean();
98 meanWrenchOffset_.force.z = fzSamples_.mean();
99 meanWrenchOffset_.torque.x = txSamples_.mean();
100 meanWrenchOffset_.torque.y = tySamples_.mean();
101 meanWrenchOffset_.torque.z = tzSamples_.mean();
102 ASSERT_NEAR(meanWrenchOffset_.force.x, 10000.0, 1000);
103 ASSERT_NEAR(meanWrenchOffset_.force.y, -10000.0, 1000);
104 ASSERT_NEAR(meanWrenchOffset_.force.z, 20000.0, 1000);
105 ASSERT_NEAR(meanWrenchOffset_.torque.x, -20000.0, 100);
106 ASSERT_NEAR(meanWrenchOffset_.torque.y, 30000.0, 100);
107 ASSERT_NEAR(meanWrenchOffset_.torque.z, -30000.0, 100);