00001 #include <iostream>
00002 #include <gtest/gtest.h>
00003 #include <boost/shared_ptr.hpp>
00004 #include "robot_instance/RobotInstanceFactory.h"
00005 #include "robot_instance/NodeRegisterManager.h"
00006 #include "robodyn_mechanisms/JointControlCommandGripper.h"
00007 #include "robodyn_mechanisms/JointControlCommandSeriesElastic.h"
00008 #include "robodyn_mechanisms/JointControlCommandWrist.h"
00009 #include "robodyn_mechanisms/JointControlManagerFactory.h"
00010 #include <ros/package.h>
00011
00012 using namespace std;
00013
00014
00015 std::map<std::string, float> testLiveCoeffs;
00016 ParamMap testParamMap;
00017 RobotInstancePtr instance;
00018
00019 std::string getRegisterFile(std::string mechanism)
00020 {
00021 return instance->configurationSafetyBasePath + RobotInstance::REGISTER_PATH + instance->mechanismRegisterMap[mechanism];
00022 }
00023
00024 std::string getControlFile(std::string mechanism)
00025 {
00026 return instance->configurationSafetyBasePath + RobotInstance::APIMAP_PATH + instance->mechanismControlMap[mechanism];
00027 }
00028
00029 bool hasLiveCoeff(std::string coeff)
00030 {
00031 return testLiveCoeffs.count(coeff) > 0;
00032 }
00033
00034 float getLiveCoeff(std::string coeff)
00035 {
00036 return testLiveCoeffs[coeff];
00037 }
00038
00039 void setLiveCoeff(std::string coeff, float value)
00040 {
00041 testLiveCoeffs[coeff] = value;
00042 }
00043
00044 bool hasParam(std::string paramName)
00045 {
00046 return (testParamMap.find(paramName) != testParamMap.end());
00047 }
00048
00049 bool getBoolParam(std::string paramName, bool& value)
00050 {
00051 value = boost::get<bool>(testParamMap[paramName]);
00052 return true;
00053 }
00054
00055 bool getStringParam(std::string paramName, std::string& value)
00056 {
00057 value = boost::get<std::string>(testParamMap[paramName]);
00058 return true;
00059 }
00060
00061 bool getDoubleParam(std::string paramName, double& value)
00062 {
00063 value = boost::get<double>(testParamMap[paramName]);
00064 return true;
00065 }
00066
00067 bool getIntParam(std::string paramName, int& value)
00068 {
00069 value = boost::get<int>(testParamMap[paramName]);
00070 return true;
00071 }
00072
00073 void setBoolParam(std::string paramName, bool value)
00074 {
00075 testParamMap[paramName] = value;
00076 }
00077
00078 void setStringParam(std::string paramName, std::string value)
00079 {
00080 testParamMap[paramName] = value;
00081 }
00082
00083 void setDoubleParam(std::string paramName, double value)
00084 {
00085 testParamMap[paramName] = value;
00086 }
00087
00088 void setIntParam(std::string paramName, int value)
00089 {
00090 testParamMap[paramName] = value;
00091 }
00092
00093 class JointControlCommandFsmTest : public ::testing::Test
00094 {
00095 protected:
00096 virtual void SetUp()
00097 {
00098
00099 nodeRegisterManager = boost::make_shared<NodeRegisterManager>();
00100 jointControlFsmMap.clear();
00101
00102
00103 packagePath = ros::package::getPath("robot_instance");
00104 configPath = packagePath + "/test/config";
00105 configSafetyPath = packagePath + "/test/configSafety";
00106 fileName = "TestRobotInstance.xml";
00107 instance = RobotInstanceFactory::createRobotInstanceFromFile(configPath, configSafetyPath, fileName);
00108
00109
00110 testLiveCoeffs.clear();
00111 io.getRegisterFile = getRegisterFile;
00112 io.getControlFile = getControlFile;
00113 io.hasLiveCoeff = hasLiveCoeff;
00114 io.getLiveCoeff = getLiveCoeff;
00115 io.setLiveCoeff = setLiveCoeff;
00116 io.hasParam = hasParam;
00117 io.getBoolParam = getBoolParam;
00118 io.getIntParam = getIntParam;
00119 io.getDoubleParam = getDoubleParam;
00120 io.getStringParam = getStringParam;
00121 io.setBoolParam = setBoolParam;
00122 io.setIntParam = setIntParam;
00123 io.setDoubleParam = setDoubleParam;
00124 io.setStringParam = setStringParam;
00125
00126
00127 for (unsigned int i = 0; i < instance->mechanisms.size(); i++)
00128 {
00129 mechanism = instance->mechanisms[i];
00130 fileName = getRegisterFile(mechanism);
00131 jointType = JointControlManagerFactory::Private::getPropertyFromFile(fileName, "NodeType");
00132
00133
00134 if (jointType == "SeriesElastic")
00135 {
00136 nodeRegisterManager->addNode(mechanism, fileName);
00137 jointControlFsmMap[mechanism] = boost::make_shared<JointControlCommandSeriesElastic>(mechanism, io, nodeRegisterManager);
00138 }
00139 else if (jointType == "Rigid")
00140 {
00141 nodeRegisterManager->addNode(mechanism, fileName);
00142 jointControlFsmMap[mechanism] = boost::make_shared<JointControlCommandSeriesElastic>(mechanism, io, nodeRegisterManager);
00143 }
00144 else if (jointType == "Gripper")
00145 {
00146 nodeRegisterManager->addNode(mechanism, fileName);
00147 jointControlFsmMap[mechanism] = boost::make_shared<JointControlCommandGripper>(mechanism, io, nodeRegisterManager);
00148 }
00149
00150
00151 else if (jointType == "Wrist")
00152 {
00153 jointControlFsmMap[mechanism] = boost::make_shared<JointControlCommandWrist>(mechanism, io);
00154 }
00155 else if (jointType == "Thumb")
00156 {
00157 jointControlFsmMap[mechanism] = boost::make_shared<JointControlCommandFinger>(mechanism, io);
00158 }
00159 else if (jointType == "PrimaryFinger")
00160 {
00161 jointControlFsmMap[mechanism] = boost::make_shared<JointControlCommandFinger>(mechanism, io);
00162 }
00163 else if (jointType == "SecondaryFingers")
00164 {
00165 jointControlFsmMap[mechanism] = boost::make_shared<JointControlCommandFinger>(mechanism, io);
00166 }
00167 else
00168 {
00169 std::stringstream err;
00170 err << "Unsupported joint type [" << jointType << "] found in ControlFile";
00171 NasaCommonLogging::Logger::log("gov.nasa.robonet.JointControlCommandFsmTest", log4cpp::Priority::ERROR, err.str());
00172 ASSERT_TRUE(false);
00173 }
00174 }
00175 }
00176
00177 virtual void TearDown()
00178 {
00179 }
00180
00181 std::string packagePath;
00182 std::string configPath, configSafetyPath, fileName;
00183 NodeRegisterManagerPtr nodeRegisterManager;
00184 std::string jointType;
00185 std::string mechanism;
00186 std::map< std::string, boost::shared_ptr<JointControlCommandInterface> > jointControlFsmMap;
00187 JointControlCommonInterface::IoFunctions io;
00188 r2_msgs::JointControlData commandedStates;
00189 };
00190
00191 TEST_F(JointControlCommandFsmTest, InitialBootloader)
00192 {
00193 jointControlFsmMap["r2/left_leg/joint0"]->getStates(commandedStates);
00194 EXPECT_EQ(r2_msgs::JointControlMode::BOOTLOADER, commandedStates.controlMode.state);
00195 jointControlFsmMap["r2/right_leg/gripper/joint0"]->getStates(commandedStates);
00196 EXPECT_EQ(r2_msgs::JointControlMode::BOOTLOADER, commandedStates.controlMode.state);
00197 jointControlFsmMap["r2/left_arm/joint0"]->getStates(commandedStates);
00198 EXPECT_EQ(r2_msgs::JointControlMode::BOOTLOADER, commandedStates.controlMode.state);
00199 jointControlFsmMap["r2/neck/joint0"]->getStates(commandedStates);
00200 EXPECT_EQ(r2_msgs::JointControlMode::BOOTLOADER, commandedStates.controlMode.state);
00201 jointControlFsmMap["r2/right_arm/wrist"]->getStates(commandedStates);
00202 EXPECT_EQ(r2_msgs::JointControlMode::BOOTLOADER, commandedStates.controlMode.state);
00203 jointControlFsmMap["r2/right_arm/hand/index"]->getStates(commandedStates);
00204 EXPECT_EQ(r2_msgs::JointControlMode::BOOTLOADER, commandedStates.controlMode.state);
00205
00206
00207 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "InitAPS2toAPS1"));
00208
00209 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "CrabEnable"));
00210 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "AtiEnable"));
00211
00212 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "InitAPS2toAPS1"));
00213
00214 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/neck/joint0", "InitAPS2toAPS1"));
00215
00216
00217 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "BootEnable"));
00218 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "BridgeEnable"));
00219 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "MotorEnable"));
00220
00221 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "BootEnable"));
00222 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "BridgeEnable"));
00223 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "MotorEnable"));
00224
00225 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "BootEnable"));
00226 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "BridgeEnable"));
00227 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "MotorEnable"));
00228 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "BrakeRelease"));
00229
00230 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/neck/joint0", "BootEnable"));
00231 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "BridgeEnable"));
00232 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/neck/joint0", "MotorEnable"));
00233 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/neck/joint0", "BrakeRelease"));
00234
00235 EXPECT_EQ(r2_msgs::JointControlMode::BOOTLOADER, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/wrist", "ControlMode")));
00236 EXPECT_EQ(r2_msgs::JointControlMode::BOOTLOADER, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/hand/index", "ControlMode")));
00237 }
00238
00239 TEST_F(JointControlCommandFsmTest, Off)
00240 {
00241 jointControlFsmMap["r2/left_leg/joint0"]->off();
00242 jointControlFsmMap["r2/right_leg/gripper/joint0"]->off();
00243 jointControlFsmMap["r2/left_arm/joint0"]->off();
00244 jointControlFsmMap["r2/neck/joint0"]->off();
00245 jointControlFsmMap["r2/right_arm/wrist"]->off();
00246 jointControlFsmMap["r2/right_arm/hand/index"]->off();
00247
00248 jointControlFsmMap["r2/left_leg/joint0"]->getStates(commandedStates);
00249 EXPECT_EQ(r2_msgs::JointControlMode::OFF, commandedStates.controlMode.state);
00250 jointControlFsmMap["r2/right_leg/gripper/joint0"]->getStates(commandedStates);
00251 EXPECT_EQ(r2_msgs::JointControlMode::OFF, commandedStates.controlMode.state);
00252 jointControlFsmMap["r2/left_arm/joint0"]->getStates(commandedStates);
00253 EXPECT_EQ(r2_msgs::JointControlMode::OFF, commandedStates.controlMode.state);
00254 jointControlFsmMap["r2/neck/joint0"]->getStates(commandedStates);
00255 EXPECT_EQ(r2_msgs::JointControlMode::OFF, commandedStates.controlMode.state);
00256 jointControlFsmMap["r2/right_arm/wrist"]->getStates(commandedStates);
00257 EXPECT_EQ(r2_msgs::JointControlMode::OFF, commandedStates.controlMode.state);
00258 jointControlFsmMap["r2/right_arm/hand/index"]->getStates(commandedStates);
00259 EXPECT_EQ(r2_msgs::JointControlMode::OFF, commandedStates.controlMode.state);
00260
00261 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "BootEnable"));
00262 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "BridgeEnable"));
00263 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "MotorEnable"));
00264
00265 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "BootEnable"));
00266 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "BridgeEnable"));
00267 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "MotorEnable"));
00268
00269 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "BootEnable"));
00270 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "BridgeEnable"));
00271 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "MotorEnable"));
00272 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "BrakeRelease"));
00273
00274 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "BootEnable"));
00275 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "BridgeEnable"));
00276 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/neck/joint0", "MotorEnable"));
00277 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/neck/joint0", "BrakeRelease"));
00278
00279 EXPECT_EQ(r2_msgs::JointControlMode::OFF, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/wrist", "ControlMode")));
00280 EXPECT_EQ(r2_msgs::JointControlMode::OFF, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/hand/index", "ControlMode")));
00281
00282 }
00283
00284 TEST_F(JointControlCommandFsmTest, Park)
00285 {
00286 jointControlFsmMap["r2/left_leg/joint0"]->off();
00287 jointControlFsmMap["r2/right_leg/gripper/joint0"]->off();
00288 jointControlFsmMap["r2/left_arm/joint0"]->off();
00289 jointControlFsmMap["r2/neck/joint0"]->off();
00290 jointControlFsmMap["r2/left_leg/joint0"]->park();
00291 jointControlFsmMap["r2/right_leg/gripper/joint0"]->park();
00292 jointControlFsmMap["r2/left_arm/joint0"]->park();
00293 jointControlFsmMap["r2/neck/joint0"]->park();
00294 jointControlFsmMap["r2/right_arm/wrist"]->park();
00295 jointControlFsmMap["r2/right_arm/hand/index"]->park();
00296
00297 jointControlFsmMap["r2/left_leg/joint0"]->getStates(commandedStates);
00298 EXPECT_EQ(r2_msgs::JointControlMode::PARK, commandedStates.controlMode.state);
00299 jointControlFsmMap["r2/right_leg/gripper/joint0"]->getStates(commandedStates);
00300 EXPECT_EQ(r2_msgs::JointControlMode::PARK, commandedStates.controlMode.state);
00301 jointControlFsmMap["r2/left_arm/joint0"]->getStates(commandedStates);
00302 EXPECT_EQ(r2_msgs::JointControlMode::PARK, commandedStates.controlMode.state);
00303 jointControlFsmMap["r2/neck/joint0"]->getStates(commandedStates);
00304 EXPECT_EQ(r2_msgs::JointControlMode::PARK, commandedStates.controlMode.state);
00305 jointControlFsmMap["r2/right_arm/wrist"]->getStates(commandedStates);
00306 EXPECT_EQ(r2_msgs::JointControlMode::PARK, commandedStates.controlMode.state);
00307 jointControlFsmMap["r2/right_arm/hand/index"]->getStates(commandedStates);
00308 EXPECT_EQ(r2_msgs::JointControlMode::PARK, commandedStates.controlMode.state);
00309
00310 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "BootEnable"));
00311 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "BridgeEnable"));
00312 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "MotorEnable"));
00313
00314 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "BootEnable"));
00315 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "BridgeEnable"));
00316 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "MotorEnable"));
00317
00318 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "BootEnable"));
00319 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "BridgeEnable"));
00320 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "MotorEnable"));
00321 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "BrakeRelease"));
00322
00323 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "BootEnable"));
00324 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "BridgeEnable"));
00325 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "MotorEnable"));
00326 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/neck/joint0", "BrakeRelease"));
00327
00328 EXPECT_EQ(r2_msgs::JointControlMode::PARK, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/wrist", "ControlMode")));
00329 EXPECT_EQ(r2_msgs::JointControlMode::PARK, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/hand/index", "ControlMode")));
00330 }
00331
00332 TEST_F(JointControlCommandFsmTest, Neutral)
00333 {
00334 jointControlFsmMap["r2/left_leg/joint0"]->off();
00335 jointControlFsmMap["r2/right_leg/gripper/joint0"]->off();
00336 jointControlFsmMap["r2/left_arm/joint0"]->off();
00337 jointControlFsmMap["r2/neck/joint0"]->off();
00338 jointControlFsmMap["r2/left_leg/joint0"]->neutral();
00339 jointControlFsmMap["r2/right_leg/gripper/joint0"]->neutral();
00340 jointControlFsmMap["r2/left_arm/joint0"]->neutral();
00341 jointControlFsmMap["r2/neck/joint0"]->neutral();
00342 jointControlFsmMap["r2/right_arm/wrist"]->neutral();
00343 jointControlFsmMap["r2/right_arm/hand/index"]->neutral();
00344
00345 jointControlFsmMap["r2/left_leg/joint0"]->getStates(commandedStates);
00346 EXPECT_EQ(r2_msgs::JointControlMode::NEUTRAL, commandedStates.controlMode.state);
00347 jointControlFsmMap["r2/right_leg/gripper/joint0"]->getStates(commandedStates);
00348 EXPECT_EQ(r2_msgs::JointControlMode::NEUTRAL, commandedStates.controlMode.state);
00349 jointControlFsmMap["r2/left_arm/joint0"]->getStates(commandedStates);
00350 EXPECT_EQ(r2_msgs::JointControlMode::NEUTRAL, commandedStates.controlMode.state);
00351 jointControlFsmMap["r2/neck/joint0"]->getStates(commandedStates);
00352 EXPECT_EQ(r2_msgs::JointControlMode::NEUTRAL, commandedStates.controlMode.state);
00353 jointControlFsmMap["r2/right_arm/wrist"]->getStates(commandedStates);
00354 EXPECT_EQ(r2_msgs::JointControlMode::NEUTRAL, commandedStates.controlMode.state);
00355 jointControlFsmMap["r2/right_arm/hand/index"]->getStates(commandedStates);
00356 EXPECT_EQ(r2_msgs::JointControlMode::NEUTRAL, commandedStates.controlMode.state);
00357
00358 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "BootEnable"));
00359 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "BridgeEnable"));
00360 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "MotorEnable"));
00361 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "BrakeRelease"));
00362
00363 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "BootEnable"));
00364 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "BridgeEnable"));
00365 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "MotorEnable"));
00367 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "BrakeRelease"));
00368
00369 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "BootEnable"));
00370 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "BridgeEnable"));
00371 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "MotorEnable"));
00372 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "BrakeRelease"));
00373
00374 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "BootEnable"));
00375 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "BridgeEnable"));
00376 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/neck/joint0", "MotorEnable"));
00377 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "BrakeRelease"));
00378
00379 EXPECT_EQ(r2_msgs::JointControlMode::NEUTRAL, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/wrist", "ControlMode")));
00380 EXPECT_EQ(r2_msgs::JointControlMode::NEUTRAL, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/hand/index", "ControlMode")));
00381 }
00382
00383 TEST_F(JointControlCommandFsmTest, Drive)
00384 {
00385 jointControlFsmMap["r2/left_leg/joint0"]->off();
00386 jointControlFsmMap["r2/right_leg/gripper/joint0"]->off();
00387 jointControlFsmMap["r2/left_arm/joint0"]->off();
00388 jointControlFsmMap["r2/neck/joint0"]->off();
00389 jointControlFsmMap["r2/left_leg/joint0"]->park();
00390 jointControlFsmMap["r2/right_leg/gripper/joint0"]->park();
00391 jointControlFsmMap["r2/left_arm/joint0"]->park();
00392 jointControlFsmMap["r2/neck/joint0"]->park();
00393 jointControlFsmMap["r2/left_leg/joint0"]->drive();
00394 jointControlFsmMap["r2/right_leg/gripper/joint0"]->drive();
00395 jointControlFsmMap["r2/left_arm/joint0"]->drive();
00396 jointControlFsmMap["r2/neck/joint0"]->drive();
00397 jointControlFsmMap["r2/right_arm/wrist"]->drive();
00398 jointControlFsmMap["r2/right_arm/hand/index"]->drive();
00399
00400 jointControlFsmMap["r2/left_leg/joint0"]->getStates(commandedStates);
00401 EXPECT_EQ(r2_msgs::JointControlMode::DRIVE, commandedStates.controlMode.state);
00402 jointControlFsmMap["r2/right_leg/gripper/joint0"]->getStates(commandedStates);
00403 EXPECT_EQ(r2_msgs::JointControlMode::DRIVE, commandedStates.controlMode.state);
00404 jointControlFsmMap["r2/left_arm/joint0"]->getStates(commandedStates);
00405 EXPECT_EQ(r2_msgs::JointControlMode::DRIVE, commandedStates.controlMode.state);
00406 jointControlFsmMap["r2/neck/joint0"]->getStates(commandedStates);
00407 EXPECT_EQ(r2_msgs::JointControlMode::DRIVE, commandedStates.controlMode.state);
00408 jointControlFsmMap["r2/right_arm/wrist"]->getStates(commandedStates);
00409 EXPECT_EQ(r2_msgs::JointControlMode::DRIVE, commandedStates.controlMode.state);
00410 jointControlFsmMap["r2/right_arm/hand/index"]->getStates(commandedStates);
00411 EXPECT_EQ(r2_msgs::JointControlMode::DRIVE, commandedStates.controlMode.state);
00412
00413 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "BootEnable"));
00414 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "BridgeEnable"));
00415 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "MotorEnable"));
00416
00417 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "BootEnable"));
00418 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "BridgeEnable"));
00419 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "MotorEnable"));
00420
00421 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "BootEnable"));
00422 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "BridgeEnable"));
00423 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "MotorEnable"));
00424 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "BrakeRelease"));
00425
00426 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "BootEnable"));
00427 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "BridgeEnable"));
00428 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "MotorEnable"));
00429 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "BrakeRelease"));
00430
00431 EXPECT_EQ(r2_msgs::JointControlMode::DRIVE, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/wrist", "ControlMode")));
00432 EXPECT_EQ(r2_msgs::JointControlMode::DRIVE, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/hand/index", "ControlMode")));
00433 }
00434
00435 TEST_F(JointControlCommandFsmTest, InitialCommandMode)
00436 {
00437 jointControlFsmMap["r2/left_leg/joint0"]->getStates(commandedStates);
00438 EXPECT_EQ(r2_msgs::JointControlCommandMode::MOTCOM, commandedStates.commandMode.state);
00439 jointControlFsmMap["r2/right_leg/gripper/joint0"]->getStates(commandedStates);
00440 EXPECT_EQ(r2_msgs::JointControlCommandMode::MOTCOM, commandedStates.commandMode.state);
00441 jointControlFsmMap["r2/left_arm/joint0"]->getStates(commandedStates);
00442 EXPECT_EQ(r2_msgs::JointControlCommandMode::MOTCOM, commandedStates.commandMode.state);
00443 jointControlFsmMap["r2/neck/joint0"]->getStates(commandedStates);
00444 EXPECT_EQ(r2_msgs::JointControlCommandMode::MOTCOM, commandedStates.commandMode.state);
00445 jointControlFsmMap["r2/right_arm/wrist"]->getStates(commandedStates);
00446 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSMOOTH, commandedStates.commandMode.state);
00447 jointControlFsmMap["r2/right_arm/hand/index"]->getStates(commandedStates);
00448 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSMOOTH, commandedStates.commandMode.state);
00449
00450
00451 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "MotComSource"));
00452 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "MotComSource"));
00453 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "MotComSource"));
00454 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/neck/joint0", "MotComSource"));
00455
00456 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSMOOTH, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/wrist", "CommandMode")));
00457 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSMOOTH, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/hand/index", "CommandMode")));
00458 }
00459
00460
00461
00462
00463
00464
00465
00466
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476
00477
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491 TEST_F(JointControlCommandFsmTest, StallMode)
00492 {
00493 nodeRegisterManager->nodeRegisterMap["r2/left_leg/joint0"].status["r2/left_leg/joint0/StatReg2"].registerValue = 0x0100;
00494 nodeRegisterManager->nodeRegisterMap["r2/right_leg/gripper/joint0"].status["r2/right_leg/gripper/joint0/StatReg2"].registerValue = 0x0100;
00495 nodeRegisterManager->nodeRegisterMap["r2/left_arm/joint0"].status["r2/left_arm/joint0/StatReg2"].registerValue = 0x0100;
00496 nodeRegisterManager->nodeRegisterMap["r2/neck/joint0"].status["r2/neck/joint0/StatReg2"].registerValue = 0x0100;
00497
00498 jointControlFsmMap["r2/left_leg/joint0"]->stallMode();
00499 jointControlFsmMap["r2/right_leg/gripper/joint0"]->stallMode();
00500 jointControlFsmMap["r2/left_arm/joint0"]->stallMode();
00501 jointControlFsmMap["r2/neck/joint0"]->stallMode();
00502 jointControlFsmMap["r2/right_arm/wrist"]->stallMode();
00503 jointControlFsmMap["r2/right_arm/hand/index"]->stallMode();
00504
00505 jointControlFsmMap["r2/left_leg/joint0"]->getStates(commandedStates);
00506 EXPECT_EQ(r2_msgs::JointControlCommandMode::STALLMODE, commandedStates.commandMode.state);
00507 jointControlFsmMap["r2/right_leg/gripper/joint0"]->getStates(commandedStates);
00508 EXPECT_EQ(r2_msgs::JointControlCommandMode::STALLMODE, commandedStates.commandMode.state);
00509 jointControlFsmMap["r2/left_arm/joint0"]->getStates(commandedStates);
00510 EXPECT_EQ(r2_msgs::JointControlCommandMode::STALLMODE, commandedStates.commandMode.state);
00511 jointControlFsmMap["r2/neck/joint0"]->getStates(commandedStates);
00512 EXPECT_EQ(r2_msgs::JointControlCommandMode::STALLMODE, commandedStates.commandMode.state);
00513 jointControlFsmMap["r2/right_arm/wrist"]->getStates(commandedStates);
00514 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSMOOTH, commandedStates.commandMode.state);
00515 jointControlFsmMap["r2/right_arm/hand/index"]->getStates(commandedStates);
00516 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSMOOTH, commandedStates.commandMode.state);
00517
00518 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "MotComSource"));
00519 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "ControlMode"));
00520
00521 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "MotComSource"));
00522 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "ControlMode"));
00523
00524 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "MotComSource"));
00525 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "ControlMode"));
00526
00527 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "MotComSource"));
00528 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "ControlMode"));
00529
00530 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSMOOTH, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/wrist", "CommandMode")));
00531 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSMOOTH, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/hand/index", "CommandMode")));
00532
00533 }
00534
00535 TEST_F(JointControlCommandFsmTest, MultiLoopStep)
00536 {
00537 nodeRegisterManager->nodeRegisterMap["r2/left_leg/joint0"].status["r2/left_leg/joint0/StatReg2"].registerValue = 0x0100;
00538 nodeRegisterManager->nodeRegisterMap["r2/right_leg/gripper/joint0"].status["r2/right_leg/gripper/joint0/StatReg2"].registerValue = 0x0100;
00539 nodeRegisterManager->nodeRegisterMap["r2/left_arm/joint0"].status["r2/left_arm/joint0/StatReg2"].registerValue = 0x0100;
00540 nodeRegisterManager->nodeRegisterMap["r2/neck/joint0"].status["r2/neck/joint0/StatReg2"].registerValue = 0x0100;
00541
00542 jointControlFsmMap["r2/left_leg/joint0"]->multiLoopStep();
00543 jointControlFsmMap["r2/right_leg/gripper/joint0"]->multiLoopStep();
00544 jointControlFsmMap["r2/left_arm/joint0"]->multiLoopStep();
00545 jointControlFsmMap["r2/neck/joint0"]->multiLoopStep();
00546 jointControlFsmMap["r2/right_arm/wrist"]->multiLoopStep();
00547 jointControlFsmMap["r2/right_arm/hand/index"]->multiLoopStep();
00548
00549 jointControlFsmMap["r2/left_leg/joint0"]->getStates(commandedStates);
00550 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSTEP, commandedStates.commandMode.state);
00551 jointControlFsmMap["r2/right_leg/gripper/joint0"]->getStates(commandedStates);
00552 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSTEP, commandedStates.commandMode.state);
00553 jointControlFsmMap["r2/left_arm/joint0"]->getStates(commandedStates);
00554 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSTEP, commandedStates.commandMode.state);
00555 jointControlFsmMap["r2/neck/joint0"]->getStates(commandedStates);
00556 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSTEP, commandedStates.commandMode.state);
00557 jointControlFsmMap["r2/right_arm/wrist"]->getStates(commandedStates);
00558 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSTEP, commandedStates.commandMode.state);
00559 jointControlFsmMap["r2/right_arm/hand/index"]->getStates(commandedStates);
00560 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSTEP, commandedStates.commandMode.state);
00561
00562 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "MotComSource"));
00563 EXPECT_EQ(3, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "ControlMode"));
00564 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "PosComVelocity"));
00565
00566 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "MotComSource"));
00567 EXPECT_EQ(3, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "ControlMode"));
00568
00569 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "MotComSource"));
00570 EXPECT_EQ(3, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "ControlMode"));
00571 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "PosComVelocity"));
00572
00573 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "MotComSource"));
00574 EXPECT_EQ(3, nodeRegisterManager->getControlValue("r2/neck/joint0", "ControlMode"));
00575 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/neck/joint0", "PosComVelocity"));
00576
00577 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSTEP, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/wrist", "CommandMode")));
00578 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSTEP, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/hand/index", "CommandMode")));
00579
00580 }
00581
00582 TEST_F(JointControlCommandFsmTest, MultiLoopSmooth)
00583 {
00584 nodeRegisterManager->nodeRegisterMap["r2/left_leg/joint0"].status["r2/left_leg/joint0/StatReg2"].registerValue = 0x0100;
00585 nodeRegisterManager->nodeRegisterMap["r2/right_leg/gripper/joint0"].status["r2/right_leg/gripper/joint0/StatReg2"].registerValue = 0x0100;
00586 nodeRegisterManager->nodeRegisterMap["r2/left_arm/joint0"].status["r2/left_arm/joint0/StatReg2"].registerValue = 0x0100;
00587 nodeRegisterManager->nodeRegisterMap["r2/neck/joint0"].status["r2/neck/joint0/StatReg2"].registerValue = 0x0100;
00588
00589 jointControlFsmMap["r2/left_leg/joint0"]->multiLoopSmooth();
00590 jointControlFsmMap["r2/right_leg/gripper/joint0"]->multiLoopSmooth();
00591 jointControlFsmMap["r2/left_arm/joint0"]->multiLoopSmooth();
00592 jointControlFsmMap["r2/neck/joint0"]->multiLoopSmooth();
00593 jointControlFsmMap["r2/right_arm/wrist"]->multiLoopSmooth();
00594 jointControlFsmMap["r2/right_arm/hand/index"]->multiLoopSmooth();
00595
00596 jointControlFsmMap["r2/left_leg/joint0"]->getStates(commandedStates);
00597 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSMOOTH, commandedStates.commandMode.state);
00598 jointControlFsmMap["r2/right_leg/gripper/joint0"]->getStates(commandedStates);
00599 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSTEP, commandedStates.commandMode.state);
00600 jointControlFsmMap["r2/left_arm/joint0"]->getStates(commandedStates);
00601 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSMOOTH, commandedStates.commandMode.state);
00602 jointControlFsmMap["r2/neck/joint0"]->getStates(commandedStates);
00603 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSMOOTH, commandedStates.commandMode.state);
00604 jointControlFsmMap["r2/right_arm/wrist"]->getStates(commandedStates);
00605 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSMOOTH, commandedStates.commandMode.state);
00606 jointControlFsmMap["r2/right_arm/hand/index"]->getStates(commandedStates);
00607 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSMOOTH, commandedStates.commandMode.state);
00608
00609 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "MotComSource"));
00610 EXPECT_EQ(3, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "ControlMode"));
00611 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "PosComVelocity"));
00612
00613 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "MotComSource"));
00614 EXPECT_EQ(3, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "ControlMode"));
00615
00616 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "MotComSource"));
00617 EXPECT_EQ(3, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "ControlMode"));
00618 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "PosComVelocity"));
00619
00620 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "MotComSource"));
00621 EXPECT_EQ(3, nodeRegisterManager->getControlValue("r2/neck/joint0", "ControlMode"));
00622 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "PosComVelocity"));
00623
00624 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSMOOTH, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/wrist", "CommandMode")));
00625 EXPECT_EQ(r2_msgs::JointControlCommandMode::MULTILOOPSMOOTH, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/hand/index", "CommandMode")));
00626
00627 }
00628
00629 TEST_F(JointControlCommandFsmTest, InitialCalibrationMode)
00630 {
00631 jointControlFsmMap["r2/left_leg/joint0"]->getStates(commandedStates);
00632 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::DISABLE, commandedStates.calibrationMode.state);
00633 jointControlFsmMap["r2/right_leg/gripper/joint0"]->getStates(commandedStates);
00634 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::DISABLE, commandedStates.calibrationMode.state);
00635 jointControlFsmMap["r2/left_arm/joint0"]->getStates(commandedStates);
00636 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::DISABLE, commandedStates.calibrationMode.state);
00637 jointControlFsmMap["r2/neck/joint0"]->getStates(commandedStates);
00638 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::DISABLE, commandedStates.calibrationMode.state);
00639 jointControlFsmMap["r2/right_arm/wrist"]->getStates(commandedStates);
00640 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::UNCALIBRATED, commandedStates.calibrationMode.state);
00641 jointControlFsmMap["r2/right_arm/hand/index"]->getStates(commandedStates);
00642 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::UNCALIBRATED, commandedStates.calibrationMode.state);
00643
00644 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "CalibrationMode"));
00645 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "CalibrationMode"));
00646 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "CalibrationMode"));
00647 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/neck/joint0", "CalibrationMode"));
00648
00649 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::UNCALIBRATED, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/wrist", "CalibrationMode")));
00650 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::UNCALIBRATED, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/hand/index", "CalibrationMode")));
00651
00652 }
00653
00654 TEST_F(JointControlCommandFsmTest, EnableCalibrationModeAndBack)
00655 {
00656 jointControlFsmMap["r2/left_leg/joint0"]->enableCalibrationMode();
00657 jointControlFsmMap["r2/right_leg/gripper/joint0"]->enableCalibrationMode();
00658 jointControlFsmMap["r2/left_arm/joint0"]->enableCalibrationMode();
00659 jointControlFsmMap["r2/neck/joint0"]->enableCalibrationMode();
00660 jointControlFsmMap["r2/right_arm/wrist"]->enableCalibrationMode();
00661 jointControlFsmMap["r2/right_arm/hand/index"]->enableCalibrationMode();
00662
00663 jointControlFsmMap["r2/left_leg/joint0"]->getStates(commandedStates);
00664 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::ENABLE, commandedStates.calibrationMode.state);
00665 jointControlFsmMap["r2/right_leg/gripper/joint0"]->getStates(commandedStates);
00666 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::ENABLE, commandedStates.calibrationMode.state);
00667 jointControlFsmMap["r2/left_arm/joint0"]->getStates(commandedStates);
00668 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::ENABLE, commandedStates.calibrationMode.state);
00669 jointControlFsmMap["r2/neck/joint0"]->getStates(commandedStates);
00670 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::ENABLE, commandedStates.calibrationMode.state);
00671 jointControlFsmMap["r2/right_arm/wrist"]->getStates(commandedStates);
00672 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::ENABLE, commandedStates.calibrationMode.state);
00673 jointControlFsmMap["r2/right_arm/hand/index"]->getStates(commandedStates);
00674 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::ENABLE, commandedStates.calibrationMode.state);
00675
00676 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "CalibrationMode"));
00677 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "CalibrationMode"));
00678 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "CalibrationMode"));
00679 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "CalibrationMode"));
00680
00681 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::ENABLE, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/wrist", "CalibrationMode")));
00682 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::ENABLE, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/hand/index", "CalibrationMode")));
00683
00684 jointControlFsmMap["r2/left_leg/joint0"]->disableCalibrationMode();
00685 jointControlFsmMap["r2/right_leg/gripper/joint0"]->disableCalibrationMode();
00686 jointControlFsmMap["r2/left_arm/joint0"]->disableCalibrationMode();
00687 jointControlFsmMap["r2/neck/joint0"]->disableCalibrationMode();
00688 jointControlFsmMap["r2/right_arm/wrist"]->disableCalibrationMode();
00689 jointControlFsmMap["r2/right_arm/hand/index"]->disableCalibrationMode();
00690
00691 jointControlFsmMap["r2/left_leg/joint0"]->getStates(commandedStates);
00692 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::DISABLE, commandedStates.calibrationMode.state);
00693 jointControlFsmMap["r2/right_leg/gripper/joint0"]->getStates(commandedStates);
00694 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::DISABLE, commandedStates.calibrationMode.state);
00695 jointControlFsmMap["r2/left_arm/joint0"]->getStates(commandedStates);
00696 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::DISABLE, commandedStates.calibrationMode.state);
00697 jointControlFsmMap["r2/neck/joint0"]->getStates(commandedStates);
00698 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::DISABLE, commandedStates.calibrationMode.state);
00699 jointControlFsmMap["r2/right_arm/wrist"]->getStates(commandedStates);
00700 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::DISABLE, commandedStates.calibrationMode.state);
00701 jointControlFsmMap["r2/right_arm/hand/index"]->getStates(commandedStates);
00702 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::DISABLE, commandedStates.calibrationMode.state);
00703
00704 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "CalibrationMode"));
00705 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "CalibrationMode"));
00706 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "CalibrationMode"));
00707 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/neck/joint0", "CalibrationMode"));
00708
00709
00710 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::ENABLE, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/wrist", "CalibrationMode")));
00711 EXPECT_EQ(r2_msgs::JointControlCalibrationMode::ENABLE, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/hand/index", "CalibrationMode")));
00712
00713 }
00714
00715 TEST_F(JointControlCommandFsmTest, InitToDisableClearFault)
00716 {
00717 jointControlFsmMap["r2/left_leg/joint0"]->getStates(commandedStates);
00718 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::DISABLE, commandedStates.clearFaultMode.state);
00719 jointControlFsmMap["r2/right_leg/gripper/joint0"]->getStates(commandedStates);
00720 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::DISABLE, commandedStates.clearFaultMode.state);
00721 jointControlFsmMap["r2/left_arm/joint0"]->getStates(commandedStates);
00722 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::DISABLE, commandedStates.clearFaultMode.state);
00723 jointControlFsmMap["r2/neck/joint0"]->getStates(commandedStates);
00724 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::DISABLE, commandedStates.clearFaultMode.state);
00725 jointControlFsmMap["r2/right_arm/wrist"]->getStates(commandedStates);
00726 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::DISABLE, commandedStates.clearFaultMode.state);
00727 jointControlFsmMap["r2/right_arm/hand/index"]->getStates(commandedStates);
00728 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::DISABLE, commandedStates.clearFaultMode.state);
00729
00730 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "ClearFault"));
00731 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "ClearFault"));
00732 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "ClearFault"));
00733 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/neck/joint0", "ClearFault"));
00734
00735 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::DISABLE, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/wrist", "ClearFaultState")));
00736 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::DISABLE, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/hand/index", "ClearFaultState")));
00737 }
00738
00739 TEST_F(JointControlCommandFsmTest, EnableClearFaultModeAndBack)
00740 {
00741 jointControlFsmMap["r2/left_leg/joint0"]->enableClearFaultMode();
00742 jointControlFsmMap["r2/right_leg/gripper/joint0"]->enableClearFaultMode();
00743 jointControlFsmMap["r2/left_arm/joint0"]->enableClearFaultMode();
00744 jointControlFsmMap["r2/neck/joint0"]->enableClearFaultMode();
00745 jointControlFsmMap["r2/right_arm/wrist"]->enableClearFaultMode();
00746 jointControlFsmMap["r2/right_arm/hand/index"]->enableClearFaultMode();
00747
00748 jointControlFsmMap["r2/left_leg/joint0"]->getStates(commandedStates);
00749 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::ENABLE, commandedStates.clearFaultMode.state);
00750 jointControlFsmMap["r2/right_leg/gripper/joint0"]->getStates(commandedStates);
00751 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::ENABLE, commandedStates.clearFaultMode.state);
00752 jointControlFsmMap["r2/left_arm/joint0"]->getStates(commandedStates);
00753 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::ENABLE, commandedStates.clearFaultMode.state);
00754 jointControlFsmMap["r2/neck/joint0"]->getStates(commandedStates);
00755 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::ENABLE, commandedStates.clearFaultMode.state);
00756 jointControlFsmMap["r2/right_arm/wrist"]->getStates(commandedStates);
00757 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::ENABLE, commandedStates.clearFaultMode.state);
00758 jointControlFsmMap["r2/right_arm/hand/index"]->getStates(commandedStates);
00759 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::ENABLE, commandedStates.clearFaultMode.state);
00760
00761 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "ClearFault"));
00762 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "ClearFault"));
00763 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "ClearFault"));
00764 EXPECT_EQ(1, nodeRegisterManager->getControlValue("r2/neck/joint0", "ClearFault"));
00765
00766 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::ENABLE, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/wrist", "ClearFaultState")));
00767 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::ENABLE, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/hand/index", "ClearFaultState")));
00768
00769 jointControlFsmMap["r2/left_leg/joint0"]->disableClearFaultMode();
00770 jointControlFsmMap["r2/right_leg/gripper/joint0"]->disableClearFaultMode();
00771 jointControlFsmMap["r2/left_arm/joint0"]->disableClearFaultMode();
00772 jointControlFsmMap["r2/neck/joint0"]->disableClearFaultMode();
00773 jointControlFsmMap["r2/right_arm/wrist"]->disableClearFaultMode();
00774 jointControlFsmMap["r2/right_arm/hand/index"]->disableClearFaultMode();
00775
00776 jointControlFsmMap["r2/left_leg/joint0"]->getStates(commandedStates);
00777 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::DISABLE, commandedStates.clearFaultMode.state);
00778 jointControlFsmMap["r2/right_leg/gripper/joint0"]->getStates(commandedStates);
00779 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::DISABLE, commandedStates.clearFaultMode.state);
00780 jointControlFsmMap["r2/left_arm/joint0"]->getStates(commandedStates);
00781 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::DISABLE, commandedStates.clearFaultMode.state);
00782 jointControlFsmMap["r2/neck/joint0"]->getStates(commandedStates);
00783 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::DISABLE, commandedStates.clearFaultMode.state);
00784 jointControlFsmMap["r2/right_arm/wrist"]->getStates(commandedStates);
00785 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::DISABLE, commandedStates.clearFaultMode.state);
00786 jointControlFsmMap["r2/right_arm/hand/index"]->getStates(commandedStates);
00787 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::DISABLE, commandedStates.clearFaultMode.state);
00788
00789 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_leg/joint0", "ClearFault"));
00790 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/right_leg/gripper/joint0", "ClearFault"));
00791 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/left_arm/joint0", "ClearFault"));
00792 EXPECT_EQ(0, nodeRegisterManager->getControlValue("r2/neck/joint0", "ClearFault"));
00793
00794 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::DISABLE, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/wrist", "ClearFaultState")));
00795 EXPECT_EQ(r2_msgs::JointControlClearFaultMode::DISABLE, io.getLiveCoeff(StringUtilities::makeFullyQualifiedRoboDynElement("r2/right_arm/hand/index", "ClearFaultState")));
00796
00797 }
00798
00799 int main(int argc, char** argv)
00800 {
00801 testing::InitGoogleTest(&argc, argv);
00802 return RUN_ALL_TESTS();
00803 }