KdlTreeTrTest.cpp
Go to the documentation of this file.
00001 /*
00002  * KdlTreeTrTest.cpp
00003  *
00004  *  Created on: Jan 13, 2015
00005  *      Author: Julia Badger
00006  *
00007  */
00008 
00009 #include <iostream>
00010 #include <gtest/gtest.h>
00011 #include "robodyn_controllers/MotionLimiter.h"
00012 #include "robodyn_controllers/KdlTreeTr.h"
00013 #include <tf/tf.h>
00014 
00015 class KdlTreeTrTest : public ::testing::Test
00016 {
00017 protected:
00018     virtual void SetUp()
00019     {
00020         posLimiter.reset(new JointPositionLimiter);
00021         namePosLimiter.reset(new JointNamePositionLimiter);
00022         namePosLimiter->setJointPositionLimiter(posLimiter);
00023 
00024         std::string packagePath = ros::package::getPath("robodyn_controllers");
00025         treeTr.loadFromFile(packagePath + "/test/urdf/BranchingTestRobot.xml");
00026 
00027         treeTr.initialize();
00028         treeTr.setPositionLimiter(namePosLimiter);
00029     }
00030 
00031     virtual void TearDown()
00032     {
00033     }
00034 
00035     boost::shared_ptr<JointPositionLimiter>     posLimiter;
00036     boost::shared_ptr<JointNamePositionLimiter> namePosLimiter;
00037     KdlTreeTr                                   treeTr;
00038 };
00039 
00040 TEST_F(KdlTreeTrTest, limitTest)
00041 {
00042     std::vector<std::string> jointNames;
00043     jointNames.push_back("joint0");
00044     jointNames.push_back("joint1");
00045 
00046     std::vector<double> minPosLims(2), maxPosLims(2), velLims(2);
00047     minPosLims.at(0) = 0;
00048     minPosLims.at(1) = 0.5;
00049     maxPosLims.at(0) = 1.0;
00050     maxPosLims.at(1) = 2.0;
00051     velLims.at(0) = 2.5;
00052     velLims.at(1) = 1.0;
00053     namePosLimiter->setLimits(jointNames, minPosLims, maxPosLims, velLims);
00054 
00055     KDL::JntArray jIn(2), jOut(2), dJoint(2);
00056     jIn(0) = 0.9; jOut(0) = 0.92; dJoint(0) = 0.0;
00057     jIn(1) = 0.55; jOut(1) = 0.56; dJoint(1) = 0.0;
00058 
00059     EXPECT_TRUE(treeTr.limitJoints(jIn, jOut, dJoint));
00060     EXPECT_GT(0.000001, std::abs(dJoint(0)) - 0.004);
00061     EXPECT_GT(0.000001, std::abs(dJoint(1)) - 0.002);
00062 
00063     jIn(0) = 0.92; jOut(0) = 0.9; dJoint(0) = 0.0;
00064     dJoint(1) = 0.0;
00065 
00066     EXPECT_FALSE(treeTr.limitJoints(jIn, jOut, dJoint));
00067     EXPECT_GT(1e-06, std::abs(dJoint(0)) - 0.02);
00068     EXPECT_GT(1e-06, std::abs(dJoint(1)) - 0.01);
00069 
00070     jIn(0) = 0.5; jOut(0) = 0.53; dJoint(0) = 0.0;
00071 
00072     EXPECT_TRUE(treeTr.limitJoints(jIn, jOut, dJoint));
00073     EXPECT_GT(1e-06, std::abs(dJoint(0)) - 0.0235);
00074     EXPECT_GT(1e-06, std::abs(dJoint(1)) - 0.007833333);
00075 
00076     jIn(0) = 0.8; jOut(0) = 0.79; dJoint(0) = 0.0;
00077     jOut(1) = 0.57; dJoint(1) = 0.0;
00078 
00079     EXPECT_TRUE(treeTr.limitJoints(jIn, jOut, dJoint));
00080     EXPECT_GT(1e-06, std::abs(dJoint(0)) - 0.005);
00081     EXPECT_GT(1e-06, std::abs(dJoint(1)) - 0.01);
00082 
00083 }
00084 
00085 int main(int argc, char** argv)
00086 {
00087     testing::InitGoogleTest(&argc, argv);
00088     return RUN_ALL_TESTS();
00089 }


robodyn_controllers
Author(s):
autogenerated on Sat Jun 8 2019 20:20:53