Go to the documentation of this file.00001 #include <gtest/gtest.h>
00002 #include "robodyn_controllers/KdlTreeFk.h"
00003 #include "robodyn_controllers/RosMsgSafetyVelocityMonitor.h"
00004 #include <ros/package.h>
00005 #include "robodyn_utilities/RosMsgConverter.h"
00006
00007 class RosMsgSafetyVelocityMonitorTest : public ::testing::Test
00008 {
00009 protected:
00010 virtual void SetUp()
00011 {
00012 std::string packagePath = ros::package::getPath("robodyn_controllers");
00013 std::stringstream ss;
00014 ss << packagePath << "/test/urdf/BranchingTestRobot.xml";
00015 urdfFile = ss.str();
00016
00017 ros::Time::init();
00018 }
00019
00020 virtual void TearDown()
00021 {
00022 }
00023
00024 std::string urdfFile;
00025
00026
00027 };
00028
00029 TEST_F(RosMsgSafetyVelocityMonitorTest, isVelocityBelowLimsTest)
00030 {
00031 RosMsgSafetyVelocityMonitor* rmt = new RosMsgSafetyVelocityMonitor(urdfFile);
00032 diagnostic_msgs::DiagnosticStatus errorMsg;
00033 r2_msgs::PoseState poseState;
00034
00035 rmt->getTree().getSegments().begin();
00036
00037 poseState.name.push_back("joint1");
00038 poseState.name.push_back("joint2");
00039 poseState.name.push_back("joint3");
00040
00041 for (int i = 0; i < poseState.name.size(); i++)
00042 {
00043 geometry_msgs::Pose p;
00044 p.position.x = 1.0;
00045 p.position.y = 1.0;
00046 p.position.z = 1.0;
00047 poseState.positions.push_back(p);
00048
00049 geometry_msgs::Twist lv;
00050 lv.linear.x = 5.0;
00051 lv.linear.y = 5.0;
00052 lv.linear.z = 5.0;
00053 lv.angular.x = 5.0;
00054 lv.angular.y = 5.0;
00055 lv.angular.z = 5.0;
00056 poseState.velocities.push_back(lv);
00057 }
00058
00059 rmt->setAngularVelocityLimit(2.0);
00060 rmt->setLiniearVelocityLimit(2.0);
00061
00062 EXPECT_FALSE(rmt->isVelocityBelowLims(poseState, errorMsg));
00063
00064 rmt->setAngularVelocityLimit(9.0);
00065 EXPECT_FALSE(rmt->isVelocityBelowLims(poseState, errorMsg));
00066
00067 rmt->setLiniearVelocityLimit(9.0);
00068 EXPECT_TRUE(rmt->isVelocityBelowLims(poseState, errorMsg));
00069
00070 }
00071
00072
00073
00074 int main(int argc, char** argv)
00075 {
00076 ::testing::InitGoogleTest(&argc, argv);
00077 return RUN_ALL_TESTS();
00078 }
00079
00080
00081