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);
~BotaDriverTestFTOffsets() override
BotaDriverTestFTOffsets()
TEST_F(BotaDriverTestFTOffsets, SetFTOffsets)
void meanwrenchCallback(const geometry_msgs::WrenchStamped::ConstPtr &msg)
geometry_msgs::Wrench meanWrenchOffset_
ROSCPP_DECL void spinOnce()