00001 #include <gtest/gtest.h> 00002 #include "robodyn_mechanisms/GripperEnvironment.h" 00003 #include <ros/package.h> 00004 00005 class GripperEnvironmentTest : public ::testing::Test 00006 { 00007 protected: 00008 virtual void SetUp() 00009 { 00010 ros::Time::init(); 00011 00012 grippers.push_back("r2/left_leg/gripper/joint0"); 00013 grippers.push_back("r2/right_leg/gripper/joint0"); 00014 00015 ge.initializeMap(grippers); 00016 handrailComp = "HandrailRendezvous"; 00017 seattrackComp = "SeattrackRendezvous"; 00018 ge.setComponentNames(handrailComp, seattrackComp); 00019 00020 gripperState.name.push_back("r2/left_leg/gripper/joint0"); 00021 gripperState.name.push_back("r2/right_leg/gripper/joint0"); 00022 gripperState.locked.push_back(1); 00023 gripperState.locked.push_back(0); 00024 gripperState.loaded.push_back(1); 00025 gripperState.loaded.push_back(1); 00026 00027 baseFrames.data.push_back("r2/left_leg/gripper/tip"); 00028 00029 goalStati.header.frame_id = "GripperPositionManager"; 00030 goalStati.status_list.push_back(goalStat); 00031 goalStat.goal_id.id = "r2/right_leg/gripper/joint0"; 00032 goalStat.status = actionlib_msgs::GoalStatus::PENDING; 00033 goalStati.status_list.push_back(goalStat); 00034 goalStat.goal_id.id = "LeftHandrailRendezvous"; 00035 goalStat.status = actionlib_msgs::GoalStatus::ABORTED; 00036 goalStati.status_list.push_back(goalStat); 00037 goalStat.goal_id.id = "RightSeattrackRendezvous"; 00038 goalStat.status = actionlib_msgs::GoalStatus::SUCCEEDED; 00039 goalStati.status_list.push_back(goalStat); 00040 00041 tempPose.position.x = tempPose.position.y = tempPose.position.z = 0.; 00042 tempPose.orientation.x = tempPose.orientation.y = tempPose.orientation.z = 0.0; 00043 tempPose.orientation.w = 1.; 00044 poseMsg.name.push_back("r2/left_leg/gripper/tip"); 00045 poseMsg.positions.push_back(tempPose); 00046 tempPose.position.x = 1.; 00047 poseMsg.name.push_back("r2/right_leg/gripper/tip"); 00048 poseMsg.positions.push_back(tempPose); 00049 00050 } 00051 00052 virtual void TearDown() 00053 { 00054 } 00055 00056 GripperEnvironment ge; 00057 std::vector<std::string> grippers; 00058 std::string handrailComp, seattrackComp; 00059 r2_msgs::GripperPositionState gripperState; 00060 r2_msgs::StringArray baseFrames; 00061 r2_msgs::GripperEnvironment gripperEnv; 00062 actionlib_msgs::GoalStatusArray goalStati; 00063 actionlib_msgs::GoalStatus goalStat; 00064 GripperEnvironment::GripperEnvInfo info; 00065 r2_msgs::PoseState poseMsg; 00066 geometry_msgs::Pose tempPose; 00067 }; 00068 00069 TEST_F(GripperEnvironmentTest, setUserCommandTest) 00070 { 00071 ge.setUserCommand(grippers[0], r2_msgs::GripperEnvironment::HANDRAIL); 00072 EXPECT_TRUE(ge.getMapEntry(grippers[0], info)); 00073 EXPECT_EQ(r2_msgs::GripperEnvironment::HANDRAIL, info.userCommand); 00074 00075 ge.setUserCommand("blah", 1); 00076 EXPECT_FALSE(ge.getMapEntry("blah", info)); 00077 EXPECT_EQ(r2_msgs::GripperEnvironment::HANDRAIL, info.userCommand); 00078 00079 } 00080 00081 TEST_F(GripperEnvironmentTest, populateBaseFrameInfoTest) 00082 { 00083 00084 ge.populateBaseFrameInfo(baseFrames); 00085 00086 EXPECT_EQ("r2/left_leg/gripper/tip", ge.getBaseFrame()); 00087 00088 } 00089 00090 TEST_F(GripperEnvironmentTest, populateGripperStateInfoTest) 00091 { 00092 ge.populateGripperStateInfo(gripperState); 00093 00094 EXPECT_TRUE(ge.getMapEntry(gripperState.name[0], info)); 00095 EXPECT_EQ(1, info.gripperLocked); 00096 EXPECT_TRUE(ge.getMapEntry(gripperState.name[1], info)); 00097 EXPECT_EQ(0, info.gripperLocked); 00098 } 00099 00100 TEST_F(GripperEnvironmentTest, populateGoalStatusTest) 00101 { 00102 ge.populateGoalStatus(goalStati); 00103 EXPECT_EQ(0, ge.getGoalStatusArraySize()); 00104 00105 goalStati.header.frame_id = handrailComp; 00106 ge.populateGoalStatus(goalStati); 00107 EXPECT_EQ(1, ge.getGoalStatusArraySize()); 00108 00109 goalStati.header.frame_id = "DustinSmellsFunny"; 00110 ge.populateGoalStatus(goalStati); 00111 EXPECT_EQ(0, ge.getGoalStatusArraySize()); 00112 00113 goalStati.header.frame_id = seattrackComp; 00114 ge.populateGoalStatus(goalStati); 00115 EXPECT_EQ(1, ge.getGoalStatusArraySize()); 00116 } 00117 00118 TEST_F(GripperEnvironmentTest, populatePoseStateInfoTest) 00119 { 00120 ge.populatePoseStateInfo(poseMsg); 00121 00122 EXPECT_TRUE(ge.getMapEntry(ge.BaseFrameToGripper(poseMsg.name[1]), info)); 00123 EXPECT_EQ(KDL::Frame(), info.frame); 00124 00125 ge.populateBaseFrameInfo(baseFrames); 00126 ge.populatePoseStateInfo(poseMsg); 00127 00128 EXPECT_TRUE(ge.getMapEntry(ge.BaseFrameToGripper(poseMsg.name[1]), info)); 00129 EXPECT_NE(KDL::Frame(), info.frame); 00130 00131 } 00132 00133 TEST_F(GripperEnvironmentTest, createGripperEnvironmentMsgTest) 00134 { 00135 ge.createGripperEnvironmentMsg(gripperEnv); 00136 00137 EXPECT_EQ(2, gripperEnv.name.size()); 00138 ASSERT_EQ(2, gripperEnv.environment.size()); 00139 EXPECT_EQ(r2_msgs::GripperEnvironment::NONE, gripperEnv.environment[0]); 00140 EXPECT_EQ(r2_msgs::GripperEnvironment::NONE, gripperEnv.environment[1]); 00141 } 00142 00143 TEST_F(GripperEnvironmentTest, updateTest) 00144 { 00145 ge.populateBaseFrameInfo(baseFrames); 00146 ge.populateGripperStateInfo(gripperState); 00147 ge.update(); 00148 ASSERT_TRUE(ge.getMapEntry("r2/left_leg/gripper/joint0", info)); 00149 EXPECT_EQ(r2_msgs::GripperEnvironment::HANDRAIL, info.environment); 00150 EXPECT_EQ(1, info.highForceSubState); 00151 ASSERT_TRUE(ge.getMapEntry("r2/right_leg/gripper/joint0", info)); 00152 EXPECT_EQ(r2_msgs::GripperEnvironment::FREESPACE, info.environment); 00153 00154 gripperState.locked[0] = 0; 00155 baseFrames.data.clear(); 00156 ge.populateBaseFrameInfo(baseFrames); 00157 ge.populateGripperStateInfo(gripperState); 00158 goalStati.header.frame_id = seattrackComp; 00159 ge.populateGoalStatus(goalStati); 00160 ge.populatePoseStateInfo(poseMsg); 00161 ge.update(); 00162 ASSERT_TRUE(ge.getMapEntry("r2/left_leg/gripper/joint0", info)); 00163 EXPECT_EQ(r2_msgs::GripperEnvironment::FREESPACE, info.environment); 00164 EXPECT_EQ(0, info.highForceSubState); 00165 ASSERT_TRUE(ge.getMapEntry("r2/right_leg/gripper/joint0", info)); 00166 EXPECT_EQ(r2_msgs::GripperEnvironment::SEATTRACK, info.environment); 00167 EXPECT_EQ(0, info.highForceSubState); 00168 00169 baseFrames.data.push_back("r2/left_leg/gripper/tip"); 00170 poseMsg.positions[1].position.y = 2.0; 00171 ge.populateBaseFrameInfo(baseFrames); 00172 ge.populatePoseStateInfo(poseMsg); 00173 ge.update(); 00174 ASSERT_TRUE(ge.getMapEntry("r2/right_leg/gripper/joint0", info)); 00175 EXPECT_EQ(r2_msgs::GripperEnvironment::FREESPACE, info.environment); 00176 00177 ge.setUserCommand("r2/left_leg/gripper/joint0", r2_msgs::GripperEnvironment::HANDRAIL); 00178 ge.update(); 00179 ASSERT_TRUE(ge.getMapEntry("r2/left_leg/gripper/joint0", info)); 00180 EXPECT_EQ(r2_msgs::GripperEnvironment::HANDRAIL, info.environment); 00181 EXPECT_EQ(0, info.highForceSubState); 00182 00183 gripperState.locked[0] = 1; 00184 ge.populateGripperStateInfo(gripperState); 00185 ge.populatePoseStateInfo(poseMsg); 00186 ge.update(); 00187 ASSERT_TRUE(ge.getMapEntry("r2/left_leg/gripper/joint0", info)); 00188 EXPECT_EQ(r2_msgs::GripperEnvironment::HANDRAIL, info.environment); 00189 EXPECT_EQ(1, info.highForceSubState); 00190 } 00191 00192 int main(int argc, char** argv) 00193 { 00194 ::testing::InitGoogleTest(&argc, argv); 00195 return RUN_ALL_TESTS(); 00196 }